def parent(self, index): if not index.isValid(): return QtCore.QModelIndex() pv = index.internalPointer() if pv.parent is None: return QtCore.QModelIndex() return self.createIndex(pv.parent.row, 0, pv.parent)
def call(self, method, *args): self.rpc_id += 1 print(self.rpc_id) request = QtNetwork.QNetworkRequest( QtCore.QUrl('http://localhost:5000/')) reply = self.get(request) reply.setParent(None) return reply
def index(self, row, column, parent=QtCore.QModelIndex()): if parent.isValid(): ppv = parent.internalPointer() pv = ppv.children[row] return self.createIndex(row, column, pv) else: # Root stuff: pv = self.roots[row] return self.createIndex(row, column, pv)
def __init__(self, scrollArea): super().__init__(scrollArea) self.scrollArea = scrollArea self.setFont(QtGui.QFont('Courier', 16)) self.setFocusPolicy(Qt.StrongFocus) self.blinkcursor = False self.cursorX = self.cursorY = 0 self.scrollArea = scrollArea self.data = bytearray() self.originalData = bytearray() self.Data = bytearray() self.Offset = 0 t = QtCore.QTimer(self) t.timeout.connect(self.updateCursor) t.setInterval(500) t.start()
def paintEvent(self, event): # Helper variables: er = event.rect() chw, chh = self.charWidth, self.charHeight painter = QtGui.QPainter(self) # Background: painter.fillRect(er, self.palette().color(QtGui.QPalette.Base)) painter.fillRect( QtCore.QRect(self.xposAddr, er.top(), 8 * chw, er.bottom() + 1), Qt.gray) painter.setPen(Qt.gray) x = self.xposAscii - (GAP / 2) painter.drawLine(x, er.top(), x, er.bottom()) x = self.xposEnd - (GAP / 2) painter.drawLine(x, er.top(), x, er.bottom()) # first and last index firstIndex = max((int(er.top() / chh) - chh) * BYTES_PER_LINE, 0) lastIndex = max((int(er.bottom() / chh) + chh) * BYTES_PER_LINE, 0) yposStart = int(firstIndex / BYTES_PER_LINE) * chh + chh # Draw contents: painter.setPen(Qt.black) ypos = yposStart for index in range(firstIndex, lastIndex, BYTES_PER_LINE): painter.setPen(Qt.black) painter.drawText(self.xposAddr, ypos, '{0:08X}'.format(index + self.Offset)) xpos = self.xposHex xposAscii = self.xposAscii for colIndex in range(BYTES_PER_LINE): if index + colIndex < len(self.Data): b = self.Data[index + colIndex] bo = self.originalData[index + colIndex] pen_color = Qt.black if b == bo else Qt.red painter.setPen(pen_color) painter.drawText(xpos, ypos, '{0:02X}'.format(b)) painter.drawText(xposAscii, ypos, asciiChar(b)) xpos += 3 * chw xposAscii += chw ypos += chh # cursor if self.blinkcursor: painter.fillRect(self.cursorX, self.cursorY + chh - 2, chw, 2, Qt.black)
def __init__(self, scrollArea): super().__init__(scrollArea) self.scrollArea = scrollArea self.setFont(QtGui.QFont('Courier', 12)) self.setFocusPolicy(Qt.StrongFocus) # TODO: only beam cursor in text area.. self.setCursor(Qt.IBeamCursor) self.setMouseTracking(True) h = QtGui.QFontMetrics(self.font()).height() self.errorPixmap = get_icon('error.png').scaled(h, h) self.arrowPixmap = get_icon('arrow.png').scaled(h, h) self.blinkcursor = False self.errorlist = [] self.breakpoints = set() self.possible_breakpoints = set() self.arrow_row = None # Initial values: self.setSource('') self.CursorPosition = 0 self.t = QtCore.QTimer(self) self.t.timeout.connect(self.update_cursor) self.t.setInterval(500) self.t.start()
def __init__(self, debugger, parent=None): super().__init__(parent) self.qdebugger = QDebugger(debugger) self.qdebugger.stopped.connect(self.on_stopped) self.logger = logging.getLogger('dbgui') self.setWindowTitle('PPCI DBGUI') # Create menus: mb = self.menuBar() self.fileMenu = mb.addMenu('File') self.viewMenu = mb.addMenu('View') self.helpMenu = mb.addMenu('Help') # Create mdi area: self.mdiArea = QtWidgets.QMdiArea() self.mdiArea.setViewMode(QtWidgets.QMdiArea.TabbedView) self.mdiArea.setTabsClosable(True) self.mdiArea.setTabsMovable(True) self.setCentralWidget(self.mdiArea) # Create components: def addComponent(name, widget): dw = QtWidgets.QDockWidget(name) dw.setWidget(widget) dw.setObjectName(name) self.addDockWidget(Qt.RightDockWidgetArea, dw) self.viewMenu.addAction(dw.toggleViewAction()) return widget self.buildOutput = addComponent('Build output', BuildOutput()) self.builderrors = addComponent('Build errors', BuildErrors()) self.regview = addComponent('Registers', RegisterView(self.qdebugger)) self.memview = addComponent('Memory', MemoryView(self.qdebugger)) self.disasm = addComponent('Disasm', Disassembly(self.qdebugger)) self.variables = addComponent('Variables', VariablesView(self.qdebugger)) self.locals = addComponent('Locals', LocalsView(self.qdebugger)) self.gdb_console = addComponent('Gdb', GdbConsole(self.qdebugger)) self.ctrlToolbar = DebugToolbar(self.qdebugger) self.addToolBar(self.ctrlToolbar) self.ctrlToolbar.setObjectName('debugToolbar') self.aboutDialog = AboutDialog() # Create actions: def addMenuEntry(name, menu, callback, shortcut=None): a = QtWidgets.QAction(name, self) menu.addAction(a) a.triggered.connect(callback) if shortcut: a.setShortcut(QtGui.QKeySequence(shortcut)) addMenuEntry( "Open", self.fileMenu, self.openFile, shortcut=QtGui.QKeySequence.Open) self.helpAction = QtWidgets.QAction('Help', self) self.helpAction.setShortcut(QtGui.QKeySequence('F1')) self.helpMenu.addAction(self.helpAction) addMenuEntry('About', self.helpMenu, self.aboutDialog.open) addMenuEntry( 'Cascade windows', self.viewMenu, self.mdiArea.cascadeSubWindows) addMenuEntry( 'Tile windows', self.viewMenu, self.mdiArea.tileSubWindows) self.statusBar() # Load settings: self.settings = QtCore.QSettings('windelsoft', 'lcfoside') self.loadSettings()
def paintEvent(self, event): """ Paint the code editor """ # Helper variables: er = event.rect() chw, chh = self.charWidth, self.charHeight painter = QtGui.QPainter(self) # Background: painter.fillRect(er, self.palette().color(QtGui.QPalette.Base)) painter.fillRect( QtCore.QRect(self.xposLNA, er.top(), 4 * chw, er.bottom() + 1), Qt.gray) errorPen = QtGui.QPen(Qt.red, 3) # first and last row: row1 = max(int(er.top() / chh) - 1, 1) row2 = max(int(er.bottom() / chh) + 1, 1) # Draw contents: ypos = row1 * chh - self.charDescent curRow = self.CursorRow ydt = -chh + self.charDescent for row in range(row1, row2 + 1): if curRow == row and self.hasFocus(): painter.fillRect(self.xposTXT, ypos + ydt, er.width(), chh, Qt.yellow) # cursor if self.blinkcursor: cursorX = self.CursorCol * self.charWidth + self.xposTXT - self.charWidth cursorY = ypos + ydt painter.fillRect(cursorX, cursorY, 2, chh, Qt.black) # Draw line number: painter.setPen(Qt.black) painter.drawText(self.xposLNA, ypos, '{0}'.format(row)) xpos = self.xposTXT painter.drawText(xpos, ypos, self.getRow(row)) # Draw breakpoint indicators: if row in self.possible_breakpoints: painter.setBrush(QtGui.QBrush(Qt.gray)) painter.setPen(errorPen) painter.drawEllipse(self.xposERR, ypos + ydt, chh, chh) if row in self.breakpoints: painter.setBrush(QtGui.QBrush(Qt.red)) painter.setPen(errorPen) painter.drawEllipse(self.xposERR, ypos + ydt, chh, chh) # Draw arrow: if self.arrow_row and self.arrow_row == row: painter.drawPixmap(self.xposERR, ypos + ydt, self.arrowPixmap) curErrors = [ e for e in self.errorlist if e.loc and e.loc.row == row ] for e in curErrors: painter.drawPixmap(self.xposERR, ypos + ydt, self.errorPixmap) painter.setPen(errorPen) x = self.xposTXT + (e.loc.col - 1) * chw - 2 wt = e.loc.length * chw + 4 dy = self.charDescent painter.drawLine(x, ypos + dy, x + wt, ypos + dy) # painter.drawRoundedRect(x, ypos + ydt, wt, chh, 7, 7) # print error balloon # painter.drawText(x, ypos + chh, e.msg) #if len(curErrors) > 0: # ypos += chh ypos += chh