Beispiel #1
0
    def __init__(self, parent=None, command="/bin/bash", font_size=14):
        super().__init__(parent)

        self._columns = 80
        self._rows = 24
        self._char_width = [0] * (self._columns + 1)
        self._char_height = [0] * (self._rows + 1)

        self.setFocusPolicy(Qt.StrongFocus)
        self.setAutoFillBackground(False)
        self.setAttribute(Qt.WA_OpaquePaintEvent, True)
        self.setCursor(Qt.IBeamCursor)
        font_name = "Monospace"

        if sys.platform == 'darwin':
            font_name = "Courier"

        font = QFont(font_name)
        font.setStyleHint(QFont.TypeWriter)
        font.setPixelSize(font_size)
        self.setFont(font)
        self._session = None
        self._last_update = 0
        self._screen = []
        self._text = []
        self._cursor_rect = None
        self._cursor_col = 0
        self._cursor_row = 0
        self._dirty = False
        self._blink = False
        self._press_pos = None
        self._selection = None
        self._clipboard = QApplication.clipboard()
        self._pixmap = None
Beispiel #2
0
 def __init__(self, parent):
     QPlainTextEdit.__init__(self, parent)
     # Set font to monospaced (TypeWriter)
     font = QFont('')
     font.setStyleHint(font.TypeWriter, font.PreferDefault)
     font.setPointSize(8)
     self.setFont(font)
Beispiel #3
0
            def cb_read(result):
                self.log_file.release()
                self.log_file = None

                self.label_download.setVisible(False)
                self.progress_download.setVisible(False)

                if result.error != None:
                    self.log('Error: ' + html.escape(str(result.error)),
                             bold=True)
                    return

                try:
                    self.content = result.data.decode('utf-8')
                except UnicodeDecodeError:
                    # FIXME: maybe add a encoding guesser here or try some common encodings if UTF-8 fails
                    self.log('Error: Log file is not UTF-8 encoded', bold=True)
                    return

                self.button_save.setEnabled(True)

                if self.continuous:
                    content = self.content.lstrip()
                else:
                    content = self.content

                self.edit_content.setPlainText('')

                font = QFont('monospace')
                font.setStyleHint(QFont.TypeWriter)

                self.edit_content.setFont(font)
                self.edit_content.setPlainText(content)
Beispiel #4
0
    def initUI(self) -> None:
        quit_action = QAction(self)
        quit_action.setShortcut('Ctrl+Q')
        quit_action.triggered.connect(self.close)  # type: ignore
        self.addAction(quit_action)

        font = QFont()
        font.setFamily('DejavuSansMono')
        font.setStyleHint(QFont.Monospace)

        self.editor.setFont(font)
        self.code.setFont(font)
        self.code.setReadOnly(True)

        self.editor.textChanged.connect(self.ccl_changed)  # type: ignore

        layout = QVBoxLayout(self)
        self.language_box.addItems(ccl.generators.BACKENDS)
        self.language_box.currentIndexChanged.connect(self.language_changed)
        self.language = self.language_box.currentText()
        self.language_changed()

        layout.addWidget(self.language_box)
        layout.addWidget(self.editor)
        layout.addWidget(self.status)
        layout.addWidget(self.code)
        self.setLayout(layout)

        self.showMaximized()
Beispiel #5
0
    def initUI(self):
        """Override."""
        layout = QVBoxLayout()

        name = QLabel("EXtra-foam")
        name_ft = QFont("Helvetica")
        name_ft.setStyleHint(QFont.TypeWriter)
        name_ft.setPointSize(32)
        name_ft.setBold(True)
        name.setFont(name_ft)

        doc_lb = QLabel(
            "<a href = 'https://extra-foam.readthedocs.io/en/stable/'>Documentation</a>"
        )
        doc_ft = QFont("monospace")
        doc_ft.setStyleHint(QFont.TypeWriter)
        doc_ft.setPointSize(14)
        doc_lb.setFont(doc_ft)
        doc_lb.setOpenExternalLinks(True)

        copyright_lb = QLabel(
            "Copyright (C) European X-Ray Free-Electron Laser Facility GmbH. "
            "All rights reserved.")

        layout.addWidget(name)
        layout.addStretch(10)
        layout.addWidget(doc_lb)
        layout.addWidget(copyright_lb)

        self._cw.setLayout(layout)
Beispiel #6
0
    def __init__(self, parent=None, command="/bin/bash", font_size=14):
        super().__init__(parent)

        self._columns = 80
        self._rows = 24
        self._char_width = [0] * (self._columns + 1)
        self._char_height = [0] * (self._rows + 1)

        self.setFocusPolicy(Qt.StrongFocus)
        self.setAutoFillBackground(False)
        self.setAttribute(Qt.WA_OpaquePaintEvent, True)
        self.setCursor(Qt.IBeamCursor)
        font_name = "Monospace"

        if sys.platform == 'darwin':
            font_name = "Courier"

        font = QFont(font_name)
        font.setStyleHint(QFont.TypeWriter)
        font.setPixelSize(font_size)
        self.setFont(font)
        self._session = None
        self._last_update = 0
        self._screen = []
        self._text = []
        self._cursor_rect = None
        self._cursor_col = 0
        self._cursor_row = 0
        self._dirty = False
        self._blink = False
        self._press_pos = None
        self._selection = None
        self._clipboard = QApplication.clipboard()
        self._pixmap = None
