예제 #1
0
 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))
예제 #2
0
 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)
예제 #3
0
    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)
예제 #4
0
 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
예제 #5
0
 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
예제 #6
0
    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)
예제 #7
0
    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)
예제 #8
0
    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_()
예제 #9
0
 def genAction(name, callback):
     a = QtWidgets.QAction(name, self)
     a.triggered.connect(callback)
     self.addAction(a)
     return a
예제 #10
0
 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))
예제 #11
0
    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()