diff --git a/krita/plugins/extensions/pykrita/src/plugins/CMakeLists.txt b/krita/plugins/extensions/pykrita/src/plugins/CMakeLists.txt index 84c738d254c..1578c3d589b 100644 --- a/krita/plugins/extensions/pykrita/src/plugins/CMakeLists.txt +++ b/krita/plugins/extensions/pykrita/src/plugins/CMakeLists.txt @@ -1,89 +1,90 @@ # Copyright (C) 2012, 2013 Shaheed Haque # Copyright (C) 2013 Alex Turbov # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. include(CMakeParseArguments) # # Simple helper function to install plugin and related files # having only a name of the plugin... # (just to reduce syntactic noise when a lot of plugins get installed) # function(install_pykrita_plugin name) set(_options) set(_one_value_args) set(_multi_value_args PATTERNS FILE) cmake_parse_arguments(install_pykrita_plugin "${_options}" "${_one_value_args}" "${_multi_value_args}" ${ARGN}) if(NOT name) message(FATAL_ERROR "Plugin filename is not given") endif() if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${name}.py) install(FILES kritapykrita_${name}.desktop DESTINATION ${SERVICES_INSTALL_DIR}/calligra) foreach(_f ${name}.py ${name}.ui ${name}_ui.rc ${install_pykrita_plugin_FILE}) if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_f}) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${_f} DESTINATION ${DATA_INSTALL_DIR}/krita/pykrita) endif() endforeach() elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${name}) install(FILES ${name}/kritapykrita_${name}.desktop DESTINATION ${SERVICES_INSTALL_DIR}/calligra) install( DIRECTORY ${name} DESTINATION ${DATA_INSTALL_DIR}/krita/pykrita FILES_MATCHING PATTERN "*.py" PATTERN "*.ui" PATTERN "*_ui.rc" PATTERN "__pycache__*" EXCLUDE ) # TODO Is there any way to form a long PATTERN options string # and use it in a single install() call? # NOTE Install specified patterns one-by-one... foreach(_pattern ${install_pykrita_plugin_PATTERNS}) install( DIRECTORY ${name} DESTINATION ${DATA_INSTALL_DIR}/krita/pykrita FILES_MATCHING PATTERN "${_pattern}" PATTERN "__pycache__*" EXCLUDE ) endforeach() else() message(FATAL_ERROR "Do not know what to do with ${name}") endif() endfunction() install_pykrita_plugin(hello) +install_pykrita_plugin(selectionsbagdocker) # if(PYTHON_VERSION_MAJOR VERSION_EQUAL 3) # install_pykrita_plugin(cmake_utils) # install_pykrita_plugin(js_utils PATTERNS "*.json") # install_pykrita_plugin(expand PATTERNS "*.expand" "templates/*.tpl") # endif() install( DIRECTORY libkritapykrita DESTINATION ${DATA_INSTALL_DIR}/krita/pykrita FILES_MATCHING PATTERN "*.py" PATTERN "__pycache__*" EXCLUDE ) diff --git a/krita/plugins/extensions/pykrita/src/plugins/selectionsbagdocker/__init__.py b/krita/plugins/extensions/pykrita/src/plugins/selectionsbagdocker/__init__.py new file mode 100644 index 00000000000..dcd924e76d5 --- /dev/null +++ b/krita/plugins/extensions/pykrita/src/plugins/selectionsbagdocker/__init__.py @@ -0,0 +1,4 @@ +from krita import * +from .selectionsbagdocker import * + +Krita.instance().addDockWidgetFactory(DockWidgetFactory("SelectionsBagDocker", DockWidgetFactory.DockRight, SelectionsBagDocker)) diff --git a/krita/plugins/extensions/pykrita/src/plugins/selectionsbagdocker/kritapykrita_selectionsbagdocker.desktop b/krita/plugins/extensions/pykrita/src/plugins/selectionsbagdocker/kritapykrita_selectionsbagdocker.desktop new file mode 100644 index 00000000000..e7fd73581cb --- /dev/null +++ b/krita/plugins/extensions/pykrita/src/plugins/selectionsbagdocker/kritapykrita_selectionsbagdocker.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Type=Service +ServiceTypes=Krita/PythonPlugin +X-KDE-Library=selectionsbagdocker +X-Python-2-Compatible=true +Name=Selections Bag Docker +Comment=A docker that allow to store a list of selections diff --git a/krita/plugins/extensions/pykrita/src/plugins/selectionsbagdocker/selectionsbagdocker.py b/krita/plugins/extensions/pykrita/src/plugins/selectionsbagdocker/selectionsbagdocker.py new file mode 100644 index 00000000000..b4a33d10194 --- /dev/null +++ b/krita/plugins/extensions/pykrita/src/plugins/selectionsbagdocker/selectionsbagdocker.py @@ -0,0 +1,12 @@ +from PyQt4.QtGui import * +from PyQt4 import uic +from krita import * +import os + +class SelectionsBagDocker(DockWidget): + def __init__(self): + super().__init__() + widget = QWidget(self) + uic.loadUi(os.path.dirname(os.path.realpath(__file__)) + '/selectionsbagdocker.ui', widget) + self.setWidget(widget) + self.setWindowTitle("Selections bag") \ No newline at end of file diff --git a/krita/plugins/extensions/pykrita/src/plugins/selectionsbagdocker/selectionsbagdocker.ui b/krita/plugins/extensions/pykrita/src/plugins/selectionsbagdocker/selectionsbagdocker.ui new file mode 100644 index 00000000000..3a010b9edd4 --- /dev/null +++ b/krita/plugins/extensions/pykrita/src/plugins/selectionsbagdocker/selectionsbagdocker.ui @@ -0,0 +1,34 @@ + + + Form + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + + + + + + + save + + + + + + + +