def __init__(self, parent=None): super().__init__(parent) l = QtWidgets.QVBoxLayout(self) self.tv = QtWidgets.QTableView(self) self.tv.horizontalHeader().setStretchLastSection(True) l.addWidget(self.tv) self.log_model = LogModel() self.tv.setModel(self.log_model) logging.getLogger().addHandler(MyHandler(self.tv, self.log_model))
def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle('About') l = QtWidgets.QVBoxLayout(self) txt = QtWidgets.QTextEdit(self) txt.setReadOnly(True) aboutText = "ppci debugger" txt.append(aboutText) l.addWidget(txt) but = QtWidgets.QPushButton('OK') but.setDefault(True) but.clicked.connect(self.close) l.addWidget(but)
def __init__(self, qdebugger): super().__init__() self.qdebugger = qdebugger # Layout widgets: l = QtWidgets.QVBoxLayout(self) l2 = QtWidgets.QHBoxLayout() l2.addWidget(QtWidgets.QLabel('Raw GDB RSP command:')) self.gdb_command = QtWidgets.QLineEdit() l2.addWidget(self.gdb_command) l.addLayout(l2) # Hook up signals: self.gdb_command.returnPressed.connect(self.send_command)
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
def genAction(name, callback, shortcut=None): a = QtWidgets.QAction(name, self) a.triggered.connect(callback) if shortcut: a.setShortcut(shortcut) self.addAction(a) return a
def __init__(self, debugger): super().__init__() self.logger = logging.getLogger('ide') self.debugger = debugger self.urlEdit = QtWidgets.QLineEdit() self.urlEdit.setText('http://localhost:8079') self.addWidget(self.urlEdit) def genAction(name, callback): a = QtWidgets.QAction(name, self) a.triggered.connect(callback) self.addAction(a) return a self.connectAction = genAction('Connect', self.doConnect) self.disconnectAction = genAction('Disconnect', self.doDisconnect) self.updateButtonStates() self.debugger.connection_event.subscribe(self.updateButtonStates)
def __init__(self, debugger): super().__init__() self.debugger = debugger # Layout widgets: l = QtWidgets.QVBoxLayout(self) l2 = QtWidgets.QHBoxLayout() l2.addWidget(QtWidgets.QLabel('Address')) self.addressLine = QtWidgets.QLineEdit() self.addressLine.setInputMask('Hhhhhhhhhhhhhhhh') l2.addWidget(self.addressLine) upButton = QtWidgets.QPushButton('up') l2.addWidget(upButton) upButton.clicked.connect(self.do_up) downButton = QtWidgets.QPushButton('down') downButton.clicked.connect(self.do_down) l2.addWidget(downButton) l.addLayout(l2) self.hexEdit = HexEdit() self.address = 0 # x40200 l.addWidget(self.hexEdit) self.addressLine.returnPressed.connect(self.refresh)
def emit(self, record): self.log_model.new_log(record) self.tv.scrollToBottom() for i in range(3): self.tv.resizeColumnToContents(i) class LogView(QtWidgets.QWidget): """ Log view component """ def __init__(self, parent=None): super().__init__(parent) l = QtWidgets.QVBoxLayout(self) self.tv = QtWidgets.QTableView(self) self.tv.horizontalHeader().setStretchLastSection(True) l.addWidget(self.tv) self.log_model = LogModel() self.tv.setModel(self.log_model) logging.getLogger().addHandler(MyHandler(self.tv, self.log_model)) if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) lv = LogView() lv.show() lv.resize(600, 200) logging.error('Error!!!') logging.warn('Warn here!') logging.error('formatted output: %s %i', 'wow', 13) app.exec_()
def genAction(name, callback): a = QtWidgets.QAction(name, self) a.triggered.connect(callback) self.addAction(a) return a
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))
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()