diff --git a/krita/plugins/extensions/pykrita/libkis/CMakeLists.txt b/krita/plugins/extensions/pykrita/libkis/CMakeLists.txt index 417a57177a..92f354ab73 100644 --- a/krita/plugins/extensions/pykrita/libkis/CMakeLists.txt +++ b/krita/plugins/extensions/pykrita/libkis/CMakeLists.txt @@ -1,34 +1,34 @@ include_directories(${KOMAIN_INCLUDES} ${KRITA_INCLUDES}) set(kritalibkis_LIB_SRCS application.cpp document.cpp dockwidget.cpp - dockwidgetfactory.cpp + dockwidgetfactorybase.cpp image.cpp mainwindow.cpp krita.cpp node.cpp view.cpp viewextension.cpp viewmanager.cpp ) kde4_add_library(kritalibkis SHARED ${kritalibkis_LIB_SRCS} ) if (WIN32) target_link_libraries(kritalibkis kritaui kritaimage ${WIN32_PLATFORM_NET_LIBS}) else (WIN32) target_link_libraries(kritalibkis kritaui kritaimage) endif (WIN32) target_link_libraries(kritalibkis LINK_INTERFACE_LIBRARIES kritaimage kritaui) set_target_properties(kritalibkis PROPERTIES VERSION ${GENERIC_CALLIGRA_LIB_VERSION} SOVERSION ${GENERIC_CALLIGRA_LIB_SOVERSION} ) install(TARGETS kritalibkis ${INSTALL_TARGETS_DEFAULT_ARGS}) diff --git a/krita/plugins/extensions/pykrita/libkis/dockwidgetfactory.cpp b/krita/plugins/extensions/pykrita/libkis/dockwidgetfactorybase.cpp similarity index 70% rename from krita/plugins/extensions/pykrita/libkis/dockwidgetfactory.cpp rename to krita/plugins/extensions/pykrita/libkis/dockwidgetfactorybase.cpp index 0abb28ff0a..c4a9aa752f 100644 --- a/krita/plugins/extensions/pykrita/libkis/dockwidgetfactory.cpp +++ b/krita/plugins/extensions/pykrita/libkis/dockwidgetfactorybase.cpp @@ -1,53 +1,53 @@ /* * Copyright (c) 2015 Cyrille Berger * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published 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 License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#include "dockwidgetfactory.h" +#include "dockwidgetfactorybase.h" #include -DockWidgetFactory::DockWidgetFactory(const QString& _id, KoDockFactoryBase::DockPosition _dockPosition, bool _isCollapsable, bool _defaultCollapsed) +DockWidgetFactoryBase::DockWidgetFactoryBase(const QString& _id, KoDockFactoryBase::DockPosition _dockPosition, bool _isCollapsable, bool _defaultCollapsed) : m_id(_id), m_dockPosition(_dockPosition), m_isCollapsable(_isCollapsable), m_defaultCollapsed(_defaultCollapsed) { } -DockWidgetFactory::~DockWidgetFactory() +DockWidgetFactoryBase::~DockWidgetFactoryBase() { qDebug() << "Iamdying"; } -bool DockWidgetFactory::defaultCollapsed() const +bool DockWidgetFactoryBase::defaultCollapsed() const { return m_defaultCollapsed; } -KoDockFactoryBase::DockPosition DockWidgetFactory::defaultDockPosition() const +KoDockFactoryBase::DockPosition DockWidgetFactoryBase::defaultDockPosition() const { return m_dockPosition; } -QString DockWidgetFactory::id() const +QString DockWidgetFactoryBase::id() const { return m_id; } -bool DockWidgetFactory::isCollapsable() const +bool DockWidgetFactoryBase::isCollapsable() const { return m_isCollapsable; } diff --git a/krita/plugins/extensions/pykrita/libkis/dockwidgetfactory.h b/krita/plugins/extensions/pykrita/libkis/dockwidgetfactorybase.h similarity index 83% rename from krita/plugins/extensions/pykrita/libkis/dockwidgetfactory.h rename to krita/plugins/extensions/pykrita/libkis/dockwidgetfactorybase.h index 3f75ef5c21..6478d2f183 100644 --- a/krita/plugins/extensions/pykrita/libkis/dockwidgetfactory.h +++ b/krita/plugins/extensions/pykrita/libkis/dockwidgetfactorybase.h @@ -1,42 +1,42 @@ /* * Copyright (c) 2015 Cyrille Berger * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published 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 License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef LIBKIS_DOCKWIDGETFACTORY_H #define LIBKIS_DOCKWIDGETFACTORY_H #include #include #include -class LIBKIS_EXPORT DockWidgetFactory : public KoDockFactoryBase +class LIBKIS_EXPORT DockWidgetFactoryBase : public KoDockFactoryBase { public: - DockWidgetFactory(const QString& _id, DockPosition _dockPosition, bool _isCollapsable = true, bool _defaultCollapsed = false); - virtual ~DockWidgetFactory(); + DockWidgetFactoryBase(const QString& _id, DockPosition _dockPosition, bool _isCollapsable = true, bool _defaultCollapsed = false); + virtual ~DockWidgetFactoryBase(); virtual QString id() const; virtual DockPosition defaultDockPosition() const; virtual bool isCollapsable() const; virtual bool defaultCollapsed() const; private: QString m_id; DockPosition m_dockPosition; bool m_isCollapsable, m_defaultCollapsed; }; #endif diff --git a/krita/plugins/extensions/pykrita/libkis/krita.cpp b/krita/plugins/extensions/pykrita/libkis/krita.cpp index 97c2e6e5f3..281e33db24 100644 --- a/krita/plugins/extensions/pykrita/libkis/krita.cpp +++ b/krita/plugins/extensions/pykrita/libkis/krita.cpp @@ -1,108 +1,108 @@ /* * 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 published 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 License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "krita.h" #include #include #include #include #include #include #include -#include "dockwidgetfactory.h" +#include "dockwidgetfactorybase.h" #include "viewextension.h" Krita* Krita::s_instance = 0; Krita::Krita(QObject *parent) : QObject(parent) { } QList Krita::mainWindows() { QList ret; foreach(QPointer mainWin, KisPart::instance()->mainWindows()) { ret << new MainWindow(mainWin, this); } return ret; } QList Krita::views() { QList ret; foreach(QPointer view, KisPart::instance()->views()) { ret << new View(view, this); } return ret; } QList Krita::documents() { QList ret; foreach(QPointer doc, KisPart::instance()->documents()) { ret << new Document(doc, this); } return ret; } QList Krita::images() { QList ret; foreach(Document *doc, documents()) { ret << doc->image(); } return ret; } QAction *Krita::createAction(const QString &text) { KisAction *action = new KisAction(text, this); foreach(KisMainWindow *mainWin, KisPart::instance()->mainWindows()) { mainWin->viewManager()->scriptManager()->addAction(action); } return action; } void Krita::addViewExtension(ViewExtension* _viewExtension) { m_viewExtensions.append(_viewExtension); } QList< ViewExtension* > Krita::viewExtensions() { return m_viewExtensions; } -void Krita::addDockWidgetFactory(DockWidgetFactory* _factory) +void Krita::addDockWidgetFactory(DockWidgetFactoryBase* _factory) { KoDockRegistry::instance()->add(_factory); } Krita* Krita::instance() { if (!s_instance) { s_instance = new Krita; } return s_instance; } diff --git a/krita/plugins/extensions/pykrita/libkis/krita.h b/krita/plugins/extensions/pykrita/libkis/krita.h index 22a4a2cc28..7eff2d678c 100644 --- a/krita/plugins/extensions/pykrita/libkis/krita.h +++ b/krita/plugins/extensions/pykrita/libkis/krita.h @@ -1,63 +1,63 @@ /* * 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 published 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 License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef LIBKIS_KRITA_H #define LIBKIS_KRITA_H #include #include #include #include "application.h" #include "mainwindow.h" #include "view.h" #include "document.h" #include "image.h" #include -class DockWidgetFactory; +class DockWidgetFactoryBase; class ViewExtension; class LIBKIS_EXPORT Krita : public QObject { Q_OBJECT public: explicit Krita(QObject *parent = 0); QList mainWindows(); QList views(); QList documents(); QList images(); QAction *createAction(const QString &text); void addViewExtension(ViewExtension* _viewExtension); QList viewExtensions(); - void addDockWidgetFactory(DockWidgetFactory* _factory ); + void addDockWidgetFactory(DockWidgetFactoryBase* _factory ); static Krita* instance(); Q_SIGNALS: public Q_SLOTS: private: static Krita* s_instance; QList m_viewExtensions; }; #endif // LIBKIS_KRITA_H diff --git a/krita/plugins/extensions/pykrita/sip/krita/dockwidgetfactory.sip b/krita/plugins/extensions/pykrita/sip/krita/dockwidgetfactorybase.sip similarity index 72% rename from krita/plugins/extensions/pykrita/sip/krita/dockwidgetfactory.sip rename to krita/plugins/extensions/pykrita/sip/krita/dockwidgetfactorybase.sip index 42e8377ab3..a4d293a968 100644 --- a/krita/plugins/extensions/pykrita/sip/krita/dockwidgetfactory.sip +++ b/krita/plugins/extensions/pykrita/sip/krita/dockwidgetfactorybase.sip @@ -1,22 +1,22 @@ %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip -class DockWidgetFactory +class DockWidgetFactoryBase { %TypeHeaderCode -#include "dockwidgetfactory.h" +#include "dockwidgetfactorybase.h" %End public: enum DockPosition { DockTornOff, ///< Floating as its own top level window DockTop, ///< Above the central widget DockBottom, ///< Below the central widget DockRight, ///< Right of the centra widget DockLeft, ///< Left of the centra widget DockMinimized ///< Not docked, but reachable via the menu }; - DockWidgetFactory(const QString& _id, DockPosition _dockPosition, bool _isCollapsable = true, bool _defaultCollapsed = false); + DockWidgetFactoryBase(const QString& _id, DockPosition _dockPosition, bool _isCollapsable = true, bool _defaultCollapsed = false); virtual QDockWidget* createDockWidget() = 0 /Factory/; }; diff --git a/krita/plugins/extensions/pykrita/sip/krita/krita.sip b/krita/plugins/extensions/pykrita/sip/krita/krita.sip index 6e132b46c3..660fc1f763 100644 --- a/krita/plugins/extensions/pykrita/sip/krita/krita.sip +++ b/krita/plugins/extensions/pykrita/sip/krita/krita.sip @@ -1,23 +1,23 @@ %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip class Krita : public QObject { %TypeHeaderCode #include "krita.h" %End Krita(QObject *parent /TransferThis/ = 0); public: static Krita* instance(); QList mainWindows(); QList views(); QList documents(); QList images(); QAction *createAction(const QString &text); void addViewExtension(ViewExtension* _viewExtension /Transfer/); - void addDockWidgetFactory(DockWidgetFactory* _factory /Transfer, TransferThis/); + void addDockWidgetFactory(DockWidgetFactoryBase* _factory /Transfer, TransferThis/); }; diff --git a/krita/plugins/extensions/pykrita/sip/krita/kritamod.sip b/krita/plugins/extensions/pykrita/sip/krita/kritamod.sip index a571e91e7e..2ba4bee3e5 100644 --- a/krita/plugins/extensions/pykrita/sip/krita/kritamod.sip +++ b/krita/plugins/extensions/pykrita/sip/krita/kritamod.sip @@ -1,24 +1,24 @@ %Module PyKrita4.krita %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %ModuleHeaderCode #pragma GCC visibility push(default) %End %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtXml/QtXmlmod.sip %Include application.sip %Include document.sip %Include dockwidget.sip -%Include dockwidgetfactory.sip +%Include dockwidgetfactorybase.sip %Include image.sip %Include mainwindow.sip %Include krita.sip %Include node.sip %Include view.sip %Include viewextension.sip %Include viewmanager.sip diff --git a/krita/plugins/extensions/pykrita/src/krita/__init__.py b/krita/plugins/extensions/pykrita/src/krita/__init__.py index c10c8db3f7..0118a29988 100644 --- a/krita/plugins/extensions/pykrita/src/krita/__init__.py +++ b/krita/plugins/extensions/pykrita/src/krita/__init__.py @@ -1,45 +1,47 @@ import pykrita import os import sys from .api import * from .decorators import * +from .dockwidgetfactory import * +from PyKrita4.krita import * def kDebug(text): '''Use KDE way to show debug info TODO Add a way to control debug output from partucular plugins (?) ''' plugin = sys._getframe(1).f_globals['__name__'] pykrita.kDebug('{}: {}'.format(plugin, text)) @pykritaEventHandler('_pluginLoaded') def on_load(plugin): if plugin in init.functions: # Call registered init functions for the plugin init.fire(plugin=plugin) del init.functions[plugin] return True @pykritaEventHandler('_pluginUnloading') def on_unload(plugin): if plugin in unload.functions: # Deinitialize plugin unload.fire(plugin=plugin) del unload.functions[plugin] return True @pykritaEventHandler('_pykritaLoaded') def on_pykrita_loaded(): kDebug('PYKRITA LOADED') return True @pykritaEventHandler('_pykritaUnloading') def on_pykrita_unloading(): kDebug('UNLOADING PYKRITA') return True diff --git a/krita/plugins/extensions/pykrita/src/krita/dockwidgetfactory.py b/krita/plugins/extensions/pykrita/src/krita/dockwidgetfactory.py new file mode 100644 index 0000000000..9bebc1fbb1 --- /dev/null +++ b/krita/plugins/extensions/pykrita/src/krita/dockwidgetfactory.py @@ -0,0 +1,9 @@ +from PyQt4.QtGui import * +from PyKrita4.krita import * + +class DockWidgetFactory(DockWidgetFactoryBase): + def __init__(self, _id, _dockPosition, _klass): + super().__init__(_id, _dockPosition) + self.klass = _klass + def createDockWidget(self): + return self.klass() diff --git a/krita/plugins/extensions/pykrita/src/plugins/hello/hello.py b/krita/plugins/extensions/pykrita/src/plugins/hello/hello.py index 3970ed9659..e93ce4ff32 100644 --- a/krita/plugins/extensions/pykrita/src/plugins/hello/hello.py +++ b/krita/plugins/extensions/pykrita/src/plugins/hello/hello.py @@ -1,28 +1,22 @@ from PyQt4.QtGui import * -from PyKrita4.krita import * +from krita import * def hello(): QMessageBox.information(QWidget(), "Test", "Hello World") class HelloViewExtension(ViewExtension): def __init__(self, parent): super().__init__(parent) def setup(self, viewManager): action = viewManager.createAction("Hello") action.triggered.connect(hello) Krita.instance().addViewExtension(HelloViewExtension(Krita.instance())) class HelloDocker(DockWidget): def __init__(self): super().__init__() label = QLabel("Hello", self) self.setWidget(label) -class HelloDockerFactory(DockWidgetFactory): - def __init__(self): - super().__init__("hello", DockWidgetFactory.DockRight) - def createDockWidget(self): - return HelloDocker() - -Krita.instance().addDockWidgetFactory(HelloDockerFactory()) +Krita.instance().addDockWidgetFactory(DockWidgetFactory("hello", DockWidgetFactory.DockRight, HelloDocker))