From kde-commits Wed Dec 09 21:13:33 2015 From: Cyrille Berger Date: Wed, 09 Dec 2015 21:13:33 +0000 To: kde-commits Subject: [krita/berger-scripting] krita/ui: add the script manager back Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=144969585613044 Git commit ae927b20dea4309b31f84e3d8953dd69c8e01feb by Cyrille Berger. Committed on 09/12/2015 at 21:12. Pushed by berger into branch 'berger-scripting'. add the script manager back M +1 -0 krita/ui/CMakeLists.txt M +2 -5 krita/ui/KisMainWindow.cpp M +9 -0 krita/ui/KisViewManager.cpp M +3 -0 krita/ui/KisViewManager.h A +82 -0 krita/ui/kis_script_manager.cpp [License: LGPL (v2+)] A +48 -0 krita/ui/kis_script_manager.h [License: LGPL (v2+)] http://commits.kde.org/krita/ae927b20dea4309b31f84e3d8953dd69c8e01feb diff --git a/krita/ui/CMakeLists.txt b/krita/ui/CMakeLists.txt index 4dd4084..2bbc7fc 100644 --- a/krita/ui/CMakeLists.txt +++ b/krita/ui/CMakeLists.txt @@ -121,6 +121,7 @@ set(kritaui_LIB_SRCS kis_popup_palette.cpp kis_png_converter.cpp kis_preference_set_registry.cpp + kis_script_manager.cpp kis_resource_server_provider.cpp kis_selection_decoration.cc kis_selection_manager.cc diff --git a/krita/ui/KisMainWindow.cpp b/krita/ui/KisMainWindow.cpp index 09d85c0..7990b9b 100644 --- a/krita/ui/KisMainWindow.cpp +++ b/krita/ui/KisMainWindow.cpp @@ -309,6 +309,8 @@ KisMainWindow::KisMainWindow() = QMetaObject::invokeMethod(this, "initializeGeometry", Qt::QueuedConnec= tion); = + KoPluginLoader::instance()->load("Krita/ViewPlugin", "Type =3D=3D 'Ser= vice' and ([X-Krita-Version] =3D=3D 28)", KoPluginLoader::PluginsConfig(), = d->viewManager); + = KoToolBoxFactory toolBoxFactory; QDockWidget *toolbox =3D createDockWidget(&toolBoxFactory); toolbox->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::Doc= kWidgetFloatable | QDockWidget::DockWidgetClosable); @@ -360,11 +362,6 @@ KisMainWindow::KisMainWindow() = setAutoSaveSettings("krita", false); = - KoPluginLoader::instance()->load("Krita/ViewPlugin", - "Type =3D=3D 'Service' and ([X-Krita-= Version] =3D=3D 28)", - KoPluginLoader::PluginsConfig(), - viewManager()); - subWindowActivated(); updateWindowMenu(); = diff --git a/krita/ui/KisViewManager.cpp b/krita/ui/KisViewManager.cpp index b9b8446..c34a11b 100644 --- a/krita/ui/KisViewManager.cpp +++ b/krita/ui/KisViewManager.cpp @@ -125,6 +125,7 @@ #include "kra/kis_kra_loader.h" #include "widgets/kis_floating_message.h" #include "kis_signal_auto_connection.h" +#include "kis_script_manager.h" #include "kis_icon_utils.h" = = @@ -239,6 +240,7 @@ public: , guiUpdateCompressor(30, KisSignalCompressor::POSTPONE, _q) , mirrorManager(_q) , inputManager(_q) + , scriptManager(_q) , actionAuthor(0) { } @@ -285,6 +287,7 @@ public: KisInputManager inputManager; = KisSignalAutoConnectionsStore viewConnections; + KisScriptManager scriptManager; KSelectAction *actionAuthor; // Select action for author profile. = QByteArray canvasState; @@ -722,6 +725,7 @@ void KisViewManager::setupManagers() = d->mirrorManager.setup(actionCollection()); = + d->scriptManager.setup(actionCollection()); } = void KisViewManager::updateGUI() @@ -768,6 +772,11 @@ KisDocument *KisViewManager::document() const return 0; } = +KisScriptManager *KisViewManager::scriptManager() const +{ + return &d->scriptManager; +} + int KisViewManager::viewCount() const { KisMainWindow *mw =3D qobject_cast(d->mainWindow); diff --git a/krita/ui/KisViewManager.h b/krita/ui/KisViewManager.h index 6d6b741..4a5e458 100644 --- a/krita/ui/KisViewManager.h +++ b/krita/ui/KisViewManager.h @@ -51,6 +51,7 @@ class KisUndoAdapter; class KisZoomManager; class KisPaintopBox; class KisActionManager; +class KisScriptManager; class KisInputManager; = /** @@ -162,6 +163,8 @@ public: // Krita specific interfaces KisUndoAdapter *undoAdapter(); = KisDocument *document() const; + = + KisScriptManager *scriptManager() const; = int viewCount() const; = diff --git a/krita/ui/kis_script_manager.cpp b/krita/ui/kis_script_manager.= cpp new file mode 100644 index 0000000..c8a3342 --- /dev/null +++ b/krita/ui/kis_script_manager.cpp @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2014 Boudewijn Rempt + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as publish= ed by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 Lesser General Public Licen= se + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-13= 01, USA. + */ + +#include "kis_script_manager.h" + +#include +#include +#include + +#include "KisViewManager.h" + +struct KisScriptManager::Private { + Private() + : actionCollection(0) + , view(0) + , scriptMenu(0) + { + } + + QHash script2Action; + + KActionCollection *actionCollection; + KisViewManager *view; + KActionMenu *scriptMenu; +}; + + +KisScriptManager::KisScriptManager(KisViewManager *view) + : QObject(view) + , d(new Private()) +{ + d->view =3D view; +} + +KisScriptManager::~KisScriptManager() +{ + delete d; +} + + +void KisScriptManager::setup(KActionCollection * ac) +{ + d->actionCollection =3D ac; + d->scriptMenu =3D new KActionMenu(i18n("Scripts"),this); + d->actionCollection->addAction("scripting", d->scriptMenu); +} + +void KisScriptManager::updateGUI() +{ + if (!d->view) return; + +// bool enable =3D false; + +// KisNodeSP activeNode =3D d->view->activeNode(); +// enable =3D activeNode && activeNode->hasEditablePaintDevice(); + +// d->reapplyAction->setEnabled(enable); + +// foreach(KAction *action, d->script2Action.values()) { +// action->setEnabled(enable); + // } +} + +void KisScriptManager::addAction(QAction *action) +{ + d->scriptMenu->addAction(action); +} diff --git a/krita/ui/kis_script_manager.h b/krita/ui/kis_script_manager.h new file mode 100644 index 0000000..615d653 --- /dev/null +++ b/krita/ui/kis_script_manager.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2014 Boudewijn Rempt + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as publish= ed by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 Lesser General Public Licen= se + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-13= 01, USA. + */ + +#ifndef KIS_SCRIPT_MANAGER_H +#define KIS_SCRIPT_MANAGER_H + +#include + +#include + +class QAction; + +class KisViewManager; +class KActionCollection; + +class KRITAUI_EXPORT KisScriptManager : public QObject +{ + Q_OBJECT +public: + explicit KisScriptManager(KisViewManager * view); + ~KisScriptManager(); + + void setup(KActionCollection * ac); + void updateGUI(); + + void addAction(QAction *action); + +private: + struct Private; + Private * const d; +}; + +#endif // KIS_SCRIPT_MANAGER_H