def drawTextMode(self, qp, row=0, howMany=1): # draw background qp.fillRect(0, row * self.fontHeight, self.COLUMNS * self.fontWidth, howMany * self.fontHeight + self.SPACER, self.backgroundBrush) # set text pen&font qp.setFont(self.font) qp.setPen(self.textPen) cemu = ConsoleEmulator(qp, self.ROWS, self.COLUMNS) self.page = self.transformationEngine.decorate() cemu.gotoXY(0, row) for i, c in enumerate( self.getDisplayablePage()[row * self.COLUMNS:(row + howMany) * self.COLUMNS]): x = i + row * self.COLUMNS c = self.transformationEngine.getChar(x) qp.setPen(self.transformationEngine.choosePen(x)) if self.transformationEngine.chooseBrush(x) is not None: qp.setBackgroundMode(1) qp.setBackground(self.transformationEngine.chooseBrush(x)) cemu.write(self.cp437(c)) qp.setBackgroundMode(0)
def drawTextMode(self, qp, row=0, howMany=1): # draw background qp.fillRect(0, row * self.fontHeight, self.COLUMNS * self.fontWidth, howMany * self.fontHeight + self.SPACER, self.backgroundBrush) # set text pen&font qp.setFont(self.font) qp.setPen(self.textPen) cemu = ConsoleEmulator(qp, self.ROWS, self.COLUMNS) self.page = self.transformationEngine.decorate() cemu.gotoXY(0, row) for i, c in enumerate(self.getDisplayablePage()[row * self.COLUMNS:(row + howMany) * self.COLUMNS]): x = i + row * self.COLUMNS c = self.transformationEngine.getChar(x) qp.setPen(self.transformationEngine.choosePen(x)) if self.transformationEngine.chooseBrush(x) is not None: qp.setBackgroundMode(1) qp.setBackground(self.transformationEngine.chooseBrush(x)) cemu.write(self.cp437(c)) qp.setBackgroundMode(0)
def drawTextMode(self, qp, row=0, howMany=1): # draw background qp.fillRect(0, row * self.fontHeight, self.CON_COLUMNS * self.fontWidth, howMany * self.fontHeight + self.SPACER, self.backgroundBrush) # set text pen&font qp.setFont(self.font) qp.setPen(self.textPen) cemu = ConsoleEmulator(qp, self.ROWS, self.CON_COLUMNS) page = self.transformationEngine.decorate() cemu.gotoXY(0, row) for i, c in enumerate( self.getDisplayablePage() [row * self.COLUMNS:(row + howMany) * self.COLUMNS]): # TODO: does not apply all decorators w = i + row * self.COLUMNS if (w + 1) % self.COLUMNS == 0: hex_s = str(hex(c)[2:]).zfill(2) else: hex_s = str(hex(c)[2:]).zfill(2) + ' ' qp.setPen(self.transformationEngine.choosePen(w)) if self.transformationEngine.chooseBrush(w) is not None: qp.setBackgroundMode(1) qp.setBackground(self.transformationEngine.chooseBrush(w)) # write hex representation cemu.write(hex_s, noBackgroudOnSpaces=True) # save hex position x, y = cemu.getXY() # write text cemu.writeAt(self.COLUMNS * 3 + self.gap + (w % self.COLUMNS), y, self.cp437(c)) # go back to hex chars cemu.gotoXY(x, y) if (w + 1) % self.COLUMNS == 0: cemu.writeLn() qp.setBackgroundMode(0)
def drawTextMode(self, qp, row=0, howMany=1): # draw background qp.fillRect(0, row * self.fontHeight, self.CON_COLUMNS * self.fontWidth, howMany * self.fontHeight + self.SPACER, self.backgroundBrush) # set text pen&font qp.setFont(self.font) qp.setPen(self.textPen) cemu = ConsoleEmulator(qp, self.ROWS, self.CON_COLUMNS) page = self.transformationEngine.decorate() cemu.gotoXY(0, row) for i, c in enumerate(self.getDisplayablePage()[row * self.COLUMNS:( row + howMany) * self.COLUMNS]): # TODO: does not apply all decorators w = i + row * self.COLUMNS if (w + 1) % self.COLUMNS == 0: hex_s = str(hex(c)[2:]).zfill(2) else: hex_s = str(hex(c)[2:]).zfill(2) + ' ' qp.setPen(self.transformationEngine.choosePen(w)) if self.transformationEngine.chooseBrush(w) is not None: qp.setBackgroundMode(1) qp.setBackground(self.transformationEngine.chooseBrush(w)) # write hex representation cemu.write(hex_s, noBackgroudOnSpaces=True) # save hex position x, y = cemu.getXY() # write text cemu.writeAt(self.COLUMNS * 3 + self.gap + (w % self.COLUMNS), y, self.cp437(c)) # go back to hex chars cemu.gotoXY(x, y) if (w + 1) % self.COLUMNS == 0: cemu.writeLn() qp.setBackgroundMode(0)
def scroll_v(self, dy): self.qpix.scroll(0, dy * self.fontHeight, self.qpix.rect()) qp = QtGui.QPainter() qp.begin(self.qpix) qp.setFont(self.font) qp.setPen(self.textPen) factor = abs(dy) cemu = ConsoleEmulator(qp, self.ROWS, self.CON_COLUMNS) if dy < 0: cemu.gotoXY(0, self.ROWS - factor) qp.fillRect(0, (self.ROWS - factor) * self.fontHeight, self.fontWidth * self.CON_COLUMNS, factor * self.fontHeight + self.SPACER, self.backgroundBrush) if dy > 0: cemu.gotoXY(0, 0) qp.fillRect(0, 0, self.fontWidth * self.CON_COLUMNS, factor * self.fontHeight, self.backgroundBrush) page = self.transformationEngine.decorate() # how many rows for row in range(factor): # for every column for i in range(self.COLUMNS): if dy < 0: # we write from top-down, so get index of the first row that will be displayed # this is why we have factor - row idx = i + (self.ROWS - (factor - row)) * self.COLUMNS if dy > 0: idx = i + (self.COLUMNS * row) qp.setPen(self.transformationEngine.choosePen(idx)) if self.transformationEngine.chooseBrush(idx) is not None: qp.setBackgroundMode(1) qp.setBackground( self.transformationEngine.chooseBrush(idx)) if len(self.getDisplayablePage()) > idx: c = self.getDisplayablePage()[idx] else: break if i == self.COLUMNS - 1: hex_s = str(hex(c)[2:]).zfill(2) else: hex_s = str(hex(c)[2:]).zfill(2) + ' ' # write hex representation cemu.write(hex_s, noBackgroudOnSpaces=True) # save hex position x, y = cemu.getXY() # write text cemu.writeAt(self.COLUMNS * 3 + self.gap + (i % self.COLUMNS), y, self.cp437(c)) # go back to hex chars cemu.gotoXY(x, y) qp.setBackgroundMode(0) cemu.writeLn() qp.end()
def scroll_v(self, dy): self.qpix.scroll(0, dy * self.fontHeight, self.qpix.rect()) qp = QtGui.QPainter() qp.begin(self.qpix) qp.setFont(self.font) qp.setPen(self.textPen) factor = abs(dy) cemu = ConsoleEmulator(qp, self.ROWS, self.CON_COLUMNS) if dy < 0: cemu.gotoXY(0, self.ROWS - factor) qp.fillRect(0, (self.ROWS - factor) * self.fontHeight, self.fontWidth * self.CON_COLUMNS, factor * self.fontHeight + self.SPACER, self.backgroundBrush) if dy > 0: cemu.gotoXY(0, 0) qp.fillRect(0, 0, self.fontWidth * self.CON_COLUMNS, factor * self.fontHeight, self.backgroundBrush) page = self.transformationEngine.decorate() # how many rows for row in range(factor): # for every column for i in range(self.COLUMNS): if dy < 0: # we write from top-down, so get index of the first row that will be displayed # this is why we have factor - row idx = i + (self.ROWS - (factor - row)) * self.COLUMNS if dy > 0: idx = i + (self.COLUMNS * row) qp.setPen(self.transformationEngine.choosePen(idx)) if self.transformationEngine.chooseBrush(idx) is not None: qp.setBackgroundMode(1) qp.setBackground(self.transformationEngine.chooseBrush(idx)) if len(self.getDisplayablePage()) > idx: c = self.getDisplayablePage()[idx] else: break if i == self.COLUMNS - 1: hex_s = str(hex(c)[2:]).zfill(2) else: hex_s = str(hex(c)[2:]).zfill(2) + ' ' # write hex representation cemu.write(hex_s, noBackgroudOnSpaces=True) # save hex position x, y = cemu.getXY() # write text cemu.writeAt(self.COLUMNS * 3 + self.gap + (i % self.COLUMNS), y, self.cp437(c)) # go back to hex chars cemu.gotoXY(x, y) qp.setBackgroundMode(0) cemu.writeLn() qp.end()