Krita Source Code Documentation
Loading...
Searching...
No Matches
plugin_importer.plugin_importer_extension.PluginImporterExtension Class Reference
+ Inheritance diagram for plugin_importer.plugin_importer_extension.PluginImporterExtension:

Public Member Functions

 __init__ (self, parent)
 
 activate_plugins (self, plugins)
 
 confirm_activate (self, plugins)
 
 confirm_overwrite (self, plugin)
 
 createActions (self, window)
 
 display_errors (self, error)
 
 do_import (self, zipfile)
 
 get_resources_dir (self)
 
 import_plugin_from_file (self)
 
 import_plugin_from_web (self)
 
 setup (self)
 

Public Attributes

 import_plugin_from_file
 
 import_plugin_from_web
 
 parent
 

Detailed Description

Definition at line 23 of file plugin_importer_extension.py.

Constructor & Destructor Documentation

◆ __init__()

plugin_importer.plugin_importer_extension.PluginImporterExtension.__init__ ( self,
parent )

Definition at line 25 of file plugin_importer_extension.py.

25 def __init__(self, parent):
26 super().__init__(parent)
27 self.parent = parent
28

References plugin_importer.plugin_importer_extension.PluginImporterExtension.__init__().

Member Function Documentation

◆ activate_plugins()

plugin_importer.plugin_importer_extension.PluginImporterExtension.activate_plugins ( self,
plugins )

Definition at line 85 of file plugin_importer_extension.py.

85 def activate_plugins(self, plugins):
86 for plugin in plugins:
87 Application.writeSetting(
88 'python',
89 'enable_%s' % plugin['name'],
90 'true')
91

◆ confirm_activate()

plugin_importer.plugin_importer_extension.PluginImporterExtension.confirm_activate ( self,
plugins )

Definition at line 53 of file plugin_importer_extension.py.

53 def confirm_activate(self, plugins):
54 txt = [
55 '<p>',
56 i18n('The following plugins were imported:'),
57 '</p>',
58 '<ul>'
59 ]
60 for plugin in plugins:
61 txt.append('<li>%s</li>' % plugin['ui_name'])
62
63 txt.append('</ul>')
64 txt.append('<p><strong>')
65 txt.append(i18n(
66 'Enable plugins now? (Requires restart)'))
67 txt.append('</strong></p>')
68
69 reply = QMessageBox.question(
70 self.parent.activeWindow().qwindow(),
71 i18n('Activate Plugins?'),
72 ('\n').join(txt),
73 QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No)
74 return reply == QMessageBox.StandardButton.Yes
75

References KoShape.parent(), KisNodeDummy.parent(), KUndo2Model.parent(), KoShape::Private.parent, KoToolProxyPrivate.parent, KisForestDetail::RootNodeImpl< Node< T > >.parent, KisForestDetail::RootNodeImpl< Node< T > >< T >.parent, KisForestDetail::RootNodeImpl< Node< T > >< KoSvgTextContentElement >.parent, KisForestDetail::RootNodeImpl< Base >.parent, KisForestDetail::RootNodeImpl< Node< T > >< FontFamilyNode >.parent, KisLayerUtils::RemoveNodeHelper::ReplacementNode.parent, KisNode.parent, KisPaintDevice::Private.parent, KisMementoItem.parent(), StoryboardChild.parent(), EnhancedPathParameter.parent(), KoPathPoint.parent(), KoRTree< KoShape * >::Node.parent(), KoRTree< T >::Node.parent(), KisNode.parent(), KisProjectionLeaf.parent(), KisForestDetail::ChildIterator< T, is_const >.parent, KoFileDialog.parent, KDEPrivate::ToolBarHandler::Private.parent, FontStyleModel.parent(), KoFontGlyphModel.parent(), KisFiltersModel.parent(), KoZoomAction.parent, KisKXMLGUI::ContainerNode.parent, KisAnimCurvesChannelsModel.parent(), KisUndoModel.parent(), FontAxesModel.parent(), KisNodeModel.parent(), StoryboardModel.parent(), OpenTypeFeatureModel.parent(), mikro.PyQtClass.parent(), ExrLayerInfoBase.parent, KDcrawIface::RExpanderBox.parent, channels2layers.channels2layers.ChannelsToLayers.parent, filtermanager.components.filtermanagertreeitem.FilterManagerTreeItem.parent(), plugin_importer.plugin_importer_extension.PluginImporterExtension.parent, scripter.ui_scripter.actions.closeaction.closeaction.CloseAction.parent(), scripter.ui_scripter.actions.debugaction.debugaction.DebugAction.parent(), scripter.ui_scripter.actions.newaction.newaction.NewAction.parent(), scripter.ui_scripter.actions.openaction.openaction.OpenAction.parent(), scripter.ui_scripter.actions.reloadaction.reloadaction.ReloadAction.parent(), scripter.ui_scripter.actions.runaction.runaction.RunAction.parent(), scripter.ui_scripter.actions.saveaction.saveaction.SaveAction.parent(), scripter.ui_scripter.actions.saveasaction.saveasaction.SaveAsAction.parent(), scripter.ui_scripter.actions.settingsaction.settingsaction.SettingsAction.parent(), filtermanager.components.filtermanagertreemodel.FilterManagerTreeModel.parent(), DefaultToolTextPropertiesInterface.parent, SvgTextCursorPropertyInterface::Private.parent, and TagFilterProxyModelQmlWrapper::Private.parent.

