2008-01-30 Raphael Ackermann <raphael.ackermann@gmail.com>
* src/FilterEditor/_FilterEditor.py: pylint fixes and work on 0001660: Title for all Edit Filter windows not translated correctly svn: r9965
This commit is contained in:
parent
e16c8973c5
commit
6374fa2163
@ -1,3 +1,7 @@
|
||||
2008-01-30 Raphael Ackermann <raphael.ackermann@gmail.com>
|
||||
* src/FilterEditor/_FilterEditor.py: pylint fixes and
|
||||
work on 0001660: Title for all Edit Filter windows not translated correctly
|
||||
|
||||
2008-01-30 Raphael Ackermann <raphael.ackermann@gmail.com>
|
||||
* src/FilterEditor/_EditFilter.py: self.space --> self.namespace
|
||||
* src/FilterEditor/_FilterEditor.py: self.space --> self.namespace
|
||||
|
@ -58,12 +58,20 @@ from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
import ListModel
|
||||
import ManagedWindow
|
||||
from QuestionDialog import QuestionDialog
|
||||
from FilterEditor._EditFilter import EditFilter
|
||||
|
||||
# dictionary mapping FILTER_TYPE of views to Filter window name
|
||||
_TITLES = {
|
||||
'Person' : _("Person Filters"),
|
||||
'Family' : _('Family Filters'),
|
||||
'Event' : _('Event Filters'),
|
||||
'Place' : _('Place Filters'),
|
||||
'Source' : _('Source Filters'),
|
||||
'MediaObject' : _('Media Object Filters'),
|
||||
'Repository' : _('Repository Filters'),
|
||||
'Note' : _('Note Filters'),
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class FilterEditor(ManagedWindow.ManagedWindow):
|
||||
def __init__(self, namespace, filterdb, dbstate, uistate):
|
||||
|
||||
@ -88,7 +96,8 @@ class FilterEditor(ManagedWindow.ManagedWindow):
|
||||
|
||||
self.set_window(self.get_widget('filter_list'),
|
||||
self.get_widget('title'),
|
||||
_('%s filters') % _(self.namespace))
|
||||
_TITLES[self.namespace])
|
||||
# _('%s filters') % _(self.namespace))
|
||||
|
||||
self.edit.connect('clicked', self.edit_filter)
|
||||
self.clone.connect('clicked', self.clone_filter)
|
||||
@ -99,25 +108,25 @@ class FilterEditor(ManagedWindow.ManagedWindow):
|
||||
self.connect_button('close', self.close)
|
||||
self.connect_button('add', self.add_new_filter)
|
||||
|
||||
self.uistate.connect('filter-name-changed',self.clean_after_rename)
|
||||
self.uistate.connect('filter-name-changed', self.clean_after_rename)
|
||||
|
||||
self.clist = ListModel.ListModel(
|
||||
self.filter_list,
|
||||
[(_('Filter'),0,150),(_('Comment'),1,150)],
|
||||
self.filter_select_row,
|
||||
self.edit_filter)
|
||||
self.filter_list,
|
||||
[(_('Filter'), 0, 150), (_('Comment'), 1, 150)],
|
||||
self.filter_select_row,
|
||||
self.edit_filter)
|
||||
self.draw_filters()
|
||||
self.show()
|
||||
|
||||
def build_menu_names(self, obj):
|
||||
return (_("Custom Filter Editor"), _("Custom Filter Editor"))
|
||||
|
||||
def help_clicked(self,obj):
|
||||
def help_clicked(self, obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
GrampsDisplay.help('tools-util-cfe')
|
||||
|
||||
def filter_select_row(self,obj):
|
||||
store,node = self.clist.get_selected()
|
||||
def filter_select_row(self, obj):
|
||||
store, node = self.clist.get_selected()
|
||||
if node:
|
||||
self.edit.set_sensitive(True)
|
||||
self.clone.set_sensitive(True)
|
||||
@ -129,61 +138,55 @@ class FilterEditor(ManagedWindow.ManagedWindow):
|
||||
self.delete.set_sensitive(False)
|
||||
self.test.set_sensitive(False)
|
||||
|
||||
def close(self,*obj):
|
||||
def close(self, *obj):
|
||||
self.filterdb.save()
|
||||
reload_custom_filters()
|
||||
reload_system_filters()
|
||||
self.uistate.emit('filters-changed',(self.namespace,))
|
||||
ManagedWindow.ManagedWindow.close(self,*obj)
|
||||
self.uistate.emit('filters-changed', (self.namespace,))
|
||||
ManagedWindow.ManagedWindow.close(self, *obj)
|
||||
|
||||
def draw_filters(self):
|
||||
self.clist.clear()
|
||||
for f in self.filterdb.get_filters(self.namespace):
|
||||
self.clist.add([f.get_name(),f.get_comment()],f)
|
||||
|
||||
def add_new_filter(self,obj):
|
||||
from _EditFilter import EditFilter
|
||||
self.clist.add([f.get_name(), f.get_comment()], f)
|
||||
|
||||
def add_new_filter(self, obj):
|
||||
the_filter = GenericFilterFactory(self.namespace)()
|
||||
EditFilter(self.namespace, self.dbstate, self.uistate, self.track,
|
||||
the_filter, self.filterdb, self.draw_filters)
|
||||
|
||||
def edit_filter(self,obj):
|
||||
store,node = self.clist.get_selected()
|
||||
def edit_filter(self, obj):
|
||||
store, node = self.clist.get_selected()
|
||||
if node:
|
||||
from _EditFilter import EditFilter
|
||||
|
||||
gfilter = self.clist.get_object(node)
|
||||
EditFilter(self.namespace, self.dbstate, self.uistate, self.track,
|
||||
gfilter, self.filterdb, self.draw_filters)
|
||||
|
||||
def clone_filter(self,obj):
|
||||
store,node = self.clist.get_selected()
|
||||
def clone_filter(self, obj):
|
||||
store, node = self.clist.get_selected()
|
||||
if node:
|
||||
from _EditFilter import EditFilter
|
||||
|
||||
old_filter = self.clist.get_object(node)
|
||||
the_filter = GenericFilterFactory(self.namespace)(old_filter)
|
||||
the_filter.set_name('')
|
||||
EditFilter(self.namespace, self.dbstate, self.uistate, self.track,
|
||||
the_filter, self.filterdb, self.draw_filters)
|
||||
|
||||
def test_clicked(self,obj):
|
||||
store,node = self.clist.get_selected()
|
||||
def test_clicked(self, obj):
|
||||
store, node = self.clist.get_selected()
|
||||
if node:
|
||||
from _ShowResults import ShowResults
|
||||
from FilterEditor._ShowResults import ShowResults
|
||||
|
||||
filt = self.clist.get_object(node)
|
||||
handle_list = filt.apply(self.db,self.get_all_handles())
|
||||
handle_list = filt.apply(self.db, self.get_all_handles())
|
||||
ShowResults(self.db, self.uistate, self.track, handle_list,
|
||||
filt.get_name(),self.namespace)
|
||||
|
||||
def delete_filter(self,obj):
|
||||
store,node = self.clist.get_selected()
|
||||
def delete_filter(self, obj):
|
||||
store, node = self.clist.get_selected()
|
||||
if node:
|
||||
gfilter = self.clist.get_object(node)
|
||||
name = gfilter.get_name()
|
||||
if self.check_recursive_filters(self.namespace,name):
|
||||
if self.check_recursive_filters(self.namespace, name):
|
||||
QuestionDialog( _('Delete Filter?'),
|
||||
_('This filter is currently being used '
|
||||
'as the base for other filters. Deleting'
|
||||
@ -196,23 +199,23 @@ class FilterEditor(ManagedWindow.ManagedWindow):
|
||||
self._do_delete_selected_filter()
|
||||
|
||||
def _do_delete_selected_filter(self):
|
||||
store,node = self.clist.get_selected()
|
||||
store, node = self.clist.get_selected()
|
||||
if node:
|
||||
gfilter = self.clist.get_object(node)
|
||||
self._do_delete_filter(self.namespace,gfilter)
|
||||
self._do_delete_filter(self.namespace, gfilter)
|
||||
self.draw_filters()
|
||||
|
||||
def _do_delete_filter(self,space,gfilter):
|
||||
def _do_delete_filter(self, space, gfilter):
|
||||
# Find everything we need to remove
|
||||
filter_set = set()
|
||||
self._find_dependent_filters(space,gfilter,filter_set)
|
||||
self._find_dependent_filters(space, gfilter, filter_set)
|
||||
|
||||
# Remove what we found
|
||||
filters = self.filterdb.get_filters(space)
|
||||
for the_filter in filter_set:
|
||||
filters.remove(the_filter)
|
||||
|
||||
def _find_dependent_filters(self,space,gfilter,filter_set):
|
||||
def _find_dependent_filters(self, space, gfilter, filter_set):
|
||||
"""
|
||||
This method recursively calls itself to find all filters that
|
||||
depend on the given filter, either directly through one of the rules,
|
||||
@ -225,9 +228,9 @@ class FilterEditor(ManagedWindow.ManagedWindow):
|
||||
for the_filter in filters:
|
||||
for rule in the_filter.get_rules():
|
||||
values = rule.values()
|
||||
if issubclass(rule.__class__,MatchesFilterBase) \
|
||||
if issubclass(rule.__class__, MatchesFilterBase) \
|
||||
and (name in values):
|
||||
self._find_dependent_filters(space,the_filter,filter_set)
|
||||
self._find_dependent_filters(space, the_filter, filter_set)
|
||||
break
|
||||
# Add itself to the filter_set
|
||||
filter_set.add(gfilter)
|
||||
@ -250,7 +253,7 @@ class FilterEditor(ManagedWindow.ManagedWindow):
|
||||
elif self.namespace == 'Note':
|
||||
return self.db.get_note_handles()
|
||||
|
||||
def clean_after_rename(self,space,old_name,new_name):
|
||||
def clean_after_rename(self, space, old_name, new_name):
|
||||
if old_name == "":
|
||||
return
|
||||
|
||||
@ -260,16 +263,16 @@ class FilterEditor(ManagedWindow.ManagedWindow):
|
||||
for the_filter in self.filterdb.get_filters(space):
|
||||
for rule in the_filter.get_rules():
|
||||
values = rule.values()
|
||||
if issubclass(rule.__class__,MatchesFilterBase) \
|
||||
if issubclass(rule.__class__, MatchesFilterBase) \
|
||||
and (old_name in values):
|
||||
ind = values.index(old_name)
|
||||
values[ind] = new_name
|
||||
|
||||
def check_recursive_filters(self,space,name):
|
||||
def check_recursive_filters(self, space, name):
|
||||
for the_filter in self.filterdb.get_filters(space):
|
||||
for rule in the_filter.get_rules():
|
||||
values = rule.values()
|
||||
if issubclass(rule.__class__,MatchesFilterBase) \
|
||||
if issubclass(rule.__class__, MatchesFilterBase) \
|
||||
and (name in values):
|
||||
return True
|
||||
return False
|
||||
|
Loading…
Reference in New Issue
Block a user