3569: Filter Sidebar should include a link to the Filter Editor
svn: r14248
This commit is contained in:
parent
b3efd702a2
commit
08d00c4865
@ -77,7 +77,7 @@ class EventSidebarFilter(SidebarFilter):
|
||||
|
||||
self.generic = gtk.ComboBox()
|
||||
|
||||
SidebarFilter.__init__(self, dbstate, uistate)
|
||||
SidebarFilter.__init__(self, dbstate, uistate, "Event")
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
@ -93,7 +93,7 @@ class EventSidebarFilter(SidebarFilter):
|
||||
self.add_text_entry(_('Date'), self.filter_date)
|
||||
self.add_text_entry(_('Place'), self.filter_place)
|
||||
self.add_text_entry(_('Note'), self.filter_note)
|
||||
self.add_entry(_('Custom filter'), self.generic)
|
||||
self.add_filter_entry(_('Custom filter'), self.generic)
|
||||
self.add_entry(None, self.filter_regex)
|
||||
|
||||
def clear(self, obj):
|
||||
|
@ -98,7 +98,7 @@ class FamilySidebarFilter(SidebarFilter):
|
||||
|
||||
self.generic = gtk.ComboBox()
|
||||
|
||||
SidebarFilter.__init__(self, dbstate, uistate)
|
||||
SidebarFilter.__init__(self, dbstate, uistate, "Family")
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
@ -116,7 +116,7 @@ class FamilySidebarFilter(SidebarFilter):
|
||||
self.add_entry(_('Family Event'), self.etype)
|
||||
self.add_entry(_('Marker'), self.mtype)
|
||||
self.add_text_entry(_('Family Note'), self.filter_note)
|
||||
self.add_entry(_('Custom filter'), self.generic)
|
||||
self.add_filter_entry(_('Custom filter'), self.generic)
|
||||
self.add_entry(None, self.filter_regex)
|
||||
|
||||
def clear(self, obj):
|
||||
|
@ -67,7 +67,7 @@ class MediaSidebarFilter(SidebarFilter):
|
||||
|
||||
self.generic = gtk.ComboBox()
|
||||
|
||||
SidebarFilter.__init__(self, dbstate, uistate)
|
||||
SidebarFilter.__init__(self, dbstate, uistate, "MediaObject")
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
@ -83,7 +83,7 @@ class MediaSidebarFilter(SidebarFilter):
|
||||
self.add_text_entry(_('Path'), self.filter_path)
|
||||
self.add_text_entry(_('Date'), self.filter_date)
|
||||
self.add_text_entry(_('Note'), self.filter_note)
|
||||
self.add_entry(_('Custom filter'), self.generic)
|
||||
self.add_filter_entry(_('Custom filter'), self.generic)
|
||||
self.add_entry(None, self.filter_regex)
|
||||
|
||||
def clear(self, obj):
|
||||
|
@ -71,7 +71,7 @@ class NoteSidebarFilter(SidebarFilter):
|
||||
|
||||
self.generic = gtk.ComboBox()
|
||||
|
||||
SidebarFilter.__init__(self, dbstate, uistate)
|
||||
SidebarFilter.__init__(self, dbstate, uistate, "Note")
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
@ -84,7 +84,7 @@ class NoteSidebarFilter(SidebarFilter):
|
||||
self.add_text_entry(_('ID'), self.filter_id)
|
||||
self.add_text_entry(_('Text'), self.filter_text)
|
||||
self.add_entry(_('Type'), self.ntype)
|
||||
self.add_entry(_('Custom filter'), self.generic)
|
||||
self.add_filter_entry(_('Custom filter'), self.generic)
|
||||
self.add_entry(None, self.filter_regex)
|
||||
|
||||
def clear(self, obj):
|
||||
|
@ -51,7 +51,6 @@ from Filters.Rules.Person import (RegExpName, SearchName, RegExpIdOf,
|
||||
HasNoteMatchingSubstringOf, MatchesFilter)
|
||||
from Filters import GenericFilter, build_filter_model, Rules
|
||||
|
||||
|
||||
def extract_text(entry_widget):
|
||||
"""
|
||||
Extract the text from the entry widget, strips off any extra spaces,
|
||||
@ -102,7 +101,7 @@ class PersonSidebarFilter(SidebarFilter):
|
||||
|
||||
self.generic = gtk.ComboBox()
|
||||
|
||||
SidebarFilter.__init__(self, dbstate, uistate)
|
||||
SidebarFilter.__init__(self, dbstate, uistate, "Person")
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
@ -133,7 +132,7 @@ class PersonSidebarFilter(SidebarFilter):
|
||||
self.add_entry(_('Event'), self.etype)
|
||||
self.add_entry(_('Marker'), self.mtype)
|
||||
self.add_text_entry(_('Note'), self.filter_note)
|
||||
self.add_entry(_('Custom filter'), self.generic)
|
||||
self.add_filter_entry(_('Custom filter'), self.generic)
|
||||
self.add_entry(None, self.filter_regex)
|
||||
|
||||
def clear(self, obj):
|
||||
@ -146,7 +145,7 @@ class PersonSidebarFilter(SidebarFilter):
|
||||
self.etype.child.set_text(u'')
|
||||
self.mtype.child.set_text(u'')
|
||||
self.generic.set_active(0)
|
||||
|
||||
|
||||
def get_filter(self):
|
||||
"""
|
||||
Extracts the text strings from the sidebar, and uses them to build up
|
||||
|
@ -70,7 +70,7 @@ class PlaceSidebarFilter(SidebarFilter):
|
||||
self.filter_regex = gtk.CheckButton(_('Use regular expressions'))
|
||||
self.generic = gtk.ComboBox()
|
||||
|
||||
SidebarFilter.__init__(self, dbstate, uistate)
|
||||
SidebarFilter.__init__(self, dbstate, uistate, "Place")
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
@ -90,7 +90,7 @@ class PlaceSidebarFilter(SidebarFilter):
|
||||
self.add_text_entry(_('State'), self.filter_state)
|
||||
self.add_text_entry(_('Country'), self.filter_country)
|
||||
self.add_text_entry(_('Note'), self.filter_note)
|
||||
self.add_entry(_('Custom filter'), self.generic)
|
||||
self.add_filter_entry(_('Custom filter'), self.generic)
|
||||
self.add_entry(None, self.filter_regex)
|
||||
|
||||
def clear(self, obj):
|
||||
|
@ -77,7 +77,7 @@ class RepoSidebarFilter(SidebarFilter):
|
||||
|
||||
self.generic = gtk.ComboBox()
|
||||
|
||||
SidebarFilter.__init__(self, dbstate, uistate)
|
||||
SidebarFilter.__init__(self, dbstate, uistate, "Repository")
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
@ -93,7 +93,7 @@ class RepoSidebarFilter(SidebarFilter):
|
||||
self.add_text_entry(_('Address'), self.filter_address)
|
||||
self.add_text_entry(_('URL'), self.filter_url)
|
||||
self.add_text_entry(_('Note'), self.filter_note)
|
||||
self.add_entry(_('Custom filter'), self.generic)
|
||||
self.add_filter_entry(_('Custom filter'), self.generic)
|
||||
self.add_entry(None, self.filter_regex)
|
||||
|
||||
def clear(self, obj):
|
||||
|
@ -34,7 +34,7 @@ class SidebarFilter(object):
|
||||
_FILTER_WIDTH = 200
|
||||
_FILTER_ELLIPSIZE = pango.ELLIPSIZE_END
|
||||
|
||||
def __init__(self, dbstate, uistate):
|
||||
def __init__(self, dbstate, uistate, namespace):
|
||||
self.position = 1
|
||||
self.table = gtk.Table(4, 11)
|
||||
self.table.set_border_width(6)
|
||||
@ -48,6 +48,7 @@ class SidebarFilter(object):
|
||||
uistate.connect('filters-changed', self.on_filters_changed)
|
||||
self.uistate = uistate
|
||||
self.dbstate = dbstate
|
||||
self.namespace = namespace
|
||||
|
||||
def _init_interface(self):
|
||||
self.table.attach(widgets.MarkupLabel(_('<b>Filter</b>')),
|
||||
@ -138,3 +139,48 @@ class SidebarFilter(object):
|
||||
def on_filters_changed(self, namespace):
|
||||
pass
|
||||
|
||||
def add_filter_entry(self, text, widget):
|
||||
"""
|
||||
Adds the text and widget to GUI, with an Edit button.
|
||||
"""
|
||||
hbox = gtk.HBox()
|
||||
hbox.pack_start(widget)
|
||||
hbox.pack_start(widgets.SimpleButton(gtk.STOCK_EDIT, self.edit_filter))
|
||||
self.add_entry(text, hbox)
|
||||
|
||||
def edit_filter(self, obj):
|
||||
"""
|
||||
Callback which invokes the EditFilter dialog. Will create new
|
||||
filter if called if none is selected.
|
||||
"""
|
||||
from gui.filtereditor import EditFilter
|
||||
from Filters import FilterList, GenericFilterFactory
|
||||
import const
|
||||
the_filter = None
|
||||
filterdb = FilterList(const.CUSTOM_FILTERS)
|
||||
filterdb.load()
|
||||
if self.generic.get_active() != 0:
|
||||
model = self.generic.get_model()
|
||||
node = self.generic.get_active_iter()
|
||||
if node:
|
||||
sel_filter = model.get_value(node, 1)
|
||||
# the_filter needs to be a particular object for editor
|
||||
for filt in filterdb.get_filters(self.namespace):
|
||||
if filt.get_name() == sel_filter.get_name():
|
||||
the_filter = filt
|
||||
else:
|
||||
the_filter = GenericFilterFactory(self.namespace)()
|
||||
if the_filter:
|
||||
EditFilter(self.namespace, self.dbstate, self.uistate, [],
|
||||
the_filter, filterdb,
|
||||
lambda : self.edit_filter_save(filterdb))
|
||||
|
||||
def edit_filter_save(self, filterdb):
|
||||
"""
|
||||
If a filter changed, save them all. Reloads, and also calls callback.
|
||||
"""
|
||||
from Filters import reload_custom_filters
|
||||
filterdb.save()
|
||||
reload_custom_filters()
|
||||
self.on_filters_changed(self.namespace)
|
||||
|
||||
|
@ -65,7 +65,7 @@ class SourceSidebarFilter(SidebarFilter):
|
||||
|
||||
self.generic = gtk.ComboBox()
|
||||
|
||||
SidebarFilter.__init__(self, dbstate, uistate)
|
||||
SidebarFilter.__init__(self, dbstate, uistate, "Source")
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
@ -80,7 +80,7 @@ class SourceSidebarFilter(SidebarFilter):
|
||||
self.add_text_entry(_('Author'), self.filter_author)
|
||||
self.add_text_entry(_('Publication'), self.filter_pub)
|
||||
self.add_text_entry(_('Note'), self.filter_note)
|
||||
self.add_entry(_('Custom filter'), self.generic)
|
||||
self.add_filter_entry(_('Custom filter'), self.generic)
|
||||
self.add_entry(None, self.filter_regex)
|
||||
|
||||
def clear(self, obj):
|
||||
|
Loading…
x
Reference in New Issue
Block a user