◆ confirm_overwrite()

plugin_importer.plugin_importer_extension.PluginImporterExtension.confirm_overwrite ( self,
plugin )

Definition at line 44 of file plugin_importer_extension.py.

44 def confirm_overwrite(self, plugin):
45 reply = QMessageBox.question(
46 self.parent.activeWindow().qwindow(),
47 i18n('Overwrite Plugin'),
48 i18n('The plugin "%s" already exists. Overwrite it?') % (
49 plugin['ui_name']),
50 QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No)
51 return reply == QMessageBox.StandardButton.Yes
52

References KoShape.parent(), KisNodeDummy.parent(), KUndo2Model.parent(), KoShape::Private.parent, KoToolProxyPrivate.parent, KisForestDetail::RootNodeImpl< Node< T > >.parent, KisForestDetail::RootNodeImpl< Node< T > >< T >.parent, KisForestDetail::RootNodeImpl< Node< T > >< KoSvgTextContentElement >.parent, KisForestDetail::RootNodeImpl< Base >.parent, KisForestDetail::RootNodeImpl< Node< T > >< FontFamilyNode >.parent, KisLayerUtils::RemoveNodeHelper::ReplacementNode.parent, KisNode.parent, KisPaintDevice::Private.parent, KisMementoItem.parent(), StoryboardChild.parent(), EnhancedPathParameter.parent(), KoPathPoint.parent(), KoRTree< KoShape * >::Node.parent(), KoRTree< T >::Node.parent(), KisNode.parent(), KisProjectionLeaf.parent(), KisForestDetail::ChildIterator< T, is_const >.parent, KoFileDialog.parent, KDEPrivate::ToolBarHandler::Private.parent, FontStyleModel.parent(), KoFontGlyphModel.parent(), KisFiltersModel.parent(), KoZoomAction.parent, KisKXMLGUI::ContainerNode.parent, KisAnimCurvesChannelsModel.parent(), KisUndoModel.parent(), FontAxesModel.parent(), KisNodeModel.parent(), StoryboardModel.parent(), OpenTypeFeatureModel.parent(), mikro.PyQtClass.parent(), ExrLayerInfoBase.parent, KDcrawIface::RExpanderBox.parent, channels2layers.channels2layers.ChannelsToLayers.parent, filtermanager.components.filtermanagertreeitem.FilterManagerTreeItem.parent(), plugin_importer.plugin_importer_extension.PluginImporterExtension.parent, scripter.ui_scripter.actions.closeaction.closeaction.CloseAction.parent(), scripter.ui_scripter.actions.debugaction.debugaction.DebugAction.parent(), scripter.ui_scripter.actions.newaction.newaction.NewAction.parent(), scripter.ui_scripter.actions.openaction.openaction.OpenAction.parent(), scripter.ui_scripter.actions.reloadaction.reloadaction.ReloadAction.parent(), scripter.ui_scripter.actions.runaction.runaction.RunAction.parent(), scripter.ui_scripter.actions.saveaction.saveaction.SaveAction.parent(), scripter.ui_scripter.actions.saveasaction.saveasaction.SaveAsAction.parent(), scripter.ui_scripter.actions.settingsaction.settingsaction.SettingsAction.parent(), filtermanager.components.filtermanagertreemodel.FilterManagerTreeModel.parent(), DefaultToolTextPropertiesInterface.parent, SvgTextCursorPropertyInterface::Private.parent, and TagFilterProxyModelQmlWrapper::Private.parent.

◆ createActions()

plugin_importer.plugin_importer_extension.PluginImporterExtension.createActions ( self,
window )

Definition at line 32 of file plugin_importer_extension.py.

