Krita Source Code Documentation
Loading...
Searching...
No Matches
QMic Class Reference

#include <QMic.h>

+ Inheritance diagram for QMic:

Public Member Functions

 QMic (QObject *parent, const QVariantList &)
 
 ~QMic () override=default
 
- Public Member Functions inherited from KisActionPlugin
 KisActionPlugin (QObject *parent=0)
 
 ~KisActionPlugin () override
 

Private Slots

void slotQMic (bool again=false)
 
void slotQMicAgain ()
 

Private Attributes

KisActionm_againAction
 
KisActionm_qmicAction
 

Additional Inherited Members

- Protected Member Functions inherited from KisActionPlugin
void addAction (const QString &name, KisAction *action)
 
void addOperation (KisOperation *operation)
 
void addUIFactory (KisOperationUIFactory *factory)
 
KisActioncreateAction (const QString &name)
 
QPointer< KisViewManagerviewManager () const
 

Detailed Description

Definition at line 15 of file QMic.h.

Constructor & Destructor Documentation

◆ QMic()

QMic::QMic ( QObject * parent,
const QVariantList &  )

Definition at line 26 of file QMic.cpp.

27 : KisActionPlugin(parent)
28 , m_qmicAction(createAction("QMic"))
29 , m_againAction(createAction("QMicAgain"))
30{
32 connect(m_qmicAction, SIGNAL(triggered()), this, SLOT(slotQMic()));
33
35 m_againAction->setEnabled(false);
36 connect(m_againAction, SIGNAL(triggered()), this, SLOT(slotQMicAgain()));
37}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisAction * createAction(const QString &name)
KisActionPlugin(QObject *parent=0)
void setActivationFlags(ActivationFlags flags)
@ ACTIVE_DEVICE
Activate if the active node has a paint device, i.e. there are pixels to be modified.
Definition kis_action.h:47
void slotQMic(bool again=false)
Definition QMic.cpp:44
void slotQMicAgain()
Definition QMic.cpp:39
KisAction * m_againAction
Definition QMic.h:28
KisAction * m_qmicAction
Definition QMic.h:27

References KisAction::ACTIVE_DEVICE, and connect().

◆ ~QMic()

QMic::~QMic ( )
overridedefault

Member Function Documentation

◆ slotQMic

void QMic::slotQMic ( bool again = false)
privateslot

Definition at line 44 of file QMic.cpp.

45{
46 m_qmicAction->setEnabled(false);
47 m_againAction->setEnabled(false);
48
49 std::unique_ptr<KisQmicPluginInterface> plugin;
50
51 // find the krita-gmic-qt plugin
52 const QList<KoJsonTrader::Plugin> offers = KoJsonTrader::instance()->query("Krita/GMic", QString());
53 if (offers.isEmpty()) {
54 QMessageBox::warning(qApp->activeWindow(), i18nc("@title:window", "Krita"), i18n("The GMic plugin is not installed or could not be loaded."));
55 return;
56 }
57
58 for (const auto &loader : offers) {
59 auto *factory = qobject_cast<KPluginFactory *>(loader.instance());
60 if (!factory) {
61 warnPlugins << "(GMic) This is not a Krita plugin: " << loader.fileName() << loader.errorString();
62
63 continue;
64 }
65
66 auto *pluginBase = factory->create<QObject>();
67
68 plugin.reset(qobject_cast<KisQmicPluginInterface *>(pluginBase));
69
70 if (!plugin) {
71 warnPlugins << "(GMic) This is not a valid GMic-Qt plugin: " << loader.fileName();
72 continue;
73 }
74
75 break;
76 }
77
78 if (!plugin) {
79 QMessageBox::warning(qApp->activeWindow(), i18nc("@title:window", "Krita"), i18n("Krita cannot launch the gmic-qt plugin. No bundled library found."));
80 return;
81 }
82
83 if (this->viewManager()->blockUntilOperationsFinished(this->viewManager()->image())) {
84 auto image = std::make_shared<KisImageInterface>(this->viewManager().data());
85 int status = plugin->launch(image, again);
86
87 dbgPlugins << "pluginFinished" << status;
88 }
89
90 plugin.reset();
91
92 m_qmicAction->setEnabled(true);
93 m_againAction->setEnabled(true);
94}
QPointer< KisViewManager > viewManager() const
static KoJsonTrader * instance()
QList< Plugin > query(const QString &servicetype, const QString &mimetype)
#define warnPlugins
Definition kis_debug.h:93
#define dbgPlugins
Definition kis_debug.h:51

References dbgPlugins, KoJsonTrader::instance(), m_againAction, m_qmicAction, KoJsonTrader::query(), KisActionPlugin::viewManager(), and warnPlugins.

◆ slotQMicAgain

void QMic::slotQMicAgain ( )
privateslot

Definition at line 39 of file QMic.cpp.

40{
41 slotQMic(true);
42}

References slotQMic().

Member Data Documentation

◆ m_againAction

KisAction* QMic::m_againAction
private

Definition at line 28 of file QMic.h.

◆ m_qmicAction

KisAction* QMic::m_qmicAction
private

Definition at line 27 of file QMic.h.


The documentation for this class was generated from the following files: