PluginToolGenerateHash.py

Sun, 20 Jan 2019 16:04:33 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 20 Jan 2019 16:04:33 +0100
changeset 42
6d82d842554d
parent 41
320b23a747f0
child 44
4a8ec9716e40
permissions
-rw-r--r--

bug fixes

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

eric ide

mercurial