Krita Source Code Documentation
Loading...
Searching...
No Matches
krita_script_starter.krita_script_starter.KritaScriptStarter Class Reference
+ Inheritance diagram for krita_script_starter.krita_script_starter.KritaScriptStarter:

Public Member Functions

 __init__ (self, parent)
 
 action_triggered (self)
 
 calculate_edit_text (self)
 
 calculate_file_names (self, text)
 
 cancel (self)
 
 create (self)
 
 createActions (self, window)
 
 name_change (self, text)
 
 setup (self)
 

Public Attributes

 action_triggered
 
 cancel
 
 class_name
 
 create
 
 desktop_fn
 
 files
 
 init_name
 
 manual_file
 
 name_change
 
 package_file
 
 package_name
 
 script_abs_path
 
 target_directory
 
 ui
 
 ui_file
 

Detailed Description

Definition at line 187 of file krita_script_starter.py.

Constructor & Destructor Documentation

◆ __init__()

krita_script_starter.krita_script_starter.KritaScriptStarter.__init__ ( self,
parent )

Definition at line 189 of file krita_script_starter.py.

189 def __init__(self, parent):
190 super().__init__(parent)
191

References krita_script_starter.krita_script_starter.KritaScriptStarter.__init__().

Member Function Documentation

◆ action_triggered()

krita_script_starter.krita_script_starter.KritaScriptStarter.action_triggered ( self)

Definition at line 216 of file krita_script_starter.py.

216 def action_triggered(self):
217 self.ui.show()
218 self.ui.activateWindow()
219

References KisVideoExportOptionsDialog.ui, VideoHDRMetadataOptionsDialog.ui, KisDelayedSaveDialog.ui, KisDlgHLGImport.ui, Contour.ui, Texture.ui, BevelAndEmboss.ui, BlendingOptions.ui, ColorOverlay.ui, DropShadow.ui, GradientOverlay.ui, InnerGlow.ui, PatternOverlay.ui, Satin.ui, Stroke.ui, StylesSelector.ui, KisDlgChangeCloneSource::Private.ui, KisDlgCustomTabletResolution.ui, KisRecoverNamedAutosaveDialog.ui, KisEditProfilesDialog::Private.ui, KisInputConfigurationPage.ui, KisInputConfigurationPageItem.ui, KisKeyInputEditor::Private.ui, KisMouseInputEditor::Private.ui, KisWheelInputEditor::Private.ui, KisPaintopPresetIconLibrary.ui, KisDlgListPicker.ui, KisLayerStyleAngleSelector.ui, KisProofingOptionsWidget::Private.ui, KoFillConfigWidget.ui, KoStrokeConfigWidget.ui, KisShortcutsEditorPrivate.ui, KisKShortcutWidgetPrivate.ui, KisColorSelectorSettings.ui, KisOnionSkinsDocker.ui, ArrangeDockerWidget.ui, KisDlgConfigureBrushHud.ui, GridConfigWidget.ui, RecorderExport::Private.ui, RecorderProfileSettings.ui, RecorderSnapshotsManager.ui, RecorderDockerDock::Private.ui, TouchDockerWidget.ui, krita.excepthook.ExceptHookDialog.ui, krita.sceditor.mainwindow.EditorMainWindow.ui, KisWdgConvertHeightToNormalMap.ui, KisWdgEdgeDetection.ui, KisHalftoneConfigPageWidget.ui(), KisHalftoneConfigPageWidget.ui(), KisWdgIndexColors.ui, KisMaskingBrushOption::Private.ui, krita_script_starter.krita_script_starter.KritaScriptStarter.ui, mixer_slider_docker.mixer_slider_docker.MixerSliderDocker.ui, ToolReferenceImagesWidget::Private.ui, KisToolLazyBrushOptionsWidget::Private.ui, and KisToolSmartPatchOptionsWidget::Private.ui.

◆ calculate_edit_text()

krita_script_starter.krita_script_starter.KritaScriptStarter.calculate_edit_text ( self)
Determine if any of the intended files will collide with existing files.

Definition at line 381 of file krita_script_starter.py.

381 def calculate_edit_text(self):
382 """
383 Determine if any of the intended files will collide with existing files.
384
385 """
386 conflict_template = "%s - FILE ALREADY EXISTS<p>"
387 non_conflict_template = "%s<p>"
388 file_conflict = False
389
390 html = ["<h3>Will create the following files:</h3>"]
391 for path in self.files:
392 target_file = os.path.join(self.target_directory, path)
393 if os.path.exists(path):
394 html.append(conflict_template % target_file)
395 file_conflict = True
396 else:
397 html.append(non_conflict_template % target_file)
398
399 if file_conflict:
400 html.append("""<h2><span style="color:red;font-weight:bold">
401 Warning:</span></h2><p>
402 <span style="color:red;font-weight:bold">
403 One or more of the files to be created already exists.
404 If you click "Create Script" those files will be deleted
405 and new files created in their place.</span><p>""")
406
407 return "\n".join(html)
408
409