Beispiel #7
0
    def def_layout(self):
        left_col = QVBoxLayout()
        left_col.addWidget(self.user_def)
        left_col.addWidget(self.random_set)

        var_time_row = QHBoxLayout()
        var_time_row.addWidget(self.var_time)
        var_time_row.addWidget(self.var_time_edit)
        var_time_row.addWidget(QLabel('Secs'))

        right_col = QVBoxLayout()
        right_col.addWidget(self.std_time)
        right_col.addLayout(var_time_row)
        right_col.addWidget(self.relaxed_time)

        top_row = QLabel('Let\'s Play CountDown!!!')
        top_row.setAlignment(Qt.AlignCenter)
        font = QFont()
        font.setPointSize(12)
        font.setStyleHint(QFont.Helvetica)
        top_row.setFont(font)

        mid_row = QHBoxLayout()
        mid_row.addLayout(left_col)
        mid_row.addLayout(right_col)

        main_layout = QVBoxLayout()
        main_layout.addWidget(top_row)
        main_layout.addLayout(mid_row)
        main_layout.addWidget(self.next_page)
        return main_layout
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.centralwidget = QWidget(self)
        self.setWidget(self.centralwidget)
        self.entity = None
        self.resize(400, 200)

        font = QFont()
        font.setFamily("Consolas")
        font.setStyleHint(QFont.Monospace)
        font.setFixedPitch(True)
        font.setPointSize(10)
        self.verticalLayout = QVBoxLayout(self.centralwidget)

        self.position = QLineEdit(self.centralwidget)
        self.rotation = QLineEdit(self.centralwidget)

        self.button_savetext = QPushButton(self.centralwidget)
        self.button_savetext.setText("Set Data")
        self.button_savetext.setMaximumWidth(400)

        self.verticalLayout.addWidget(QLabel("startPos"))
        self.verticalLayout.addWidget(self.position)
        self.verticalLayout.addWidget(QLabel("startDir"))
        self.verticalLayout.addWidget(self.rotation)
        self.verticalLayout.addWidget(self.button_savetext)
        self.setWindowTitle("Edit startPos/Dir")
            def cb_read(result):
                self.log_file.release()
                self.log_file = None

                self.label_download.setVisible(False)
                self.progress_download.setVisible(False)

                if result.error != None:
                    self.log('Error: ' + html.escape(str(result.error)), bold=True)
                    return

                try:
                    self.content = result.data.decode('utf-8')
                except UnicodeDecodeError:
                    # FIXME: maybe add a encoding guesser here or try some common encodings if UTF-8 fails
                    self.log('Error: Log file is not UTF-8 encoded', bold=True)
                    return

                self.button_save.setEnabled(True)

                if self.continuous:
                    content = self.content.lstrip()
                else:
                    content = self.content

                self.edit_content.setPlainText('')

                font = QFont('monospace')
                font.setStyleHint(QFont.TypeWriter)

                self.edit_content.setFont(font)
                self.edit_content.setPlainText(content)
Beispiel #10
0
class output_box(QTextEdit):
    def __init__(self, device_type):
        QTextEdit.__init__(self)
        self.font = QFont()
        self.font.setFamily('Monospace')
        self.font.setStyleHint(QFont.Monospace)
        self.font.setFixedPitch(True)
        self.font.setPointSize(int(12))

        self.setFont(self.font)
        pal = QPalette()
        bgc = QColor(0, 0, 0)
        pal.setColor(QPalette.Base, bgc)
        textc = QColor(230, 230, 230)
        pal.setColor(QPalette.Text, textc)
        self.setPalette(pal)
        self.device_type = device_type
        self.setAcceptRichText(False)
        self.setContextMenuPolicy(Qt.NoContextMenu)
        #self.setOpenLinks(False)
        self.setReadOnly(True)
        self.setUndoRedoEnabled(False)

    def add_text(self, data):
        self.setUpdatesEnabled(False)
        cursor = self.textCursor()
        cursor.movePosition(cursor.End, cursor.MoveAnchor)
        self.setTextCursor(cursor)
        cursor.insertHtml(data)
        self.ensureCursorVisible()
        self.setUpdatesEnabled(True)
Beispiel #11
0
def setFontMetrics():
    """ Application must be running before you mess
    too much with Fonts in Qt5
    """
    global SEQUENCEFONT
    global SEQUENCEFONTMETRICS
    global SEQUENCEFONTCHARWIDTH
    global SEQUENCEFONTCHARHEIGHT
    global SEQUENCEFONTEXTRAWIDTH
    global SEQUENCETEXTXCENTERINGOFFSET
    global SEQUENCETEXTYCENTERINGOFFSET
    SEQUENCEFONT = QFont("Monaco")
    if hasattr(QFont, 'Monospace'):
        SEQUENCEFONT.setStyleHint(QFont.Monospace)
    SEQUENCEFONT.setFixedPitch(True)
    SEQUENCEFONTH = int(PATH_BASE_WIDTH / 3.)
    SEQUENCEFONT.setPixelSize(SEQUENCEFONTH)
    SEQUENCEFONTMETRICS = QFontMetricsF(SEQUENCEFONT)
    SEQUENCEFONTCHARWIDTH = SEQUENCEFONTMETRICS.width("A")
    SEQUENCEFONTCHARHEIGHT = SEQUENCEFONTMETRICS.height()
    SEQUENCEFONTEXTRAWIDTH = PATH_BASE_WIDTH - SEQUENCEFONTCHARWIDTH
    SEQUENCEFONT.setLetterSpacing(QFont.AbsoluteSpacing,
                                 SEQUENCEFONTEXTRAWIDTH)
    SEQUENCETEXTXCENTERINGOFFSET = SEQUENCEFONTEXTRAWIDTH / 4.
    SEQUENCETEXTYCENTERINGOFFSET = PATH_BASE_WIDTH * 0.6
Beispiel #12
0
    def create_stdout_box(
            self) -> Tuple[QGroupBox, QPlainTextEdit, QSyntaxHighlighter]:
        gbox = QGroupBox('Program output')

        vbox = QVBoxLayout()
        gbox.setLayout(vbox)

        text_area = QPlainTextEdit()
        vbox.addWidget(text_area)
        text_area.setReadOnly(True)
        text_area.setWordWrapMode(QTextOption.NoWrap)

        palette = text_area.palette()  # type: QPalette
        palette.setColor(QPalette.Active, QPalette.Base, QColor('#1E1E1E'))
        palette.setColor(QPalette.Inactive, QPalette.Base, QColor('#1E1E1E'))
        text_area.setPalette(palette)

        font = QFont('Monospace', 9)
        font.setStyleHint(QFont.TypeWriter)
        fmt = QTextCharFormat()
        fmt.setFont(font)
        fmt.setForeground(QColor(212, 212, 212))
        text_area.setCurrentCharFormat(fmt)

        doc = text_area.document()
        highlighter = LogSeverityHighlighter(doc)

        return gbox, text_area, highlighter
Beispiel #13
0
    def setupUi(self):
        self.resize(640, 480)
        self.verticalLayout = QVBoxLayout(self)
        self.textEdit = QPlainTextEdit(self)
        self.closeButton = QPushButton(self)
        self.copyButton = QPushButton(self)

        self.verticalLayout.addWidget(self.textEdit)
        self.horizontalLayout = QHBoxLayout()
        self.horizontalLayout.setSizeConstraint(QLayout.SetDefaultConstraint)
        spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding,
                                 QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.horizontalLayout.addWidget(self.copyButton)
        self.horizontalLayout.addWidget(self.closeButton)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.closeButton.clicked.connect(self.reject)

        font = QFont(CONFIG['text_view_dialog_font'],
                     CONFIG['text_view_dialog_font_size'])
        font.setStyleHint(QFont.Monospace)
        self.textEdit.setFont(font)

        self.closeButton.setText('Close')
        self.copyButton.setText('Copy to clipboard')
        self.textEdit.setPlainText(self.text)
        self.copyButton.clicked.connect(self.copy_text)
