Beispiel #1
0
 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)
Beispiel #2
0
 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
Beispiel #3
0
 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)
Beispiel #4
0
 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()
Beispiel #5
0
    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)
Beispiel #6
0
 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()
Beispiel #7
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()
Beispiel #8
0
    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