Exemplo n.º 1
0
 def get_value(self, g):
     from calibre.gui2.convert.xpath_wizard import XPathEdit
     from calibre.gui2.convert.regex_builder import RegexEdit
     from calibre.gui2.widgets import EncodingComboBox
     ret = self.get_value_handler(g)
     if ret != 'this is a dummy return value, xcswx1avcx4x':
         return ret
     if hasattr(g, 'get_value_for_config'):
         return g.get_value_for_config
     if isinstance(g, (QSpinBox, QDoubleSpinBox)):
         return g.value()
     elif isinstance(g, (QLineEdit, QTextEdit, QPlainTextEdit)):
         func = getattr(g, 'toPlainText', getattr(g, 'text', None))()
         ans = unicode_type(func)
         if self.STRIP_TEXT_FIELDS:
             ans = ans.strip()
         if not ans:
             ans = None
         return ans
     elif isinstance(g, QFontComboBox):
         return unicode_type(QFontInfo(g.currentFont()).family())
     elif isinstance(g, FontFamilyChooser):
         return g.font_family
     elif isinstance(g, EncodingComboBox):
         ans = unicode_type(g.currentText()).strip()
         try:
             codecs.lookup(ans)
         except:
             ans = ''
         if not ans:
             ans = None
         return ans
     elif isinstance(g, QComboBox):
         return unicode_type(g.currentText())
     elif isinstance(g, QCheckBox):
         return bool(g.isChecked())
     elif isinstance(g, XPathEdit):
         return g.xpath if g.xpath else None
     elif isinstance(g, RegexEdit):
         return g.regex if g.regex else None
     else:
         raise Exception('Can\'t get value from %s' % type(g))
Exemplo n.º 2
0
 def on_bridge_ready(self):
     f = QApplication.instance().font()
     fi = QFontInfo(f)
     family = f.family()
     if family in ('.AppleSystemUIFont', 'MS Shell Dlg 2'):
         family = 'system-ui'
     ui_data = {
         'all_font_families': QFontDatabase().families(),
         'ui_font_family': family,
         'ui_font_sz': '{}px'.format(fi.pixelSize()),
         'show_home_page_on_ready': self.show_home_page_on_ready,
         'system_colors': system_colors(),
         'QT_VERSION': QT_VERSION,
         'short_time_fmt': QLocale.system().timeFormat(QLocale.FormatType.ShortFormat),
     }
     self.bridge.create_view(
         vprefs['session_data'], vprefs['local_storage'], field_metadata.all_metadata(), ui_data)
     performance_monitor('bridge ready')
     for func, args in iteritems(self.pending_bridge_ready_actions):
         getattr(self.bridge, func)(*args)
Exemplo n.º 3
0
 def __init__(self, parent=None):
     QTextBrowser.__init__(self, parent)
     self.last_set_html = ''
     self.default_css = self.external_css = ''
     app = QApplication.instance()
     app.palette_changed.connect(self.palette_changed)
     self.palette_changed()
     font = self.font()
     f = QFontInfo(font)
     delta = tweaks['change_book_details_font_size_by'] + 1
     if delta:
         font.setPixelSize(f.pixelSize() + delta)
         self.setFont(font)
     self.setFrameShape(QFrame.Shape.NoFrame)
     self.setOpenLinks(False)
     self.setAttribute(Qt.WidgetAttribute.WA_OpaquePaintEvent, False)
     palette = self.palette()
     palette.setBrush(QPalette.ColorRole.Base, Qt.GlobalColor.transparent)
     self.setPalette(palette)
     self.setAcceptDrops(False)
     self.anchorClicked.connect(self.on_anchor_clicked)
Exemplo n.º 4
0
    def do_paint(self, painter, option, index):
        text = str(index.data(Qt.ItemDataRole.DisplayRole) or '')
        font = QFont(option.font)
        font.setPointSizeF(QFontInfo(font).pointSize() * 1.5)
        font2 = QFont(font)
        font2.setFamily(text)

        system, has_latin = writing_system_for_font(font2)
        if has_latin:
            font = font2

        r = option.rect
        color = option.palette.text()

        if option.state & QStyle.StateFlag.State_Selected:
            color = option.palette.highlightedText()
        painter.setPen(QPen(color, 0))

        if (option.direction == Qt.LayoutDirection.RightToLeft):
            r.setRight(r.right() - 4)
        else:
            r.setLeft(r.left() + 4)

        painter.setFont(font)
        painter.drawText(
            r, Qt.AlignmentFlag.AlignVCenter | Qt.AlignmentFlag.AlignLeading
            | Qt.TextFlag.TextSingleLine, text)

        if (system != QFontDatabase.WritingSystem.Any):
            w = painter.fontMetrics().width(text + "  ")
            painter.setFont(font2)
            sample = QFontDatabase().writingSystemSample(system)
            if (option.direction == Qt.LayoutDirection.RightToLeft):
                r.setRight(r.right() - w)
            else:
                r.setLeft(r.left() + w)
            painter.drawText(
                r, Qt.AlignmentFlag.AlignVCenter
                | Qt.AlignmentFlag.AlignLeading | Qt.TextFlag.TextSingleLine,
                sample)