Beispiel #14
0
def _get_monospace_font_impl(small=False) -> QFont:
    begun = time.monotonic()
    multiplier = 0.8 if small else 1.0
    min_font_size = min(7, QFont().pointSize())
    preferred = [
        "Consolas",
        "DejaVu Sans Mono",
        "Monospace",
        "Lucida Console",
        "Monaco",
    ]
    for name in preferred:
        font = QFont(name)
        if QFontInfo(font).fixedPitch():
            font.setPointSize(
                round(max(min_font_size,
                          QFont().pointSize() * multiplier)))
            _logger.info(
                "Selected monospace font (%.6f seconds): %r",
                time.monotonic() - begun,
                font.toString(),
            )
            return font

    font = QFont()
    font.setStyleHint(QFont().Monospace)
    font.setFamily("monospace")
    _logger.info(
        "Using fallback monospace font (%.6f seconds): %r",
        time.monotonic() - begun,
        font.toString(),
    )
    return font
Beispiel #15
0
	def __init__(self):
		self.base_color = QColor(40, 41, 35)
		self.lines_numbers_border = 10
		self.last_save = time.time() - 1

		QPlainTextEdit.__init__(self)
		pallete = self.palette()
		pallete.setColor(QPalette.Base, self.base_color)
		pallete.setColor(QPalette.Text, QColor(255, 255, 255))
		self.setPalette(pallete)
		self.highlighter = PythonHighlighter(self.document())
		self.rewrite = None
		self.edited = None

		self.lineNumberArea = LineNumberArea(self)

		font = QFont()
		font.setFamily("Monospace")
		font.setPointSize(10)
		font.setStyleHint(QFont.Monospace)
		self.setFont(font)

		metrics = QFontMetrics(font)
		self.setTabStopWidth(metrics.width("    "))

		self.blockCountChanged.connect(self.updateLineNumberAreaWidth)
		self.updateRequest.connect(self.updateLineNumberArea)
		#self.cursorPositionChanged.connect(self.highlightCurrentLine)

		self.updateLineNumberAreaWidth()
Beispiel #16
0
    def __init__(self, parent=None):
        super(CodeEditor, self).__init__(parent)
        self.numArea = LineNumArea(self)

        # Binding signals to slots
        self.blockCountChanged.connect(self.updateNumWidth)
        self.updateRequest.connect(self.updateNum)
        self.cursorPositionChanged.connect(self.highlightLine)
        self.textChanged.connect(self.highlightCode)

        # editor config
        font = QFont()
        font.setFamily("Courier")
        font.setStyleHint(QFont.Monospace)
        font.setFixedPitch(True)
        font.setPointSize(12)
        self.setFont(font)
        metrics = QFontMetrics(font)
        self.setTabStopWidth(4 * metrics.width('a'))  # tab width

        # highlighter
        self.highlighter = Highlighter(self.document())

        # init
        self.updateNumWidth(0)
        self.highlightLine()
Beispiel #17
0
    def __init__(self, argv):
        super(MWin, self).__init__()
        font = QFont()

        font.setFamily("Courier")
        font.setStyleHint(QFont.Monospace)
        font.setFixedPitch(True)
        font.setPointSize(16)

        txt = QPlainTextEdit()
        txt.setFont(font)
        self.setCentralWidget(txt)
        #txt.setPlainText("hello central")
        self.txt = txt

        self.createActions()
        self.createMenus()

        self.statusBar = QStatusBar()
        self.setStatusBar(self.statusBar)

        self.current_setup = None
        self.current_fcs_data = None

        self.added = False

        if len(argv) > 1:
            self.open_bdata(argv[1])
Beispiel #18
0
def monospace_font() -> QFont:
    """
    Returns a monospace font used in the code editor widgets.
    :return: QFont instance having a monospace font.
    """
    font = QFont("monospace")
    font.setStyleHint(QFont.Monospace)
    return font
    def __init__(self, *args, **kwargs):
        if "windowtype" in kwargs:
            self.windowname = kwargs["windowtype"]
            del kwargs["windowtype"]
        else:
            self.windowname = "XML Object"

        super().__init__(*args, **kwargs)

        self.resize(900, 500)
        self.setMinimumSize(QSize(300, 300))

        self.centralwidget = QWidget(self)
        self.setWidget(self.centralwidget)
        self.entity = None

        font = QFont()
        font.setFamily("Consolas")
        font.setStyleHint(QFont.Monospace)
        font.setFixedPitch(True)
        font.setPointSize(10)


        self.dummywidget = QWidget(self)
        self.dummywidget.setMaximumSize(0,0)

        self.verticalLayout = QVBoxLayout(self.centralwidget)
        self.verticalLayout.addWidget(self.dummywidget)


        self.goto_id_action = ActionWithOwner("Go To ID", self, action_owner=self)

        self.addAction(self.goto_id_action)

        self.goto_shortcut = QKeySequence(Qt.CTRL+Qt.Key_G)


        self.goto_id_action.setShortcut(self.goto_shortcut)
        #self.goto_id_action.setShortcutContext(Qt.WidgetShortcut)
        self.goto_id_action.setAutoRepeat(False)

        self.goto_id_action.triggered_owner.connect(self.open_new_window)

        self.textbox_xml = XMLTextEdit(self.centralwidget)
        self.button_xml_savetext = QPushButton(self.centralwidget)
        self.button_xml_savetext.setText("Save XML")
        self.button_xml_savetext.setMaximumWidth(400)
        self.textbox_xml.setLineWrapMode(QTextEdit.NoWrap)
        self.textbox_xml.setContextMenuPolicy(Qt.CustomContextMenu)
        self.textbox_xml.customContextMenuRequested.connect(self.my_context_menu)

        metrics = QFontMetrics(font)
        self.textbox_xml.setTabStopWidth(4 * metrics.width(' '))
        self.textbox_xml.setFont(font)

        self.verticalLayout.addWidget(self.textbox_xml)
        self.verticalLayout.addWidget(self.button_xml_savetext)
        self.setWindowTitle(self.windowname)
Beispiel #20
0
 def data(self, index, role):
     if role == Qt.FontRole:
         global _fixed_font
         if not _fixed_font:
             _fixed_font = QFont("Monospace")
             _fixed_font.setStyleHint(QFont.TypeWriter)
         return _fixed_font
     else:
         return GenericTableModel.data(self, index, role)
