Refactor make_filter for use in other parts of gramps
svn: r15775
This commit is contained in:
parent
b253edb7dd
commit
19e662fd97
@ -198,6 +198,7 @@ src/gui/dbloader.py
|
||||
src/gui/dbman.py
|
||||
src/gui/filtereditor.py
|
||||
src/gui/grampsgui.py
|
||||
src/gui/makefilter.py
|
||||
src/gui/pluginmanager.py
|
||||
src/gui/utils.py
|
||||
src/gui/viewmanager.py
|
||||
|
@ -53,6 +53,7 @@ from gen.ggettext import sgettext as _
|
||||
from constfunc import mac
|
||||
from glade import Glade
|
||||
from DdTargets import DdTargets
|
||||
from gui.makefilter import make_filter
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -1466,7 +1467,7 @@ class ScratchPadWindow(ManagedWindow.ManagedWindow):
|
||||
self.clear_all_btn = self.top.get_object("btn_clear_all")
|
||||
self.clear_btn = self.top.get_object("btn_clear")
|
||||
objectlist = self.top.get_object('objectlist')
|
||||
mtv = MultiTreeView(self.dbstate, self.uistate)
|
||||
mtv = MultiTreeView(self.dbstate, self.uistate, _("Clipboard"))
|
||||
scrolledwindow = self.top.get_object('scrolledwindow86')
|
||||
scrolledwindow.remove(objectlist)
|
||||
scrolledwindow.add_with_viewport(mtv)
|
||||
@ -1545,9 +1546,10 @@ class MultiTreeView(gtk.TreeView):
|
||||
'''
|
||||
TreeView that captures mouse events to make drag and drop work properly
|
||||
'''
|
||||
def __init__(self, dbstate, uistate):
|
||||
def __init__(self, dbstate, uistate, title=None):
|
||||
self.dbstate = dbstate
|
||||
self.uistate = uistate
|
||||
self.title = title if title else _("Clipboard")
|
||||
super(MultiTreeView, self).__init__()
|
||||
self.connect('button_press_event', self.on_button_press)
|
||||
self.connect('button_release_event', self.on_button_release)
|
||||
@ -1613,7 +1615,8 @@ class MultiTreeView(gtk.TreeView):
|
||||
gids.add(obj.gramps_id)
|
||||
menu_item = gtk.MenuItem(_("Create Filter from selected %s...") % objclass)
|
||||
menu_item.connect("activate",
|
||||
lambda widget: self.make_filter(objclass, gids))
|
||||
lambda widget: make_filter(self.dbstate, self.uistate,
|
||||
objclass, gids, title=self.title))
|
||||
popup.append(menu_item)
|
||||
menu_item.show()
|
||||
# Show the popup menu:
|
||||
@ -1718,37 +1721,6 @@ class MultiTreeView(gtk.TreeView):
|
||||
except Errors.WindowActiveError:
|
||||
pass
|
||||
|
||||
def make_filter(self, objclass, gramps_ids):
|
||||
import time
|
||||
import Filters
|
||||
from gui.filtereditor import EditFilter
|
||||
import const
|
||||
|
||||
FilterClass = Filters.GenericFilterFactory(objclass)
|
||||
rule = getattr(getattr(Filters.Rules, objclass),'RegExpIdOf')
|
||||
filter = FilterClass()
|
||||
filter.set_name(_("Filter %s from Clipboard") % objclass)
|
||||
struct_time = time.localtime()
|
||||
filter.set_comment( _("Created on %4d/%02d/%02d") %
|
||||
(struct_time.tm_year, struct_time.tm_mon, struct_time.tm_mday))
|
||||
re = "|".join(["^%s$" % gid for gid in gramps_ids])
|
||||
filter.add_rule(rule([re]))
|
||||
|
||||
filterdb = Filters.FilterList(const.CUSTOM_FILTERS)
|
||||
filterdb.load()
|
||||
EditFilter(objclass, self.dbstate, self.uistate, [],
|
||||
filter, filterdb,
|
||||
lambda : self.edit_filter_save(filterdb, objclass))
|
||||
|
||||
def edit_filter_save(self, filterdb, objclass):
|
||||
"""
|
||||
If a filter changed, save them all. Reloads, and also calls callback.
|
||||
"""
|
||||
from Filters import reload_custom_filters
|
||||
filterdb.save()
|
||||
reload_custom_filters()
|
||||
self.uistate.emit('filters-changed', (objclass,))
|
||||
|
||||
def short(val,size=60):
|
||||
if len(val) > size:
|
||||
return "%s..." % val[0:size]
|
||||
|
@ -22,6 +22,7 @@ pkgdata_PYTHON = \
|
||||
dbman.py \
|
||||
filtereditor.py \
|
||||
grampsgui.py \
|
||||
makefilter.py \
|
||||
pluginmanager.py \
|
||||
sidebar.py \
|
||||
utils.py \
|
||||
|
Loading…
Reference in New Issue
Block a user