Krita Source Code Documentation
Loading...
Searching...
No Matches
tenscripts.py
Go to the documentation of this file.
1# SPDX-License-Identifier: CC0-1.0
2
3from krita import Extension
4from builtins import i18n, Application
5try:
6 from PyQt6.QtGui import QIcon
7except:
8 from PyQt5.QtGui import QIcon
9from . import uitenscripts
10
11import importlib
12
13
14class TenScriptsExtension(Extension):
15
16 def __init__(self, parent):
17 super(TenScriptsExtension, self).__init__(parent)
18
19 self.scripts = []
20 self.actionToIndex = {}
21 self.indexToAction = {}
22
23 def setup(self):
24 self.readSettings()
25
26 def createActions(self, window):
27 action = window.createAction("ten_scripts", i18n("Ten Scripts"))
28 action.setToolTip(i18n("Assign ten scripts to ten shortcuts."))
29 action.triggered.connect(self.initializeinitialize)
30 self.loadActions(window)
31
36 def readSettings(self):
37 for item in range(1, 11):
38 self.scripts.append(
39 Application.readSetting("tenscripts", f"script_{item}", "")
40 )
41
42 def writeSettings(self):
43
44 saved_scripts = self.uitenscripts.saved_scripts()
45 self.scripts = saved_scripts
46 for index in range(10):
47 Application.writeSetting("tenscripts", f"script_{index + 1}", saved_scripts[index])
48
49 def loadActions(self, window):
50 for index, item in enumerate(['1', '2', '3', '4', '5',
51 '6', '7', '8', '9', '10']):
52 action = window.createAction(
53 "execute_script_" + item,
54 str(i18n("Execute Script {num}")).format(num=item),
55 "")
56 action.triggered.connect(self._executeScript_executeScript)
57 self.actionToIndex[action.objectName()] = index
58 self.indexToAction[index] = action.objectName()
59
60 def _executeScript(self):
61 scriptIndex = self.actionToIndex[self.sender().objectName()]
62 script = self.scripts[scriptIndex] if len(self.scripts) > scriptIndex else ""
63 window = Application.activeWindow()
64
65 if script != "":
66 try:
67 spec = importlib.util.spec_from_file_location(
68 "users_script", script)
69 users_module = importlib.util.module_from_spec(spec)
70 spec.loader.exec_module(users_module)
71
72 if (hasattr(users_module, 'main')
73 and callable(users_module.main)):
74 users_module.main()
75
76 window.activeView().showFloatingMessage(
77 str(i18n("Script {0} executed")).format(script), QIcon(), 1500, 2)
78
79 except Exception as e:
80 window.activeView().showFloatingMessage(str(e), QIcon(), 2000, 1)
81 else:
82 window.activeView().showFloatingMessage(
83 str(i18n(("You did not assign a script to that action"))), QIcon(), 1500, 2)