Beispiel #21
0
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setWindowTitle('Prepare Training')
        self.horizontal_layout = QtWidgets.QHBoxLayout(self)
        self.horizontal_layout.setContentsMargins(10, 10, 10, 10)
        self.horizontal_layout.setSpacing(10)

        vertical_layout = QtWidgets.QVBoxLayout()
        vertical_layout.setContentsMargins(10, 10, 10, 10)
        vertical_layout.setSpacing(10)
        label = QtWidgets.QLabel(main.load_files_window.summary_string)
        font = QFont()
        font.setStyleHint(QFont().Monospace)
        font.setFamily('monospace')
        label.setFont(font)

        grid_layout = QtWidgets.QGridLayout()
        self.horizontal_layout.addWidget(label)
        label_model_name = QtWidgets.QLabel('Model name:')
        self.line_edit_model_name = QtWidgets.QLineEdit('Peter')
        label_epochs = QtWidgets.QLabel('Epochs:')
        self.spinbox_epochs = QtWidgets.QSpinBox()
        self.spinbox_epochs.setMaximum(999999999)
        self.spinbox_epochs.setValue(20)
        label_batch_size = QtWidgets.QLabel('Batch size:')
        self.spinbox_batch_size = QtWidgets.QSpinBox()
        self.spinbox_batch_size.setMaximum(99999)
        self.spinbox_batch_size.setValue(32)
        label_validation_split = QtWidgets.QLabel('Validation split:')
        self.spinbox_validation_split = QtWidgets.QDoubleSpinBox()
        self.spinbox_validation_split.setMaximum(1)
        self.spinbox_validation_split.setSingleStep(0.1)
        self.spinbox_validation_split.setValue(0.2)
        label_early_stop_patience = QtWidgets.QLabel('Early stop patience:')
        self.spinbox_early_stop_patience = QtWidgets.QSpinBox()
        self.spinbox_early_stop_patience.setMaximum(100)
        self.spinbox_early_stop_patience.setValue(10)
        self.cancel_flag = False
        self.compose_window = None

        push_button_start_training = QtWidgets.QPushButton()
        push_button_start_training.setText('Start Training')
        push_button_start_training.clicked.connect(self.start_training)
        grid_layout.addWidget(label_model_name, 0, 0)
        grid_layout.addWidget(self.line_edit_model_name, 0, 1)
        grid_layout.addWidget(label_epochs, 1, 0)
        grid_layout.addWidget(self.spinbox_epochs, 1, 1)
        grid_layout.addWidget(label_batch_size, 2, 0)
        grid_layout.addWidget(self.spinbox_batch_size, 2, 1)
        grid_layout.addWidget(label_validation_split, 3, 0)
        grid_layout.addWidget(self.spinbox_validation_split, 3, 1)
        grid_layout.addWidget(label_early_stop_patience, 4, 0)
        grid_layout.addWidget(self.spinbox_early_stop_patience, 4, 1)

        grid_layout.addWidget(push_button_start_training, 5, 1)

        self.horizontal_layout.addLayout(grid_layout)
Beispiel #22
0
 def createStatus(self):
     self.status = QTextEdit(self)
     self.status.setReadOnly(True)
     self.status.move(5, 27)
     self.status.resize(self.width()-10, self.height()-32)
     font = QFont()
     font.setStyleHint(QFont().Monospace)
     font.setFamily("monospace")
     self.status.setFont(font)
Beispiel #23
0
 def __init__(self, parent):
     self.parent = parent
     QTextEdit.__init__(self)
     font = QFont("courier new", 8)
     font.setStyleHint(QFont.TypeWriter)
     self.document().setDefaultFont(font)
     self.displayPrompt()
     self.initStyle()
     self.addhistory()
Beispiel #24
0
 def hex_representation(self, data: HttpMessage, context, parent_widget):
     body = QPlainTextEdit()
     font = QFont("Courier")
     font.setStyleHint(QFont.Monospace)
     body.setFont(font)
     body.setPlainText(hexdump(data.body, result="return"))
     body.setLineWrapMode(QPlainTextEdit.NoWrap)
     body.setReadOnly(True)
     return body
Beispiel #25
0
    def _update_(self):
        font = QFont()
        font.setFamily('Courier')
        font.setFixedPitch(True)
        font.setStyleHint(QFont.Monospace)
        font.setPointSize(self._font_size)

        self.setFont(font)
        self.setTabStopWidth(self._tab_stop_width *
                             self.fontMetrics().width(' '))
Beispiel #26
0
def getMonospaceFont() -> QFont:
    font = QFont("monospace")
    if isFixedPitch(font): return font
    font.setStyleHint(QFont.Monospace)
    if isFixedPitch(font): return font
    font.setStyleHint(QFont.TypeWriter)
    if isFixedPitch(font): return font
    font.setFamily("courier")
    if isFixedPitch(font): return font
    return font
Beispiel #27
0
 def __build_text_browser():
     """Build a text browser."""
     edit = QTextBrowser()
     edit.setReadOnly(True)
     edit.setOpenExternalLinks(True)
     font = QFont('Courier')
     font.setStyleHint(QFont.Monospace)
     font.setPointSize(11)
     font.setFixedPitch(True)
     edit.setFont(font)
     return edit
Beispiel #28
0
def get_optimal_font(family_font: str, w, h, text: str) -> QFont:
    font = QFont(family_font)
    font.setStyleHint(QFont.Courier, QFont.PreferAntialias)
    metrics = QFontMetrics(font)

    # SOURCE: https://github.com/gil9red/SimplePyScripts/blob/add91e36e1ee59b3956b9fafdcffc9f4ff10ed3d/qt__pyqt__pyside__pyqode/pyqt__QPainter__draw_table.py#L98
    factor = w / metrics.boundingRect(0, 0, w, h, Qt.AlignCenter, text).width()
    if factor < 1 or factor > 1.25:
        font.setPointSizeF(font.pointSizeF() * factor)

    return font
 def __init__(self, source, parent=None):
     super(CompiledView, self).__init__(parent)
     self.setWindowTitle("Compiled view")
     self.lay = QVBoxLayout()
     self.code_area = QTextEdit()
     font = QFont("Monospace")
     font.setStyleHint(QFont.TypeWriter)
     self.code_area.setFont(font)
     self.code_area.setText(source)
     self.lay.addWidget(self.code_area)
     self.setLayout(self.lay)
     self.setMinimumWidth(600)
Beispiel #30
0
 def letterSymbol(self, letter):
     sym = QPainterPath()
     font = QFont()
     font.setStyleHint(QFont.SansSerif, QFont.PreferAntialias)
     font.setPointSize(12)
     sym.addText(0, 0, font, letter)
     # Scale symbol to unit square
     box = sym.boundingRect()
     scale = 1. / max(box.width(), box.height())
     tr = QTransform().scale(scale, scale)
     # Center symbol on (0, 0)
     tr.translate(-box.x() - box.width() / 2., -box.y() - box.height() / 2.)
     return tr.map(sym)
Beispiel #31
0
def get_monospace_font():
    preferred = ['Consolas', 'DejaVu Sans Mono', 'Monospace', 'Lucida Console', 'Monaco']
    for name in preferred:
        font = QFont(name)
        if QFontInfo(font).fixedPitch():
            logger.debug('Preferred monospace font: %r', font.toString())
            return font

    font = QFont()
    font.setStyleHint(QFont().Monospace)
    font.setFamily('monospace')
    logger.debug('Using fallback monospace font: %r', font.toString())
    return font
