(self, parent, data)
| 23 | |
| 24 | class ByteView(QAbstractScrollArea, View): |
| 25 | def __init__(self, parent, data): |
| 26 | QAbstractScrollArea.__init__(self, parent) |
| 27 | View.__init__(self) |
| 28 | View.setBinaryDataNavigable(self, True) |
| 29 | self.setupView(self) |
| 30 | self.data = data |
| 31 | self.byte_mapping = [ |
| 32 | u' ', u'☺', u'☻', u'♥', u'♦', u'♣', u'♠', u'•', u'◘', u'○', u'◙', u'♂', u'♀', u'♪', u'♫', u'☼', |
| 33 | u'▸', u'◂', u'↕', u'‼', u'¶', u'§', u'▬', u'↨', u'↑', u'↓', u'→', u'←', u'∟', u'↔', u'▴', u'▾', |
| 34 | u' ', u'!', u'"', u'#', u'$', u'%', u'&', u'\'', u'(', u')', u'*', u'+', u',', u'-', u'.', u'/', |
| 35 | u'0', u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9', u':', u';', u'<', u'=', u'>', u'?', |
| 36 | u'@', u'A', u'B', u'C', u'D', u'E', u'F', u'G', u'H', u'I', u'J', u'K', u'L', u'M', u'N', u'O', |
| 37 | u'P', u'Q', u'R', u'S', u'T', u'U', u'V', u'W', u'X', u'Y', u'Z', u'[', u'\\', u']', u'^', u'_', |
| 38 | u'`', u'a', u'b', u'c', u'd', u'e', u'f', u'g', u'h', u'i', u'j', u'k', u'l', u'm', u'n', u'o', |
| 39 | u'p', u'q', u'r', u's', u't', u'u', u'v', u'w', u'x', u'y', u'z', u'{', u'|', u'}', u'~', u'⌂', |
| 40 | u'Ç', u'ü', u'é', u'â', u'ä', u'à', u'å', u'ç', u'ê', u'ë', u'è', u'ï', u'î', u'ì', u'Ä', u'Å', |
| 41 | u'É', u'æ', u'Æ', u'ô', u'ö', u'ò', u'û', u'ù', u'ÿ', u'Ö', u'Ü', u'¢', u'£', u'¥', u'₧', u'ƒ', |
| 42 | u'á', u'í', u'ó', u'ú', u'ñ', u'Ñ', u'ª', u'º', u'¿', u'⌐', u'¬', u'½', u'¼', u'¡', u'«', u'»', |
| 43 | u'░', u'▒', u'▓', u'│', u'┤', u'╡', u'╢', u'╖', u'╕', u'╣', u'║', u'╗', u'╝', u'╜', u'╛', u'┐', |
| 44 | u'└', u'┴', u'┬', u'├', u'─', u'┼', u'╞', u'╟', u'╚', u'╔', u'╩', u'╦', u'╠', u'═', u'╬', u'╧', |
| 45 | u'╨', u'╤', u'╥', u'╙', u'╘', u'╒', u'╓', u'╫', u'╪', u'┘', u'┌', u'█', u'▄', u'▌', u'▐', u'▀', |
| 46 | u'α', u'ß', u'Γ', u'π', u'Σ', u'σ', u'µ', u'τ', u'Φ', u'Θ', u'Ω', u'δ', u'∞', u'φ', u'ε', u'∩', |
| 47 | u'≡', u'±', u'≥', u'≤', u'⌠', u'⌡', u'÷', u'≈', u'°', u'∙', u'·', u'√', u'ⁿ', u'²', u'■', u' ' |
| 48 | ] |
| 49 | |
| 50 | self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) |
| 51 | self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) |
| 52 | self.setFocusPolicy(Qt.StrongFocus) |
| 53 | |
| 54 | self.cursorAddr = self.data.start |
| 55 | self.prevCursorAddr = self.cursorAddr |
| 56 | self.selectionStartAddr = self.cursorAddr |
| 57 | self.topAddr = self.cursorAddr |
| 58 | self.topLine = 0 |
| 59 | self.selectionVisible = False |
| 60 | self.caretVisible = False |
| 61 | self.caretBlink = True |
| 62 | self.leftButtonDown = False |
| 63 | self.cols = 128 |
| 64 | self.updatesRequired = False |
| 65 | self.visibleRows = 1 |
| 66 | self.lines = [] |
| 67 | |
| 68 | self.updateRanges() |
| 69 | |
| 70 | areaSize = self.viewport().size() |
| 71 | self.adjustSize(areaSize.width(), areaSize.height()) |
| 72 | |
| 73 | if self.allocatedLength > 0x7fffffff: |
| 74 | self.scrollBarMultiplier = (self.allocatedLength // 0x7fffffff) + 1 |
| 75 | else: |
| 76 | self.scrollBarMultiplier = 1 |
| 77 | self.wheelDelta = 0 |
| 78 | self.updatingScrollBar = False |
| 79 | self.verticalScrollBar().setRange(0, (self.allocatedLength - 1) // self.scrollBarMultiplier) |
| 80 | self.verticalScrollBar().sliderMoved.connect(self.scrollBarMoved) |
| 81 | self.verticalScrollBar().actionTriggered.connect(self.scrollBarAction) |
| 82 |
no test coverage detected