32 def createActions(self, window):
33 action = window.createAction(
34 'plugin_importer_file',
35 i18n('Import Python Plugin from File...'),
36 'tools/scripts')
37 action.triggered.connect(self.import_plugin_from_file)
38 action = window.createAction(
39 'plugin_importer_web',
40 i18n('Import Python Plugin from Web...'),
41 'tools/scripts')
42 action.triggered.connect(self.import_plugin_from_web)
43

◆ display_errors()

plugin_importer.plugin_importer_extension.PluginImporterExtension.display_errors ( self,
error )

Definition at line 76 of file plugin_importer_extension.py.

76 def display_errors(self, error):
77 msg = '<p>%s</p><pre>%s</pre>' % (
78 i18n('Error during import:'),
79 html.escape(str(error)))
80 QMessageBox.warning(
81 self.parent.activeWindow().qwindow(),
82 i18n('Error'),
83 msg)
84

References KoShape.parent(), KisNodeDummy.parent(), KUndo2Model.parent(), KoShape::Private.parent, KoToolProxyPrivate.parent, KisForestDetail::RootNodeImpl< Node< T > >.parent, KisForestDetail::RootNodeImpl< Node< T > >< T >.parent, KisForestDetail::RootNodeImpl< Node< T > >< KoSvgTextContentElement >.parent, KisForestDetail::RootNodeImpl< Base >.parent, KisForestDetail::RootNodeImpl< Node< T > >< FontFamilyNode >.parent, KisLayerUtils::RemoveNodeHelper::ReplacementNode.parent, KisNode.parent, KisPaintDevice::Private.parent, KisMementoItem.parent(), StoryboardChild.parent(), EnhancedPathParameter.parent(), KoPathPoint.parent(), KoRTree< KoShape * >::Node.parent(), KoRTree< T >::Node.parent(), KisNode.parent(), KisProjectionLeaf.parent(), KisForestDetail::ChildIterator< T, is_const >.parent, KoFileDialog.parent, KDEPrivate::ToolBarHandler::Private.parent, FontStyleModel.parent(), KoFontGlyphModel.parent(), KisFiltersModel.parent(), KoZoomAction.parent, KisKXMLGUI::ContainerNode.parent, KisAnimCurvesChannelsModel.parent(), KisUndoModel.parent(), FontAxesModel.parent(), KisNodeModel.parent(), StoryboardModel.parent(), OpenTypeFeatureModel.parent(), mikro.PyQtClass.parent(), ExrLayerInfoBase.parent, KDcrawIface::RExpanderBox.parent, channels2layers.channels2layers.ChannelsToLayers.parent, filtermanager.components.filtermanagertreeitem.FilterManagerTreeItem.parent(), plugin_importer.plugin_importer_extension.PluginImporterExtension.parent, scripter.ui_scripter.actions.closeaction.closeaction.CloseAction.parent(), scripter.ui_scripter.actions.debugaction.debugaction.DebugAction.parent(), scripter.ui_scripter.actions.newaction.newaction.NewAction.parent(), scripter.ui_scripter.actions.openaction.openaction.OpenAction.parent(), scripter.ui_scripter.actions.reloadaction.reloadaction.ReloadAction.parent(), scripter.ui_scripter.actions.runaction.runaction.RunAction.parent(), scripter.ui_scripter.actions.saveaction.saveaction.SaveAction.parent(), scripter.ui_scripter.actions.saveasaction.saveasaction.SaveAsAction.parent(), scripter.ui_scripter.actions.settingsaction.settingsaction.SettingsAction.parent(), filtermanager.components.filtermanagertreemodel.FilterManagerTreeModel.parent(), DefaultToolTextPropertiesInterface.parent, SvgTextCursorPropertyInterface::Private.parent, and TagFilterProxyModelQmlWrapper::Private.parent.

◆ do_import()

plugin_importer.plugin_importer_extension.PluginImporterExtension.do_import ( self,
zipfile )

Definition at line 129 of file plugin_importer_extension.py.

129 def do_import(self, zipfile):
130 try:
131 imported = PluginImporter(
132 zipfile,
133 self.get_resources_dir(),
134 self.confirm_overwrite
135 ).import_all()
136 except PluginImportError as e:
137 self.display_errors(e)
138 return
139
140 if imported:
141 activate = self.confirm_activate(imported)
142 if activate:
143 self.activate_plugins(imported)

References plugin_importer.plugin_importer_extension.PluginImporterExtension.activate_plugins(), plugin_importer.plugin_importer_extension.PluginImporterExtension.confirm_activate(), plugin_importer.plugin_importer_extension.PluginImporterExtension.confirm_overwrite(), plugin_importer.plugin_importer_extension.PluginImporterExtension.display_errors(), and plugin_importer.plugin_importer_extension.PluginImporterExtension.get_resources_dir().

