[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [krita/berger-scripting] krita/plugins/extensions/pykrita: make it possible to create dockwidget wit
From: Cyrille Berger <cberger () cberger ! net>
Date: 2015-12-09 21:13:32
Message-ID: E1a6m3I-0005XC-Ao () scm ! kde ! org
[Download RAW message or body]
Git commit d278876ca300731ef80ed62f88d7b9b37b6900ec by Cyrille Berger.
Committed on 09/12/2015 at 19:42.
Pushed by berger into branch 'berger-scripting'.
make it possible to create dockwidget with python
M +2 -0 krita/plugins/extensions/pykrita/libkis/CMakeLists.txt
A +39 -0 krita/plugins/extensions/pykrita/libkis/dockwidget.cpp [License: \
LGPL (v2+)] A +37 -0 krita/plugins/extensions/pykrita/libkis/dockwidget.h \
[License: LGPL (v2+)] A +53 -0 \
krita/plugins/extensions/pykrita/libkis/dockwidgetfactory.cpp [License: LGPL \
(v2+)] A +42 -0 krita/plugins/extensions/pykrita/libkis/dockwidgetfactory.h \
[License: LGPL (v2+)] M +10 -1 \
krita/plugins/extensions/pykrita/libkis/krita.cpp M +2 -0 \
krita/plugins/extensions/pykrita/libkis/krita.h A +13 -0 \
krita/plugins/extensions/pykrita/sip/krita/dockwidget.sip A +22 -0 \
krita/plugins/extensions/pykrita/sip/krita/dockwidgetfactory.sip M +2 -1 \
krita/plugins/extensions/pykrita/sip/krita/krita.sip M +2 -0 \
krita/plugins/extensions/pykrita/sip/krita/kritamod.sip M +0 -1 \
krita/plugins/extensions/pykrita/sip/krita/viewextension.sip M +14 -0 \
krita/plugins/extensions/pykrita/src/plugins/hello/hello.py
http://commits.kde.org/krita/d278876ca300731ef80ed62f88d7b9b37b6900ec
diff --git a/krita/plugins/extensions/pykrita/libkis/CMakeLists.txt \
b/krita/plugins/extensions/pykrita/libkis/CMakeLists.txt index 33a9649..417a571 \
100644
--- a/krita/plugins/extensions/pykrita/libkis/CMakeLists.txt
+++ b/krita/plugins/extensions/pykrita/libkis/CMakeLists.txt
@@ -4,6 +4,8 @@ include_directories(${KOMAIN_INCLUDES} ${KRITA_INCLUDES})
set(kritalibkis_LIB_SRCS
application.cpp
document.cpp
+ dockwidget.cpp
+ dockwidgetfactory.cpp
image.cpp
mainwindow.cpp
krita.cpp
diff --git a/krita/plugins/extensions/pykrita/libkis/dockwidget.cpp \
b/krita/plugins/extensions/pykrita/libkis/dockwidget.cpp new file mode 100644
index 0000000..5029a78
--- /dev/null
+++ b/krita/plugins/extensions/pykrita/libkis/dockwidget.cpp
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2015 Cyrille Berger <cberger@cberger.net>
+ *
+ * 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 "dockwidget.h"
+
+DockWidget::DockWidget(): QDockWidget()
+{
+
+}
+
+DockWidget::~DockWidget()
+{
+
+}
+
+void DockWidget::setCanvas(KoCanvasBase* canvas)
+{
+
+}
+
+void DockWidget::unsetCanvas()
+{
+
+}
diff --git a/krita/plugins/extensions/pykrita/libkis/dockwidget.h \
b/krita/plugins/extensions/pykrita/libkis/dockwidget.h new file mode 100644
index 0000000..5425282
--- /dev/null
+++ b/krita/plugins/extensions/pykrita/libkis/dockwidget.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2015 Cyrille Berger <cberger@cberger.net>
+ *
+ * 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_DOCKWIDGET_H
+#define LIBKIS_DOCKWIDGET_H
+
+#include <QDockWidget>
+#include <KoCanvasObserverBase.h>
+
+#include <krita_export.h>
+
+class LIBKIS_EXPORT DockWidget : public QDockWidget, public KoCanvasObserverBase {
+ Q_OBJECT
+public:
+ DockWidget();
+ virtual ~DockWidget();
+protected:
+ virtual void setCanvas(KoCanvasBase* canvas);
+ virtual void unsetCanvas();
+};
+
+#endif
diff --git a/krita/plugins/extensions/pykrita/libkis/dockwidgetfactory.cpp \
b/krita/plugins/extensions/pykrita/libkis/dockwidgetfactory.cpp new file mode 100644
index 0000000..0abb28f
--- /dev/null
+++ b/krita/plugins/extensions/pykrita/libkis/dockwidgetfactory.cpp
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2015 Cyrille Berger <cberger@cberger.net>
+ *
+ * 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 <QDebug>
+DockWidgetFactory::DockWidgetFactory(const QString& _id, \
KoDockFactoryBase::DockPosition _dockPosition, bool _isCollapsable, bool \
_defaultCollapsed) + : m_id(_id),
+ m_dockPosition(_dockPosition),
+ m_isCollapsable(_isCollapsable),
+ m_defaultCollapsed(_defaultCollapsed)
+{
+
+}
+
+DockWidgetFactory::~DockWidgetFactory()
+{
+qDebug() << "Iamdying";
+}
+
+bool DockWidgetFactory::defaultCollapsed() const
+{
+ return m_defaultCollapsed;
+}
+
+KoDockFactoryBase::DockPosition DockWidgetFactory::defaultDockPosition() const
+{
+ return m_dockPosition;
+}
+
+QString DockWidgetFactory::id() const
+{
+ return m_id;
+}
+
+bool DockWidgetFactory::isCollapsable() const
+{
+ return m_isCollapsable;
+}
diff --git a/krita/plugins/extensions/pykrita/libkis/dockwidgetfactory.h \
b/krita/plugins/extensions/pykrita/libkis/dockwidgetfactory.h new file mode 100644
index 0000000..3f75ef5
--- /dev/null
+++ b/krita/plugins/extensions/pykrita/libkis/dockwidgetfactory.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2015 Cyrille Berger <cberger@cberger.net>
+ *
+ * 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 <QString>
+#include <KoDockFactoryBase.h>
+
+#include <krita_export.h>
+
+class LIBKIS_EXPORT DockWidgetFactory : public KoDockFactoryBase
+{
+public:
+ DockWidgetFactory(const QString& _id, DockPosition _dockPosition, bool \
_isCollapsable = true, bool _defaultCollapsed = false); + virtual \
~DockWidgetFactory(); + 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 ab2bc17..97c2e6e 100644
--- a/krita/plugins/extensions/pykrita/libkis/krita.cpp
+++ b/krita/plugins/extensions/pykrita/libkis/krita.cpp
@@ -16,7 +16,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "krita.h"
-#include "viewextension.h"
+
+#include <KoDockRegistry.h>
#include <KisPart.h>
@@ -26,6 +27,9 @@
#include <kis_action.h>
#include <kis_script_manager.h>
+#include "dockwidgetfactory.h"
+#include "viewextension.h"
+
Krita* Krita::s_instance = 0;
Krita::Krita(QObject *parent) :
@@ -89,6 +93,11 @@ QList< ViewExtension* > Krita::viewExtensions()
return m_viewExtensions;
}
+void Krita::addDockWidgetFactory(DockWidgetFactory* _factory)
+{
+ KoDockRegistry::instance()->add(_factory);
+}
+
Krita* Krita::instance()
{
if (!s_instance)
diff --git a/krita/plugins/extensions/pykrita/libkis/krita.h \
b/krita/plugins/extensions/pykrita/libkis/krita.h index 75d5838..22a4a2c 100644
--- a/krita/plugins/extensions/pykrita/libkis/krita.h
+++ b/krita/plugins/extensions/pykrita/libkis/krita.h
@@ -30,6 +30,7 @@
#include <krita_export.h>
+class DockWidgetFactory;
class ViewExtension;
class LIBKIS_EXPORT Krita : public QObject
@@ -47,6 +48,7 @@ public:
void addViewExtension(ViewExtension* _viewExtension);
QList<ViewExtension*> viewExtensions();
+ void addDockWidgetFactory(DockWidgetFactory* _factory );
static Krita* instance();
Q_SIGNALS:
diff --git a/krita/plugins/extensions/pykrita/sip/krita/dockwidget.sip \
b/krita/plugins/extensions/pykrita/sip/krita/dockwidget.sip new file mode 100644
index 0000000..3db6d2b
--- /dev/null
+++ b/krita/plugins/extensions/pykrita/sip/krita/dockwidget.sip
@@ -0,0 +1,13 @@
+%Import QtCore/QtCoremod.sip
+%Import QtGui/QtGuimod.sip
+
+class DockWidget : public QDockWidget /NoDefaultCtors/
+{
+%TypeHeaderCode
+#include "dockwidget.h"
+%End
+
+public:
+ DockWidget();
+
+};
diff --git a/krita/plugins/extensions/pykrita/sip/krita/dockwidgetfactory.sip \
b/krita/plugins/extensions/pykrita/sip/krita/dockwidgetfactory.sip new file mode \
100644 index 0000000..42e8377
--- /dev/null
+++ b/krita/plugins/extensions/pykrita/sip/krita/dockwidgetfactory.sip
@@ -0,0 +1,22 @@
+%Import QtCore/QtCoremod.sip
+%Import QtGui/QtGuimod.sip
+
+class DockWidgetFactory
+{
+%TypeHeaderCode
+#include "dockwidgetfactory.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); + 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 11e33dd..6e132b4 100644
--- a/krita/plugins/extensions/pykrita/sip/krita/krita.sip
+++ b/krita/plugins/extensions/pykrita/sip/krita/krita.sip
@@ -17,6 +17,7 @@ public:
QAction *createAction(const QString &text);
- void addViewExtension(ViewExtension* _viewExtension /TransferThis/);
+ void addViewExtension(ViewExtension* _viewExtension /Transfer/);
+ void addDockWidgetFactory(DockWidgetFactory* _factory /Transfer, TransferThis/);
};
diff --git a/krita/plugins/extensions/pykrita/sip/krita/kritamod.sip \
b/krita/plugins/extensions/pykrita/sip/krita/kritamod.sip index 50d35e5..a571e91 \
100644
--- a/krita/plugins/extensions/pykrita/sip/krita/kritamod.sip
+++ b/krita/plugins/extensions/pykrita/sip/krita/kritamod.sip
@@ -13,6 +13,8 @@
%Include application.sip
%Include document.sip
+%Include dockwidget.sip
+%Include dockwidgetfactory.sip
%Include image.sip
%Include mainwindow.sip
%Include krita.sip
diff --git a/krita/plugins/extensions/pykrita/sip/krita/viewextension.sip \
b/krita/plugins/extensions/pykrita/sip/krita/viewextension.sip index 416a604..e8e2c7c \
100644
--- a/krita/plugins/extensions/pykrita/sip/krita/viewextension.sip
+++ b/krita/plugins/extensions/pykrita/sip/krita/viewextension.sip
@@ -7,7 +7,6 @@ class ViewExtension : public QObject
%TypeHeaderCode
#include "viewextension.h"
-#include <QDebug>
%End
public:
diff --git a/krita/plugins/extensions/pykrita/src/plugins/hello/hello.py \
b/krita/plugins/extensions/pykrita/src/plugins/hello/hello.py index 42527b9..3970ed9 \
100644
--- a/krita/plugins/extensions/pykrita/src/plugins/hello/hello.py
+++ b/krita/plugins/extensions/pykrita/src/plugins/hello/hello.py
@@ -12,3 +12,17 @@ class HelloViewExtension(ViewExtension):
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())
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic