src/eric7/Preferences/ShortcutsFile.py

Wed, 13 Jul 2022 14:55:47 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 13 Jul 2022 14:55:47 +0200
branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9278
36448ca469c2
permissions
-rw-r--r--

Reformatted the source code using the 'Black' utility.

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
8881
54e42bc2437a Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
3 # Copyright (c) 2021 - 2022 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
8358
144a6b854f70 Sorted the eric specific extensions into packages named like the corresponding PyQt packages (i.e. EricCore,EricGui and EricWidgets).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8356
diff changeset
16 from EricWidgets import EricMessageBox
144a6b854f70 Sorted the eric specific extensions into packages named like the corresponding PyQt packages (i.e. EricCore,EricGui and EricWidgets).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8356
diff changeset
17 from EricGui.EricOverrideCursor import EricOverridenCursor
144a6b854f70 Sorted the eric specific extensions into packages named like the corresponding PyQt packages (i.e. EricCore,EricGui and EricWidgets).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8356
diff changeset
18 from EricWidgets.EricApplication import ericApp
8019
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 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
29
8244
ed8cb108b27b Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
30 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
31 """
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
33
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @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
35 @type QObject (optional)
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
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
37 super().__init__(parent)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
38
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
39 def __addActionsToDict(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
40 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
41 ) -> None:
8019
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 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
44
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @param category category of the actions
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 @type str
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 @param actions list of actions
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @type list of QAction
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @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
50 @type dict
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 if actions:
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 if category not in actionsDict:
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 actionsDict[category] = {}
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 for act in actions:
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 if act.objectName():
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 # 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
58 actionsDict[category][act.objectName()] = (
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 act.shortcut().toString(),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
60 act.alternateShortcut().toString(),
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
62
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
63 def writeFile(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
64 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
65 ) -> bool:
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 """
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 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
68
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 @param filename name of the shortcuts file
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 @type str
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 @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
72 @type WebBrowserWindow
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 @return flag indicating a successful write
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 @rtype bool
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 """
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 actionsDict = {}
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
77
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 # step 1: collect all the shortcuts
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 if helpViewer is None:
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 self.__addActionsToDict(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81 "Project", ericApp().getObject("Project").getActions(), actionsDict
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 "General",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
85 ericApp().getObject("UserInterface").getActions("ui"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
86 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 "Wizards",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
90 ericApp().getObject("UserInterface").getActions("wizards"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
91 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 self.__addActionsToDict(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94 "Debug", ericApp().getObject("DebugUI").getActions(), actionsDict
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 "Edit",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98 ericApp().getObject("ViewManager").getActions("edit"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
99 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 "File",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
103 ericApp().getObject("ViewManager").getActions("file"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
104 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 "Search",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
108 ericApp().getObject("ViewManager").getActions("search"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
109 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 "View",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
113 ericApp().getObject("ViewManager").getActions("view"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
114 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 "Macro",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
118 ericApp().getObject("ViewManager").getActions("macro"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
119 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 "Bookmarks",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
123 ericApp().getObject("ViewManager").getActions("bookmark"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
124 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 "Spelling",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
128 ericApp().getObject("ViewManager").getActions("spelling"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
129 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 )
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 self.__addActionsToDict(
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 "Window",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
133 ericApp().getObject("ViewManager").getActions("window"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
134 actionsDict,
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
136
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
137 for category, ref in ericApp().getPluginObjects():
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 if hasattr(ref, "getActions"):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
139 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
140
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 else:
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 self.__addActionsToDict(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143 helpViewer.getActionsCategory(), helpViewer.getActions(), actionsDict
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
145
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 # 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
147 shortcutsDict = {}
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 # step 2.0: header
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 shortcutsDict["header"] = {
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 "comment": "eric keyboard shortcuts file",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
151 "saved": time.strftime("%Y-%m-%d, %H:%M:%S"),
8019
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 "author": Preferences.getUser("Email"),
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 }
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 # step 2.1: keyboard shortcuts
5fb467ac4233 Implemented the JSON based keyboard shortcuts files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 shortcutsDict["shortcuts"] = actionsDict
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)
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
161 except (TypeError, OSError) 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