mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
More work on notes browser
This commit is contained in:
parent
7845f4036d
commit
efeb345edd
@ -160,6 +160,8 @@ class ResultsList(QTreeWidget):
|
|||||||
|
|
||||||
class RestrictFields(QWidget):
|
class RestrictFields(QWidget):
|
||||||
|
|
||||||
|
restriction_changed = pyqtSignal()
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
self.l = l = FlowLayout(self)
|
self.l = l = FlowLayout(self)
|
||||||
@ -222,17 +224,19 @@ class RestrictFields(QWidget):
|
|||||||
def add_field(self, field):
|
def add_field(self, field):
|
||||||
self.restricted_fields.append(field)
|
self.restricted_fields.append(field)
|
||||||
self.relayout()
|
self.relayout()
|
||||||
|
self.restriction_changed.emit()
|
||||||
|
|
||||||
def remove_field(self, field):
|
def remove_field(self, field):
|
||||||
self.restricted_fields.remove(field)
|
self.restricted_fields.remove(field)
|
||||||
self.relayout()
|
self.relayout()
|
||||||
|
self.restriction_changed.emit()
|
||||||
|
|
||||||
|
|
||||||
class SearchInput(QWidget):
|
class SearchInput(QWidget):
|
||||||
|
|
||||||
cleared_signal = pyqtSignal()
|
|
||||||
show_next_signal = pyqtSignal()
|
show_next_signal = pyqtSignal()
|
||||||
show_previous_signal = pyqtSignal()
|
show_previous_signal = pyqtSignal()
|
||||||
|
search_changed = pyqtSignal()
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
@ -262,6 +266,7 @@ class SearchInput(QWidget):
|
|||||||
nb.setToolTip(_('Find previous match'))
|
nb.setToolTip(_('Find previous match'))
|
||||||
|
|
||||||
self.restrict = r = RestrictFields(self)
|
self.restrict = r = RestrictFields(self)
|
||||||
|
r.restriction_changed.connect(self.search_changed)
|
||||||
l.addWidget(r)
|
l.addWidget(r)
|
||||||
|
|
||||||
|
|
||||||
@ -274,13 +279,13 @@ class SearchInput(QWidget):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def cleared(self):
|
def cleared(self):
|
||||||
raise NotImplementedError('TODO: Implement me')
|
self.search_changed.emit()
|
||||||
|
|
||||||
def show_next(self):
|
def show_next(self):
|
||||||
raise NotImplementedError('TODO: Implement me')
|
self.show_next_signal.emit()
|
||||||
|
|
||||||
def show_previous(self):
|
def show_previous(self):
|
||||||
raise NotImplementedError('TODO: Implement me')
|
self.show_previous_signal.emit()
|
||||||
|
|
||||||
|
|
||||||
class NotesBrowser(Dialog):
|
class NotesBrowser(Dialog):
|
||||||
@ -298,6 +303,7 @@ class NotesBrowser(Dialog):
|
|||||||
self.l = l = QVBoxLayout(self)
|
self.l = l = QVBoxLayout(self)
|
||||||
|
|
||||||
self.search_input = si = SearchInput(self)
|
self.search_input = si = SearchInput(self)
|
||||||
|
si.search_changed.connect(self.search_changed)
|
||||||
l.addWidget(si)
|
l.addWidget(si)
|
||||||
|
|
||||||
self.splitter = s = QSplitter(self)
|
self.splitter = s = QSplitter(self)
|
||||||
@ -305,6 +311,8 @@ class NotesBrowser(Dialog):
|
|||||||
s.setChildrenCollapsible(False)
|
s.setChildrenCollapsible(False)
|
||||||
|
|
||||||
self.results_list = rl = ResultsList(self)
|
self.results_list = rl = ResultsList(self)
|
||||||
|
si.show_next_signal.connect(rl.show_next)
|
||||||
|
si.show_previous_signal.connect(partial(rl.show_next, backwards=True))
|
||||||
s.addWidget(rl)
|
s.addWidget(rl)
|
||||||
|
|
||||||
self.use_stemmer = us = QCheckBox(_('&Match on related words'))
|
self.use_stemmer = us = QCheckBox(_('&Match on related words'))
|
||||||
@ -319,6 +327,10 @@ class NotesBrowser(Dialog):
|
|||||||
h.addWidget(us), h.addStretch(10), h.addWidget(self.bb)
|
h.addWidget(us), h.addStretch(10), h.addWidget(self.bb)
|
||||||
QTimer.singleShot(0, self.do_find)
|
QTimer.singleShot(0, self.do_find)
|
||||||
|
|
||||||
|
def search_changed(self):
|
||||||
|
if self.search_input.current_query != self.current_query:
|
||||||
|
self.do_find()
|
||||||
|
|
||||||
def do_find(self, backwards=False):
|
def do_find(self, backwards=False):
|
||||||
q = self.search_input.current_query
|
q = self.search_input.current_query
|
||||||
if q == self.current_query:
|
if q == self.current_query:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user