References KisDlgImportImageSequence.files(), FileSystemWatcherWrapper.files(), KoResourceBundleManifest.files(), Folder.files, krita_script_starter.krita_script_starter.KritaScriptStarter.files, and krita_script_starter.krita_script_starter.KritaScriptStarter.target_directory.

◆ calculate_file_names()

krita_script_starter.krita_script_starter.KritaScriptStarter.calculate_file_names ( self,
text )

Definition at line 351 of file krita_script_starter.py.

351 def calculate_file_names(self, text):
352 # name of class
353
354 spam = text.split(" ")
355 for i, s in enumerate(spam):
356 s = s.strip()
357 s = s.lower()
358 try:
359 spam[i] = s[0].upper()+s[1:]
360 except IndexError:
361 continue
362 self.class_name = "".join(spam)
363
364 # Normalise library name
365 if TESTING:
366 self.package_name = "bbdsss_"+text.lower().replace(" ", "_")
367 else:
368 self.package_name = text.lower().replace(" ", "_")
369
370 # create desktop file
371 self.desktop_fn = self.package_name+'.desktop'
372
373 self.init_name = os.path.join(self.package_name, "__init__.py")
374 self.package_file = os.path.join(
375 self.package_name, self.package_name + ".py")
376 self.manual_file = os.path.join(self.package_name, "Manual.html")
377 self.files = [self.desktop_fn, self.init_name,
378 self.package_name, self.package_file,
379 self.manual_file]
380

◆ cancel()

krita_script_starter.krita_script_starter.KritaScriptStarter.cancel ( self)

Definition at line 220 of file krita_script_starter.py.

220 def cancel(self):
221 self.ui.close()
222

References KisVideoExportOptionsDialog.ui, VideoHDRMetadataOptionsDialog.ui, KisDelayedSaveDialog.ui, KisDlgHLGImport.ui, Contour.ui, Texture.ui, BevelAndEmboss.ui, BlendingOptions.ui, ColorOverlay.ui, DropShadow.ui, GradientOverlay.ui, InnerGlow.ui, PatternOverlay.ui, Satin.ui, Stroke.ui, StylesSelector.ui, KisDlgChangeCloneSource::Private.ui, KisDlgCustomTabletResolution.ui, KisRecoverNamedAutosaveDialog.ui, KisEditProfilesDialog::Private.ui, KisInputConfigurationPage.ui, KisInputConfigurationPageItem.ui, KisKeyInputEditor::Private.ui, KisMouseInputEditor::Private.ui, KisWheelInputEditor::Private.ui, KisPaintopPresetIconLibrary.ui, KisDlgListPicker.ui, KisLayerStyleAngleSelector.ui, KisProofingOptionsWidget::Private.ui, KoFillConfigWidget.ui, KoStrokeConfigWidget.ui, KisShortcutsEditorPrivate.ui, KisKShortcutWidgetPrivate.ui, KisColorSelectorSettings.ui, KisOnionSkinsDocker.ui, ArrangeDockerWidget.ui, KisDlgConfigureBrushHud.ui, GridConfigWidget.ui, RecorderExport::Private.ui, RecorderProfileSettings.ui, RecorderSnapshotsManager.ui, RecorderDockerDock::Private.ui, TouchDockerWidget.ui, krita.excepthook.ExceptHookDialog.ui, krita.sceditor.mainwindow.EditorMainWindow.ui, KisWdgConvertHeightToNormalMap.ui, KisWdgEdgeDetection.ui, KisHalftoneConfigPageWidget.ui(), KisHalftoneConfigPageWidget.ui(), KisWdgIndexColors.ui, KisMaskingBrushOption::Private.ui, krita_script_starter.krita_script_starter.KritaScriptStarter.ui, mixer_slider_docker.mixer_slider_docker.MixerSliderDocker.ui, ToolReferenceImagesWidget::Private.ui, KisToolLazyBrushOptionsWidget::Private.ui, and KisToolSmartPatchOptionsWidget::Private.ui.

◆ create()

krita_script_starter.krita_script_starter.KritaScriptStarter.create ( self)
Go ahead and create the relevant files. 

