Example #1
0
 def __init__(self, parent=None, expected_geometry=(100, 50)):
     PlainTextEdit.__init__(self, parent)
     self.snippet_manager = SnippetManager(self)
     self.completion_popup = CompletionPopup(self)
     self.request_completion = self.completion_doc_name = None
     self.clear_completion_cache_timer = t = QTimer(self)
     t.setInterval(5000), t.timeout.connect(
         self.clear_completion_cache), t.setSingleShot(True)
     self.textChanged.connect(t.start)
     self.last_completion_request = -1
     self.gutter_width = 0
     self.tw = 2
     self.expected_geometry = expected_geometry
     self.saved_matches = {}
     self.syntax = None
     self.smarts = NullSmarts(self)
     self.current_cursor_line = None
     self.current_search_mark = None
     self.smarts_highlight_timer = t = QTimer()
     t.setInterval(750), t.setSingleShot(True), t.timeout.connect(
         self.update_extra_selections)
     self.highlighter = SyntaxHighlighter()
     self.line_number_area = LineNumbers(self)
     self.apply_settings()
     self.setMouseTracking(True)
     self.cursorPositionChanged.connect(self.highlight_cursor_line)
     self.blockCountChanged[int].connect(self.update_line_number_area_width)
     self.updateRequest.connect(self.update_line_number_area)
Example #2
0
 def __init__(self, parent=None, expected_geometry=(100, 50)):
     PlainTextEdit.__init__(self, parent)
     self.snippet_manager = SnippetManager(self)
     self.completion_popup = CompletionPopup(self)
     self.request_completion = self.completion_doc_name = None
     self.clear_completion_cache_timer = t = QTimer(self)
     t.setInterval(5000), t.timeout.connect(self.clear_completion_cache), t.setSingleShot(True)
     self.textChanged.connect(t.start)
     self.last_completion_request = -1
     self.gutter_width = 0
     self.tw = 2
     self.expected_geometry = expected_geometry
     self.saved_matches = {}
     self.syntax = None
     self.smarts = NullSmarts(self)
     self.current_cursor_line = None
     self.current_search_mark = None
     self.smarts_highlight_timer = t = QTimer()
     t.setInterval(750), t.setSingleShot(True), t.timeout.connect(self.update_extra_selections)
     self.highlighter = SyntaxHighlighter()
     self.line_number_area = LineNumbers(self)
     self.apply_settings()
     self.setMouseTracking(True)
     self.cursorPositionChanged.connect(self.highlight_cursor_line)
     self.blockCountChanged[int].connect(self.update_line_number_area_width)
     self.updateRequest.connect(self.update_line_number_area)
Example #3
0
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.l = l = QGridLayout(self)

        def add_row(*args):
            r = l.rowCount()
            if len(args) == 1:
                l.addWidget(args[0], r, 0, 1, 2)
            else:
                la = QLabel(args[0])
                l.addWidget(la, r, 0, Qt.AlignmentFlag.AlignRight), l.addWidget(args[1], r, 1)
                la.setBuddy(args[1])

        self.heading = la = QLabel('<h2>\xa0')
        add_row(la)
        self.helpl = la = QLabel(_('For help with snippets, see the <a href="%s">User Manual</a>') %
                                 localize_user_manual_link('https://manual.calibre-ebook.com/snippets.html'))
        la.setOpenExternalLinks(True)
        add_row(la)

        self.name = n = QLineEdit(self)
        n.setPlaceholderText(_('The name of this snippet'))
        add_row(_('&Name:'), n)

        self.trig = t = QLineEdit(self)
        t.setPlaceholderText(_('The text used to trigger this snippet'))
        add_row(_('Tri&gger:'), t)

        self.template = t = PlainTextEdit(self)
        la.setBuddy(t)
        add_row(_('&Template:'), t)

        self.types = t = QListWidget(self)
        t.setFlow(QListView.Flow.LeftToRight)
        t.setWrapping(True), t.setResizeMode(QListView.ResizeMode.Adjust), t.setSpacing(5)
        fm = t.fontMetrics()
        t.setMaximumHeight(2*(fm.ascent() + fm.descent()) + 25)
        add_row(_('&File types:'), t)
        t.setToolTip(_('Which file types this snippet should be active in'))

        self.frame = f = QFrame(self)
        f.setFrameShape(QFrame.Shape.HLine)
        add_row(f)
        self.test = d = SnippetTextEdit('', self)
        d.snippet_manager.snip_func = self.snip_func
        d.setToolTip(_('You can test your snippet here'))
        d.setMaximumHeight(t.maximumHeight() + 15)
        add_row(_('T&est:'), d)

        i = QListWidgetItem(_('All'), t)
        i.setData(Qt.ItemDataRole.UserRole, '*')
        i.setCheckState(Qt.CheckState.Checked)
        i.setFlags(i.flags() | Qt.ItemFlag.ItemIsUserCheckable)
        for ftype in sorted(all_text_syntaxes):
            i = QListWidgetItem(ftype, t)
            i.setData(Qt.ItemDataRole.UserRole, ftype)
            i.setCheckState(Qt.CheckState.Checked)
            i.setFlags(i.flags() | Qt.ItemFlag.ItemIsUserCheckable)

        self.creating_snippet = False
