eric7/Preferences/ShortcutsFile.py

Sun, 16 May 2021 20:07:24 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 16 May 2021 20:07:24 +0200
branch
eric7
changeset 8318
962bce857696
parent 8312
800c432b34c8
child 8356
68ec9c3d4de5
permissions
-rw-r--r--

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"]

eric ide

mercurial