From 19e662fd97b06cca5e066ffccc915f195e7df8dc Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Thu, 19 Aug 2010 14:45:49 +0000 Subject: [PATCH] Refactor make_filter for use in other parts of gramps svn: r15775 --- po/POTFILES.in | 1 + src/ScratchPad.py | 40 ++++++---------------------------------- src/gui/Makefile.am | 1 + 3 files changed, 8 insertions(+), 34 deletions(-) diff --git a/po/POTFILES.in b/po/POTFILES.in index b2b5384de..559514e1c 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -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 diff --git a/src/ScratchPad.py b/src/ScratchPad.py index f714babe3..d14b9bc39 100644 --- a/src/ScratchPad.py +++ b/src/ScratchPad.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] diff --git a/src/gui/Makefile.am b/src/gui/Makefile.am index c9094d8d0..c08522a5b 100644 --- a/src/gui/Makefile.am +++ b/src/gui/Makefile.am @@ -22,6 +22,7 @@ pkgdata_PYTHON = \ dbman.py \ filtereditor.py \ grampsgui.py \ + makefilter.py \ pluginmanager.py \ sidebar.py \ utils.py \