src/eric7/Preferences/ShortcutsFile.py

Sat, 23 Dec 2023 15:48:12 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 23 Dec 2023 15:48:12 +0100
branch
eric7
changeset 10439
21c28b0f9e41
parent 10050
3750abc45d5e
child 10459
5c5ed40d533d
permissions
-rw-r--r--

Updated copyright for 2024.

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
10439
21c28b0f9e41 Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10050
diff changeset
3 # Copyright (c) 2021 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
8019
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
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
16 from eric7 import Preferences
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
17 from eric7.EricGui.EricOverrideCursor import EricOverridenCursor
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9278
diff changeset
18 from eric7.EricWidgets import EricMessageBox
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9278
diff changeset
19 from eric7.EricWidgets.EricApplication import ericApp
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 HelpViewer = typing.TypeVar("WebBrowserWindow")
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
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 class ShortcutsFile(QObject):
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 Class representing the shortcuts JSON file.
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
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
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
32
8019
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)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
37
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
38 def __addActionsToDict(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
39 self: "ShortcutsFile", category: str, actions: list, actionsDict: dict
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
40 ) -> None:
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 Private method to add a list of actions to the actions dictionary.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
43
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @param category category of the actions
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @type str
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 @param actions list of actions
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 @type list of QAction
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @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
49 @type dict
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 if actions:
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 if category not in actionsDict:
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 actionsDict[category] = {}
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 for act in actions:
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 if act.objectName():
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 # 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
57 actionsDict[category][act.objectName()] = (
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 act.shortcut().toString(),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
59 act.alternateShortcut().toString(),
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
61
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
62 def writeFile(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
63 self: "ShortcutsFile", filename: str, helpViewer: HelpViewer = None
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
64 ) -> bool:
8019
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 Public method to write the shortcuts data to a shortcuts JSON file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
67
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 @param filename name of the shortcuts file
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 @type str
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 @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
71 @type WebBrowserWindow
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 @return flag indicating a successful write
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 @rtype bool
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 actionsDict = {}
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
76
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 # step 1: collect all the shortcuts
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 if helpViewer is None:
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 self.__addActionsToDict(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
80 "Project", ericApp().getObject("Project").getActions(), actionsDict
8019
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",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
84 ericApp().getObject("UserInterface").getActions("ui"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
85 actionsDict,
8019
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",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
89 ericApp().getObject("UserInterface").getActions("wizards"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
90 actionsDict,
8019
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(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93 "Debug", ericApp().getObject("DebugUI").getActions(), actionsDict
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 "Edit",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
97 ericApp().getObject("ViewManager").getActions("edit"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 "File",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
102 ericApp().getObject("ViewManager").getActions("file"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
103 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 "Search",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
107 ericApp().getObject("ViewManager").getActions("search"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
108 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 "View",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
112 ericApp().getObject("ViewManager").getActions("view"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
113 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 "Macro",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
117 ericApp().getObject("ViewManager").getActions("macro"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
118 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 "Bookmarks",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
122 ericApp().getObject("ViewManager").getActions("bookmark"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
123 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 "Spelling",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
127 ericApp().getObject("ViewManager").getActions("spelling"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
128 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 "Window",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
132 ericApp().getObject("ViewManager").getActions("window"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
133 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
135
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
136 for category, ref in ericApp().getPluginObjects():
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 if hasattr(ref, "getActions"):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
138 self.__addActionsToDict(category, ref.getActions(), actionsDict)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
139
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 else:
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 self.__addActionsToDict(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
142 helpViewer.getActionsCategory(), helpViewer.getActions(), actionsDict
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
144
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 # step 2: assemble the data structure to be written
9278
36448ca469c2 Simplified some code iaw. recommendations of the extended style checker and reformatted the code with black.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
146 shortcutsDict = {
36448ca469c2 Simplified some code iaw. recommendations of the extended style checker and reformatted the code with black.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
147 # step 2.0: header
36448ca469c2 Simplified some code iaw. recommendations of the extended style checker and reformatted the code with black.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
148 "header": {
36448ca469c2 Simplified some code iaw. recommendations of the extended style checker and reformatted the code with black.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
149 "comment": "eric keyboard shortcuts file",
36448ca469c2 Simplified some code iaw. recommendations of the extended style checker and reformatted the code with black.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
150 "saved": time.strftime("%Y-%m-%d, %H:%M:%S"),
36448ca469c2 Simplified some code iaw. recommendations of the extended style checker and reformatted the code with black.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
151 "author": Preferences.getUser("Email"),
36448ca469c2 Simplified some code iaw. recommendations of the extended style checker and reformatted the code with black.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
152 },
36448ca469c2 Simplified some code iaw. recommendations of the extended style checker and reformatted the code with black.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
153 # step 2.1: keyboard shortcuts
36448ca469c2 Simplified some code iaw. recommendations of the extended style checker and reformatted the code with black.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
154 "shortcuts": actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 }
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
156
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 try:
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 jsonString = json.dumps(shortcutsDict, indent=2)
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 with open(filename, "w") as f:
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 f.write(jsonString)
10050
3750abc45d5e Corrected some code style issues detected by the extended checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
161 except (OSError, TypeError) as err:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
162 with EricOverridenCursor():
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
163 EricMessageBox.critical(
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 None,
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 self.tr("Export Keyboard Shortcuts"),
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 self.tr(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 "<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
168 " be written.</p><p>Reason: {1}</p>"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
169 ).format(filename, str(err)),
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
172
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 return True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
174
8244
ed8cb108b27b Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
175 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
176 """
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 Public method to read the shortcuts data from a shortcuts JSON file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 @param filename name of the shortcuts file
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 @type str
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 @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
182 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
183 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
184 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
185 @rtype dict
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 """
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 try:
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 with open(filename, "r") as f:
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 jsonString = f.read()
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 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
191 except (OSError, json.JSONDecodeError) as err:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
192 EricMessageBox.critical(
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 None,
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 self.tr("Import Keyboard Shortcuts"),
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 self.tr(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 "<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
197 " read.</p><p>Reason: {1}</p>"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
198 ).format(filename, str(err)),
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 return {}
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
201
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 return shortcutsDict["shortcuts"]

eric ide

mercurial