Sun, 16 May 2021 20:07:24 +0200
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
8019
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | # Copyright (c) 2021 Detlev Offenbach <detlev@die-offenbachs.de> |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a class representing the shortcuts JSON file. |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | import json |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | import time |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | import typing |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
14 | from PyQt6.QtCore import QObject |
8019
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | from E5Gui import E5MessageBox |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | from E5Gui.E5OverrideCursor import E5OverridenCursor |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | from E5Gui.E5Application import e5App |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | import Preferences |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | HelpViewer = typing.TypeVar("WebBrowserWindow") |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | class ShortcutsFile(QObject): |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | """ |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | Class representing the shortcuts JSON file. |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | """ |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
29 | def __init__(self: "ShortcutsFile", parent: QObject = None) -> None: |
8019
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | """ |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | Constructor |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | @param parent reference to the parent object (defaults to None) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | @type QObject (optional) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | """ |
8218
7c09585bd960
Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8019
diff
changeset
|
36 | super().__init__(parent) |
8019
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
38 | def __addActionsToDict(self: "ShortcutsFile", category: str, actions: list, |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
39 | actionsDict: dict) -> None: |
8019
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | """ |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | Private method to add a list of actions to the actions dictionary. |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | @param category category of the actions |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | @type str |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | @param actions list of actions |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | @type list of QAction |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | @param actionsDict reference to the actions dictionary to be modified |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | @type dict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | """ |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | if actions: |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | if category not in actionsDict: |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | actionsDict[category] = {} |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | for act in actions: |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | if act.objectName(): |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | # shortcuts are only exported, if their objectName is set |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | actionsDict[category][act.objectName()] = ( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | act.shortcut().toString(), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | act.alternateShortcut().toString() |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
61 | def writeFile(self: "ShortcutsFile", filename: str, |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
62 | helpViewer: HelpViewer = None) -> bool: |
8019
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | """ |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | Public method to write the shortcuts data to a shortcuts JSON file. |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | @param filename name of the shortcuts file |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | @type str |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | @param helpViewer reference to the help window object |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | @type WebBrowserWindow |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | @return flag indicating a successful write |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | @rtype bool |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | """ |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | actionsDict = {} |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | # step 1: collect all the shortcuts |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | if helpViewer is None: |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | self.__addActionsToDict( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | "Project", |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | e5App().getObject("Project").getActions(), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | self.__addActionsToDict( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | "General", |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | e5App().getObject("UserInterface").getActions('ui'), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | self.__addActionsToDict( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | "Wizards", |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | e5App().getObject("UserInterface").getActions('wizards'), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | self.__addActionsToDict( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | "Debug", |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | e5App().getObject("DebugUI").getActions(), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | self.__addActionsToDict( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | "Edit", |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | e5App().getObject("ViewManager").getActions('edit'), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | self.__addActionsToDict( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | "File", |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | e5App().getObject("ViewManager").getActions('file'), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | self.__addActionsToDict( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | "Search", |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | e5App().getObject("ViewManager").getActions('search'), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | self.__addActionsToDict( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | "View", |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | e5App().getObject("ViewManager").getActions('view'), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | self.__addActionsToDict( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | "Macro", |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | e5App().getObject("ViewManager").getActions('macro'), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | self.__addActionsToDict( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | "Bookmarks", |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | e5App().getObject("ViewManager").getActions('bookmark'), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | self.__addActionsToDict( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | "Spelling", |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | e5App().getObject("ViewManager").getActions('spelling'), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | self.__addActionsToDict( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | "Window", |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | e5App().getObject("ViewManager").getActions('window'), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | for category, ref in e5App().getPluginObjects(): |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | if hasattr(ref, "getActions"): |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | self.__addActionsToDict( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | category, ref.getActions(), actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | else: |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | self.__addActionsToDict( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | helpViewer.getActionsCategory(), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | helpViewer.getActions(), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | # step 2: assemble the data structure to be written |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | shortcutsDict = {} |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | # step 2.0: header |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | shortcutsDict["header"] = { |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | "comment": "eric keyboard shortcuts file", |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | "saved": time.strftime('%Y-%m-%d, %H:%M:%S'), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | "author": Preferences.getUser("Email"), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | } |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | # step 2.1: keyboard shortcuts |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | shortcutsDict["shortcuts"] = actionsDict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | try: |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | jsonString = json.dumps(shortcutsDict, indent=2) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | with open(filename, "w") as f: |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | f.write(jsonString) |
8240
93b8a353c4bf
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
166 | except (TypeError, OSError) as err: |
8019
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | with E5OverridenCursor(): |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | E5MessageBox.critical( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | None, |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | self.tr("Export Keyboard Shortcuts"), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | self.tr( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | "<p>The keyboard shortcuts file <b>{0}</b> could not" |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | " be written.</p><p>Reason: {1}</p>" |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | ).format(filename, str(err)) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | return False |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | return True |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8240
diff
changeset
|
180 | def readFile(self: "ShortcutsFile", filename: str) -> bool: |
8019
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | """ |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | Public method to read the shortcuts data from a shortcuts JSON file. |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | @param filename name of the shortcuts file |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | @type str |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | @return Dictionary of dictionaries of shortcuts. The keys of the |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | dictionary are the shortcuts categories, the values are |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | dictionaries. These dictionaries have the shortcut name as their |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | key and a tuple of accelerators as their value. |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | @rtype dict |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | """ |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | try: |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | with open(filename, "r") as f: |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | jsonString = f.read() |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | shortcutsDict = json.loads(jsonString) |
8240
93b8a353c4bf
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
196 | except (OSError, json.JSONDecodeError) as err: |
8019
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | E5MessageBox.critical( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | None, |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | self.tr("Import Keyboard Shortcuts"), |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | self.tr( |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | "<p>The keyboard shortcuts file <b>{0}</b> could not be" |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | " read.</p><p>Reason: {1}</p>" |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | ).format(filename, str(err)) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | ) |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | return {} |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | |
5fb467ac4233
Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | return shortcutsDict["shortcuts"] |