PluginToolGenerateHash.py

Mon, 30 Dec 2013 11:30:39 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 30 Dec 2013 11:30:39 +0100
changeset 7
3e740cd33e30
parent 4
b0a982bcf664
child 9
ddeb96be9a9c
permissions
-rw-r--r--

Added Spanish translations provided by Jaime Seuma.

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
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
3 # Copyright (c) 2013 Detlev Offenbach <detlev@die-offenbachs.de>
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
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
10 import os
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
11 import hashlib
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
12
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
13 from PyQt4.QtCore import QObject, QTranslator
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
14 from PyQt4.QtGui import QMenu
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
15
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
16 from E5Gui.E5Application import e5App
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
17 from E5Gui import E5FileDialog, E5MessageBox
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
18
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
19 # Start-Of-Header
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
20 name = "Generate Hash Tool Plug-in"
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
21 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
22 autoactivate = True
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
23 deactivateable = True
7
3e740cd33e30 Added Spanish translations provided by Jaime Seuma.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
24 version = "0.2.0"
1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
25 className = "ToolGenerateHashPlugin"
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
26 packageName = "ToolGenerateHash"
4
b0a982bcf664 Corrected the short description of the plug-in header.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
27 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
28 longDescription = \
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
29 """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
30 """ 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
31 """ 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
32 needsRestart = False
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
33 pyqtApi = 2
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
34 # End-Of-Header
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
35
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
36 error = ""
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
37
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 class ToolGenerateHashPlugin(QObject):
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 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
42 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
43 Hashes = {
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
44 "MD5": hashlib.md5,
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
45 "SHA1": hashlib.sha1,
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
46 "SHA224": hashlib.sha224,
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
47 "SHA256": hashlib.sha256,
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
48 "SHA384": hashlib.sha384,
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
49 "SHA512": hashlib.sha512,
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
50 }
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
51
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
52 def __init__(self, ui):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
53 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
54 Constructor
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
55
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
56 @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
57 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
58 QObject.__init__(self, ui)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
59 self.__ui = 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 self.__translator = None
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
62 self.__loadTranslator()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
63
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
64 self.__initMenus()
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 self.__editors = {}
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 def activate(self):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
69 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
70 Public method to activate this plugin.
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
71
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
72 @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
73 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
74 global error
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
75 error = "" # clear previous error
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
76
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
77 self.__ui.showMenu.connect(self.__populateMenu)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
78
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
79 e5App().getObject("ViewManager").editorOpenedEd.connect(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
80 self.__editorOpened)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
81 e5App().getObject("ViewManager").editorClosedEd.connect(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
82 self.__editorClosed)
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 for editor in e5App().getObject("ViewManager").getOpenEditors():
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
85 self.__editorOpened(editor)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
86
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
87 return None, True
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 def deactivate(self):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
90 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
91 Public method to deactivate this plugin.
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
92 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
93 self.__ui.showMenu.disconnect(self.__populateMenu)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
94
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
95 e5App().getObject("ViewManager").editorOpenedEd.disconnect(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
96 self.__editorOpened)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
97 e5App().getObject("ViewManager").editorClosedEd.disconnect(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
98 self.__editorClosed)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
99
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
100 for editor, acts in self.__editors.items():
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
101 editor.showMenu.disconnect(self.__editorShowMenu)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
102 menu = editor.getMenu("Tools")
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
103 if menu is not None:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
104 for act in acts:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
105 menu.removeAction(act)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
106 self.__editors = {}
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
107
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
108 def __loadTranslator(self):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
109 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
110 Private method to load the translation file.
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
111 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
112 if self.__ui is not None:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
113 loc = self.__ui.getLocale()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
114 if loc and loc != "C":
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
115 locale_dir = os.path.join(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
116 os.path.dirname(__file__), "ToolGenerateHash", "i18n")
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
117 translation = "generatehash_{0}".format(loc)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
118 translator = QTranslator(None)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
119 loaded = translator.load(translation, locale_dir)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
120 if loaded:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
121 self.__translator = translator
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
122 e5App().installTranslator(self.__translator)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
123 else:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
124 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
125 " loaded.".format(translation))
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
126 print("Using default.")
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
127
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
128 def __initMenus(self):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
129 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
130 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
131 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
132 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
133 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
134 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
135 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
136 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
137 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
138 self.__fileMenu.addAction("SHA512", self.__hashFile).setData("SHA512")
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
139
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
140 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
141 self.__dirMenu.addAction(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
142 "MD5", self.__hashDirectory).setData("MD5")
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
143 self.__dirMenu.addAction(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
144 "SHA1", self.__hashDirectory).setData("SHA1")
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
145 self.__dirMenu.addAction(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
146 "SHA224", self.__hashDirectory).setData("SHA224")
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
147 self.__dirMenu.addAction(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
148 "SHA256", self.__hashDirectory).setData("SHA256")
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
149 self.__dirMenu.addAction(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
150 "SHA384", self.__hashDirectory).setData("SHA384")
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
151 self.__dirMenu.addAction(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
152 "SHA512", self.__hashDirectory).setData("SHA512")
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 def __populateMenu(self, name, menu):
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 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
157
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
158 @param name name of the menu (string)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
159 @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
160 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
161 if name != "Tools":
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
162 return
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 editor = e5App().getObject("ViewManager").activeWindow()
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 if not menu.isEmpty():
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
167 menu.addSeparator()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
168
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
169 act = menu.addMenu(self.__fileMenu)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
170 act.setEnabled(editor is not None)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
171 act = menu.addMenu(self.__dirMenu)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
172 act.setEnabled(editor is not None)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
173
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
174 def __editorOpened(self, editor):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
175 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
176 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
177
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
178 @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
179 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
180 menu = editor.getMenu("Tools")
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
181 if menu is not None:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
182 self.__editors[editor] = []
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
183 if not menu.isEmpty():
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
184 act = menu.addSeparator()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
185 self.__editors[editor].append(act)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
186 act = menu.addMenu(self.__fileMenu)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
187 self.__editors[editor].append(act)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
188 act = menu.addMenu(self.__dirMenu)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
189 self.__editors[editor].append(act)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
190
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
191 def __editorClosed(self, editor):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
192 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
193 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
194
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
195 @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
196 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
197 try:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
198 del self.__editors[editor]
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
199 except KeyError:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
200 pass
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
201
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
202 def __insertHash(self, hashStr):
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 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
205
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
206 @param hashStr hash string (string)
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 if hashStr:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
209 editor = e5App().getObject("ViewManager").activeWindow()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
210 line, index = editor.getCursorPosition()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
211 # 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
212 editor.beginUndoAction()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
213 editor.insertAt(hashStr, line, index)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
214 editor.endUndoAction()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
215
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
216 def __hashFile(self):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
217 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
218 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
219 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
220 act = self.sender()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
221 if act is None:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
222 return
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
223
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
224 name = E5FileDialog.getOpenFileName(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
225 self.__ui,
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
226 self.trUtf8("Generate File Hash"))
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
227 if name:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
228 try:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
229 f = open(name, "rb")
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
230 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
231 f.close()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
232 except (IOError, OSError) as err:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
233 E5MessageBox.critical(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
234 self.__ui,
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
235 self.trUtf8("Generate File Hash"),
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
236 self.trUtf8("""<p>The hash for <b>{0}</b> could not"""
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
237 """ be generated.</p><p>Reason: {1}</p>""")
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
238 .format(name, str(err))
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
239 )
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
240 return
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
241
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
242 self.__insertHash(hashStr)
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
243
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
244 def __hashDirectory(self):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
245 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
246 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
247 """
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
248 act = self.sender()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
249 if act is None:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
250 return
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
251
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
252 folder = E5FileDialog.getExistingDirectory(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
253 self.__ui,
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
254 self.trUtf8("Generate Directory Hash"),
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
255 "",
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
256 E5FileDialog.Options(E5FileDialog.Option(0)))
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
257 if folder and os.path.isdir(folder):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
258 fails = 0
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
259 hashes = []
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
260 for name in os.listdir(folder):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
261 if not name.startswith(".") and \
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
262 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
263 try:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
264 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
265 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
266 f.close()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
267 hashes.append((name, hashStr))
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
268 except (IOError, OSError):
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
269 fails += 1
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
270 if fails:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
271 E5MessageBox.critical(
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
272 self.__ui,
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
273 self.trUtf8("Generate Directory Hash"),
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
274 self.trUtf8("""<p>The hash for some files could not"""
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
275 """ be generated.</p>""")
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 else:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
278 editor = e5App().getObject("ViewManager").activeWindow()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
279 line, index = editor.getCursorPosition()
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
280 indLevel = (editor.indentation(line) //
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
281 editor.indentationWidth())
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
282 if editor.indentationsUseTabs():
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
283 indString = '\t'
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
284 else:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
285 indString = editor.indentationWidth() * ' '
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
286 indent = (indLevel + 1) * indString
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
287 code = ["["]
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
288 for hash in hashes:
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
289 code.append("{0}{1},".format(indent, str(hash)))
ce3163531e4b Finished implementing the 'Generate Hash' tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
290 code.append("{0}]".format(indLevel * indString))
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 self.__insertHash(os.linesep.join(code))

eric ide

mercurial