* src/plugins/RemoveUnused.py: remove unused sources and events, and UI
svn: r7560
This commit is contained in:
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
2006-11-05 Don Allingham <don@gramps-project.org>
|
2006-11-05 Don Allingham <don@gramps-project.org>
|
||||||
* src/plugins/Makefile.am: add RemoveUnused.py
|
* src/plugins/Makefile.am: add RemoveUnused.py
|
||||||
* src/plugins/RemoveUnused.py: remove unused sources and events
|
* src/plugins/RemoveUnused.py: remove unused sources and events, and UI
|
||||||
* src/DataViews/_PersonView.py: provide a default surname for and Add
|
* src/DataViews/_PersonView.py: provide a default surname for and Add
|
||||||
Person button press based of selected item in the Person View tree.
|
Person button press based of selected item in the Person View tree.
|
||||||
* help/C/various: remove unused files from manual
|
* help/C/various: remove unused files from manual
|
||||||
|
@ -66,33 +66,73 @@ from QuestionDialog import OkDialog, MissingMediaDialog
|
|||||||
# runTool
|
# runTool
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
class RemoveUnused(Tool.BatchTool):
|
class RemoveUnused:
|
||||||
def __init__(self, dbstate, uistate, options_class, name, callback=None):
|
def __init__(self, dbstate, uistate, options_class, name, callback=None):
|
||||||
|
|
||||||
Tool.BatchTool.__init__(self, dbstate, options_class, name)
|
self.db = dbstate.db
|
||||||
if self.fail:
|
self.dbstate = dbstate
|
||||||
return
|
self.uistate = uistate
|
||||||
|
|
||||||
cli = uistate == None
|
|
||||||
|
|
||||||
if self.db.readonly:
|
if self.db.readonly:
|
||||||
# TODO: split plugin in a check and repair part to support
|
|
||||||
# checking of a read only database
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if uistate:
|
||||||
|
self.init_gui()
|
||||||
|
else:
|
||||||
|
self.run_tool(cli=True)
|
||||||
|
|
||||||
|
def init_gui(self):
|
||||||
|
a = gtk.Dialog("%s - GRAMPS" % _('Remove unused objects'),
|
||||||
|
flags=gtk.DIALOG_MODAL,
|
||||||
|
buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
|
||||||
|
gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
|
||||||
|
|
||||||
|
a.set_size_request(400, 200)
|
||||||
|
a.set_border_width(12)
|
||||||
|
a.set_has_separator(False)
|
||||||
|
|
||||||
|
self.event = gtk.CheckButton(_('Remove unused events'))
|
||||||
|
self.source = gtk.CheckButton(_('Remove unused sources'))
|
||||||
|
self.place = gtk.CheckButton(_('Remove unused places'))
|
||||||
|
|
||||||
|
self.event.set_active(True)
|
||||||
|
self.source.set_active(True)
|
||||||
|
self.place.set_active(True)
|
||||||
|
|
||||||
|
label = gtk.Label('<span size="larger" weight="bold">%s</span>' % _('Remove unused objects'))
|
||||||
|
label.set_use_markup(True)
|
||||||
|
|
||||||
|
a.vbox.add(label)
|
||||||
|
a.vbox.add(self.event)
|
||||||
|
a.vbox.add(self.source)
|
||||||
|
a.vbox.add(self.place)
|
||||||
|
a.vbox.show_all()
|
||||||
|
result = a.run()
|
||||||
|
a.destroy()
|
||||||
|
|
||||||
|
if result == gtk.RESPONSE_ACCEPT:
|
||||||
|
self.run_tool(self.event.get_active(),
|
||||||
|
self.source.get_active(),
|
||||||
|
self.place.get_active())
|
||||||
|
|
||||||
|
def run_tool(self, clean_events, clean_sources, clean_places):
|
||||||
trans = self.db.transaction_begin("",batch=True)
|
trans = self.db.transaction_begin("",batch=True)
|
||||||
self.db.disable_signals()
|
self.db.disable_signals()
|
||||||
checker = CheckIntegrity(dbstate, uistate, trans)
|
checker = CheckIntegrity(self.dbstate, self.uistate, trans)
|
||||||
|
if clean_events:
|
||||||
checker.cleanup_events()
|
checker.cleanup_events()
|
||||||
|
if clean_sources:
|
||||||
checker.cleanup_sources()
|
checker.cleanup_sources()
|
||||||
|
if clean_places:
|
||||||
|
checker.cleanup_places()
|
||||||
|
|
||||||
self.db.transaction_commit(trans, _("Remove unused objects"))
|
self.db.transaction_commit(trans, _("Remove unused objects"))
|
||||||
self.db.enable_signals()
|
self.db.enable_signals()
|
||||||
self.db.request_rebuild()
|
self.db.request_rebuild()
|
||||||
|
|
||||||
errs = checker.build_report(cli)
|
errs = checker.build_report()
|
||||||
if errs:
|
if errs:
|
||||||
Report(uistate, checker.text.getvalue(),cli)
|
Report(uistate, checker.text.getvalue())
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -128,6 +168,17 @@ class CheckIntegrity:
|
|||||||
self.db.remove_event(handle)
|
self.db.remove_event(handle)
|
||||||
self.source_cnt += 1
|
self.source_cnt += 1
|
||||||
|
|
||||||
|
def cleanup_places(self):
|
||||||
|
self.progress.set_pass(_('Removing unused places'),
|
||||||
|
self.db.get_number_of_places())
|
||||||
|
|
||||||
|
self.source_cnt = 0
|
||||||
|
for handle in self.db.place_map.keys():
|
||||||
|
event = self.db.get_place_from_handle(handle)
|
||||||
|
if not self.db.find_backlink_handles(handle):
|
||||||
|
self.db.remove_place(handle)
|
||||||
|
self.source_cnt += 1
|
||||||
|
|
||||||
def build_report(self,cl=0):
|
def build_report(self,cl=0):
|
||||||
self.progress.close()
|
self.progress.close()
|
||||||
|
|
||||||
@ -201,6 +252,24 @@ class CheckOptions(Tool.ToolOptions):
|
|||||||
def __init__(self,name,person_id=None):
|
def __init__(self,name,person_id=None):
|
||||||
Tool.ToolOptions.__init__(self,name,person_id)
|
Tool.ToolOptions.__init__(self,name,person_id)
|
||||||
|
|
||||||
|
def set_new_options(self):
|
||||||
|
self.options_dict = {
|
||||||
|
'rm_src' : 1,
|
||||||
|
'rm_event' : 1,
|
||||||
|
'rm_place' : 1,
|
||||||
|
}
|
||||||
|
self.options_help = {
|
||||||
|
'rm_src' : ("=0/1","Whether to remove unused sources",
|
||||||
|
["Do not remove unused sources","Remove unused sources"],
|
||||||
|
True),
|
||||||
|
'rm_event' : ("=0/1","Whether to remove unused events",
|
||||||
|
["Do not remove unused events","Remove unused events"],
|
||||||
|
True),
|
||||||
|
'rm_place' : ("=0/1","Whether to remove unused places",
|
||||||
|
["Do not remove unused places","Remove unused places"],
|
||||||
|
True),
|
||||||
|
}
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
@ -211,7 +280,7 @@ register_tool(
|
|||||||
category = Tool.TOOL_DBFIX,
|
category = Tool.TOOL_DBFIX,
|
||||||
tool_class = RemoveUnused,
|
tool_class = RemoveUnused,
|
||||||
options_class = CheckOptions,
|
options_class = CheckOptions,
|
||||||
modes = Tool.MODE_GUI | Tool.MODE_CLI,
|
modes = Tool.MODE_GUI,
|
||||||
translated_name = _("Remove unused objects"),
|
translated_name = _("Remove unused objects"),
|
||||||
status = _("Stable"),
|
status = _("Stable"),
|
||||||
author_name = "Donald N. Allingham",
|
author_name = "Donald N. Allingham",
|
||||||
|
Reference in New Issue
Block a user