Beispiel #32
0
def get_monospace_font():
    preferred = ['Consolas', 'DejaVu Sans Mono', 'Monospace', 'Lucida Console', 'Monaco']
    for name in preferred:
        font = QFont(name)
        if QFontInfo(font).fixedPitch():
            logger.debug('Preferred monospace font: %r', font.toString())
            return font

    font = QFont()
    font.setStyleHint(QFont().Monospace)
    font.setFamily('monospace')
    logger.debug('Using fallback monospace font: %r', font.toString())
    return font
Beispiel #33
0
    def __init__(self):
        QMainWindow.__init__(self)
        Ui_MainWindow.setupUi(self, self)

        self.editFile = File(self, None)
        self.editFile.updated.connect(self.editFileUpdated)

        # monospace font
        font = QFont('')
        font.setStyleHint(QFont.TypeWriter)
        font.setKerning(True)

        self.inputBox.setFont(font)
        self.resultDock.setTitleBarWidget(QWidget())

        self.translator = Translator()
    def __init__(self, display_name, absolute_name, tab, deletable=True):
        self.display_name   = display_name # is unique
        self.absolute_name  = absolute_name # is also unique
        self.tab            = tab
        self.deletable      = deletable
        self.index          = -1
        self.modified       = False
        self.content        = None
        self.edit           = QPlainTextEdit()

        font = QFont('monospace')
        font.setStyleHint(QFont.TypeWriter)

        self.edit.setWordWrapMode(QTextOption.NoWrap)
        self.edit.setFont(font)
        self.edit.textChanged.connect(self.check_content)
Beispiel #35
0
    def __init__(self, *args, **kwargs):
        super(ObjectInspector, self).__init__(*args, **kwargs)

        self._selected_widget = None
        self._ui = Ui_ObjectInspector()
        self._ui.setupUi(self)

        # Make everything monospace.
        font = QFont('Monospace')
        font.setStyleHint(QFont.TypeWriter)
        self._ui.teInspectionResults.setFont(font)

        # Register signals.
        self._update_key = QShortcut(QKeySequence(Qt.Key_F7), self)
        self._ui.btnSelectParent.released.connect(self.select_parent)
        self._update_key.activated.connect(self.update_inspection)
Beispiel #36
0
    def set_font_family(self, name, value):
        """Set the given QWebSettings/QWebEngineSettings font family.

        With None (the default), QFont is used to get the default font for the
        family.

        Return:
            True if there was a change, False otherwise.
        """
        assert value is not configutils.UNSET
        family = self._FONT_FAMILIES[name]
        if value is None:
            font = QFont()
            font.setStyleHint(self._FONT_TO_QFONT[family])
            value = font.defaultFamily()

        old_value = self._settings.fontFamily(family)
        self._settings.setFontFamily(family, value)

        return value != old_value
Beispiel #37
0
 def readSettings(self):
     font = textformats.formatData('editor').font
     self.diff.setFont(font)
     diffFont = QFont("Monospace")
     diffFont.setStyleHint(QFont.TypeWriter)
     self.uni_diff.setFont(diffFont)
Beispiel #38
0
def chooseMonospaceFont():
	font = QFont('monospace')
	font.setStyleHint(QFont.TypeWriter)
	return font
Beispiel #39
0
 def setup_fonts(self):
     font = QFont("mono")
     font.setStyleHint(QFont.Monospace)
     font.setPixelSize(12)
     self.setFont(font)
Beispiel #40
0
    def initUI(self):
        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget)

        self.receivedTextEdit = QTextEdit()
        self.receivedTextEdit.setAcceptRichText(False)
        monospaceFont = QFont("Monospace")
        monospaceFont.setStyleHint(QFont.Monospace)
        self.receivedTextEdit.setFont(monospaceFont)
        
        playExerciseButton = QPushButton("Play exercise text")
        playExerciseButton.clicked.connect(self.playExercise)
        
        stopButton = QPushButton("Stop playing")
        stopButton.clicked.connect(self.stopPlaying)
        
        validateButton = QPushButton("Check input / Generate next exercise")
        validateButton.clicked.connect(self.checkInput)
        
        self.wpmLineEdit = QLineEdit("20")
        wpmLabel = QLabel("WPM")
        
        self.ewpmLineEdit = QLineEdit("15")
        ewpmLabel = QLabel("effective WPM")
        
        self.freqLineEdit = QLineEdit("800")
        freqLabel = QLabel("Frequency (Hz)")
        
        self.durationLineEdit = QLineEdit("1")
        durationLabel = QLabel("Duration (min)")
        
        lessonBox = QHBoxLayout()
        lessonBox.setAlignment(Qt.AlignLeft)
        
        lessonCombo = QComboBox()
        lessonCombo.setMaximumWidth(75)
        lessonCombo.addItem("1 - K M")
        for lesson in range(2, len(KOCH_LETTERS)):
            lessonCombo.addItem(str(lesson) + " - " + KOCH_LETTERS[lesson])
        lessonCombo.setCurrentIndex(self.lesson-1)
        lessonCombo.currentIndexChanged.connect(self.newLessonSelected)
        
        lessonIdLabel = QLabel("Lesson:")
        lessonIdLabel.setMaximumWidth(50)
        
        self.lessonLabel = QLabel(' '.join(KOCH_LETTERS[:self.lesson+1]))
        lessonBox.addWidget(lessonIdLabel)
        lessonBox.addWidget(lessonCombo)
        lessonBox.addWidget(self.lessonLabel)
        
        grid = QGridLayout()
        grid.setSpacing(10)
        grid.addWidget(self.receivedTextEdit, 1, 1, 7, 1)
        grid.addWidget(playExerciseButton, 1, 2, 1, 2)
        grid.addWidget(stopButton, 2, 2, 1, 2)
        grid.addWidget(validateButton, 3, 2, 1, 2)
        grid.addWidget(self.wpmLineEdit, 4, 2)
        grid.addWidget(wpmLabel, 4, 3)
        grid.addWidget(self.ewpmLineEdit, 5, 2)
        grid.addWidget(ewpmLabel, 5, 3)
        grid.addWidget(self.freqLineEdit, 6, 2)
        grid.addWidget(freqLabel, 6, 3)
        grid.addWidget(self.durationLineEdit, 7, 2)
        grid.addWidget(durationLabel, 7, 3)
        grid.addLayout(lessonBox, 8, 1, 1, 3)
        
        self.centralWidget.setLayout(grid)
        
        self.setWindowTitle('PyMorsetrainer')
        self.show()
