def __init__(self, fixtures_folder, parent=None): QWidget.__init__(self, parent) self.current_fixture = None self.fixtures_folder = fixtures_folder self.setWindowTitle("Frangitron DMX program editor") self.text = QPlainTextEdit() font = QFont("Monospace") font.setStyleHint(QFont.TypeWriter) font.setPixelSize(16) self.text.setFont(font) self.text.setStyleSheet( "color: white; background-color: rgb(30, 30, 30)") self.combo_fixture = QComboBox() self.frame_programs = QWidget() self.checkboxes_programs = list() self.layout_programs = QGridLayout(self.frame_programs) self.spinner_offset = QSpinBox() self.spinner_offset.setMinimum(1) self.spinner_offset.setMaximum(512) self.spinner_offset.setValue(1) self.spinner_offset.valueChanged.connect(self.address_changed) self.doc = QPlainTextEdit() self.doc.setReadOnly(True) self.doc.setFont(font) self.status = QLabel() layout = QGridLayout(self) layout.addWidget(self.combo_fixture, 0, 1) layout.addWidget(self.spinner_offset, 0, 2) layout.addWidget(self.frame_programs, 1, 1) layout.addWidget(self.text, 0, 0, 3, 1) layout.addWidget(self.doc, 2, 1, 1, 2) layout.addWidget(self.status, 3, 0, 1, 3) layout.setColumnStretch(0, 60) layout.setColumnStretch(1, 40) self.resize(1280, 800) self.streamer = Streamer(self.fixtures_folder) self.combo_fixture.addItems(sorted(self.streamer.fixtures)) self.combo_fixture.currentIndexChanged.connect(self.fixture_changed) self.timer = QTimer() self.timer.timeout.connect(self.tick) self.timer.start(500.0 / FRAMERATE) self.should_reload = True self.fixture_changed()
def __init__(self, parent=None): super(QConsole, self).__init__(parent) font = QFont("Monospace", 9) font.setStyleHint(QFont.TypeWriter) self.setFont(font) # self.setFontWeight(QFont.Light) # self.setFontPointSize(9) self.setTextColor(QColor("LightGreen")) p = self.palette() p.setColor(QPalette.Base, QColor(0, 0, 0)) self.setPalette(p) self.setText(">\n")
def __init__(self, repo, selected_items, parent=None): super(CommitDialog, self).__init__(parent=parent) self.repo = repo self.dialog_buttons.button(QDialogButtonBox.Ok).setEnabled(False) self.selected_items = selected_items if len(selected_items) == 1 and isinstance(selected_items[0], WorkspaceDirectory): self.root_dir = selected_items[0] else: self.root_dir = None fixed_font = QFont('Courier', self.message_text.font().pointSize()) fixed_font.setStyleHint(QFont.Monospace) self.message_text.setFont(fixed_font) self.text_pos_label.setFont(fixed_font) with busy_cursor(): self.staged_changes_model = StagedChangesModel(repo, self.root_dir, parent=self) self.local_changes_model = LocalChangesModel(repo.workspace, parent=self) self.local_changes_model.file_source = lambda: tuple(deep_item for selected_item in selected_items for deep_item in deep_file_list(selected_item) if exclude_unmodified(deep_item) and exclude_ignored(deep_item)) if self.root_dir: self.staged_changes_button.setChecked(True) self.show_staged_changes() else: self.local_changes_button.setChecked(True) self.show_local_changes() if self.repo.head_ref: (self.last_commit,) = self.repo.log(max_commits=1) else: self.last_commit = None self.action_reuse_last_msg.setEnabled(False) self.action_reuse_log_msg.setEnabled(False) self.amend_checkbox.setEnabled(False) self.staged_changes_button.clicked.connect(self.show_staged_changes) self.local_changes_button.clicked.connect(self.show_local_changes) self.local_changes_model.dataChanged.connect(self.local_change_toggled) self.message_text.cursorPositionChanged.connect(self.text_pos_changed) self.message_text.textChanged.connect(self.message_text_changed) reuse_menu = QMenu() reuse_menu.addAction(self.action_reuse_last_msg) reuse_menu.addAction(self.action_reuse_log_msg) self.reuse_msg_button.setDefaultAction(self.action_reuse_last_msg) self.reuse_msg_button.setMenu(reuse_menu) self.action_reuse_last_msg.triggered.connect(self.reuse_last_message) self.action_reuse_log_msg.triggered.connect(self.select_old_message) self.amend_checkbox.toggled.connect(self.amend_toggled)
def __init__(self, cpu): QDialog.__init__(self) self._cpu = cpu load_ui(self, 'dialog_memory.ui') win_remove_context_help(self) self.update() self.adjustSize() font = QFont('Monospace') font.setStyleHint(QFont.TypeWriter) font.setPointSize(12) self._textMem.setFont(font)
def __init__(self): super(Layer, self).__init__() self.orientation = Quaternion() self.picked = None self.show = QCheckBox() self.show.setChecked(True) self.alpha_slider = QSlider(QtCore.Qt.Orientation.Horizontal) self.alpha_slider.setRange(0, 1024) self.alpha_slider.setValue(1024) self.alpha_number = QDoubleSpinBox() self.alpha_number.setDecimals(3) self.alpha_number.setSingleStep(0.01) self.alpha_number.setRange(0, 1) self.alpha_number.setValue(1) self.alpha_slider.valueChanged.connect(self._alphaSliderChanged) self.alpha_number.valueChanged.connect(self._alphaNumberChanged) self.move = QCheckBox() self.move.setChecked(True) self.quat = QLineEdit() font = QFont('monospace') font.setStyleHint(QFont.TypeWriter) self.quat.setFont(font) default_quat = '+0.000, +1.000, +0.000, +0.000' margins = self.quat.textMargins() self.quat.setFixedWidth( # HACK -------------------------------------------v QFontMetrics(self.quat.font()).width(default_quat + ' ') + margins.left() + margins.right() ) self.quat.setInputMask('#0.000, #0.000, #0.000, #0.000') self.quat.setMaxLength(30) self.quat.setText(default_quat) self.quat.editingFinished.connect(self._orientationChanged) self.nbytes = QLabel() self.nbytes.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.nbytes.setText('0') self.label = QLabel() self.label.setText('<empty>')
class Bar(QToolBar): clicked = Signal(str) def __init__(self, orientation=Qt.Horizontal, parent=None): super().__init__(parent) self.setOrientation(orientation) policy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed, QSizePolicy.ButtonBox) policy.setHeightForWidth(True) policy.setWidthForHeight(True) self.setSizePolicy(policy) self.setFloatable(False) self.setToolTip("""<p><b>Goto Letter</b></p> <p>Left-click a letter to navigate to the first entry starting with that letter.</p> <p>Right-click a letter to navigate to the first entry starting with the most recently left-clicked letter, plus any subsequent right-clicked letters, and this letter.</p> <p>(One left-click or a fifth right-click clears the previous letters.)</p> <p>For example, left-click <i>S</i> to go to the first “s” entry. Then right-click <i>A</i> to go to the first “sa” entry, then right-click <i>T</i> to go to the first “sat” entry.</p>""") self.timer = QTimer(self) self.timer.setSingleShot(True) self.timer.timeout.connect(self.onTimeout) size = self.font().pointSizeF() strategy = QFont.StyleStrategy(QFont.PreferOutline | QFont.PreferAntialias | QFont.PreferQuality) self.mainFont = QFont("courier new") self.mainFont.setFixedPitch(True) self.mainFont.setStyleStrategy(strategy) self.mainFont.setStyleHint(QFont.Monospace) self.mainFont.setPointSizeF(size * 1.5) self.mainFont.setBold(True) self.mainFont.setItalic(False) self.setFont(self.mainFont) self.smallFont = QFont("helvetica") self.smallFont.setStyleStrategy(strategy) self.smallFont.setStyleHint(QFont.Times) self.smallFont.setPointSizeF(size * 1.25) self.smallFont.setBold(False) self.smallFont.setItalic(False) self.letters = string.ascii_uppercase self.word = None def sizeHint(self): return self.minimumSizeHint() def minimumSizeHint(self): count = len(self.letters) widthAll = self.fontMetrics().width(self.letters) * H_GAP_PC widthW = self.fontMetrics().width("WW") heightOne = self.fontMetrics().height() if self.orientation == Qt.Vertical: return QSize(widthW, (heightOne * count) + HANDLE_OFFSET) return QSize(widthAll + HANDLE_OFFSET, heightOne * V_GAP_PC) def paintEvent(self, event): super().paintEvent(event) letterPen = QPen(Qt.darkGreen if self.isEnabled() else Qt.lightGray) wordPen = QPen(Qt.darkCyan if self.isEnabled() else Qt.lightGray) painter = QPainter(self) painter.setRenderHints(QPainter.TextAntialiasing) painter.setPen(letterPen) heightOne = self.fontMetrics().height() widthOne = self.fontMetrics().width("W") if self.orientation == Qt.Vertical: y = HANDLE_OFFSET for c in self.letters: rect = QRectF(X_OFFSET, y, widthOne, heightOne) painter.drawText(rect, Qt.AlignCenter, c) y += heightOne if self.word is not None: painter.setFont(self.smallFont) painter.setPen(wordPen) rect = self.rect().adjusted(0, HANDLE_OFFSET, -widthOne / 3, 0) painter.drawText(rect, Qt.AlignTop | Qt.AlignRight | Qt.TextWordWrap, "\n".join(self.word.lower())) painter.setPen(letterPen) painter.setFont(self.mainFont) else: widthOne *= H_GAP_PC x = HANDLE_OFFSET for c in self.letters: rect = QRectF(x, 0, widthOne, heightOne * V_GAP_PC) painter.drawText(rect, Qt.AlignCenter, c) x += widthOne if self.word is not None: painter.setFont(self.smallFont) painter.setPen(wordPen) rect = self.rect().adjusted(HANDLE_OFFSET, 0, 0, 0) painter.drawText(rect, Qt.AlignBottom | Qt.AlignLeft, self.word.lower()) painter.setPen(letterPen) painter.setFont(self.mainFont) def mousePressEvent(self, event): if self.orientation == Qt.Vertical: if event.y() < HANDLE_OFFSET: event.ignore() return heightOne = self.fontMetrics().height() i = clamp(0, int((event.y() - HANDLE_OFFSET) / heightOne), len(self.letters) - 1) else: if event.x() < HANDLE_OFFSET: event.ignore() return widthOne = self.fontMetrics().width("W") * H_GAP_PC i = clamp(0, int((event.x() - HANDLE_OFFSET) / widthOne), len(self.letters) - 1) event.accept() word = self.letters[i] if event.button() == Qt.LeftButton or self.word is None: self.word = word elif event.button() == Qt.RightButton: if len(self.word) >= 4: self.word = word elif self.word is not None: self.word += word if self.word is not None: self.clicked.emit(self.word.lower()) self.timer.start(10000) self.update() def contextMenuEvent(self, event): if ((self.orientation == Qt.Vertical and event.y() < HANDLE_OFFSET) or (self.orientation == Qt.Horizontal and event.x() < HANDLE_OFFSET)): event.ignore() else: event.accept() def setOrientation(self, orientation): self.orientation = orientation self.update() def heightForWidth(self, width): count = len(self.letters) heightOne = self.fontMetrics().height() widthAll = self.fontMetrics().width(self.letters) * H_GAP_PC if widthAll > width: # Needs to be vertical return heightOne * count return heightOne * V_GAP_PC # Needs to be horizontal def onTimeout(self): self.timer.stop() if self.word is not None: self.word = None self.update()
class StringHexTableModel(QAbstractTableModel): def __init__(self, width=8): super(StringHexTableModel, self).__init__() self.width = width self.byte_data = "" self.start_address = 0 self.set_data("i.MX toolkit \x02\x03 test" * 50, 0xfeedcafe) self.font = QFont("Monospace") self.font.setStyleHint(QFont.TypeWriter) def set_data(self, byte_data, start_address): """ Set model data, re-assign columns/rows, and signal a model reset """ self.byte_data = byte_data self.start_address = start_address self.row_count = max(1, len(byte_data) / self.width) self.reset() def rowCount(self, parent): return self.row_count def columnCount(self, parent): # Hex, ASCII display columns with one spacer column return 2 * self.width + 1 def data(self, index, role): value = None if role == Qt.DisplayRole: row = index.row() col = index.column() try: # Show ASCII value (if not printable, show ".") beside hex representation if col > self.width: true_col = (col - self.width - 1) value = self.byte_data[self.width * row + true_col] if not (0x1F <= ord(value) <= 0x7F): value = "." # Show hex representation elif col < self.width: byte = self.byte_data[self.width * row + col] value = "%02x" % ord(byte) except IndexError: pass elif role == Qt.FontRole: return self.font # All values should be centered. elif role == Qt.TextAlignmentRole: value = Qt.AlignCenter return value def headerData(self, section, orientation, role): """ Show the header for the hex dump view. """ value = None if role == Qt.DisplayRole: # Horizontal = column address within row if orientation == Qt.Horizontal: if section < self.width: value = "%X" % section elif section > self.width: value = "%X" % (section - self.width - 1) # Vertical = row address else: base_address = self.start_address + (section * self.width) upper_word = ((base_address & 0xFFFF0000) >> 16) lower_word = (base_address & 0x0000FFFF) value = "%04x %04x" % (upper_word, lower_word) # Header should be centered. elif role == Qt.TextAlignmentRole: value = Qt.AlignCenter return value
class StringHexTableModel(QAbstractTableModel): def __init__(self, width = 8): super(StringHexTableModel, self).__init__() self.width = width self.byte_data = "" self.start_address = 0 self.set_data("i.MX toolkit \x02\x03 test" * 50, 0xfeedcafe) self.font = QFont("Monospace") self.font.setStyleHint(QFont.TypeWriter) def set_data(self, byte_data, start_address): """ Set model data, re-assign columns/rows, and signal a model reset """ self.byte_data = byte_data self.start_address = start_address self.row_count = max(1, len(byte_data) / self.width) self.reset() def rowCount(self, parent): return self.row_count def columnCount(self, parent): # Hex, ASCII display columns with one spacer column return 2 * self.width + 1 def data(self, index, role): value = None if role == Qt.DisplayRole: row = index.row() col = index.column() try: # Show ASCII value (if not printable, show ".") beside hex representation if col > self.width: true_col = (col - self.width - 1) value = self.byte_data[self.width * row + true_col] if not (0x1F <= ord(value) <= 0x7F): value = "." # Show hex representation elif col < self.width: byte = self.byte_data[self.width * row + col] value = "%02x" % ord(byte) except IndexError: pass elif role == Qt.FontRole: return self.font # All values should be centered. elif role == Qt.TextAlignmentRole: value = Qt.AlignCenter return value def headerData(self, section, orientation, role): """ Show the header for the hex dump view. """ value = None if role == Qt.DisplayRole: # Horizontal = column address within row if orientation == Qt.Horizontal: if section < self.width: value = "%X" % section elif section > self.width: value = "%X" % (section - self.width - 1) # Vertical = row address else: base_address = self.start_address + (section * self.width) upper_word = ((base_address & 0xFFFF0000) >> 16) lower_word = (base_address & 0x0000FFFF) value = "%04x %04x" % (upper_word, lower_word) # Header should be centered. elif role == Qt.TextAlignmentRole: value = Qt.AlignCenter return value
class ScriptSetVal(QMainWindow): def __init__(self, tabID, subWinHandle, parent=None): super(ScriptSetVal, self).__init__(parent) self.tabID = tabID self.subWinHandle = subWinHandle self.tableHandle = subWinHandle.widget().centralWidget() self.initUI() self.initToolBar() self.initDocker() def initUI(self): self.t = QTextEdit() self.initFont() self.setCentralWidget(self.t) self.setGeometry(QRect(200, 200, 410, 610)) self.setAttribute(Qt.WA_DeleteOnClose) self.show() def initToolBar(self): self.scriptbar = QToolBar('plot options') self.addToolBar(Qt.BottomToolBarArea, self.scriptbar) scriptAction = QAction('set script', self) self.scriptbar.addAction(scriptAction) scriptAction.triggered.connect(self.RelectRng) def initFont(self): self.tabStop = 4 self.font = QFont('Courier') self.metrics = QFontMetrics(self.font) self.t.setTabStopWidth(self.tabStop * self.metrics.width(' ')) self.font.setStyleHint(QFont.Monospace) self.font.setFixedPitch(True) self.font.setPointSize(12) self.p = self.t.palette() self.p.setColor(QPalette.Base, QColor(0, 0, 0)) self.p.setColor(QPalette.Text, QColor(255, 255, 255)) self.t.setPalette(self.p) self.t.setFont(self.font) self.highlighter = Highlighter(self.t.document()) def initDocker(self): self.elog = QTextEdit() self.elogDockWidget = QDockWidget(" :: error log ::", self) self.elogDockWidget.setFeatures(QDockWidget.DockWidgetMovable) self.elogDockWidget.setAllowedAreas(Qt.TopDockWidgetArea and Qt.BottomDockWidgetArea) self.addDockWidget(Qt.BottomDockWidgetArea, self.elogDockWidget) self.elogDockWidget.setWidget(self.elog) self.p = self.elog.palette() self.p.setColor(QPalette.Base, QColor(0, 0, 0)) self.p.setColor(QPalette.Text, QColor(255, 0, 0)) self.elog.setPalette(self.p) self.elog.setReadOnly(True) def RelectRng(self): try: self.selectAry = [] if len(self.tableHandle.selectedRanges()) != 0: for i in range(len(self.tableHandle.selectedRanges())): self.leftCol = self.tableHandle.selectedRanges( )[i].leftColumn() self.colCount = self.tableHandle.selectedRanges( )[i].columnCount() for currentCol in range(self.leftCol, self.leftCol + self.colCount): self.selectAry.append(currentCol) self.leftCol = self.tableHandle.selectedRanges()[0].leftColumn( ) self.colCount = self.tableHandle.selectedRanges( )[0].columnCount() self.topRow = self.tableHandle.selectedRanges()[0].topRow() self.rowCount = self.tableHandle.selectedRanges()[0].rowCount() rows = [] cols = [] for i in range(self.topRow, self.topRow + self.rowCount, 1): rows.append(i) for i in range(self.leftCol, self.leftCol + self.colCount, 1): cols.append(i) try: exec(self.t.toPlainText()) except Exception, e: self.elog.moveCursor(QTextCursor.End) self.elog.textCursor().insertHtml( '<span style="color:#FF0000">Error: ' + str(e) + '</span><br>') print str(e) else:
def create_facets_font ( value ): """ Creates a FacetFont object from a string description. """ global font_cache if isinstance( value, QFont ): return FacetsFont( value ) # Replace any list of fonts by a single matching font: value = font_select( value ) # Check to see if the font is already in the cache, and return it if it is: font = font_cache.get( value ) if font is not None: return font point_size = None family = '' style = QFont.StyleNormal weight = QFont.Normal underline = False facename = [] for word in value.split(): lword = word.lower() if font_families.has_key( lword ): f = QFont() f.setStyleHint( font_families[ lword ] ) family = f.defaultFamily() elif font_styles.has_key( lword ): style = font_styles[ lword ] elif font_weights.has_key( lword ): weight = font_weights[ lword ] elif lword == 'underline': underline = True elif lword not in font_noise: if point_size is None: try: point_size = int( lword ) continue except: pass facename.append( word ) if facename: family = ' '.join( facename ) if family: font = FacetsFont( family ) else: font = FacetsFont() font.setStyle( style ) font.setWeight( weight ) font.setUnderline( underline ) if point_size is not None: font.setPointSize( point_size ) font_cache[ value ] = font return font
class ScriptSetVal(QMainWindow): def __init__(self, tabID, subWinHandle, parent=None): super(ScriptSetVal, self).__init__(parent) self.tabID = tabID self.subWinHandle = subWinHandle self.tableHandle = subWinHandle.widget().centralWidget() self.initUI() self.initToolBar() self.initDocker() def initUI(self): self.t = QTextEdit() self.initFont() self.setCentralWidget(self.t) self.setGeometry(QRect(200, 200, 410, 610)) self.setAttribute(Qt.WA_DeleteOnClose) self.show() def initToolBar(self): self.scriptbar = QToolBar('plot options') self.addToolBar( Qt.BottomToolBarArea , self.scriptbar) scriptAction = QAction('set script', self) self.scriptbar.addAction(scriptAction) scriptAction.triggered.connect(self.RelectRng) def initFont(self): self.tabStop = 4 self.font = QFont('Courier') self.metrics = QFontMetrics(self.font) self.t.setTabStopWidth(self.tabStop * self.metrics.width(' ')); self.font.setStyleHint(QFont.Monospace); self.font.setFixedPitch(True); self.font.setPointSize(12) self.p = self.t.palette() self.p.setColor(QPalette.Base, QColor(0, 0, 0)) self.p.setColor(QPalette.Text, QColor(255, 255, 255)) self.t.setPalette(self.p) self.t.setFont(self.font) self.highlighter = Highlighter(self.t.document()) def initDocker(self): self.elog = QTextEdit() self.elogDockWidget = QDockWidget(" :: error log ::", self) self.elogDockWidget.setFeatures(QDockWidget.DockWidgetMovable) self.elogDockWidget.setAllowedAreas(Qt.TopDockWidgetArea and Qt.BottomDockWidgetArea) self.addDockWidget(Qt.BottomDockWidgetArea, self.elogDockWidget) self.elogDockWidget.setWidget(self.elog) self.p = self.elog.palette() self.p.setColor(QPalette.Base, QColor(0, 0, 0)) self.p.setColor(QPalette.Text, QColor(255, 0, 0)) self.elog.setPalette(self.p) self.elog.setReadOnly(True) def RelectRng(self): try: self.selectAry = [] if len(self.tableHandle.selectedRanges()) != 0: for i in range( len(self.tableHandle.selectedRanges())): self.leftCol = self.tableHandle.selectedRanges()[i].leftColumn() self.colCount = self.tableHandle.selectedRanges()[i].columnCount() for currentCol in range( self.leftCol, self.leftCol + self.colCount ): self.selectAry.append( currentCol ) self.leftCol = self.tableHandle.selectedRanges()[0].leftColumn() self.colCount = self.tableHandle.selectedRanges()[0].columnCount() self.topRow = self.tableHandle.selectedRanges()[0].topRow() self.rowCount = self.tableHandle.selectedRanges()[0].rowCount() rows = [] cols = [] for i in range(self.topRow, self.topRow + self.rowCount, 1): rows.append(i) for i in range(self.leftCol, self.leftCol + self.colCount, 1): cols.append(i) try: exec(self.t.toPlainText()) except Exception, e: self.elog.moveCursor(QTextCursor.End) self.elog.textCursor().insertHtml('<span style="color:#FF0000">Error: '+str(e)+'</span><br>') print str(e) else: