Sun, 26 Dec 2021 17:40:29 +0100
Added some style sheet and color related TODO markers.
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
7923
91e843545d9a
Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
3 | # Copyright (c) 2016 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing an editor for binary data. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
4686
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
10 | import math |
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
11 | |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
12 | from PyQt6.QtCore import ( |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
13 | pyqtSignal, pyqtSlot, Qt, QByteArray, QTimer, QRect, QBuffer, QIODevice |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
14 | ) |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
15 | from PyQt6.QtGui import ( |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
16 | QBrush, QPen, QColor, QFont, QPalette, QKeySequence, QPainter |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
17 | ) |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
18 | from PyQt6.QtWidgets import QAbstractScrollArea, QApplication |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | from .HexEditChunks import HexEditChunks |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | from .HexEditUndoStack import HexEditUndoStack |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | import Globals |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | class HexEditWidget(QAbstractScrollArea): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | Class implementing an editor for binary data. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | @signal currentAddressChanged(address) emitted to indicate the new |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | cursor position |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | @signal currentSizeChanged(size) emitted to indicate the new size of |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | the data |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | @signal dataChanged(modified) emitted to indicate a change of the data |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | @signal overwriteModeChanged(state) emitted to indicate a change of |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | the overwrite mode |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | @signal readOnlyChanged(state) emitted to indicate a change of the |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | read only state |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | @signal canRedoChanged(bool) emitted after the redo status has changed |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | @signal canUndoChanged(bool) emitted after the undo status has changed |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | @signal selectionAvailable(bool) emitted to signal a change of the |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | selection |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | currentAddressChanged = pyqtSignal(int) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | currentSizeChanged = pyqtSignal(int) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | dataChanged = pyqtSignal(bool) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | overwriteModeChanged = pyqtSignal(bool) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | readOnlyChanged = pyqtSignal(bool) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | canRedoChanged = pyqtSignal(bool) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | canUndoChanged = pyqtSignal(bool) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | selectionAvailable = pyqtSignal(bool) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | HEXCHARS_PER_LINE = 47 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | BYTES_PER_LINE = 16 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
56 | def __init__(self, parent=None): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | Constructor |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | @param parent refernce to the parent widget |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | @type QWidget |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | """ |
8218
7c09585bd960
Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
63 | super().__init__(parent) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | # Properties |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | self.__addressArea = True |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | # switch the address area on/off |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
68 | self.__addressAreaBrush = QBrush() |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
69 | self.__addressAreaPen = QPen() |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
70 | # background and pen of the address area |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | self.__addressOffset = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | # offset into the shown address range |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | self.__addressWidth = 4 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | # address area width in characters |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | self.__asciiArea = True |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | # switch the ASCII area on/off |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | self.__data = bytearray() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | # contents of the hex editor |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | self.__highlighting = True |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | # switch the highlighting feature on/off |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | self.__highlightingBrush = QBrush() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | self.__highlightingPen = QPen() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | # background and pen of highlighted text |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | self.__overwriteMode = True |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | # set overwrite mode on/off |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | self.__selectionBrush = QBrush() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | self.__selectionPen = QPen() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | # background and pen of selected text |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | self.__readOnly = False |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | # set read only mode on/off |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | self.__cursorPosition = 0 |
4652
a88a2ba7a48a
Added search and replace capability to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4650
diff
changeset
|
92 | # absolute position of cursor, 1 Byte == 2 tics |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | self.__addrDigits = 0 |
4686
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
95 | self.__addrSeparators = 0 |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | self.__blink = True |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | self.__bData = QBuffer() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | self.__cursorRect = QRect() |
4656
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
99 | self.__cursorRectAscii = QRect() |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | self.__dataShown = bytearray() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | self.__hexDataShown = bytearray() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | self.__lastEventSize = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | self.__markedShown = bytearray() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | self.__modified = False |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | self.__rowsShown = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | # pixel related attributes (starting with __px) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | self.__pxCharWidth = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | self.__pxCharHeight = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | self.__pxPosHexX = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | self.__pxPosAdrX = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | self.__pxPosAsciiX = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | self.__pxGapAdr = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | self.__pxGapAdrHex = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | self.__pxGapHexAscii = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | self.__pxSelectionSub = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | self.__pxCursorWidth = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | self.__pxCursorX = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | self.__pxCursorY = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | # absolute byte position related attributes (starting with __b) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | self.__bSelectionBegin = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | self.__bSelectionEnd = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | self.__bSelectionInit = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | self.__bPosFirst = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | self.__bPosLast = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | self.__bPosCurrent = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | self.__chunks = HexEditChunks() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | self.__undoStack = HexEditUndoStack(self.__chunks, self) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | if Globals.isWindowsPlatform(): |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
132 | self.setFont(QFont(["Courier"], 10)) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | else: |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
134 | self.setFont(QFont(["Monospace"], 10)) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | |
8857
8191d15b8974
Added some style sheet and color related TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
136 | # TODO: make some colors custimizable |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
137 | self.setAddressAreaColors( |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
138 | self.palette().color(QPalette.ColorRole.WindowText), |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
139 | self.palette().alternateBase().color()) |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
140 | self.setHighlightColors( |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
141 | self.palette().color(QPalette.ColorRole.WindowText), |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
142 | QColor(0xff, 0xff, 0x99, 0xff)) |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
143 | self.setSelectionColors( |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
144 | self.palette().highlightedText().color(), |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
145 | self.palette().highlight().color()) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | self.__cursorTimer = QTimer() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | self.__cursorTimer.timeout.connect(self.__updateCursor) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | self.verticalScrollBar().valueChanged.connect(self.__adjust) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | self.__undoStack.indexChanged.connect(self.__dataChangedPrivate) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | self.__undoStack.canRedoChanged.connect(self.__canRedoChanged) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | self.__undoStack.canUndoChanged.connect(self.__canUndoChanged) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | self.readOnlyChanged.connect(self.__canRedoChanged) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | self.readOnlyChanged.connect(self.__canUndoChanged) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | self.__cursorTimer.setInterval(500) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | self.__cursorTimer.start() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | self.setAddressWidth(4) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | self.setAddressArea(True) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | self.setAsciiArea(True) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | self.setOverwriteMode(True) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | self.setHighlighting(True) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | self.setReadOnly(False) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | self.__initialize() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | def undoStack(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | Public method to get a reference to the undo stack. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | @return reference to the undo stack |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | @rtype HexEditUndoStack |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | return self.__undoStack |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | @pyqtSlot() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | def __canRedoChanged(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | Private slot handling changes of the Redo state. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | self.canRedoChanged.emit( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | self.__undoStack.canRedo() and not self.__readOnly) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | @pyqtSlot() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | def __canUndoChanged(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | Private slot handling changes of the Undo state. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | self.canUndoChanged.emit( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | self.__undoStack.canUndo() and not self.__readOnly) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | def addressArea(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | Public method to get the address area visibility. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | @return flag indicating the address area visibility |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | @rtype bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | return self.__addressArea |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | def setAddressArea(self, on): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | Public method to set the address area visibility. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | @param on flag indicating the address area visibility |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | @type bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | self.__addressArea = on |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | self.__adjust() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | self.setCursorPosition(self.__cursorPosition) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | self.viewport().update() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
217 | def addressAreaColors(self): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | """ |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
219 | Public method to get the address area colors. |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
221 | @return address area foreground and background colors |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
222 | @rtype tuple of 2 QColor |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | """ |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
224 | return self.__addressAreaPen.color(), self.__addressAreaBrush.color() |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
226 | def setAddressAreaColors(self, foreground, background): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | """ |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
228 | Public method to set the address area colors. |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
230 | @param foreground address area foreground color |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
231 | @type QColor |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
232 | @param background address area background color |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | @type QColor |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | """ |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
235 | self.__addressAreaPen = QPen(foreground) |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
236 | self.__addressAreaBrush = QBrush(background) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | self.viewport().update() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | def addressOffset(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | Public method to get the address offset. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | @return address offset |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | @rtype int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | return self.__addressOffset |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | def setAddressOffset(self, offset): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | Public method to set the address offset. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | @param offset address offset |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255 | self.__addressOffset = offset |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256 | self.__adjust() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | self.setCursorPosition(self.__cursorPosition) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | self.viewport().update() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | def addressWidth(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | """ |
4686
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
262 | Public method to get the width of the address area in |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | characters. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | |
4686
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
265 | Note: The address area width is always a multiple of four. |
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
266 | |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267 | @return minimum width of the address area |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | @rtype int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | size = self.__chunks.size() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | n = 1 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
272 | if size > 0x100000000: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
273 | n += 8 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274 | size //= 0x100000000 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | if size > 0x10000: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | n += 4 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
277 | size //= 0x10000 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278 | if size > 0x100: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | n += 2 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | size //= 0x100 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | if size > 0x10: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282 | n += 1 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
283 | size //= 0x10 |
4686
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
284 | n = int(math.ceil(n / 4)) * 4 |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | if n > self.__addressWidth: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287 | return n |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | return self.__addressWidth |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | def setAddressWidth(self, width): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | Public method to set the width of the address area. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | |
4686
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
295 | Note: The address area width is always a multiple of four. |
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
296 | The given value will be adjusted as required. |
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
297 | |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
298 | @param width width of the address area in characters |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300 | """ |
4686
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
301 | self.__addressWidth = int(math.ceil(width / 4)) * 4 |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | self.__adjust() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | self.setCursorPosition(self.__cursorPosition) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | self.viewport().update() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306 | def asciiArea(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
308 | Public method to get the visibility of the ASCII area. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
309 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
310 | @return visibility of the ASCII area |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
311 | @rtype bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
312 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
313 | return self.__asciiArea |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
314 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
315 | def setAsciiArea(self, on): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
316 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
317 | Public method to set the visibility of the ASCII area. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
318 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
319 | @param on flag indicating the visibility of the ASCII area |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
320 | @type bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
321 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322 | self.__asciiArea = on |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
323 | self.viewport().update() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
324 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
325 | def cursorPosition(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
326 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
327 | Public method to get the cursor position. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
328 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
329 | @return cursor position |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
330 | @rtype int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
331 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
332 | return self.__cursorPosition |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
333 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
334 | def setCursorPosition(self, pos): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
335 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
336 | Public method to set the cursor position. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
337 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
338 | @param pos cursor position |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
339 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | # step 1: delete old cursor |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
342 | self.__blink = False |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
343 | self.viewport().update(self.__cursorRect) |
4656
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
344 | if self.__asciiArea: |
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
345 | self.viewport().update(self.__cursorRectAscii) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
346 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
347 | # step 2: check, if cursor is in range |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
348 | if self.__overwriteMode and pos > (self.__chunks.size() * 2 - 1): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | pos = self.__chunks.size() * 2 - 1 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | if (not self.__overwriteMode) and pos > (self.__chunks.size() * 2): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
351 | pos = self.__chunks.size() * 2 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
352 | if pos < 0: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
353 | pos = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
354 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355 | # step 3: calculate new position of cursor |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
356 | self.__cursorPosition = pos |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357 | self.__bPosCurrent = pos // 2 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358 | self.__pxCursorY = ( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
359 | ((pos // 2 - self.__bPosFirst) // self.BYTES_PER_LINE + 1) * |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360 | self.__pxCharHeight) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
361 | x = (pos % (2 * self.BYTES_PER_LINE)) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
362 | self.__pxCursorX = ( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
363 | (((x // 2) * 3) + (x % 2)) * self.__pxCharWidth + self.__pxPosHexX) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
364 | |
4673
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
365 | self.__setHexCursorRect() |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
366 | |
4656
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
367 | # step 4: calculate position of ASCII cursor |
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
368 | x = self.__bPosCurrent % self.BYTES_PER_LINE |
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
369 | self.__cursorRectAscii = QRect( |
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
370 | self.__pxPosAsciiX + x * self.__pxCharWidth - 1, |
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
371 | self.__pxCursorY - self.__pxCharHeight + 4, |
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
372 | self.__pxCharWidth + 1, self.__pxCharHeight + 1) |
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
373 | |
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
374 | # step 5: draw new cursors |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
375 | self.__blink = True |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
376 | self.viewport().update(self.__cursorRect) |
4656
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
377 | if self.__asciiArea: |
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
378 | self.viewport().update(self.__cursorRectAscii) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
379 | self.currentAddressChanged.emit(self.__bPosCurrent) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
380 | |
4673
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
381 | def __setHexCursorRect(self): |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
382 | """ |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
383 | Private method to set the cursor. |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
384 | """ |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
385 | if self.__overwriteMode: |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
386 | self.__cursorRect = QRect( |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
387 | self.__pxCursorX, self.__pxCursorY + self.__pxCursorWidth, |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
388 | self.__pxCharWidth, self.__pxCursorWidth) |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
389 | else: |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
390 | self.__cursorRect = QRect( |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
391 | self.__pxCursorX, self.__pxCursorY - self.__pxCharHeight + 4, |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
392 | self.__pxCursorWidth, self.__pxCharHeight) |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
393 | |
4670
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
394 | def cursorBytePosition(self): |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
395 | """ |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
396 | Public method to get the cursor position in bytes. |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
397 | |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
398 | @return cursor position in bytes |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
399 | @rtype int |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
400 | """ |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
401 | return self.__bPosCurrent |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
402 | |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
403 | def setCursorBytePosition(self, pos): |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
404 | """ |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
405 | Public method to set the cursor position in bytes. |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
406 | |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
407 | @param pos cursor position in bytes |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
408 | @type int |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
409 | """ |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
410 | self.setCursorPosition(pos * 2) |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
411 | |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
412 | def goto(self, offset, fromCursor=False, backwards=False, |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
413 | extendSelection=False): |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
414 | """ |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
415 | Public method to move the cursor. |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
416 | |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
417 | @param offset offset to move to |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
418 | @type int |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
419 | @param fromCursor flag indicating a move relative to the current cursor |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
420 | @type bool |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
421 | @param backwards flag indicating a backwards move |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
422 | @type bool |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
423 | @param extendSelection flag indicating to extend the selection |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
424 | @type bool |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
425 | """ |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
426 | if fromCursor: |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
427 | if backwards: |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
428 | newPos = self.cursorBytePosition() - offset |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
429 | else: |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
430 | newPos = self.cursorBytePosition() + offset |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
431 | else: |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
432 | if backwards: |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
433 | newPos = self.__chunks.size() - offset |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
434 | else: |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
435 | newPos = offset |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
436 | |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
437 | self.setCursorBytePosition(newPos) |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
438 | if extendSelection: |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
439 | self.__setSelection(self.__cursorPosition) |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
440 | else: |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
441 | self.__resetSelection(self.__cursorPosition) |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
442 | |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
443 | self.__refresh() |
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
444 | |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
445 | def data(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
446 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
447 | Public method to get the binary data. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
448 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
449 | @return binary data |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
450 | @rtype bytearray |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
451 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
452 | return self.__chunks.data(0, -1) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
453 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
454 | def setData(self, dataOrDevice): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
455 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
456 | Public method to set the data to show. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
457 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
458 | @param dataOrDevice byte array or device containing the data |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
459 | @type bytearray, QByteArray or QIODevice |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
460 | @return flag indicating success |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
461 | @rtype bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
462 | @exception TypeError raised to indicate a wrong parameter type |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
463 | """ |
8205
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
464 | if not isinstance(dataOrDevice, (bytearray, QByteArray, QIODevice)): |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
465 | raise TypeError( |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
466 | "setData: parameter must be bytearray, " |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
467 | "QByteArray or QIODevice") |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
468 | |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
469 | if isinstance(dataOrDevice, (bytearray, QByteArray)): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
470 | self.__data = bytearray(dataOrDevice) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
471 | self.__bData.setData(self.__data) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
472 | return self.__setData(self.__bData) |
8205
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
473 | else: |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
474 | return self.__setData(dataOrDevice) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
475 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
476 | def __setData(self, ioDevice): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
477 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
478 | Private method to set the data to show. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
479 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
480 | @param ioDevice device containing the data |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
481 | @type QIODevice |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
482 | @return flag indicating success |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
483 | @rtype bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
484 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
485 | ok = self.__chunks.setIODevice(ioDevice) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
486 | self.__initialize() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
487 | self.__dataChangedPrivate() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
488 | return ok |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
489 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
490 | def highlighting(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
491 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
492 | Public method to get the highlighting state. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
493 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
494 | @return highlighting state |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
495 | @rtype bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
496 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
497 | return self.__highlighting |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
498 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
499 | def setHighlighting(self, on): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
500 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
501 | Public method to set the highlighting state. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
502 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
503 | @param on new highlighting state |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
504 | @type bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
505 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
506 | self.__highlighting = on |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
507 | self.viewport().update() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
508 | |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
509 | def highlightColors(self): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
510 | """ |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
511 | Public method to get the highlight colors. |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
512 | |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
513 | @return highlight foreground and background colors |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
514 | @rtype tuple of 2 QColor |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
515 | """ |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
516 | return self.__highlightingPen.color(), self.__highlightingBrush.color() |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
517 | |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
518 | def setHighlightColors(self, foreground, background): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
519 | """ |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
520 | Public method to set the highlight colors. |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
521 | |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
522 | @param foreground highlight foreground color |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
523 | @type QColor |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
524 | @param background highlight background color |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
525 | @type QColor |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
526 | """ |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
527 | self.__highlightingPen = QPen(foreground) |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
528 | self.__highlightingBrush = QBrush(background) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
529 | self.viewport().update() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
530 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
531 | def overwriteMode(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
532 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
533 | Public method to get the overwrite mode. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
534 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
535 | @return overwrite mode |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
536 | @rtype bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
537 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
538 | return self.__overwriteMode |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
539 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
540 | def setOverwriteMode(self, on): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
541 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
542 | Public method to set the overwrite mode. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
543 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
544 | @param on flag indicating the new overwrite mode |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
545 | @type bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
546 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
547 | self.__overwriteMode = on |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
548 | self.overwriteModeChanged.emit(self.__overwriteMode) |
4673
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
549 | |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
550 | # step 1: delete old cursor |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
551 | self.__blink = False |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
552 | self.viewport().update(self.__cursorRect) |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
553 | # step 2: change the cursor rectangle |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
554 | self.__setHexCursorRect() |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
555 | # step 3: draw new cursors |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
556 | self.__blink = True |
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
557 | self.viewport().update(self.__cursorRect) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
558 | |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
559 | def selectionColors(self): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
560 | """ |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
561 | Public method to get the selection colors. |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
562 | |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
563 | @return selection foreground and background colors |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
564 | @rtype tuple of 2 QColor |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
565 | """ |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
566 | return self.__selectionPen.color(), self.__selectionBrush.color() |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
567 | |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
568 | def setSelectionColors(self, foreground, background): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
569 | """ |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
570 | Public method to set the selection colors. |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
571 | |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
572 | @param foreground selection foreground color |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
573 | @type QColor |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
574 | @param background selection background color |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
575 | @type QColor |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
576 | """ |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
577 | self.__selectionPen = QPen(foreground) |
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
578 | self.__selectionBrush = QBrush(background) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
579 | self.viewport().update() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
580 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
581 | def isReadOnly(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
582 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
583 | Public method to test the read only state. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
584 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
585 | @return flag indicating the read only state |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
586 | @rtype bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
587 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
588 | return self.__readOnly |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
589 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
590 | def setReadOnly(self, on): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
591 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
592 | Public method to set the read only state. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
593 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
594 | @param on new read only state |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
595 | @type bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
596 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
597 | self.__readOnly = on |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
598 | self.readOnlyChanged.emit(self.__readOnly) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
599 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
600 | def font(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
601 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
602 | Public method to get the font used to show the data. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
603 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
604 | @return font used to show the data |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
605 | @rtype QFont |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
606 | """ |
8218
7c09585bd960
Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
607 | return super().font() |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
608 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
609 | def setFont(self, font): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
610 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
611 | Public method to set the font used to show the data. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
612 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
613 | @param font font used to show the data |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
614 | @type QFont |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
615 | """ |
8218
7c09585bd960
Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
616 | super().setFont(font) |
7366
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
617 | try: |
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
618 | self.__pxCharWidth = self.fontMetrics().horizontalAdvance("2") |
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
619 | except AttributeError: |
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
620 | self.__pxCharWidth = self.fontMetrics().width("2") |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
621 | self.__pxCharHeight = self.fontMetrics().height() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
622 | self.__pxGapAdr = self.__pxCharWidth // 2 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
623 | self.__pxGapAdrHex = self.__pxCharWidth |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
624 | self.__pxGapHexAscii = 2 * self.__pxCharWidth |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
625 | self.__pxCursorWidth = self.__pxCharHeight // 7 |
4656
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
626 | self.__pxSelectionSub = self.fontMetrics().descent() |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
627 | self.__adjust() |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
628 | self.viewport().update() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
629 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
630 | def dataAt(self, pos, count=-1): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
631 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
632 | Public method to get data from a given position. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
633 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
634 | @param pos position to get data from |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
635 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
636 | @param count amount of bytes to get |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
637 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
638 | @return requested data |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
639 | @rtype bytearray |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
640 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
641 | return bytearray(self.__chunks.data(pos, count)) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
642 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
643 | def write(self, device, pos=0, count=-1): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
644 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
645 | Public method to write data from a given position to a device. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
646 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
647 | @param device device to write to |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
648 | @type QIODevice |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
649 | @param pos position to start the write at |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
650 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
651 | @param count amount of bytes to write |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
652 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
653 | @return flag indicating success |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
654 | @rtype bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
655 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
656 | return self.__chunks.write(device, pos, count) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
657 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
658 | def insert(self, pos, ch): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
659 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
660 | Public method to insert a byte. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
661 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
662 | @param pos position to insert the byte at |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
663 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
664 | @param ch byte to insert |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
665 | @type int in the range 0x00 to 0xff |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
666 | """ |
7628
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7366
diff
changeset
|
667 | if ch in range(0, 256): |
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7366
diff
changeset
|
668 | self.__undoStack.insert(pos, ch) |
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7366
diff
changeset
|
669 | self.__refresh() |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
670 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
671 | def remove(self, pos, length=1): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
672 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
673 | Public method to remove bytes. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
674 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
675 | @param pos position to remove bytes from |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
676 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
677 | @param length amount of bytes to remove |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
678 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
679 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
680 | self.__undoStack.removeAt(pos, length) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
681 | self.__refresh() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
682 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
683 | def replace(self, pos, ch): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
684 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
685 | Public method to replace a byte. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
686 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
687 | @param pos position to replace the byte at |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
688 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
689 | @param ch byte to replace with |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
690 | @type int in the range 0x00 to 0xff |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
691 | """ |
7628
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7366
diff
changeset
|
692 | if ch in range(0, 256): |
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7366
diff
changeset
|
693 | self.__undoStack.overwrite(pos, ch) |
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7366
diff
changeset
|
694 | self.__refresh() |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
695 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
696 | def insertByteArray(self, pos, byteArray): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
697 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
698 | Public method to insert bytes. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
699 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
700 | @param pos position to insert the bytes at |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
701 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
702 | @param byteArray bytes to be insert |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
703 | @type bytearray or QByteArray |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
704 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
705 | self.__undoStack.insertByteArray(pos, bytearray(byteArray)) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
706 | self.__refresh() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
707 | |
5587
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
708 | def replaceByteArray(self, pos, length, byteArray): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
709 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
710 | Public method to replace bytes. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
711 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
712 | @param pos position to replace the bytes at |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
713 | @type int |
5587
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
714 | @param length amount of bytes to replace |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
715 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
716 | @param byteArray bytes to replace with |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
717 | @type bytearray or QByteArray |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
718 | """ |
5587
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
719 | self.__undoStack.overwriteByteArray(pos, length, bytearray(byteArray)) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
720 | self.__refresh() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
721 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
722 | def cursorPositionFromPoint(self, point): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
723 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
724 | Public method to calculate a cursor position from a graphics position. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
725 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
726 | @param point graphics position |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
727 | @type QPoint |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
728 | @return cursor position |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
729 | @rtype int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
730 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
731 | result = -1 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
732 | if (point.x() >= self.__pxPosHexX) and ( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
733 | point.x() < (self.__pxPosHexX + (1 + self.HEXCHARS_PER_LINE) * |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
734 | self.__pxCharWidth)): |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
735 | x = ( |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
736 | (point.x() - self.__pxPosHexX - self.__pxCharWidth // 2) // |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
737 | self.__pxCharWidth |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
738 | ) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
739 | x = (x // 3) * 2 + x % 3 |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
740 | y = ( |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
741 | ((point.y() - 3) // self.__pxCharHeight) * 2 * |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
742 | self.BYTES_PER_LINE |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
743 | ) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
744 | result = self.__bPosFirst * 2 + x + y |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
745 | return result |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
746 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
747 | def ensureVisible(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
748 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
749 | Public method to ensure, that the cursor is visible. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
750 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
751 | if self.__cursorPosition < 2 * self.__bPosFirst: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
752 | self.verticalScrollBar().setValue( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
753 | self.__cursorPosition // 2 // self.BYTES_PER_LINE) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
754 | if self.__cursorPosition > ( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
755 | (self.__bPosFirst + (self.__rowsShown - 1) * |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
756 | self.BYTES_PER_LINE) * 2): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
757 | self.verticalScrollBar().setValue( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
758 | self.__cursorPosition // 2 // self.BYTES_PER_LINE - |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
759 | self.__rowsShown + 1) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
760 | self.viewport().update() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
761 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
762 | def indexOf(self, byteArray, start): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
763 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
764 | Public method to find the first occurrence of a byte array in our data. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
765 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
766 | @param byteArray data to search for |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
767 | @type bytearray or QByteArray |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
768 | @param start start position of the search |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
769 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
770 | @return position of match (or -1 if not found) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
771 | @rtype int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
772 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
773 | byteArray = bytearray(byteArray) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
774 | pos = self.__chunks.indexOf(byteArray, start) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
775 | if pos > -1: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
776 | curPos = pos * 2 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
777 | self.setCursorPosition(curPos + len(byteArray) * 2) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
778 | self.__resetSelection(curPos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
779 | self.__setSelection(curPos + len(byteArray) * 2) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
780 | self.ensureVisible() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
781 | return pos |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
782 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
783 | def lastIndexOf(self, byteArray, start): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
784 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
785 | Public method to find the last occurrence of a byte array in our data. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
786 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
787 | @param byteArray data to search for |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
788 | @type bytearray or QByteArray |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
789 | @param start start position of the search |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
790 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
791 | @return position of match (or -1 if not found) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
792 | @rtype int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
793 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
794 | byteArray = bytearray(byteArray) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
795 | pos = self.__chunks.lastIndexOf(byteArray, start) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
796 | if pos > -1: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
797 | curPos = pos * 2 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
798 | self.setCursorPosition(curPos - 1) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
799 | self.__resetSelection(curPos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
800 | self.__setSelection(curPos + len(byteArray) * 2) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
801 | self.ensureVisible() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
802 | return pos |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
803 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
804 | def isModified(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
805 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
806 | Public method to check for any modification. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
807 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
808 | @return flag indicating a modified state |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
809 | @rtype bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
810 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
811 | return self.__modified |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
812 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
813 | def setModified(self, modified, setCleanState=False): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
814 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
815 | Public slot to set the modified flag. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
816 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
817 | @param modified flag indicating the new modification status |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
818 | @type bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
819 | @param setCleanState flag indicating to set the undo stack to clean |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
820 | @type bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
821 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
822 | self.__modified = modified |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
823 | self.dataChanged.emit(modified) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
824 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
825 | if not modified and setCleanState: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
826 | self.__undoStack.setClean() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
827 | |
4659
2863d05e83c6
Improved the search/replace history handling of the hex editor and added input validators.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4658
diff
changeset
|
828 | def selectionToHexString(self): |
2863d05e83c6
Improved the search/replace history handling of the hex editor and added input validators.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4658
diff
changeset
|
829 | """ |
2863d05e83c6
Improved the search/replace history handling of the hex editor and added input validators.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4658
diff
changeset
|
830 | Public method to get a hexadecimal representation of the selection. |
2863d05e83c6
Improved the search/replace history handling of the hex editor and added input validators.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4658
diff
changeset
|
831 | |
2863d05e83c6
Improved the search/replace history handling of the hex editor and added input validators.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4658
diff
changeset
|
832 | @return hexadecimal representation of the selection |
2863d05e83c6
Improved the search/replace history handling of the hex editor and added input validators.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4658
diff
changeset
|
833 | @rtype str |
2863d05e83c6
Improved the search/replace history handling of the hex editor and added input validators.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4658
diff
changeset
|
834 | """ |
2863d05e83c6
Improved the search/replace history handling of the hex editor and added input validators.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4658
diff
changeset
|
835 | byteArray = self.__chunks.data(self.getSelectionBegin(), |
4669
d37bfc9ca3b9
Added selection information to the statusbar of the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4664
diff
changeset
|
836 | self.getSelectionLength()) |
4659
2863d05e83c6
Improved the search/replace history handling of the hex editor and added input validators.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4658
diff
changeset
|
837 | return self.__toHex(byteArray).decode(encoding="ascii") |
2863d05e83c6
Improved the search/replace history handling of the hex editor and added input validators.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4658
diff
changeset
|
838 | |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
839 | def selectionToReadableString(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
840 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
841 | Public method to get a formatted representation of the selection. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
842 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
843 | @return formatted representation of the selection |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
844 | @rtype str |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
845 | """ |
4652
a88a2ba7a48a
Added search and replace capability to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4650
diff
changeset
|
846 | byteArray = self.__chunks.data(self.getSelectionBegin(), |
4669
d37bfc9ca3b9
Added selection information to the statusbar of the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4664
diff
changeset
|
847 | self.getSelectionLength()) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
848 | return self.__toReadable(byteArray) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
849 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
850 | def toReadableString(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
851 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
852 | Public method to get a formatted representation of our data. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
853 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
854 | @return formatted representation of our data |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
855 | @rtype str |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
856 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
857 | byteArray = self.__chunks.data() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
858 | return self.__toReadable(byteArray) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
859 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
860 | @pyqtSlot() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
861 | def redo(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
862 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
863 | Public slot to redo the last operation. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
864 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
865 | self.__undoStack.redo() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
866 | self.setCursorPosition(self.__chunks.pos() * 2) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
867 | self.__refresh() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
868 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
869 | @pyqtSlot() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
870 | def undo(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
871 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
872 | Public slot to undo the last operation. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
873 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
874 | self.__undoStack.undo() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
875 | self.setCursorPosition(self.__chunks.pos() * 2) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
876 | self.__refresh() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
877 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
878 | @pyqtSlot() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
879 | def revertToUnmodified(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
880 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
881 | Public slot to revert all changes. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
882 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
883 | cleanIndex = self.__undoStack.cleanIndex() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
884 | if cleanIndex >= 0: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
885 | self.__undoStack.setIndex(cleanIndex) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
886 | self.setCursorPosition(self.__chunks.pos() * 2) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
887 | self.__refresh() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
888 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
889 | #################################################### |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
890 | ## Cursor movement commands |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
891 | #################################################### |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
892 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
893 | def moveCursorToNextChar(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
894 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
895 | Public method to move the cursor to the next byte. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
896 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
897 | self.setCursorPosition(self.__cursorPosition + 1) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
898 | self.__resetSelection(self.__cursorPosition) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
899 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
900 | def moveCursorToPreviousChar(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
901 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
902 | Public method to move the cursor to the previous byte. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
903 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
904 | self.setCursorPosition(self.__cursorPosition - 1) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
905 | self.__resetSelection(self.__cursorPosition) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
906 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
907 | def moveCursorToEndOfLine(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
908 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
909 | Public method to move the cursor to the end of the current line. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
910 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
911 | self.setCursorPosition(self.__cursorPosition | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
912 | (2 * self.BYTES_PER_LINE - 1)) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
913 | self.__resetSelection(self.__cursorPosition) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
914 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
915 | def moveCursorToStartOfLine(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
916 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
917 | Public method to move the cursor to the beginning of the current line. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
918 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
919 | self.setCursorPosition( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
920 | self.__cursorPosition - |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
921 | (self.__cursorPosition % (2 * self.BYTES_PER_LINE))) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
922 | self.__resetSelection(self.__cursorPosition) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
923 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
924 | def moveCursorToPreviousLine(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
925 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
926 | Public method to move the cursor to the previous line. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
927 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
928 | self.setCursorPosition(self.__cursorPosition - 2 * self.BYTES_PER_LINE) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
929 | self.__resetSelection(self.__cursorPosition) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
930 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
931 | def moveCursorToNextLine(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
932 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
933 | Public method to move the cursor to the next line. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
934 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
935 | self.setCursorPosition(self.__cursorPosition + 2 * self.BYTES_PER_LINE) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
936 | self.__resetSelection(self.__cursorPosition) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
937 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
938 | def moveCursorToNextPage(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
939 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
940 | Public method to move the cursor to the next page. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
941 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
942 | self.setCursorPosition( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
943 | self.__cursorPosition + |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
944 | (self.__rowsShown - 1) * 2 * self.BYTES_PER_LINE) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
945 | self.__resetSelection(self.__cursorPosition) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
946 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
947 | def moveCursorToPreviousPage(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
948 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
949 | Public method to move the cursor to the previous page. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
950 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
951 | self.setCursorPosition( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
952 | self.__cursorPosition - |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
953 | (self.__rowsShown - 1) * 2 * self.BYTES_PER_LINE) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
954 | self.__resetSelection(self.__cursorPosition) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
955 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
956 | def moveCursorToEndOfDocument(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
957 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
958 | Public method to move the cursor to the end of the data. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
959 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
960 | self.setCursorPosition(self.__chunks.size() * 2) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
961 | self.__resetSelection(self.__cursorPosition) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
962 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
963 | def moveCursorToStartOfDocument(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
964 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
965 | Public method to move the cursor to the start of the data. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
966 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
967 | self.setCursorPosition(0) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
968 | self.__resetSelection(self.__cursorPosition) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
969 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
970 | #################################################### |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
971 | ## Selection commands |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
972 | #################################################### |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
973 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
974 | def deselectAll(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
975 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
976 | Public method to deselect all data. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
977 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
978 | self.__resetSelection(0) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
979 | self.__refresh() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
980 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
981 | def selectAll(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
982 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
983 | Public method to select all data. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
984 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
985 | self.__resetSelection(0) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
986 | self.__setSelection(2 * self.__chunks.size() + 1) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
987 | self.__refresh() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
988 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
989 | def selectNextChar(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
990 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
991 | Public method to extend the selection by one byte right. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
992 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
993 | pos = self.__cursorPosition + 1 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
994 | self.setCursorPosition(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
995 | self.__setSelection(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
996 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
997 | def selectPreviousChar(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
998 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
999 | Public method to extend the selection by one byte left. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1000 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1001 | pos = self.__cursorPosition - 1 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1002 | self.setCursorPosition(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1003 | self.__setSelection(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1004 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1005 | def selectToEndOfLine(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1006 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1007 | Public method to extend the selection to the end of line. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1008 | """ |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1009 | pos = ( |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1010 | self.__cursorPosition - |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1011 | (self.__cursorPosition % (2 * self.BYTES_PER_LINE)) + |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1012 | 2 * self.BYTES_PER_LINE |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1013 | ) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1014 | self.setCursorPosition(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1015 | self.__setSelection(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1016 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1017 | def selectToStartOfLine(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1018 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1019 | Public method to extend the selection to the start of line. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1020 | """ |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1021 | pos = ( |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1022 | self.__cursorPosition - |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1023 | (self.__cursorPosition % (2 * self.BYTES_PER_LINE)) |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1024 | ) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1025 | self.setCursorPosition(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1026 | self.__setSelection(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1027 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1028 | def selectPreviousLine(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1029 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1030 | Public method to extend the selection one line up. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1031 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1032 | pos = self.__cursorPosition - 2 * self.BYTES_PER_LINE |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1033 | self.setCursorPosition(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1034 | self.__setSelection(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1035 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1036 | def selectNextLine(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1037 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1038 | Public method to extend the selection one line down. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1039 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1040 | pos = self.__cursorPosition + 2 * self.BYTES_PER_LINE |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1041 | self.setCursorPosition(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1042 | self.__setSelection(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1043 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1044 | def selectNextPage(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1045 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1046 | Public method to extend the selection one page down. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1047 | """ |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1048 | pos = ( |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1049 | self.__cursorPosition + |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1050 | ((self.viewport().height() // self.__pxCharHeight) - 1) * |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1051 | 2 * self.BYTES_PER_LINE |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1052 | ) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1053 | self.setCursorPosition(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1054 | self.__setSelection(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1055 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1056 | def selectPreviousPage(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1057 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1058 | Public method to extend the selection one page up. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1059 | """ |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1060 | pos = ( |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1061 | self.__cursorPosition - |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1062 | ((self.viewport().height() // self.__pxCharHeight) - 1) * |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1063 | 2 * self.BYTES_PER_LINE |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1064 | ) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1065 | self.setCursorPosition(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1066 | self.__setSelection(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1067 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1068 | def selectEndOfDocument(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1069 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1070 | Public method to extend the selection to the end of the data. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1071 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1072 | pos = self.__chunks.size() * 2 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1073 | self.setCursorPosition(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1074 | self.__setSelection(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1075 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1076 | def selectStartOfDocument(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1077 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1078 | Public method to extend the selection to the start of the data. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1079 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1080 | pos = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1081 | self.setCursorPosition(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1082 | self.__setSelection(pos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1083 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1084 | #################################################### |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1085 | ## Edit commands |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1086 | #################################################### |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1087 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1088 | def cut(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1089 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1090 | Public method to cut the selected bytes and move them to the clipboard. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1091 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1092 | if not self.__readOnly: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1093 | byteArray = self.__toHex(self.__chunks.data( |
4669
d37bfc9ca3b9
Added selection information to the statusbar of the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4664
diff
changeset
|
1094 | self.getSelectionBegin(), self.getSelectionLength())) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1095 | idx = 32 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1096 | while idx < len(byteArray): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1097 | byteArray.insert(idx, "\n") |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1098 | idx += 33 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1099 | cb = QApplication.clipboard() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1100 | cb.setText(byteArray.decode(encoding="latin1")) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1101 | if self.__overwriteMode: |
4669
d37bfc9ca3b9
Added selection information to the statusbar of the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4664
diff
changeset
|
1102 | length = self.getSelectionLength() |
4652
a88a2ba7a48a
Added search and replace capability to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4650
diff
changeset
|
1103 | self.replaceByteArray(self.getSelectionBegin(), length, |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1104 | bytearray(length)) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1105 | else: |
4652
a88a2ba7a48a
Added search and replace capability to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4650
diff
changeset
|
1106 | self.remove(self.getSelectionBegin(), |
4669
d37bfc9ca3b9
Added selection information to the statusbar of the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4664
diff
changeset
|
1107 | self.getSelectionLength()) |
4652
a88a2ba7a48a
Added search and replace capability to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4650
diff
changeset
|
1108 | self.setCursorPosition(2 * self.getSelectionBegin()) |
a88a2ba7a48a
Added search and replace capability to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4650
diff
changeset
|
1109 | self.__resetSelection(2 * self.getSelectionBegin()) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1110 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1111 | def copy(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1112 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1113 | Public method to copy the selected bytes to the clipboard. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1114 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1115 | byteArray = self.__toHex(self.__chunks.data( |
4669
d37bfc9ca3b9
Added selection information to the statusbar of the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4664
diff
changeset
|
1116 | self.getSelectionBegin(), self.getSelectionLength())) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1117 | idx = 32 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1118 | while idx < len(byteArray): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1119 | byteArray.insert(idx, "\n") |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1120 | idx += 33 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1121 | cb = QApplication.clipboard() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1122 | cb.setText(byteArray.decode(encoding="latin1")) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1123 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1124 | def paste(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1125 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1126 | Public method to paste bytes from the clipboard. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1127 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1128 | if not self.__readOnly: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1129 | cb = QApplication.clipboard() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1130 | byteArray = self.__fromHex(cb.text().encode(encoding="latin1")) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1131 | if self.__overwriteMode: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1132 | self.replaceByteArray(self.__bPosCurrent, len(byteArray), |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1133 | byteArray) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1134 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1135 | self.insertByteArray(self.__bPosCurrent, byteArray) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1136 | self.setCursorPosition( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1137 | self.__cursorPosition + 2 * len(byteArray)) |
4652
a88a2ba7a48a
Added search and replace capability to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4650
diff
changeset
|
1138 | self.__resetSelection(2 * self.getSelectionBegin()) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1139 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1140 | def deleteByte(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1141 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1142 | Public method to delete the current byte. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1143 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1144 | if not self.__readOnly: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1145 | if self.hasSelection(): |
4652
a88a2ba7a48a
Added search and replace capability to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4650
diff
changeset
|
1146 | self.__bPosCurrent = self.getSelectionBegin() |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1147 | if self.__overwriteMode: |
4669
d37bfc9ca3b9
Added selection information to the statusbar of the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4664
diff
changeset
|
1148 | byteArray = bytearray(self.getSelectionLength()) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1149 | self.replaceByteArray(self.__bPosCurrent, len(byteArray), |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1150 | byteArray) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1151 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1152 | self.remove(self.__bPosCurrent, |
4669
d37bfc9ca3b9
Added selection information to the statusbar of the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4664
diff
changeset
|
1153 | self.getSelectionLength()) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1154 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1155 | if self.__overwriteMode: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1156 | self.replace(self.__bPosCurrent, 0) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1157 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1158 | self.remove(self.__bPosCurrent, 1) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1159 | self.setCursorPosition(2 * self.__bPosCurrent) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1160 | self.__resetSelection(2 * self.__bPosCurrent) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1161 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1162 | def deleteByteBack(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1163 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1164 | Public method to delete the previous byte. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1165 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1166 | if not self.__readOnly: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1167 | if self.hasSelection(): |
4652
a88a2ba7a48a
Added search and replace capability to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4650
diff
changeset
|
1168 | self.__bPosCurrent = self.getSelectionBegin() |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1169 | self.setCursorPosition(2 * self.__bPosCurrent) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1170 | if self.__overwriteMode: |
4669
d37bfc9ca3b9
Added selection information to the statusbar of the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4664
diff
changeset
|
1171 | byteArray = bytearray(self.getSelectionLength()) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1172 | self.replaceByteArray(self.__bPosCurrent, len(byteArray), |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1173 | byteArray) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1174 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1175 | self.remove(self.__bPosCurrent, |
4669
d37bfc9ca3b9
Added selection information to the statusbar of the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4664
diff
changeset
|
1176 | self.getSelectionLength()) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1177 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1178 | self.__bPosCurrent -= 1 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1179 | if self.__overwriteMode: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1180 | self.replace(self.__bPosCurrent, 0) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1181 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1182 | self.remove(self.__bPosCurrent, 1) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1183 | self.setCursorPosition(2 * self.__bPosCurrent) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1184 | self.__resetSelection(2 * self.__bPosCurrent) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1185 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1186 | #################################################### |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1187 | ## Event handling methods |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1188 | #################################################### |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1189 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1190 | def keyPressEvent(self, evt): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1191 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1192 | Protected method to handle key press events. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1193 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1194 | @param evt reference to the key event |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1195 | @type QKeyEvent |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1196 | """ |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1197 | # Cursor movements |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1198 | if evt.matches(QKeySequence.StandardKey.MoveToNextChar): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1199 | self.moveCursorToNextChar() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1200 | elif evt.matches(QKeySequence.StandardKey.MoveToPreviousChar): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1201 | self.moveCursorToPreviousChar() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1202 | elif evt.matches(QKeySequence.StandardKey.MoveToEndOfLine): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1203 | self.moveCursorToEndOfLine() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1204 | elif evt.matches(QKeySequence.StandardKey.MoveToStartOfLine): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1205 | self.moveCursorToStartOfLine() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1206 | elif evt.matches(QKeySequence.StandardKey.MoveToPreviousLine): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1207 | self.moveCursorToPreviousLine() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1208 | elif evt.matches(QKeySequence.StandardKey.MoveToNextLine): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1209 | self.moveCursorToNextLine() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1210 | elif evt.matches(QKeySequence.StandardKey.MoveToNextPage): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1211 | self.moveCursorToNextPage() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1212 | elif evt.matches(QKeySequence.StandardKey.MoveToPreviousPage): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1213 | self.moveCursorToPreviousPage() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1214 | elif evt.matches(QKeySequence.StandardKey.MoveToEndOfDocument): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1215 | self.moveCursorToEndOfDocument() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1216 | elif evt.matches(QKeySequence.StandardKey.MoveToStartOfDocument): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1217 | self.moveCursorToStartOfDocument() |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1218 | |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1219 | # Selection commands |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1220 | elif evt.matches(QKeySequence.StandardKey.SelectAll): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1221 | self.selectAll() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1222 | elif evt.matches(QKeySequence.StandardKey.SelectNextChar): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1223 | self.selectNextChar() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1224 | elif evt.matches(QKeySequence.StandardKey.SelectPreviousChar): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1225 | self.selectPreviousChar() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1226 | elif evt.matches(QKeySequence.StandardKey.SelectEndOfLine): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1227 | self.selectToEndOfLine() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1228 | elif evt.matches(QKeySequence.StandardKey.SelectStartOfLine): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1229 | self.selectToStartOfLine() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1230 | elif evt.matches(QKeySequence.StandardKey.SelectPreviousLine): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1231 | self.selectPreviousLine() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1232 | elif evt.matches(QKeySequence.StandardKey.SelectNextLine): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1233 | self.selectNextLine() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1234 | elif evt.matches(QKeySequence.StandardKey.SelectNextPage): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1235 | self.selectNextPage() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1236 | elif evt.matches(QKeySequence.StandardKey.SelectPreviousPage): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1237 | self.selectPreviousPage() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1238 | elif evt.matches(QKeySequence.StandardKey.SelectEndOfDocument): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1239 | self.selectEndOfDocument() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1240 | elif evt.matches(QKeySequence.StandardKey.SelectStartOfDocument): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1241 | self.selectStartOfDocument() |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1242 | |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1243 | # Edit commands |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1244 | elif evt.matches(QKeySequence.StandardKey.Copy): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1245 | self.copy() |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1246 | elif ( |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1247 | evt.key() == Qt.Key.Key_Insert and |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1248 | evt.modifiers() == Qt.KeyboardModifier.NoModifier |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1249 | ): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1250 | self.setOverwriteMode(not self.overwriteMode()) |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1251 | self.setCursorPosition(self.__cursorPosition) |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1252 | |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1253 | elif not self.__readOnly: |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1254 | if evt.matches(QKeySequence.StandardKey.Cut): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1255 | self.cut() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1256 | elif evt.matches(QKeySequence.StandardKey.Paste): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1257 | self.paste() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1258 | elif evt.matches(QKeySequence.StandardKey.Delete): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1259 | self.deleteByte() |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1260 | elif ( |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1261 | evt.key() == Qt.Key.Key_Backspace and |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1262 | evt.modifiers() == Qt.KeyboardModifier.NoModifier |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1263 | ): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1264 | self.deleteByteBack() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1265 | elif evt.matches(QKeySequence.StandardKey.Undo): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1266 | self.undo() |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1267 | elif evt.matches(QKeySequence.StandardKey.Redo): |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1268 | self.redo() |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1269 | |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1270 | elif QApplication.keyboardModifiers() in [ |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1271 | Qt.KeyboardModifier.NoModifier, |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1272 | Qt.KeyboardModifier.KeypadModifier |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1273 | ]: |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1274 | # some hex input |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1275 | key = evt.text() |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1276 | if key and key in "0123456789abcdef": |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1277 | if self.hasSelection(): |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1278 | if self.__overwriteMode: |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1279 | length = self.getSelectionLength() |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1280 | self.replaceByteArray( |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1281 | self.getSelectionBegin(), length, |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1282 | bytearray(length)) |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1283 | else: |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1284 | self.remove(self.getSelectionBegin(), |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1285 | self.getSelectionLength()) |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1286 | self.__bPosCurrent = self.getSelectionBegin() |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1287 | self.setCursorPosition(2 * self.__bPosCurrent) |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1288 | self.__resetSelection(2 * self.__bPosCurrent) |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1289 | |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1290 | # if in insert mode, insert a byte |
8222
5994b80b8760
Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
1291 | if ( |
5994b80b8760
Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
1292 | not self.__overwriteMode and |
5994b80b8760
Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
1293 | (self.__cursorPosition % 2) == 0 |
5994b80b8760
Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
1294 | ): |
5994b80b8760
Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
1295 | self.insert(self.__bPosCurrent, 0) |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1296 | |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1297 | # change content |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1298 | if self.__chunks.size() > 0: |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1299 | hexValue = self.__toHex( |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1300 | self.__chunks.data(self.__bPosCurrent, 1)) |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1301 | if (self.__cursorPosition % 2) == 0: |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1302 | hexValue[0] = ord(key) |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1303 | else: |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1304 | hexValue[1] = ord(key) |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1305 | self.replace(self.__bPosCurrent, |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1306 | self.__fromHex(hexValue)[0]) |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1307 | |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1308 | self.setCursorPosition(self.__cursorPosition + 1) |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1309 | self.__resetSelection(self.__cursorPosition) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1310 | else: |
4688
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1311 | return |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1312 | else: |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1313 | return |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1314 | else: |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1315 | return |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1316 | else: |
fe866d2674fc
Corrected the hex editor keyboard handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4686
diff
changeset
|
1317 | return |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1318 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1319 | self.__refresh() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1320 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1321 | def mouseMoveEvent(self, evt): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1322 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1323 | Protected method to handle mouse moves. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1324 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1325 | @param evt reference to the mouse event |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1326 | @type QMouseEvent |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1327 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1328 | self.__blink = False |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1329 | self.viewport().update() |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
1330 | actPos = self.cursorPositionFromPoint(evt.position().toPoint()) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1331 | if actPos >= 0: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1332 | self.setCursorPosition(actPos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1333 | self.__setSelection(actPos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1334 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1335 | def mousePressEvent(self, evt): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1336 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1337 | Protected method to handle mouse button presses. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1338 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1339 | @param evt reference to the mouse event |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1340 | @type QMouseEvent |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1341 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1342 | self.__blink = False |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1343 | self.viewport().update() |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
1344 | cPos = self.cursorPositionFromPoint(evt.position().toPoint()) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1345 | if cPos >= 0: |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1346 | if evt.modifiers() == Qt.KeyboardModifier.ShiftModifier: |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1347 | self.__setSelection(cPos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1348 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1349 | self.__resetSelection(cPos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1350 | self.setCursorPosition(cPos) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1351 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1352 | def paintEvent(self, evt): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1353 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1354 | Protected method to handle paint events. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1355 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1356 | @param evt reference to the paint event |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1357 | @type QPaintEvent |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1358 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1359 | painter = QPainter(self.viewport()) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1360 | |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1361 | if ( |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1362 | evt.rect() != self.__cursorRect and |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1363 | evt.rect() != self.__cursorRectAscii |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1364 | ): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1365 | pxOfsX = self.horizontalScrollBar().value() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1366 | pxPosStartY = self.__pxCharHeight |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1367 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1368 | # draw some patterns if needed |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1369 | painter.fillRect( |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1370 | evt.rect(), |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1371 | self.viewport().palette().color(QPalette.ColorRole.Base)) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1372 | if self.__addressArea: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1373 | painter.fillRect( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1374 | QRect(-pxOfsX, evt.rect().top(), |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1375 | self.__pxPosHexX - self.__pxGapAdrHex // 2 - pxOfsX, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1376 | self.height()), |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
1377 | self.__addressAreaBrush) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1378 | if self.__asciiArea: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1379 | linePos = self.__pxPosAsciiX - (self.__pxGapHexAscii // 2) |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1380 | painter.setPen(Qt.GlobalColor.gray) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1381 | painter.drawLine(linePos - pxOfsX, evt.rect().top(), |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1382 | linePos - pxOfsX, self.height()) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1383 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1384 | painter.setPen( |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1385 | self.viewport().palette().color(QPalette.ColorRole.WindowText)) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1386 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1387 | # paint the address area |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1388 | if self.__addressArea: |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
1389 | painter.setPen(self.__addressAreaPen) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1390 | address = "" |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1391 | row = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1392 | pxPosY = self.__pxCharHeight |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1393 | while row <= len(self.__dataShown) // self.BYTES_PER_LINE: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1394 | address = "{0:0{1}x}".format( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1395 | self.__bPosFirst + row * self.BYTES_PER_LINE, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1396 | self.__addrDigits) |
4686
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
1397 | address = Globals.strGroup(address, ":", 4) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1398 | painter.drawText(self.__pxPosAdrX - pxOfsX, pxPosY, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1399 | address) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1400 | # increment loop variables |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1401 | row += 1 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1402 | pxPosY += self.__pxCharHeight |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1403 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1404 | # paint hex and ascii area |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1405 | colStandard = QPen( |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1406 | self.viewport().palette().color(QPalette.ColorRole.WindowText)) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1407 | |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1408 | painter.setBackgroundMode(Qt.BGMode.TransparentMode) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1409 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1410 | row = 0 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1411 | pxPosY = pxPosStartY |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1412 | while row <= self.__rowsShown: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1413 | pxPosX = self.__pxPosHexX - pxOfsX |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1414 | pxPosAsciiX2 = self.__pxPosAsciiX - pxOfsX |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1415 | bPosLine = row * self.BYTES_PER_LINE |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1416 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1417 | colIdx = 0 |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1418 | while ( |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1419 | bPosLine + colIdx < len(self.__dataShown) and |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1420 | colIdx < self.BYTES_PER_LINE |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1421 | ): |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1422 | c = self.viewport().palette().color( |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1423 | QPalette.ColorRole.Base) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1424 | painter.setPen(colStandard) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1425 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1426 | posBa = self.__bPosFirst + bPosLine + colIdx |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1427 | if ( |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1428 | self.getSelectionBegin() <= posBa and |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1429 | self.getSelectionEnd() > posBa |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1430 | ): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1431 | c = self.__selectionBrush.color() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1432 | painter.setPen(self.__selectionPen) |
8222
5994b80b8760
Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
1433 | elif ( |
5994b80b8760
Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
1434 | self.__highlighting and |
5994b80b8760
Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
1435 | self.__markedShown and |
5994b80b8760
Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
1436 | self.__markedShown[posBa - self.__bPosFirst] |
5994b80b8760
Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
1437 | ): |
5994b80b8760
Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
1438 | c = self.__highlightingBrush.color() |
5994b80b8760
Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
1439 | painter.setPen(self.__highlightingPen) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1440 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1441 | # render hex value |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1442 | r = QRect() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1443 | if colIdx == 0: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1444 | r.setRect( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1445 | pxPosX, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1446 | pxPosY - self.__pxCharHeight + |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1447 | self.__pxSelectionSub, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1448 | 2 * self.__pxCharWidth, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1449 | self.__pxCharHeight) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1450 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1451 | r.setRect( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1452 | pxPosX - self.__pxCharWidth, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1453 | pxPosY - self.__pxCharHeight + |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1454 | self.__pxSelectionSub, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1455 | 3 * self.__pxCharWidth, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1456 | self.__pxCharHeight) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1457 | painter.fillRect(r, c) |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1458 | hexStr = ( |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1459 | chr(self.__hexDataShown[(bPosLine + colIdx) * 2]) + |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1460 | chr(self.__hexDataShown[(bPosLine + colIdx) * 2 + 1]) |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1461 | ) |
5587
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
1462 | painter.drawText(pxPosX, pxPosY, hexStr) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1463 | pxPosX += 3 * self.__pxCharWidth |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1464 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1465 | # render ascii value |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1466 | if self.__asciiArea: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1467 | by = self.__dataShown[bPosLine + colIdx] |
4673
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
1468 | if by < 0x20 or (by > 0x7e and by < 0xa0): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1469 | ch = "." |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1470 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1471 | ch = chr(by) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1472 | r.setRect( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1473 | pxPosAsciiX2, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1474 | pxPosY - self.__pxCharHeight + |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1475 | self.__pxSelectionSub, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1476 | self.__pxCharWidth, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1477 | self.__pxCharHeight) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1478 | painter.fillRect(r, c) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1479 | painter.drawText(pxPosAsciiX2, pxPosY, ch) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1480 | pxPosAsciiX2 += self.__pxCharWidth |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1481 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1482 | # increment loop variable |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1483 | colIdx += 1 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1484 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1485 | # increment loop variables |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1486 | row += 1 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1487 | pxPosY += self.__pxCharHeight |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
1488 | |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1489 | painter.setBackgroundMode(Qt.BGMode.TransparentMode) |
4658
d760763dcc4a
Created a configuration page for the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4656
diff
changeset
|
1490 | painter.setPen( |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1491 | self.viewport().palette().color(QPalette.ColorRole.WindowText)) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1492 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1493 | # paint cursor |
4670
d401ba329d24
Added 'Goto' functionality to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4669
diff
changeset
|
1494 | if self.__blink and not self.__readOnly and self.isActiveWindow(): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1495 | painter.fillRect( |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1496 | self.__cursorRect, |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
1497 | self.palette().color(QPalette.ColorRole.WindowText)) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1498 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1499 | if self.__hexDataShown: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1500 | try: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1501 | c = chr(self.__hexDataShown[ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1502 | self.__cursorPosition - self.__bPosFirst * 2]) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1503 | except IndexError: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1504 | c = "" |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1505 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1506 | c = "" |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1507 | painter.drawText(self.__pxCursorX, self.__pxCursorY, c) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1508 | |
4656
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
1509 | if self.__asciiArea: |
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
1510 | painter.drawRect(self.__cursorRectAscii) |
ec546bd4ec56
Added a cursor to the ASCII area of the hex edit widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4652
diff
changeset
|
1511 | |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1512 | # emit event, if size has changed |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1513 | if self.__lastEventSize != self.__chunks.size(): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1514 | self.__lastEventSize = self.__chunks.size() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1515 | self.currentSizeChanged.emit(self.__lastEventSize) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1516 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1517 | def resizeEvent(self, evt): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1518 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1519 | Protected method to handle resize events. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1520 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1521 | @param evt reference to the resize event |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1522 | @type QResizeEvent |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1523 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1524 | self.__adjust() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1525 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1526 | def __resetSelection(self, pos=None): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1527 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1528 | Private method to reset the selection. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1529 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1530 | @param pos position to set selection start and end to |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1531 | (if this is None, selection end is set to selection start) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1532 | @type int or None |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1533 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1534 | if pos is None: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1535 | self.__bSelectionBegin = self.__bSelectionInit |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1536 | self.__bSelectionEnd = self.__bSelectionInit |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1537 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1538 | if pos < 0: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1539 | pos = 0 |
8217
385f60c94548
Applied some more code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8205
diff
changeset
|
1540 | pos //= 2 |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1541 | self.__bSelectionInit = pos |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1542 | self.__bSelectionBegin = pos |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1543 | self.__bSelectionEnd = pos |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1544 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1545 | self.selectionAvailable.emit(False) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1546 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1547 | def __setSelection(self, pos): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1548 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1549 | Private method to set the selection. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1550 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1551 | @param pos position |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1552 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1553 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1554 | if pos < 0: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1555 | pos = 0 |
8217
385f60c94548
Applied some more code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8205
diff
changeset
|
1556 | pos //= 2 |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1557 | if pos >= self.__bSelectionInit: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1558 | self.__bSelectionEnd = pos |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1559 | self.__bSelectionBegin = self.__bSelectionInit |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1560 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1561 | self.__bSelectionBegin = pos |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1562 | self.__bSelectionEnd = self.__bSelectionInit |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1563 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1564 | self.selectionAvailable.emit(True) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1565 | |
4652
a88a2ba7a48a
Added search and replace capability to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4650
diff
changeset
|
1566 | def getSelectionBegin(self): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1567 | """ |
4652
a88a2ba7a48a
Added search and replace capability to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4650
diff
changeset
|
1568 | Public method to get the start of the selection. |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1569 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1570 | @return selection start |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1571 | @rtype int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1572 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1573 | return self.__bSelectionBegin |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1574 | |
4652
a88a2ba7a48a
Added search and replace capability to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4650
diff
changeset
|
1575 | def getSelectionEnd(self): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1576 | """ |
4652
a88a2ba7a48a
Added search and replace capability to the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4650
diff
changeset
|
1577 | Public method to get the end of the selection. |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1578 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1579 | @return selection end |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1580 | @rtype int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1581 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1582 | return self.__bSelectionEnd |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1583 | |
4669
d37bfc9ca3b9
Added selection information to the statusbar of the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4664
diff
changeset
|
1584 | def getSelectionLength(self): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1585 | """ |
4669
d37bfc9ca3b9
Added selection information to the statusbar of the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4664
diff
changeset
|
1586 | Public method to get the length of the selection. |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1587 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1588 | @return selection length |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1589 | @rtype int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1590 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1591 | return self.__bSelectionEnd - self.__bSelectionBegin |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1592 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1593 | def hasSelection(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1594 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1595 | Public method to test for a selection. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1596 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1597 | @return flag indicating the presence of a selection |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1598 | @rtype bool |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1599 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1600 | return self.__bSelectionBegin != self.__bSelectionEnd |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1601 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1602 | def __initialize(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1603 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1604 | Private method to do some initialization. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1605 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1606 | self.__undoStack.clear() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1607 | self.setAddressOffset(0) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1608 | self.__resetSelection(0) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1609 | self.setCursorPosition(0) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1610 | self.verticalScrollBar().setValue(0) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1611 | self.__modified = False |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1612 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1613 | def __readBuffers(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1614 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1615 | Private method to read the buffers. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1616 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1617 | self.__dataShown = self.__chunks.data( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1618 | self.__bPosFirst, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1619 | self.__bPosLast - self.__bPosFirst + self.BYTES_PER_LINE + 1, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1620 | self.__markedShown |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1621 | ) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1622 | self.__hexDataShown = self.__toHex(self.__dataShown) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1623 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1624 | def __toHex(self, byteArray): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1625 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1626 | Private method to convert the data of a Python bytearray to hex. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1627 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1628 | @param byteArray byte array to be converted |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1629 | @type bytearray |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1630 | @return converted data |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1631 | @rtype bytearray |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1632 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1633 | return bytearray(QByteArray(byteArray).toHex()) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1634 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1635 | def __fromHex(self, byteArray): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1636 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1637 | Private method to convert data of a Python bytearray from hex. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1638 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1639 | @param byteArray byte array to be converted |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1640 | @type bytearray |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1641 | @return converted data |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1642 | @rtype bytearray |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1643 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1644 | return bytearray(QByteArray.fromHex(byteArray)) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1645 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1646 | def __toReadable(self, byteArray): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1647 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1648 | Private method to convert some data into a readable format. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1649 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1650 | @param byteArray data to be converted |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1651 | @type bytearray or QByteArray |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1652 | @return readable data |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1653 | @rtype str |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1654 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1655 | byteArray = bytearray(byteArray) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1656 | result = "" |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1657 | for i in range(0, len(byteArray), 16): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1658 | addrStr = "{0:0{1}x}".format(self.__addressOffset + i, |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1659 | self.addressWidth()) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1660 | hexStr = "" |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1661 | ascStr = "" |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1662 | for j in range(16): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1663 | if (i + j) < len(byteArray): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1664 | hexStr += " {0:02x}".format(byteArray[i + j]) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1665 | by = byteArray[i + j] |
4673
6fa2418f010c
Finalized the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4670
diff
changeset
|
1666 | if by < 0x20 or (by > 0x7e and by < 0xa0): |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1667 | ch = "." |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1668 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1669 | ch = chr(by) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1670 | ascStr += ch |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1671 | result += "{0} {1:<48} {2:<17}\n".format(addrStr, hexStr, ascStr) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1672 | return result |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1673 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1674 | @pyqtSlot() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1675 | def __adjust(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1676 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1677 | Private slot to recalculate pixel positions. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1678 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1679 | # recalculate graphics |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1680 | if self.__addressArea: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1681 | self.__addrDigits = self.addressWidth() |
4686
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
1682 | self.__addrSeparators = self.__addrDigits // 4 - 1 |
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
1683 | self.__pxPosHexX = ( |
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
1684 | self.__pxGapAdr + |
4724
682f009d086d
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4688
diff
changeset
|
1685 | (self.__addrDigits + self.__addrSeparators) * |
4686
5f8a5c568230
Improved the display of addresses and sizes in the hex editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4673
diff
changeset
|
1686 | self.__pxCharWidth + self.__pxGapAdrHex) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1687 | else: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1688 | self.__pxPosHexX = self.__pxGapAdrHex |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1689 | self.__pxPosAdrX = self.__pxGapAdr |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1690 | self.__pxPosAsciiX = ( |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1691 | self.__pxPosHexX + |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1692 | self.HEXCHARS_PER_LINE * self.__pxCharWidth + |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1693 | self.__pxGapHexAscii |
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1694 | ) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1695 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1696 | # set horizontal scrollbar |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1697 | pxWidth = self.__pxPosAsciiX |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1698 | if self.__asciiArea: |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1699 | pxWidth += self.BYTES_PER_LINE * self.__pxCharWidth |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1700 | self.horizontalScrollBar().setRange( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1701 | 0, pxWidth - self.viewport().width()) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1702 | self.horizontalScrollBar().setPageStep(self.viewport().width()) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1703 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1704 | # set vertical scrollbar |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1705 | self.__rowsShown = ( |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1706 | (self.viewport().height() - 4) // self.__pxCharHeight |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1707 | ) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1708 | lineCount = (self.__chunks.size() // self.BYTES_PER_LINE) + 1 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1709 | self.verticalScrollBar().setRange(0, lineCount - self.__rowsShown) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1710 | self.verticalScrollBar().setPageStep(self.__rowsShown) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1711 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1712 | # do the rest |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1713 | value = self.verticalScrollBar().value() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1714 | self.__bPosFirst = value * self.BYTES_PER_LINE |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1715 | self.__bPosLast = ( |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1716 | self.__bPosFirst + self.__rowsShown * self.BYTES_PER_LINE - 1 |
7254
f00d825fbdb3
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7229
diff
changeset
|
1717 | ) |
4650
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1718 | if self.__bPosLast >= self.__chunks.size(): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1719 | self.__bPosLast = self.__chunks.size() - 1 |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1720 | self.__readBuffers() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1721 | self.setCursorPosition(self.__cursorPosition) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1722 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1723 | @pyqtSlot(int) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1724 | def __dataChangedPrivate(self, idx=0): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1725 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1726 | Private slot to handle data changes. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1727 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1728 | @param idx index |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1729 | @type int |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1730 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1731 | self.__modified = ( |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1732 | self.__undoStack.cleanIndex() == -1 or |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1733 | self.__undoStack.index() != self.__undoStack.cleanIndex()) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1734 | self.__adjust() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1735 | self.dataChanged.emit(self.__modified) |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1736 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1737 | @pyqtSlot() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1738 | def __refresh(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1739 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1740 | Private slot to refresh the display. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1741 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1742 | self.ensureVisible() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1743 | self.__readBuffers() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1744 | |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1745 | @pyqtSlot() |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1746 | def __updateCursor(self): |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1747 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1748 | Private slot to update the blinking cursor. |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1749 | """ |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1750 | self.__blink = not self.__blink |
b1ca3bcde70b
First commit for the new hex editor tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1751 | self.viewport().update(self.__cursorRect) |