PluginToolGenerateHash.py

Sat, 23 Dec 2023 18:06:09 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 23 Dec 2023 18:06:09 +0100
branch
eric7
changeset 67
ff0aff721af7
parent 66
fdab2b63e06e
child 68
70b181f32581
permissions
-rw-r--r--

Converted some source code documentation to the new style.

1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
1 # -*- coding: utf-8 -*-
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
2
66
fdab2b63e06e Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 65
diff changeset
3 # Copyright (c) 2013 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
4 #
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
5
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
6 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
7 Module implementing the 'Generate Hash' tool plug-in.
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
8 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
9
51
b5a1a986b800 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
10 import contextlib
64
72d9f6d21a41 Resorted imports with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 62
diff changeset
11 import hashlib
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
12 import os
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
13
64
72d9f6d21a41 Resorted imports with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 62
diff changeset
14 from PyQt6.QtCore import QObject, QTranslator, pyqtSlot
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
15 from PyQt6.QtGui import QAction
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
16 from PyQt6.QtWidgets import QMenu
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
17
62
3d0bb45398c6 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
18 from eric7.EricWidgets import EricFileDialog, EricMessageBox
3d0bb45398c6 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
19 from eric7.EricWidgets.EricApplication import ericApp
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
20
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
21 # Start-Of-Header
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
22 name = "Generate Hash Tool Plug-in"
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
23 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
24 autoactivate = True
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
25 deactivateable = True
62
3d0bb45398c6 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
26 version = "10.1.0"
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
27 className = "ToolGenerateHashPlugin"
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
28 packageName = "ToolGenerateHash"
4
b0a982bcf664 Corrected the short description of the plug-in header.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
29 shortDescription = "Generate a hash for a selectable file or directory"
45
60ef6c28f7fb Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
30 longDescription = (
60ef6c28f7fb Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
31 """Plug-in to generate a hash for a selectable file or directory. The"""
60ef6c28f7fb Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
32 """ hash string will be inserted at the cursor position of the current"""
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
33 """ editor. The menu will be disabled, if no editor is open."""
45
60ef6c28f7fb Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
34 )
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
35 needsRestart = False
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
36 pyqtApi = 2
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
37 # End-Of-Header
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
38
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
39 error = ""
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
40
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
41
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
42 class ToolGenerateHashPlugin(QObject):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
43 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
44 Class implementing the 'Generate Hash' tool plug-in.
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
45 """
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
46
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
47 Hashes = [
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
48 h
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
49 for h in (
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
50 "md5",
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
51 "sha1",
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
52 "sha224",
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
53 "sha256",
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
54 "sha384",
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
55 "sha512",
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
56 "sha3_224",
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
57 "sha3_256",
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
58 "sha3_384",
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
59 "sha3_512",
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
60 )
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
61 if h in hashlib.algorithms_guaranteed
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
62 ]
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
63
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
64 def __init__(self, ui):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
65 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
66 Constructor
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
67
67
ff0aff721af7 Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
68 @param ui reference to the user interface object
ff0aff721af7 Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
69 @type UserInterface
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
70 """
51
b5a1a986b800 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
71 super().__init__(ui)
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
72 self.__ui = ui
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
73
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
74 self.__translator = None
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
75 self.__loadTranslator()
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
76
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
77 self.__initMenus()
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
78
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
79 self.__editors = {}
32
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
80 self.__mainActions = []
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
81
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
82 def activate(self):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
83 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
84 Public method to activate this plugin.
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
85
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
86 @return tuple of None and activation status
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
87 @rtype bool
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
88 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
89 global error
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
90 error = "" # clear previous error
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
91
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
92 self.__ui.showMenu.connect(self.__populateMenu)
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
93
32
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
94 menu = self.__ui.getMenu("plugin_tools")
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
95 if menu is not None:
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
96 if not menu.isEmpty():
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
97 act = menu.addSeparator()
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
98 self.__mainActions.append(act)
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
99 act = menu.addMenu(self.__fileMenu)
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
100 self.__mainActions.append(act)
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
101 act = menu.addMenu(self.__dirMenu)
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
102 self.__mainActions.append(act)
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
103
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
104 ericApp().getObject("ViewManager").editorOpenedEd.connect(self.__editorOpened)
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
105 ericApp().getObject("ViewManager").editorClosedEd.connect(self.__editorClosed)
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
106
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
107 for editor in ericApp().getObject("ViewManager").getOpenEditors():
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
108 self.__editorOpened(editor)
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
109
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
110 return None, True
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
111
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
112 def deactivate(self):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
113 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
114 Public method to deactivate this plugin.
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
115 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
116 self.__ui.showMenu.disconnect(self.__populateMenu)
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
117
32
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
118 menu = self.__ui.getMenu("plugin_tools")
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
119 if menu is not None:
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
120 for act in self.__mainActions:
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
121 menu.removeAction(act)
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
122 self.__mainActions = []
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
123
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
124 ericApp().getObject("ViewManager").editorOpenedEd.disconnect(
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
125 self.__editorOpened
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
126 )
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
127 ericApp().getObject("ViewManager").editorClosedEd.disconnect(
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
128 self.__editorClosed
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
129 )
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
130
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
131 for editor, acts in self.__editors.items():
28
cae144c731be Fixed latest bug fix (silly copy & paste error).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
132 editor.showMenu.disconnect(self.__editorShowMenu)
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
133 menu = editor.getMenu("Tools")
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
134 if menu is not None:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
135 for act in acts:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
136 menu.removeAction(act)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
137 self.__editors = {}
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
138
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
139 def __loadTranslator(self):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
140 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
141 Private method to load the translation file.
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
142 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
143 if self.__ui is not None:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
144 loc = self.__ui.getLocale()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
145 if loc and loc != "C":
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
146 locale_dir = os.path.join(
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
147 os.path.dirname(__file__), "ToolGenerateHash", "i18n"
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
148 )
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
149 translation = "generatehash_{0}".format(loc)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
150 translator = QTranslator(None)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
151 loaded = translator.load(translation, locale_dir)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
152 if loaded:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
153 self.__translator = translator
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
154 ericApp().installTranslator(self.__translator)
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
155 else:
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
156 print(
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
157 "Warning: translation file '{0}' could not be"
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
158 " loaded.".format(translation)
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
159 )
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
160 print("Using default.")
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
161
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
162 def __initMenus(self):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
163 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
164 Private method to initialize the hash generation menus.
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
165 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
166 self.__fileMenu = QMenu(self.tr("Generate File Hash"))
57
f19f9dbb1076 Updated version info to indicate relation to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 56
diff changeset
167 for hashName in self.Hashes:
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
168 self.__fileMenu.addAction(hashName.upper().replace("_", ":")).setData(
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
169 hashName
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
170 )
20
9225431210c3 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
171 self.__fileMenu.setEnabled(False)
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
172 self.__fileMenu.triggered.connect(self.__hashFile)
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
173
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
174 self.__dirMenu = QMenu(self.tr("Generate Directory Hash"))
57
f19f9dbb1076 Updated version info to indicate relation to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 56
diff changeset
175 for hashName in self.Hashes:
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
176 self.__dirMenu.addAction(hashName.upper().replace("_", ":")).setData(
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
177 hashName
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
178 )
20
9225431210c3 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
179 self.__dirMenu.setEnabled(False)
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
180 self.__dirMenu.triggered.connect(self.__hashDirectory)
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
181
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
182 def __populateMenu(self, name, menu):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
183 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
184 Private slot to populate the tools menu with our entries.
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
185
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
186 @param name name of the menu
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
187 @type str
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
188 @param menu reference to the menu to be populated
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
189 @type QMenu
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
190 """
32
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
191 if name not in ["Tools", "PluginTools"]:
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
192 return
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
193
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
194 editor = ericApp().getObject("ViewManager").activeWindow()
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
195
32
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
196 if name == "Tools":
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
197 if not menu.isEmpty():
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
198 menu.addSeparator()
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
199
32
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
200 act = menu.addMenu(self.__fileMenu)
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
201 act.setEnabled(editor is not None)
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
202 act = menu.addMenu(self.__dirMenu)
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
203 act.setEnabled(editor is not None)
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
204 elif name == "PluginTools" and self.__mainActions:
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
205 self.__mainActions[-2].setEnabled(editor is not None)
287d824b90bd Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
206 self.__mainActions[-1].setEnabled(editor is not None)
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
207
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
208 def __editorOpened(self, editor):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
209 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
210 Private slot called, when a new editor was opened.
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
211
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
212 @param editor reference to the new editor
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
213 @type Editor
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
214 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
215 menu = editor.getMenu("Tools")
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
216 if menu is not None:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
217 self.__editors[editor] = []
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
218 if not menu.isEmpty():
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
219 act = menu.addSeparator()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
220 self.__editors[editor].append(act)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
221 act = menu.addMenu(self.__fileMenu)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
222 self.__editors[editor].append(act)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
223 act = menu.addMenu(self.__dirMenu)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
224 self.__editors[editor].append(act)
24
31a6f2b29967 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
225 editor.showMenu.connect(self.__editorShowMenu)
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
226
20
9225431210c3 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
227 self.__fileMenu.setEnabled(True)
9225431210c3 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
228 self.__dirMenu.setEnabled(True)
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
229
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
230 def __editorClosed(self, editor):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
231 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
232 Private slot called, when an editor was closed.
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
233
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
234 @param editor reference to the editor
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
235 @type Editor
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
236 """
51
b5a1a986b800 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
237 with contextlib.suppress(KeyError):
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
238 del self.__editors[editor]
20
9225431210c3 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
239 if not self.__editors:
9225431210c3 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
240 self.__fileMenu.setEnabled(False)
9225431210c3 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
241 self.__dirMenu.setEnabled(False)
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
242
24
31a6f2b29967 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
243 def __editorShowMenu(self, menuName, menu, editor):
31a6f2b29967 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
244 """
31a6f2b29967 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
245 Private slot called, when the the editor context menu or a submenu is
31a6f2b29967 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
246 about to be shown.
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
247
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
248 @param menuName name of the menu to be shown
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
249 @type str
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
250 @param menu reference to the menu
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
251 @type QMenu
24
31a6f2b29967 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
252 @param editor reference to the editor
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
253 @type Editor
24
31a6f2b29967 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
254 """
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
255 if menuName == "Tools" and self.__fileMenu.menuAction() not in menu.actions():
51
b5a1a986b800 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
256 # Re-add our menu
b5a1a986b800 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
257 self.__editors[editor] = []
b5a1a986b800 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
258 if not menu.isEmpty():
b5a1a986b800 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
259 act = menu.addSeparator()
24
31a6f2b29967 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
260 self.__editors[editor].append(act)
51
b5a1a986b800 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
261 act = menu.addMenu(self.__fileMenu)
b5a1a986b800 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
262 self.__editors[editor].append(act)
b5a1a986b800 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
263 act = menu.addMenu(self.__dirMenu)
b5a1a986b800 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
264 self.__editors[editor].append(act)
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
265
51
b5a1a986b800 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
266 self.__fileMenu.setEnabled(True)
b5a1a986b800 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
267 self.__dirMenu.setEnabled(True)
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
268
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
269 def __insertHash(self, hashStr):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
270 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
271 Private method to insert the generated hash string.
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
272
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
273 @param hashStr hash string
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
274 @type str
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
275 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
276 if hashStr:
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
277 editor = ericApp().getObject("ViewManager").activeWindow()
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
278 line, index = editor.getCursorPosition()
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
279 # It should be done this way to allow undo
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
280 editor.beginUndoAction()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
281 editor.insertAt(hashStr, line, index)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
282 editor.endUndoAction()
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
283
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
284 @pyqtSlot(QAction)
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
285 def __hashFile(self, act):
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
286 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
287 Private slot to generate the hash for a file.
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
288
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
289 @param act reference to the action that was triggered
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
290 @type QAction
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
291 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
292 if act is None:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
293 return
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
294
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
295 name = EricFileDialog.getOpenFileName(self.__ui, self.tr("Generate File Hash"))
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
296 if name:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
297 try:
47
aee34fc5bccc Changed code to use the 'open()' context manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
298 with open(name, "rb") as f:
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
299 hashStr = hashlib.new(act.data(), f.read()).hexdigest()
49
6b5abf3bc568 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
300 except OSError as err:
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
301 EricMessageBox.critical(
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
302 self.__ui,
20
9225431210c3 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
303 self.tr("Generate File Hash"),
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
304 self.tr(
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
305 """<p>The hash for <b>{0}</b> could not"""
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
306 """ be generated.</p><p>Reason: {1}</p>"""
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
307 ).format(name, str(err)),
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
308 )
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
309 return
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
310
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
311 self.__insertHash(hashStr)
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
312
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
313 @pyqtSlot(QAction)
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
314 def __hashDirectory(self, act):
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
315 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
316 Private slot to generate the hash for a directory.
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
317
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
318 @param act reference to the action that was triggered
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
319 @type QAction
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
320 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
321 if act is None:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
322 return
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
323
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
324 folder = EricFileDialog.getExistingDirectory(
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
325 self.__ui, self.tr("Generate Directory Hash"), "", EricFileDialog.Option(0)
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
326 )
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
327 if folder and os.path.isdir(folder):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
328 fails = 0
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
329 hashes = []
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
330 for name in os.listdir(folder):
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
331 if not name.startswith(".") and os.path.isfile(
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
332 os.path.join(folder, name)
45
60ef6c28f7fb Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
333 ):
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
334 try:
47
aee34fc5bccc Changed code to use the 'open()' context manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
335 with open(os.path.join(folder, name), "rb") as f:
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
336 hashStr = hashlib.new(act.data(), f.read()).hexdigest()
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
337 hashes.append((name, hashStr))
49
6b5abf3bc568 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
338 except OSError:
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
339 fails += 1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
340 if fails:
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
341 EricMessageBox.critical(
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
342 self.__ui,
20
9225431210c3 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
343 self.tr("Generate Directory Hash"),
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
344 self.tr(
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
345 """<p>The hash for some files could not"""
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
346 """ be generated.</p>"""
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
347 ),
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
348 )
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
349 else:
54
b43a0eccfc61 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
350 editor = ericApp().getObject("ViewManager").activeWindow()
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
351 line, index = editor.getCursorPosition()
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
352 indLevel = editor.indentation(line) // editor.indentationWidth()
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
353 if editor.indentationsUseTabs():
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
354 indString = "\t"
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
355 else:
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
356 indString = editor.indentationWidth() * " "
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
357 indent = (indLevel + 1) * indString
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
358 code = ["["]
38
ec43c445d1b3 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
359 for name, hashStr in hashes:
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
360 code.append("{0}('{1}', '{2}'),".format(indent, name, hashStr))
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
361 code.append("{0}]".format(indLevel * indString))
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
362
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
363 self.__insertHash(os.linesep.join(code))
38
ec43c445d1b3 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
364
61
6fc29f5292d3 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 59
diff changeset
365
38
ec43c445d1b3 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
366 #
67
ff0aff721af7 Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
367 # eflag: noqa = M801, U200

eric ide

mercurial