def keyPressEvent(self, event) : if (event.modifiers() & Qt.ControlModifier) : key = event.key() if key == Qt.Key_A: self.selectAll() self.repaint() elif key == Qt.Key_Home: self.scrollTo(0) elif key == Qt.Key_End: self.scrollTo(self.dataSize() - self.bytesPerRow()) elif key == Qt.Key_Down: while True: offset = self.verticalScrollBar().value() * self.bytesPerRow() if (self.origin != 0) : if (offset > 0) : offset += self.origin offset -= self.bytesPerRow() if(offset + 1 < self.dataSize()) : self.scrollTo(offset + 1) #return so we don't pass on the key event return elif key == Qt.Key_Up: while True: offset = self.verticalScrollBar().value() * self.bytesPerRow() if(self.origin != 0): if(offset > 0) : offset += self.origin offset -= self.bytesPerRow() if(offset > 0) : self.scrollTo(offset - 1) #return so we don't pass on the key event return QAbstractScrollArea.keyPressEvent(self,event) return
def setFont(self, f): # recalculate all of our metrics/offsets fm = QFontMetrics(f) self.font_width = fm.width('X') self.font_height = fm.height() self.updateScrollbars() # TODO: assert that we are using a fixed font & find out if we care? QAbstractScrollArea.setFont(self,f) return
def __init__(self, font, parent = None): QAbstractScrollArea.__init__(self, parent) self.data = "" self.row_width = 16 self.word_width = 1 self.address_color = Qt.blue self.show_hex = True self.show_ascii = True self.show_address = True self.origin =0 self.address_offset = 0 self.selection_start = -1 self.selection_end = -1 self.highlighting = self.highlightingNone self.even_word = Qt.blue self.non_printable_text = Qt.red self.unprintable_char = '.' self.show_line1 = True self.show_line2 = True self.show_line3 = False self.show_address_separator = True self.setFont(font) self.setShowAddressSeparator(True) return