Beispiel #41
0
class tab_terminal(QWidget,tab_base):

	def __init__(self):
		QWidget.__init__(self)
		self.tab=QTabWidget()
		self.vbox=QHBoxLayout()
		self.vbox.addWidget(self.tab)
		self.usage=cpu_usage()
		self.vbox.addWidget(self.usage)
		self.setLayout(self.vbox)

	def dataReady(self,i):
		cursor = self.terminals[i].textCursor()
		cursor.movePosition(cursor.End)
		data=str(self.process[i].readAll())
		data=data[2:-1]
		cursor.insertHtml(data)
		self.terminals[i].ensureCursorVisible()

	def run(self,path,command):
		for i in range(0,self.cpus):
	
			if self.process[i].state()==QProcess.NotRunning:
				cursor = self.terminals[i].textCursor()
				cursor.insertHtml("Running:"+command+"<br>")
				self.process[i].setWorkingDirectory(path)
				self.process[i].start(command)
				return

		print("I could not find a free cpu to run the command on")

	def init(self):
		self.cpus=multiprocessing.cpu_count()
		
		self.tab.setTabsClosable(True)
		self.tab.setMovable(True)
		self.tab.setTabBar(QHTabBar())
		self.tab.setTabPosition(QTabWidget.West)
		
		self.font = QFont()
		self.font.setFamily('Monospace')
		self.font.setStyleHint(QFont.Monospace)
		self.font.setFixedPitch(True)
		self.font.setPointSize(int(12))

		self.terminals=[]
		self.process=[]
		for i in range(0,self.cpus):
			term=QTextEdit()
			term.setFont(self.font)
			
			pal = QPalette()
			bgc = QColor(0, 0, 0)
			pal.setColor(QPalette.Base, bgc)
			textc = QColor(230, 230, 230)
			pal.setColor(QPalette.Text, textc)
			term.setPalette(pal)

			proc=QProcess(self)
			proc.readyRead.connect(functools.partial(self.dataReady,i))
			self.process.append(proc)
			self.terminals.append(term)
			self.tab.addTab(term,"cpu "+str(i))




	def help(self):
		my_help_class.help_set_help(["command.png","<big><b>The terminal window</b></big>\nThe model will run in this window.  You can also use it to enter bash commands."])
Beispiel #42
0
    def initUI(self):
        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget)

        self.receivedTextEdit = QTextEdit()
        self.receivedTextEdit.setAcceptRichText(False)
        monospaceFont = QFont("Monospace")
        monospaceFont.setStyleHint(QFont.Monospace)
        self.receivedTextEdit.setFont(monospaceFont)
        
        playExerciseButton = QPushButton("Play exercise text")
        playExerciseButton.clicked.connect(self.playExercise)
        
        stopButton = QPushButton("Stop playing")
        stopButton.clicked.connect(self.stopPlaying)
        
        validateButton = QPushButton("Check input / Generate next exercise")
        validateButton.clicked.connect(self.checkInput)
        
        self.wpmLineEdit = QLineEdit(self.settings.value("wpm"))
        self.wpmLineEdit.textChanged.connect(functools.partial(self.saveChangedText, self.wpmLineEdit, "wpm"))
        wpmLabel = QLabel("WPM")
        
        self.ewpmLineEdit = QLineEdit(self.settings.value("effectiveWpm"))
        self.ewpmLineEdit.textChanged.connect(functools.partial(self.saveChangedText, self.ewpmLineEdit, "effectiveWpm"))
        ewpmLabel = QLabel("effective WPM")
        
        self.freqLineEdit = QLineEdit(self.settings.value("frequency"))
        self.freqLineEdit.textChanged.connect(functools.partial(self.saveChangedText, self.freqLineEdit, "frequency"))
        freqLabel = QLabel("Frequency (Hz)")
        
        self.durationLineEdit = QLineEdit(self.settings.value("duration"))
        self.durationLineEdit.textChanged.connect(functools.partial(self.saveChangedText, self.durationLineEdit, "duration"))
        durationLabel = QLabel("Duration (min)")
        
        self.lessonGrid = QGridLayout()
        
        lessonCombo = QComboBox()
        lessonCombo.setStyleSheet("combobox-popup: 0;")
        lessonCombo.addItem("1 - K M")
        for lesson in range(2, len(KOCH_LETTERS)):
            lessonCombo.addItem(str(lesson) + " - " + KOCH_LETTERS[lesson])
        lessonCombo.setCurrentIndex(int(self.settings.value("currentLesson"))-1)
        lessonCombo.currentIndexChanged.connect(self.newLessonSelected)
        
        lessonIdLabel = QLabel("Lesson:")
        
        lessonBox = QHBoxLayout()
        lessonBox.addWidget(lessonIdLabel)
        lessonBox.addWidget(lessonCombo)
        lessonBox.addStretch(-1)

        self.createLessonLetterButtons(self.lessonGrid)
        
        mainLayout = QVBoxLayout()

        inputAndParameters = QHBoxLayout()
        parameterField = QVBoxLayout()
        inputAndParameters.addWidget(self.receivedTextEdit, stretch=1)
        self.receivedTextEdit.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.MinimumExpanding))
        inputAndParameters.addLayout(parameterField, stretch=0)

        parameterField.addWidget(playExerciseButton)
        parameterField.addWidget(stopButton)
        parameterField.addWidget(validateButton)

        parameterGrid = QGridLayout()
        parameterGrid.addWidget(self.wpmLineEdit, 0, 0)
        parameterGrid.addWidget(wpmLabel, 0, 1)
        parameterGrid.addWidget(self.ewpmLineEdit, 1, 0)
        parameterGrid.addWidget(ewpmLabel, 1, 1)
        parameterGrid.addWidget(self.freqLineEdit, 2, 0)
        parameterGrid.addWidget(freqLabel, 2, 1)
        parameterGrid.addWidget(self.durationLineEdit, 3, 0)
        parameterGrid.addWidget(durationLabel, 3, 1)
        parameterField.addLayout(parameterGrid)
        parameterField.insertSpacing(-1, 15)
        parameterField.addLayout(lessonBox)
        parameterField.insertStretch(-1)

        mainLayout.addLayout(inputAndParameters)
        mainLayout.addLayout(self.lessonGrid)
        
        self.centralWidget.setLayout(mainLayout)
        
        self.setWindowTitle('PyMorsetrainer')
        self.show()
Beispiel #43
0
 def set_default(self, settings=None):
     font = QFont()
     font.setStyleHint(self._qfont)
     value = font.defaultFamily()
     self._set(value, settings=settings)