◆ get_resources_dir()

plugin_importer.plugin_importer_extension.PluginImporterExtension.get_resources_dir ( self)

Definition at line 92 of file plugin_importer_extension.py.

92 def get_resources_dir(self):
93 return Krita.instance().getAppDataLocation()
94
static Krita * instance()
instance retrieve the singleton instance of the Application object.
Definition Krita.cpp:390

References Krita.instance().

◆ import_plugin_from_file()

plugin_importer.plugin_importer_extension.PluginImporterExtension.import_plugin_from_file ( self)

Definition at line 116 of file plugin_importer_extension.py.

116 def import_plugin_from_file(self):
118 self.parent.activeWindow().qwindow(),
119 i18n('Import Plugin'),
120 os.path.expanduser('~'),
121 '%s (*.zip)' % i18n('Zip Archives')
122 )
123
124 if not zipfile:
125 return
126
127 self.do_import(zipfile)
128
static QString getOpenFileName(QWidget *parent=nullptr, const QString &caption=QString(), const QString &directory=QString(), const QString &filter=QString(), const QString &selectedFilter=QString(), const QString &dialogName=QString())
Create and show a file dialog and return the name of an existing file selected by the user.

References plugin_importer.plugin_importer_extension.PluginImporterExtension.do_import(), FileDialog.getOpenFileName(), KoShape::Private.parent, KoToolProxyPrivate.parent, KisForestDetail::RootNodeImpl< Base >.parent, KisForestDetail::RootNodeImpl< Node< T > >< KoSvgTextContentElement >.parent, KisForestDetail::RootNodeImpl< Node< T > >< T >.parent, KisForestDetail::RootNodeImpl< Node< T > >< FontFamilyNode >.parent, KisForestDetail::RootNodeImpl< Node< T > >.parent, KisMementoItem.parent(), StoryboardChild.parent(), EnhancedPathParameter.parent(), KoPathPoint.parent(), KoRTree< T >::Node.parent(), KoRTree< KoShape * >::Node.parent(), KoShape.parent(), KisNode.parent(), KisProjectionLeaf.parent(), KisNodeDummy.parent(), KisForestDetail::ChildIterator< T, is_const >.parent, KUndo2Model.parent(), KoFontGlyphModel.parent(), KisLayerUtils::RemoveNodeHelper::ReplacementNode.parent, KisNode.parent, KisPaintDevice::Private.parent, KisFiltersModel.parent(), KoZoomAction.parent, KoFileDialog.parent, KDEPrivate::ToolBarHandler::Private.parent, KisKXMLGUI::ContainerNode.parent, FontStyleModel.parent(), KisAnimCurvesChannelsModel.parent(), KisUndoModel.parent(), FontAxesModel.parent(), KisNodeModel.parent(), StoryboardModel.parent(), OpenTypeFeatureModel.parent(), mikro.PyQtClass.parent(), ExrLayerInfoBase.parent, KDcrawIface::RExpanderBox.parent, channels2layers.channels2layers.ChannelsToLayers.parent, filtermanager.components.filtermanagertreeitem.FilterManagerTreeItem.parent(), plugin_importer.plugin_importer_extension.PluginImporterExtension.parent, scripter.ui_scripter.actions.closeaction.closeaction.CloseAction.parent(), scripter.ui_scripter.actions.debugaction.debugaction.DebugAction.parent(), scripter.ui_scripter.actions.newaction.newaction.NewAction.parent(), scripter.ui_scripter.actions.openaction.openaction.OpenAction.parent(), scripter.ui_scripter.actions.reloadaction.reloadaction.ReloadAction.parent(), scripter.ui_scripter.actions.runaction.runaction.RunAction.parent(), scripter.ui_scripter.actions.saveaction.saveaction.SaveAction.parent(), scripter.ui_scripter.actions.saveasaction.saveasaction.SaveAsAction.parent(), scripter.ui_scripter.actions.settingsaction.settingsaction.SettingsAction.parent(), filtermanager.components.filtermanagertreemodel.FilterManagerTreeModel.parent(), DefaultToolTextPropertiesInterface.parent, SvgTextCursorPropertyInterface::Private.parent, and TagFilterProxyModelQmlWrapper::Private.parent.

◆ import_plugin_from_web()

plugin_importer.plugin_importer_extension.PluginImporterExtension.import_plugin_from_web ( self)

Definition at line 95 of file plugin_importer_extension.py.