Example #4
0
 def mousePressEvent(self, ev):
     if self.completion_popup.isVisible() and not self.completion_popup.rect().contains(ev.pos()):
         # For some reason using eventFilter for this does not work, so we
         # implement it here
         self.completion_popup.abort()
     if ev.modifiers() & Qt.CTRL:
         url = self.link_for_position(ev.pos())
         if url is not None:
             ev.accept()
             self.link_clicked.emit(url)
             return
     return PlainTextEdit.mousePressEvent(self, ev)
Example #5
0
 def change_tab(self, index):
     # print 'reloading:', (index and self.wyswyg_dirty) or (not index and
     #        self.source_dirty)
     if index == 1:  # changing to code view
         if self.wyswyg_dirty:
             self.code_edit.setPlainText(self.editor.html)
             self.wyswyg_dirty = False
     elif index == 0:  # changing to wyswyg
         if self.source_dirty:
             from calibre.gui2.tweak_book.widgets import PlainTextEdit
             self.editor.html = PlainTextEdit.toPlainText(self.code_edit)
             self.source_dirty = False
Example #6
0
 def mousePressEvent(self, ev):
     if self.completion_popup.isVisible() and not self.completion_popup.rect().contains(ev.pos()):
         # For some reason using eventFilter for this does not work, so we
         # implement it here
         self.completion_popup.abort()
     if ev.modifiers() & Qt.CTRL:
         url = self.link_for_position(ev.pos())
         if url is not None:
             ev.accept()
             self.link_clicked.emit(url)
             return
     return PlainTextEdit.mousePressEvent(self, ev)
Example #7
0
 def override_shortcut(self, ev):
     # Let the global cut/copy/paste/undo/redo shortcuts work, this avoids the nbsp
     # problem as well, since they use the overridden createMimeDataFromSelection() method
     # instead of the one from Qt (which makes copy() work), and allows proper customization
     # of the shortcuts
     if ev in (QKeySequence.Copy, QKeySequence.Cut, QKeySequence.Paste, QKeySequence.Undo, QKeySequence.Redo):
         ev.ignore()
         return True
     # This is used to convert typed hex codes into unicode
     # characters
     if ev.key() == Qt.Key_X and ev.modifiers() == Qt.AltModifier:
         ev.accept()
         return True
     return PlainTextEdit.override_shortcut(self, ev)
Example #8
0
 def override_shortcut(self, ev):
     # Let the global cut/copy/paste/undo/redo shortcuts work, this avoids the nbsp
     # problem as well, since they use the overridden createMimeDataFromSelection() method
     # instead of the one from Qt (which makes copy() work), and allows proper customization
     # of the shortcuts
     if ev in (QKeySequence.Copy, QKeySequence.Cut, QKeySequence.Paste, QKeySequence.Undo, QKeySequence.Redo):
         ev.ignore()
         return True
     # This is used to convert typed hex codes into unicode
     # characters
     if ev.key() == Qt.Key_X and ev.modifiers() == Qt.AltModifier:
         ev.accept()
         return True
     return PlainTextEdit.override_shortcut(self, ev)
Example #9
0
 def keyPressEvent(self, ev):
     if self.snippet_manager.handle_key_press(ev):
         return
     PlainTextEdit.keyPressEvent(self, ev)
Example #10
0
 def __init__(self, text, parent=None):
     PlainTextEdit.__init__(self, parent)
     if text:
         self.setPlainText(text)
     self.snippet_manager = SnippetManager(self)
Example #11
0
 def keyPressEvent(self, ev):
     if self.snippet_manager.handle_key_press(ev):
         return
     PlainTextEdit.keyPressEvent(self, ev)
Example #12
0
 def __init__(self, text, parent=None):
     PlainTextEdit.__init__(self, parent)
     if text:
         self.setPlainText(text)
     self.snippet_manager = SnippetManager(self)