Definition at line 223 of file krita_script_starter.py.

223 def create(self):
224 """Go ahead and create the relevant files. """
225
226 if self.ui.e_name_of_script.text().strip() == "":
227 # Don't create script with empty name
228 return
229
230 def full_dir(path):
231 # convenience function
232 return os.path.join(self.target_directory, path)
233
234 # should already be done, but just in case:
235 self.calculate_file_names(self.ui.e_name_of_script.text())
236
237 menu_entry = self.ui.e_menu_entry.text()
238 if menu_entry.strip() == "":
239 menu_entry = self.ui.e_name_of_script.text()
240
241 comment = self.ui.e_comment.text()
242 if comment.strip() == "":
243 comment = "Replace this text with your description"
244
245 values = {
246 SCRIPT_NAME: self.ui.e_name_of_script.text(),
247 SCRIPT_COMMENT: comment,
248 KRITA_ID: "pykrita_" + self.package_name,
249 SCRIPT_TYPE: SCRIPT_DOCKER if self.ui.rb_docker.isChecked() else SCRIPT_EXTENSION, # noqa: E501
250 MENU_ENTRY: menu_entry,
251 LIBRARY_NAME: self.package_name,
252 CLASS_NAME: self.class_name
253 }
254
255 try:
256 # create package directory
257 package_directory = full_dir(self.package_name)
258 # needs to be lowercase and no spaces
259 os.mkdir(package_directory)
260 except FileExistsError:
261 # if package directory exists write into it, overwriting
262 # existing files.
263 pass
264
265 # create desktop file
266 fn = full_dir(self.desktop_fn)
267 with open(fn, 'w+t') as f:
268 f.write(DESKTOP_TEMPLATE.format(**values))
269
270 fn = full_dir(self.init_name)
271 with open(fn, 'w+t') as f:
272 if self.ui.rb_docker.isChecked():
273 f.write(INIT_TEMPLATE_DOCKER.format(**values))
274 else:
275 f.write(INIT_TEMPLATE_EXTENSION.format(**values))
276
277
278 # create main package file
279 fn = full_dir(self.package_file)
280
281 if self.ui.rb_docker.isChecked():
282 with open(fn, 'w+t') as f:
283 f.write(DOCKER_TEMPLATE.format(**values))
284 else:
285 # Default to extension type
286 with open(fn, 'w+t') as f:
287 f.write(EXTENSION_TEMPLATE.format(**values))
288
289 # create manual file.
290 fn = full_dir(self.manual_file)
291 with open(fn, 'w+t') as f:
292 f.write(MANUAL_TEMPLATE.format(**values))
293 # enable script in krita settings (!)
294
295 if self.ui.cb_enable_script.isChecked():
296 Application.writeSetting(SCRIPT_SETTINGS, 'enable_'+self.package_name, 'true')
297
298 # notify success
299 # Assemble message
300 title = "Krita Script files created"
301 message = []
302 message.append("<h3>Directory</h3>")
303 message.append("Project files were created in the directory<p>%s"
304 % self.target_directory)
305 message.append(
306 "<h3>Files Created</h3>The following files were created:<p>")
307 for f in self.files:
308 message.append("%s<p>" % f)
309 message.append("%s<p>" % self.manual_file)
310 message.append("<h3>Location of script</h3>")
311 message.append("Open this file to edit your script:<p>")
312 script_path = os.path.join(self.target_directory, self.package_file)
313 message.append("%s<p>" % script_path)
314 message.append("Open this file to edit your Manual:<p>")
315 script_path = os.path.join(self.target_directory, self.manual_file)
316 message.append("%s<p>" % script_path)
317 message.append("<h3>Record these locations</h3>")
318 message.append(
319 "Make a note of these locations before you click ok.<p>")
320 message = "\n".join(message)
321
322 # Display message box
323 if CONTEXT_KRITA:
324 msgbox = QMessageBox()
325 else:
326 msgbox = QMessageBox(self)
327 msgbox.setWindowTitle(title)
328 msgbox.setText(message)
329 msgbox.setStandardButtons(QMessageBox.StandardButton.Ok)
330 msgbox.setDefaultButton(QMessageBox.StandardButton.Ok)
331 msgbox.setIcon(QMessageBox.Icon.Information)
332 msgbox.exec()
333
334 self.ui.close()
335

