[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