diff --git a/src/libcalamaresui/viewpages/PythonQtJob.cpp b/src/libcalamaresui/viewpages/PythonQtJob.cpp new file mode 100644 index 000000000..6768a947b --- /dev/null +++ b/src/libcalamaresui/viewpages/PythonQtJob.cpp @@ -0,0 +1,77 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "PythonQtJob.h" + +#include "utils/PythonQtUtils.h" + +PythonQtJob::PythonQtJob( PythonQtObjectPtr cxt, + PythonQtObjectPtr pyJob, + QObject* parent ) + : Calamares::Job( parent ) + , m_cxt( cxt ) + , m_pyJob( pyJob ) +{ + +} + + +QString +PythonQtJob::prettyName() const +{ + return CalamaresUtils::lookupAndCall( m_pyJob, + { "prettyName", + "prettyname", + "pretty_name" } ).toString(); +} + + +QString +PythonQtJob::prettyDescription() const +{ + return CalamaresUtils::lookupAndCall( m_pyJob, + { "prettyDescription", + "prettydescription", + "pretty_description" } ).toString(); +} + + +QString +PythonQtJob::prettyStatusMessage() const +{ + return CalamaresUtils::lookupAndCall( m_pyJob, + { "prettyStatusMessage", + "prettystatusmessage", + "pretty_status_message" } ).toString(); +} + + +Calamares::JobResult +PythonQtJob::exec() +{ + QVariant response = m_pyJob.call( "exec" ); + if ( response.isNull() ) + return Calamares::JobResult::ok(); + + QVariantMap map = response.toMap(); + if ( map.isEmpty() || map.value( "ok" ).toBool() ) + return Calamares::JobResult::ok(); + + return Calamares::JobResult::error( map.value( "message" ).toString(), + map.value( "details" ).toString() ); +} diff --git a/src/libcalamaresui/viewpages/PythonQtJob.h b/src/libcalamaresui/viewpages/PythonQtJob.h new file mode 100644 index 000000000..aa93f9922 --- /dev/null +++ b/src/libcalamaresui/viewpages/PythonQtJob.h @@ -0,0 +1,65 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef PYTHONQTJOB_H +#define PYTHONQTJOB_H + +#include "Job.h" + +#include + +namespace Calamares +{ +class PythonQtViewStep; +} + +class PythonQtJobResult : public QObject, public Calamares::JobResult +{ + Q_OBJECT +public: + explicit PythonQtJobResult( bool ok, + const QString& message, + const QString& details ) + : QObject( nullptr ) + , Calamares::JobResult( ok, message, details ) + {} +}; + + +class PythonQtJob : public Calamares::Job +{ + Q_OBJECT +public: + virtual ~PythonQtJob() {} + + QString prettyName() const override; + QString prettyDescription() const override; + QString prettyStatusMessage() const override; + Calamares::JobResult exec() override; + +private: + explicit PythonQtJob( PythonQtObjectPtr cxt, + PythonQtObjectPtr pyJob, + QObject* parent = nullptr ); + friend class Calamares::PythonQtViewStep; // only this one can call the ctor + + PythonQtObjectPtr m_cxt; + PythonQtObjectPtr m_pyJob; +}; + +#endif // PYTHONQTJOB_H