References krita_script_starter.krita_script_starter.KritaScriptStarter.calculate_file_names(), krita_script_starter.krita_script_starter.KritaScriptStarter.target_directory, KisVideoExportOptionsDialog.ui, VideoHDRMetadataOptionsDialog.ui, KisDelayedSaveDialog.ui, KisDlgHLGImport.ui, Contour.ui, Texture.ui, BevelAndEmboss.ui, BlendingOptions.ui, ColorOverlay.ui, DropShadow.ui, GradientOverlay.ui, InnerGlow.ui, PatternOverlay.ui, Satin.ui, Stroke.ui, StylesSelector.ui, KisDlgChangeCloneSource::Private.ui, KisDlgCustomTabletResolution.ui, KisRecoverNamedAutosaveDialog.ui, KisEditProfilesDialog::Private.ui, KisInputConfigurationPage.ui, KisInputConfigurationPageItem.ui, KisKeyInputEditor::Private.ui, KisMouseInputEditor::Private.ui, KisWheelInputEditor::Private.ui, KisPaintopPresetIconLibrary.ui, KisDlgListPicker.ui, KisLayerStyleAngleSelector.ui, KisProofingOptionsWidget::Private.ui, KoFillConfigWidget.ui, KoStrokeConfigWidget.ui, KisShortcutsEditorPrivate.ui, KisKShortcutWidgetPrivate.ui, KisColorSelectorSettings.ui, KisOnionSkinsDocker.ui, ArrangeDockerWidget.ui, KisDlgConfigureBrushHud.ui, GridConfigWidget.ui, RecorderExport::Private.ui, RecorderProfileSettings.ui, RecorderSnapshotsManager.ui, RecorderDockerDock::Private.ui, TouchDockerWidget.ui, krita.excepthook.ExceptHookDialog.ui, krita.sceditor.mainwindow.EditorMainWindow.ui, KisWdgConvertHeightToNormalMap.ui, KisWdgEdgeDetection.ui, KisHalftoneConfigPageWidget.ui(), KisHalftoneConfigPageWidget.ui(), KisWdgIndexColors.ui, KisMaskingBrushOption::Private.ui, krita_script_starter.krita_script_starter.KritaScriptStarter.ui, mixer_slider_docker.mixer_slider_docker.MixerSliderDocker.ui, ToolReferenceImagesWidget::Private.ui, KisToolLazyBrushOptionsWidget::Private.ui, and KisToolSmartPatchOptionsWidget::Private.ui.

◆ createActions()

krita_script_starter.krita_script_starter.KritaScriptStarter.createActions ( self,
window )
 Called by Krita to create actions.

Definition at line 207 of file krita_script_starter.py.

207 def createActions(self, window):
208 """ Called by Krita to create actions."""
209 action = window.createAction(
210 MAIN_KRITA_ID, MAIN_KRITA_MENU_ENTRY, "tools/scripts")
211 # parameter 1 = the name that Krita uses to identify the action
212 # parameter 2 = the text to be added to the menu entry for this script
213 # parameter 3 = location of menu entry
214 action.triggered.connect(self.action_triggered)
215

◆ name_change()

krita_script_starter.krita_script_starter.KritaScriptStarter.name_change ( self,
text )
name of script has changed,
* calculate consequential names
* update the e_files_display edit

Definition at line 336 of file krita_script_starter.py.

336 def name_change(self, text):
337 """
338 name of script has changed,
339 * calculate consequential names
340 * update the e_files_display edit
341 """
342
343 text = text.strip()
344 if len(text) == 0:
345 return
346
347 self.calculate_file_names(text)
348 edit_text = self.calculate_edit_text()
349 self.ui.e_files_display.setText(edit_text)
350