Beispiel #44
0
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Left Browser tabs
        self.ui.tabWidgetBrowser.removeTab(1)
        self.ui.tabWidgetBrowser.removeTab(1)
        self.ui.tabWidgetBrowser.setTabsClosable(True)
        self.ui.tabWidgetBrowser.tabCloseRequested.connect(self.closeBrowserTab)
        self.ui.tabWidgetBrowser.tabBarDoubleClicked.connect(lambda: self.maximizeTabs(self.ui.tabWidgetBrowser))

        # Left tree views
        self.fileTreeModel = QFileSystemModel(self)
        self.fileTreeModel.setRootPath(QDir.currentPath() + QDir.separator() + 'test')
        self.ui.treeViewFile.setModel(self.fileTreeModel)
        self.ui.treeViewFile.setRootIndex(self.fileTreeModel.index(QDir.currentPath() + QDir.separator() + 'test'))
        self.ui.treeViewFile.hideColumn(1)
        self.ui.treeViewFile.hideColumn(2)
        self.ui.treeViewFile.hideColumn(3)
        self.ui.treeViewFile.doubleClicked.connect(self.openFileFromTree)

        self.ui.treeViewFile.setAnimated(True)
        self.ui.treeViewSyntax.setAnimated(True)
        self.ui.treeViewToken.setAnimated(True)

        self.ui.treeViewFile.setHeaderHidden(True)
        self.ui.treeViewSyntax.setHeaderHidden(True)
        self.ui.treeViewToken.setHeaderHidden(True)

        # Editor tabs
        self.currentEditor = self.ui.codeEditor
        self.currentEditor.file = None
        self.currentEditorTab = self.ui.tabEditor
        self.openedEditors = [self.currentEditor]
        self.openedEditorTabs = [self.currentEditorTab]
        self.currentEditor.setFocus()  # set focus
        self.ui.tabWidgetEditor.tabCloseRequested.connect(self.closeEditorTab)
        self.ui.tabWidgetEditor.tabBarClicked.connect(self.switchEditorTab)
        self.ui.tabWidgetEditor.tabBarDoubleClicked.connect(lambda: self.maximizeTabs(self.ui.tabWidgetEditor))

        # Bottom console
        font = QFont()
        font.setFamily("Courier")
        font.setStyleHint(QFont.Monospace)
        font.setFixedPitch(True)
        font.setPointSize(10)
        self.ui.console.setFont(font)
        self.ui.console.setReadOnly(True)
        self.waitInputCond = QWaitCondition()
        self.oldConsoleText = None

        # Bottom output tabs
        self.ui.tabWidgetOutput.hide()
        self.ui.tabWidgetOutput.tabCloseRequested.connect(self.closeOutputTab)
        self.ui.tabWidgetOutput.tabBarDoubleClicked.connect(lambda: self.maximizeTabs(self.ui.tabWidgetOutput))
        self.ui.tabWidgetOutput.setTabText(0, 'Console')

        # Previous opened tabs,for maximizing
        self.preOpenedTabs = None

        # Initial size of inner splitter
        self.ui.splitterInner.setSizes([180, 459 * 2 - 180])

        # Menu "File"
        self.ui.actionOpen.triggered.connect(self.openFile)
        self.ui.actionNew.triggered.connect(self.newFile)
        self.ui.actionSave.triggered.connect(self.saveFile)
        self.ui.actionSaveAs.triggered.connect(self.saveFileAs)
        self.ui.actionQuit.triggered.connect(self.close)

        # Menu "Edit"
        self.connectMenuEditSlots()

        # Menu "View"
        self.ui.menuView.triggered.connect(self.manageMenuView)
        self.ui.actionAboutQt.triggered.connect(QApplication.aboutQt)

        # Menu "Run"
        self.ui.actionRun.triggered.connect(self.run)
        self.ui.actionBuild.triggered.connect(self.runCompile)
        self.ui.actionShowStable.triggered.connect(self.runSemantic)
        self.ui.actionRunParser.triggered.connect(self.runParser)
        self.ui.actionRunLexer.triggered.connect(self.runLexer)