95 def import_plugin_from_web(self):
96 infotext = i18n(
97 '<p><strong>Enter download URL</strong></p>'
98 '<p>For example:'
99 '<ul>'
100 '<li>Zip download link (http://example.com/plugin.zip)</li>'
101 '<li>Github repository (https://github.com/test/plugin)</li>'
102 )
103 url = QInputDialog.getText(
104 self.parent.activeWindow().qwindow(),
105 i18n('Import Plugin'),
106 infotext)[0]
107 if url:
108 with tempfile.TemporaryDirectory() as tmpdir:
109 try:
110 zipfile = download_plugin(url=url, dest_dir=tmpdir)
111 except PluginDownloadError as e:
112 self.display_errors(e)
113 return
114 self.do_import(zipfile)
115

References plugin_importer.plugin_importer_extension.PluginImporterExtension.display_errors(), plugin_importer.plugin_importer_extension.PluginImporterExtension.do_import(), KoShape::Private.parent, KoToolProxyPrivate.parent, KisForestDetail::RootNodeImpl< Node< T > >.parent, KisForestDetail::RootNodeImpl< Node< T > >< T >.parent, KisForestDetail::RootNodeImpl< Node< T > >< KoSvgTextContentElement >.parent, KisForestDetail::RootNodeImpl< Node< T > >< FontFamilyNode >.parent, KisForestDetail::RootNodeImpl< Base >.parent, KisLayerUtils::RemoveNodeHelper::ReplacementNode.parent, KisNode.parent, KisPaintDevice::Private.parent, KisMementoItem.parent(), StoryboardChild.parent(), EnhancedPathParameter.parent(), KoPathPoint.parent(), KoRTree< KoShape * >::Node.parent(), KoRTree< T >::Node.parent(), KoShape.parent(), KisNode.parent(), KisProjectionLeaf.parent(), KisNodeDummy.parent(), KisForestDetail::ChildIterator< T, is_const >.parent, FontStyleModel.parent(), KUndo2Model.parent(), KoFontGlyphModel.parent(), KisFiltersModel.parent(), KisAnimCurvesChannelsModel.parent(), KisUndoModel.parent(), FontAxesModel.parent(), KisNodeModel.parent(), KoZoomAction.parent, KoFileDialog.parent, KDEPrivate::ToolBarHandler::Private.parent, KisKXMLGUI::ContainerNode.parent, StoryboardModel.parent(), OpenTypeFeatureModel.parent(), mikro.PyQtClass.parent(), ExrLayerInfoBase.parent, KDcrawIface::RExpanderBox.parent, channels2layers.channels2layers.ChannelsToLayers.parent, filtermanager.components.filtermanagertreeitem.FilterManagerTreeItem.parent(), plugin_importer.plugin_importer_extension.PluginImporterExtension.parent, scripter.ui_scripter.actions.closeaction.closeaction.CloseAction.parent(), scripter.ui_scripter.actions.debugaction.debugaction.DebugAction.parent(), scripter.ui_scripter.actions.newaction.newaction.NewAction.parent(), scripter.ui_scripter.actions.openaction.openaction.OpenAction.parent(), scripter.ui_scripter.actions.reloadaction.reloadaction.ReloadAction.parent(), scripter.ui_scripter.actions.runaction.runaction.RunAction.parent(), scripter.ui_scripter.actions.saveaction.saveaction.SaveAction.parent(), scripter.ui_scripter.actions.saveasaction.saveasaction.SaveAsAction.parent(), scripter.ui_scripter.actions.settingsaction.settingsaction.SettingsAction.parent(), filtermanager.components.filtermanagertreemodel.FilterManagerTreeModel.parent(), DefaultToolTextPropertiesInterface.parent, SvgTextCursorPropertyInterface::Private.parent, and TagFilterProxyModelQmlWrapper::Private.parent.

◆ setup()

plugin_importer.plugin_importer_extension.PluginImporterExtension.setup ( self)

Definition at line 29 of file plugin_importer_extension.py.

29 def setup(self):
30 pass
31

Member Data Documentation

◆ import_plugin_from_file

plugin_importer.plugin_importer_extension.PluginImporterExtension.import_plugin_from_file

Definition at line 37 of file plugin_importer_extension.py.

◆ import_plugin_from_web

plugin_importer.plugin_importer_extension.PluginImporterExtension.import_plugin_from_web

Definition at line 42 of file plugin_importer_extension.py.

◆ parent

plugin_importer.plugin_importer_extension.PluginImporterExtension.parent

Definition at line 27 of file plugin_importer_extension.py.


The documentation for this class was generated from the following file: