コード例 #1
0
ファイル: actions.py プロジェクト: MikeyG/gevernote
    def __init__(self, editor, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)
        self.editor = editor
        self.ui = Ui_FindBar()
        self.ui.setupUi(self)

        # pyside-uic doesn't translate icons from themes correctly, so we have
        # to re-set the icons manually here
        self.ui.btnPrevious.setIcon(QIcon.fromTheme('go-previous'))
        self.ui.btnNext.setIcon(QIcon.fromTheme('go-next'))
        self.ui.btnClose.setIcon(QIcon.fromTheme('window-close'))
        self.visible = False

        self.ui.btnClose.clicked.connect(self.hide)
        self.ui.edtFindText.returnPressed.connect(self.find_next)
        self.ui.edtFindText.textChanged.connect(self.find_text_updated)

        self.ui.btnNext.clicked.connect(self.find_next)
        self.ui.btnPrevious.clicked.connect(self.find_previous)

        self.ui.btnHighlight.clicked.connect(self.update_highlight)
        self.ui.chkMatchCase.clicked.connect(self.match_case_updated)
コード例 #2
0
ファイル: editor.py プロジェクト: altawu/everpad
    def __init__(self, editor, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)
        self.editor = editor
        self.ui = Ui_FindBar()
        self.ui.setupUi(self)

        # pyside-uic doesn't translate icons from themes correctly, so we have
        # to re-set the icons manually here
        self.ui.btnPrevious.setIcon(QIcon.fromTheme('go-previous'))
        self.ui.btnNext.setIcon(QIcon.fromTheme('go-next'))
        self.ui.btnClose.setIcon(QIcon.fromTheme('window-close'))
        self.visible = False

        self.ui.btnClose.clicked.connect(self.hide)
        self.ui.edtFindText.returnPressed.connect(self.find_next)
        self.ui.edtFindText.textChanged.connect(self.find_text_updated)

        self.ui.btnNext.clicked.connect(self.find_next)
        self.ui.btnPrevious.clicked.connect(self.find_previous)

        self.ui.btnHighlight.clicked.connect(self.update_highlight)
        self.ui.chkMatchCase.clicked.connect(self.match_case_updated)
コード例 #3
0
ファイル: editor.py プロジェクト: altawu/everpad
class FindBar(QWidget):
    def __init__(self, editor, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)
        self.editor = editor
        self.ui = Ui_FindBar()
        self.ui.setupUi(self)

        # pyside-uic doesn't translate icons from themes correctly, so we have
        # to re-set the icons manually here
        self.ui.btnPrevious.setIcon(QIcon.fromTheme('go-previous'))
        self.ui.btnNext.setIcon(QIcon.fromTheme('go-next'))
        self.ui.btnClose.setIcon(QIcon.fromTheme('window-close'))
        self.visible = False

        self.ui.btnClose.clicked.connect(self.hide)
        self.ui.edtFindText.returnPressed.connect(self.find_next)
        self.ui.edtFindText.textChanged.connect(self.find_text_updated)

        self.ui.btnNext.clicked.connect(self.find_next)
        self.ui.btnPrevious.clicked.connect(self.find_previous)

        self.ui.btnHighlight.clicked.connect(self.update_highlight)
        self.ui.chkMatchCase.clicked.connect(self.match_case_updated)

    def set_search_term(self, search_term):
        self.ui.edtFindText.setText(search_term)

    def get_flags(self, default_flags=None):
        flags = QWebPage.FindFlag.FindWrapsAroundDocument
        if default_flags is not None:
            flags |= default_flags
        if self.ui.chkMatchCase.isChecked():
            flags |= QWebPage.FindFlag.FindCaseSensitively
        return flags

    @Slot()
    def match_case_updated(self):
        flags = self.get_flags()

        # We need the *old* flags value;  clear this flag if it's checked
        if self.ui.chkMatchCase.isChecked():
            flags &= ~QWebPage.FindFlag.FindCaseSensitively
        else:
            flags |= QWebPage.FindFlag.FindCaseSensitively
        self.update_highlight(flags=flags, clear=True)
        self.update_highlight()

    @Slot(str)
    def find_text_updated(self, text):
        self.update_highlight(text=text, clear=True)
        self.find()

    @Slot()
    def find_next(self, text=None):
        self.find()

    @Slot()
    def find_previous(self):
        self.find(QWebPage.FindFlag.FindBackward)

    def find(self, flags=None):
        if not self.visible:
            self.show(focus=False)
            return

        flags = self.get_flags(flags)
        self.editor.note_edit.page.findText(self.ui.edtFindText.text(), flags)
        self.update_highlight()

    @Slot()
    def update_highlight(self, flags=None, text=None, clear=False):
        flags = flags or self.get_flags()
        flags |= QWebPage.FindFlag.HighlightAllOccurrences
        text = text or self.ui.edtFindText.text()
        if clear or not self.ui.btnHighlight.isChecked():
            text = ''
        self.editor.note_edit.page.findText(text, flags)

    def show(self, flags=None, focus=True):
        QWidget.show(self)
        if self.visible:
            self.find(flags)
        else:
            self.editor.ui.centralwidget.layout().addWidget(self)
            self.visible = True

            self.find(flags)
            self.update_highlight()

        if focus:
            self.ui.edtFindText.setFocus()

        self.editor.find_action.setChecked(True)

    @Slot()
    def hide(self):
        QWidget.hide(self)
        if not self.visible:
            return
        self.update_highlight(clear=True)
        self.editor.ui.centralwidget.layout().removeWidget(self)
        self.setParent(None)
        self.visible = False
        self.editor.find_action.setChecked(False)

    @Slot()
    def toggle_visible(self):
        if self.visible:
            self.hide()
        else:
            self.show()