References krita_script_starter.krita_script_starter.KritaScriptStarter.calculate_edit_text(), krita_script_starter.krita_script_starter.KritaScriptStarter.calculate_file_names(), KisVideoExportOptionsDialog.ui, VideoHDRMetadataOptionsDialog.ui, KisDelayedSaveDialog.ui, KisDlgHLGImport.ui, Contour.ui, Texture.ui, BevelAndEmboss.ui, BlendingOptions.ui, ColorOverlay.ui, DropShadow.ui, GradientOverlay.ui, InnerGlow.ui, PatternOverlay.ui, Satin.ui, Stroke.ui, StylesSelector.ui, KisDlgChangeCloneSource::Private.ui, KisDlgCustomTabletResolution.ui, KisRecoverNamedAutosaveDialog.ui, KisEditProfilesDialog::Private.ui, KisInputConfigurationPage.ui, KisInputConfigurationPageItem.ui, KisKeyInputEditor::Private.ui, KisMouseInputEditor::Private.ui, KisWheelInputEditor::Private.ui, KisPaintopPresetIconLibrary.ui, KisDlgListPicker.ui, KisLayerStyleAngleSelector.ui, KisProofingOptionsWidget::Private.ui, KoFillConfigWidget.ui, KoStrokeConfigWidget.ui, KisShortcutsEditorPrivate.ui, KisKShortcutWidgetPrivate.ui, KisColorSelectorSettings.ui, KisOnionSkinsDocker.ui, ArrangeDockerWidget.ui, KisDlgConfigureBrushHud.ui, GridConfigWidget.ui, RecorderExport::Private.ui, RecorderProfileSettings.ui, RecorderSnapshotsManager.ui, RecorderDockerDock::Private.ui, TouchDockerWidget.ui, krita.excepthook.ExceptHookDialog.ui, krita.sceditor.mainwindow.EditorMainWindow.ui, KisWdgConvertHeightToNormalMap.ui, KisWdgEdgeDetection.ui, KisHalftoneConfigPageWidget.ui(), KisHalftoneConfigPageWidget.ui(), KisWdgIndexColors.ui, KisMaskingBrushOption::Private.ui, krita_script_starter.krita_script_starter.KritaScriptStarter.ui, mixer_slider_docker.mixer_slider_docker.MixerSliderDocker.ui, ToolReferenceImagesWidget::Private.ui, KisToolLazyBrushOptionsWidget::Private.ui, and KisToolSmartPatchOptionsWidget::Private.ui.

◆ setup()

krita_script_starter.krita_script_starter.KritaScriptStarter.setup ( self)

Definition at line 192 of file krita_script_starter.py.

192 def setup(self):
193 self.script_abs_path = os.path.dirname(os.path.realpath(__file__))
194 self.ui_file = os.path.join(self.script_abs_path, UI_FILE)
195 self.ui = load_ui(self.ui_file)
196
197 self.ui.e_name_of_script.textChanged.connect(self.name_change)
198 self.ui.cancel_button.clicked.connect(self.cancel)
199 self.ui.create_button.clicked.connect(self.create)
200
201 target_directory = Krita.instance().getAppDataLocation()
202 if not CONTEXT_KRITA:
203 target_directory = os.path.join(target_directory, "krita")
204 target_directory = os.path.join(target_directory, "pykrita")
205 self.target_directory = target_directory
206
static Krita * instance()
instance retrieve the singleton instance of the Application object.
Definition Krita.cpp:390

Member Data Documentation

◆ action_triggered

krita_script_starter.krita_script_starter.KritaScriptStarter.action_triggered

Definition at line 214 of file krita_script_starter.py.

◆ cancel

krita_script_starter.krita_script_starter.KritaScriptStarter.cancel

Definition at line 198 of file krita_script_starter.py.

◆ class_name

krita_script_starter.krita_script_starter.KritaScriptStarter.class_name

Definition at line 362 of file krita_script_starter.py.

◆ create

krita_script_starter.krita_script_starter.KritaScriptStarter.create

Definition at line 199 of file krita_script_starter.py.

◆ desktop_fn

krita_script_starter.krita_script_starter.KritaScriptStarter.desktop_fn

Definition at line 371 of file krita_script_starter.py.

◆ files

krita_script_starter.krita_script_starter.KritaScriptStarter.files

Definition at line 377 of file krita_script_starter.py.

◆ init_name

krita_script_starter.krita_script_starter.KritaScriptStarter.init_name

Definition at line 373 of file krita_script_starter.py.

◆ manual_file

krita_script_starter.krita_script_starter.KritaScriptStarter.manual_file

Definition at line 309 of file krita_script_starter.py.

◆ name_change

krita_script_starter.krita_script_starter.KritaScriptStarter.name_change

Definition at line 197 of file krita_script_starter.py.

◆ package_file

krita_script_starter.krita_script_starter.KritaScriptStarter.package_file

Definition at line 374 of file krita_script_starter.py.

◆ package_name

krita_script_starter.krita_script_starter.KritaScriptStarter.package_name

Definition at line 248 of file krita_script_starter.py.

◆ script_abs_path

krita_script_starter.krita_script_starter.KritaScriptStarter.script_abs_path

Definition at line 193 of file krita_script_starter.py.

◆ target_directory

krita_script_starter.krita_script_starter.KritaScriptStarter.target_directory

Definition at line 205 of file krita_script_starter.py.

◆ ui

krita_script_starter.krita_script_starter.KritaScriptStarter.ui

Definition at line 195 of file krita_script_starter.py.

◆ ui_file

krita_script_starter.krita_script_starter.KritaScriptStarter.ui_file

Definition at line 194 of file krita_script_starter.py.


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