Exemplo n.º 5
0
 def font_changed(self, font):
     fi = QFontInfo(font)
     gprefs['gpm_template_editor_font'] = unicode_type(fi.family())
     self.highlighter.initializeFormats()
     self.highlighter.rehighlight()
Exemplo n.º 6
0
    def __init__(self, parent=None):
        QTextEdit.__init__(self, parent)
        self.setTabChangesFocus(True)
        self.document().setDefaultStyleSheet(css() + '\n\nli { margin-top: 0.5ex; margin-bottom: 0.5ex; }')
        font = self.font()
        f = QFontInfo(font)
        delta = tweaks['change_book_details_font_size_by'] + 1
        if delta:
            font.setPixelSize(f.pixelSize() + delta)
            self.setFont(font)
        f = QFontMetrics(self.font())
        self.em_size = f.horizontalAdvance('m')
        self.base_url = None
        self._parent = weakref.ref(parent)
        self.comments_pat = re.compile(r'<!--.*?-->', re.DOTALL)

        for rec in (
            ('bold', 'format-text-bold', _('Bold'), True),
            ('italic', 'format-text-italic', _('Italic'), True),
            ('underline', 'format-text-underline', _('Underline'), True),
            ('strikethrough', 'format-text-strikethrough', _('Strikethrough'), True),
            ('superscript', 'format-text-superscript', _('Superscript'), True),
            ('subscript', 'format-text-subscript', _('Subscript'), True),
            ('ordered_list', 'format-list-ordered', _('Ordered list'), True),
            ('unordered_list', 'format-list-unordered', _('Unordered list'), True),

            ('align_left', 'format-justify-left', _('Align left'), True),
            ('align_center', 'format-justify-center', _('Align center'), True),
            ('align_right', 'format-justify-right', _('Align right'), True),
            ('align_justified', 'format-justify-fill', _('Align justified'), True),
            ('undo', 'edit-undo', _('Undo'), ),
            ('redo', 'edit-redo', _('Redo'), ),
            ('remove_format', 'edit-clear', _('Remove formatting'), ),
            ('copy', 'edit-copy', _('Copy'), ),
            ('paste', 'edit-paste', _('Paste'), ),
            ('paste_and_match_style', 'edit-paste', _('Paste and match style'), ),
            ('cut', 'edit-cut', _('Cut'), ),
            ('indent', 'format-indent-more', _('Increase indentation'), ),
            ('outdent', 'format-indent-less', _('Decrease indentation'), ),
            ('select_all', 'edit-select-all', _('Select all'), ),

            ('color', 'format-text-color', _('Foreground color')),
            ('background', 'format-fill-color', _('Background color')),
            ('insert_link', 'insert-link', _('Insert link or image'),),
            ('insert_hr', 'format-text-hr', _('Insert separator'),),
            ('clear', 'trash', _('Clear')),
        ):
            name, icon, text = rec[:3]
            checkable = len(rec) == 4
            ac = QAction(QIcon(I(icon + '.png')), text, self)
            if checkable:
                ac.setCheckable(checkable)
            setattr(self, 'action_'+name, ac)
            ac.triggered.connect(getattr(self, 'do_' + name))

        self.action_block_style = QAction(QIcon(I('format-text-heading.png')),
                _('Style text block'), self)
        self.action_block_style.setToolTip(
                _('Style the selected text block'))
        self.block_style_menu = QMenu(self)
        self.action_block_style.setMenu(self.block_style_menu)
        self.block_style_actions = []
        h = _('Heading {0}')
        for text, name in (
            (_('Normal'), 'p'),
            (h.format(1), 'h1'),
            (h.format(2), 'h2'),
            (h.format(3), 'h3'),
            (h.format(4), 'h4'),
            (h.format(5), 'h5'),
            (h.format(6), 'h6'),
            (_('Blockquote'), 'blockquote'),
        ):
            ac = QAction(text, self)
            self.block_style_menu.addAction(ac)
            ac.block_name = name
            ac.setCheckable(True)
            self.block_style_actions.append(ac)
            ac.triggered.connect(self.do_format_block)

        self.setHtml('')
        self.copyAvailable.connect(self.update_clipboard_actions)
        self.update_clipboard_actions(False)
        self.selectionChanged.connect(self.update_selection_based_actions)
        self.update_selection_based_actions()
        connect_lambda(self.undoAvailable, self, lambda self, yes: self.action_undo.setEnabled(yes))
        connect_lambda(self.redoAvailable, self, lambda self, yes: self.action_redo.setEnabled(yes))
        self.action_undo.setEnabled(False), self.action_redo.setEnabled(False)
        self.textChanged.connect(self.update_cursor_position_actions)
        self.cursorPositionChanged.connect(self.update_cursor_position_actions)
        self.textChanged.connect(self.data_changed)
        self.update_cursor_position_actions()
 def font_changed(self, font):
     fi = QFontInfo(font)
     gprefs['gpm_template_editor_font'] = str(fi.family())
     self.set_editor_font()
Exemplo n.º 8
0
 def do_size_hint(self, option, index):
     text = index.data(Qt.ItemDataRole.DisplayRole) or ''
     font = QFont(option.font)
     font.setPointSize(QFontInfo(font).pointSize() * 1.5)
     m = QFontMetrics(font)
     return QSize(m.width(text), m.height())