コード例 #4
0
ファイル: actions.py プロジェクト: MikeyG/gevernote
class FindBar(QWidget):
    def __init__(self, editor, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)
        self.editor = editor
        self.ui = Ui_FindBar()
        self.ui.setupUi(self)

        # pyside-uic doesn't translate icons from themes correctly, so we have
        # to re-set the icons manually here
        self.ui.btnPrevious.setIcon(QIcon.fromTheme('go-previous'))
        self.ui.btnNext.setIcon(QIcon.fromTheme('go-next'))
        self.ui.btnClose.setIcon(QIcon.fromTheme('window-close'))
        self.visible = False

        self.ui.btnClose.clicked.connect(self.hide)
        self.ui.edtFindText.returnPressed.connect(self.find_next)
        self.ui.edtFindText.textChanged.connect(self.find_text_updated)

        self.ui.btnNext.clicked.connect(self.find_next)
        self.ui.btnPrevious.clicked.connect(self.find_previous)

        self.ui.btnHighlight.clicked.connect(self.update_highlight)
        self.ui.chkMatchCase.clicked.connect(self.match_case_updated)

    def set_search_term(self, search_term):
        self.ui.edtFindText.setText(search_term)

    def get_flags(self, default_flags=None):
        flags = QWebPage.FindFlag.FindWrapsAroundDocument
        if default_flags is not None:
            flags |= default_flags
        if self.ui.chkMatchCase.isChecked():
            flags |= QWebPage.FindFlag.FindCaseSensitively
        return flags

    @Slot()
    def match_case_updated(self):
        flags = self.get_flags()

        # We need the *old* flags value;  clear this flag if it's checked
        if self.ui.chkMatchCase.isChecked():
            flags &= ~QWebPage.FindFlag.FindCaseSensitively
        else:
            flags |= QWebPage.FindFlag.FindCaseSensitively
        self.update_highlight(flags=flags, clear=True)
        self.update_highlight()

    @Slot(str)
    def find_text_updated(self, text):
        self.update_highlight(text=text, clear=True)
        self.find()

    @Slot()
    def find_next(self, text=None):
        self.find()

    @Slot()
    def find_previous(self):
        self.find(QWebPage.FindFlag.FindBackward)

    def find(self, flags=None):
        if not self.visible:
            self.show(focus=False)
            return

        flags = self.get_flags(flags)
        self.editor.note_edit.page.findText(self.ui.edtFindText.text(), flags)
        self.update_highlight()

    @Slot()
    def update_highlight(self, flags=None, text=None, clear=False):
        flags = flags or self.get_flags()
        flags |= QWebPage.FindFlag.HighlightAllOccurrences
        text = text or self.ui.edtFindText.text()
        if clear or not self.ui.btnHighlight.isChecked():
            text = ''
        self.editor.note_edit.page.findText(text, flags)

    def show(self, flags=None, focus=True):
        QWidget.show(self)
        if self.visible:
            self.find(flags)
        else:
            self.editor.ui.centralwidget.layout().addWidget(self)
            self.visible = True

            self.find(flags)
            self.update_highlight()

        if focus:
            self.ui.edtFindText.setFocus()

        self.editor.find_action.setChecked(True)

    @Slot()
    def hide(self):
        QWidget.hide(self)
        if not self.visible:
            return
        self.update_highlight(clear=True)
        self.editor.ui.centralwidget.layout().removeWidget(self)
        self.setParent(None)
        self.visible = False
        self.editor.find_action.setChecked(False)

    @Slot()
    def toggle_visible(self):
        if self.visible:
            self.hide()
        else:
            self.show()