Beispiel #45
0
    def __init__(self):
        """
        Create the main window.
        :return:
        """
        super(RF_Qt, self).__init__()

        # Define variables
        self.fnt_styles = ["Regular", "Italic", "Bold", "Bold Italic"]
        self.fnt_sty_combo_list = []
        self.fnt_file_name_list = []
        self.font_files = None
        self.font_info = FontInfo()
        # Create a QProcess object, and connect it to appropriate slots
        self.cli_process = QProcess(self)
        self.cli_process.setProcessChannelMode(QProcess.MergedChannels)
        self.cli_process.readyRead.connect(self.read_proc_output)
        self.cli_process.started.connect(self.manage_proc)
        self.cli_process.finished.connect(self.manage_proc)
        self.cli_process.error.connect(self.manage_proc)

        # Style for all groupbox labels
        gb_style = "QGroupBox { font-weight: bold; }"
        # Top level layout manager for the window.
        win_layout = QVBoxLayout()
        gb_fnt_files = QGroupBox("Font Files")
        gb_fnt_files.setStyleSheet(gb_style)
        grid_f_f = QGridLayout()
        grid_pos = 0

        # Font Files and styles #

        # Create a grid of font names with their respective font style combo boxes
        for i in range(len(self.fnt_styles)):
            self.fnt_file_name_list.append(QLabel("Load font file..."))
            cmb = QComboBox()
            cmb.addItem("")
            cmb.addItems(self.fnt_styles)
            cmb.setEnabled(False)
            cmb.setToolTip(
                "<qt/>If not automatically detected when the font is added, allows you to select what font "
                "sub-family the font file belongs to"
            )
            self.fnt_sty_combo_list.append(cmb)
            row, col = helper.calc_grid_pos(grid_pos, 2)
            grid_f_f.addWidget(self.fnt_file_name_list[i], row, col)
            grid_pos += 1
            row, col = helper.calc_grid_pos(grid_pos, 2)
            grid_f_f.addWidget(self.fnt_sty_combo_list[i], row, col)
            grid_pos += 1
        grid_f_f.setColumnStretch(0, 1)
        gb_fnt_files.setLayout(grid_f_f)
        win_layout.addWidget(gb_fnt_files)

        # New Font Name #
        gb_fnt_name = QGroupBox("Font Family Name")
        gb_fnt_name.setStyleSheet(gb_style)
        hb_fnt_name = QHBoxLayout()
        self.new_fnt_name = QLineEdit()
        self.new_fnt_name.setToolTip("Enter a name for the modified font.")
        self.new_fnt_name.textEdited[str].connect(self.set_family_name)
        hb_fnt_name.addWidget(self.new_fnt_name)
        gb_fnt_name.setLayout(hb_fnt_name)
        win_layout.addWidget(gb_fnt_name)

        # Options #
        hb_options = QHBoxLayout()

        ## Kerning, Panose, Alt. Name ##
        gb_basic_opt = QGroupBox("Basic Options")
        gb_basic_opt.setStyleSheet(gb_style)
        hb_basic_opt = QHBoxLayout()
        self.basic_opt_list = []
        basic_tooltips = (
            "<qt/>Some readers and software require 'legacy', or 'old style' kerning to be "
            "present for kerning to work.",
            "<qt/>Kobo readers can get confused by PANOSE settings. This option sets all "
            "PANOSE information to 0, or 'any'",
            "<qt/>Some fonts have issues with renaming. If the generated font does not have "
            "the same internal font name as you entered, try enabling this option.",
        )

        for opt, tip in zip(("Legacy Kerning", "Clear PANOSE", "Alt. Name"), basic_tooltips):
            self.basic_opt_list.append(QCheckBox(opt))
            self.basic_opt_list[-1].setToolTip(tip)
            hb_basic_opt.addWidget(self.basic_opt_list[-1])

        gb_basic_opt.setLayout(hb_basic_opt)
        hb_options.addWidget(gb_basic_opt)

        ## Hinting ##
        gb_hint_opt = QGroupBox("Hinting Option")
        gb_hint_opt.setStyleSheet(gb_style)
        hb_hint_opt = QHBoxLayout()
        self.hint_opt_list = []
        hint_tooltips = (
            "<qt/>Keep font hinting as it exists in the orginal font files.<br />"
            "In most cases, this will look fine on most ebook reading devices.",
            '<qt/>Some fonts are manually, or "hand" hinted for specific display types (such as LCD). '
            "These fonts may not look good on other display types such as e-ink, therefore they can be "
            "removed.",
            "<qt/>If you don't like the original hinting, but you want your font to be hinted, "
            "this option will auto hint your font.",
        )
        for opt, tip in zip(("Keep Existing", "Remove Existing", "AutoHint"), hint_tooltips):
            self.hint_opt_list.append(QRadioButton(opt))
            self.hint_opt_list[-1].setToolTip(tip)
            self.hint_opt_list[-1].toggled.connect(self.set_hint)
            hb_hint_opt.addWidget(self.hint_opt_list[-1])

        self.hint_opt_list[0].setChecked(Qt.Checked)
        gb_hint_opt.setLayout(hb_hint_opt)
        hb_options.addWidget(gb_hint_opt)

        win_layout.addLayout(hb_options)

        ## Darken ##
        gb_dark_opt = QGroupBox("Darken Options")
        gb_dark_opt.setStyleSheet(gb_style)
        hb_dark_opt = QHBoxLayout()
        self.darken_opt = QCheckBox("Darken Font")
        self.darken_opt.setToolTip("<qt/>Darken, or add weight to a font to make it easier to read on e-ink screens.")
        self.darken_opt.toggled.connect(self.set_darken_opt)
        hb_dark_opt.addWidget(self.darken_opt)
        self.mod_bearing_opt = QCheckBox("Modify Bearings")
        self.mod_bearing_opt.setToolTip(
            "<qt/>By default, adding weight to a font increases glyph width. Enable this "
            "option to set the glyph width to be roughly equal to the original.<br/><br/>"
            "WARNING: This reduces the spacing between glyphs, and should not be used if "
            "you have added too much weight."
        )
        self.mod_bearing_opt.toggled.connect(self.set_mod_bearing)
        self.mod_bearing_opt.setEnabled(False)
        hb_dark_opt.addWidget(self.mod_bearing_opt)

        self.lbl = QLabel("Darken Amount:")
        self.lbl.setEnabled(False)
        hb_dark_opt.addWidget(self.lbl)
        self.darken_amount_opt = QSlider(Qt.Horizontal)
        self.darken_amount_opt.setMinimum(1)
        self.darken_amount_opt.setMaximum(50)
        self.darken_amount_opt.setValue(12)
        self.darken_amount_opt.setEnabled(False)
        self.darken_amount_opt.setToolTip(
            "<qt/>Set the amount to darken a font by. 50 is considered turning a "
            "regular weight font into a bold weight font. It is not recommended to "
            "darken a font that much however."
        )
        self.darken_amount_opt.valueChanged[int].connect(self.set_darken_amount)
        hb_dark_opt.addWidget(self.darken_amount_opt)
        self.darken_amount_lab = QLabel()
        self.darken_amount_lab.setText(str(self.darken_amount_opt.value()))
        self.darken_amount_lab.setEnabled(False)
        hb_dark_opt.addWidget(self.darken_amount_lab)
        gb_dark_opt.setLayout(hb_dark_opt)

        win_layout.addWidget(gb_dark_opt)

        # Buttons #
        hb_buttons = QHBoxLayout()
        # hb_buttons.addStretch()
        self.gen_ttf_btn = QPushButton("Generate TTF")
        self.gen_ttf_btn.setEnabled(False)
        self.gen_ttf_btn.setToolTip(
            "<qt/>Generate a new TrueType font based on the options chosen in this program. "
            "<br /><br />"
            "The new fonts are saved in a directory of your choosing."
        )
        self.gen_ttf_btn.clicked.connect(self.gen_ttf)
        hb_buttons.addWidget(self.gen_ttf_btn)
        self.load_font_btn = QPushButton("Load Fonts")
        self.load_font_btn.setToolTip("<qt/>Load font files to modify.")
        self.load_font_btn.clicked.connect(self.load_fonts)
        hb_buttons.addWidget(self.load_font_btn)
        self.prog_bar = QProgressBar()
        self.prog_bar.setRange(0, 100)
        hb_buttons.addWidget(self.prog_bar)
        win_layout.addLayout(hb_buttons)

        # Output Log #
        gb_log_win = QGroupBox("Log Window")
        gb_log_win.setStyleSheet(gb_style)
        vb_log = QVBoxLayout()
        out_font = QFont("Courier")
        out_font.setStyleHint(QFont.Monospace)
        self.log_win = QTextEdit()
        self.log_win.setAcceptRichText(False)
        self.log_win.setFont(out_font)
        vb_log.addWidget(self.log_win)
        gb_log_win.setLayout(vb_log)
        win_layout.addWidget(gb_log_win)

        # Show Window #
        self.setCentralWidget(QWidget(self))
        self.centralWidget().setLayout(win_layout)
        self.setWindowTitle("Readify Font")

        self.show()

        # Check if fontforge is actually in users PATH. If it isn't, prompt user to provice a location
        self.ff_path = helper.which("fontforge")
        if not self.ff_path:
            self.set_ff_path()
Beispiel #46
0
OS_KEY = "Ctrl"
# Font
FONT = QFont("Source Code Pro")
if sys.platform == "darwin":
    from PyQt5.QtGui import QKeySequence
    from PyQt5.QtCore import Qt

    FONT = QFont("Monaco")
    OS_KEY = QKeySequence(Qt.CTRL).toString(QKeySequence.NativeText)
    IS_MAC_OS = True
elif sys.platform == "win32":
    FONT = QFont("Courier")
    IS_WINDOWS = True

FONT.setStyleHint(QFont.TypeWriter)
FONT.setPointSize(12)

FONT_ANTIALIASING = True


def detect_python_path():
    if (IS_WINDOWS and PYTHON_EXEC_CONFIGURED_BY_USER) or not IS_WINDOWS:
        return []

    suggested = []
    dirs = []
    try:
        drives = [QDir.toNativeSeparators(d.absolutePath())
                  for d in QDir.drives()]