From a2734ca3e7fe073b45e885645bd1587e04716bf9 Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Fri, 18 Apr 2008 03:36:38 +0000 Subject: [PATCH] rows can now be deleted from a table, just people currently svn: r10581 --- src/plugins/DefaultGramplets.py | 34 +++++++++++++++++---------------- src/plugins/Query.py | 31 ++++++++++++++++++++++-------- 2 files changed, 41 insertions(+), 24 deletions(-) diff --git a/src/plugins/DefaultGramplets.py b/src/plugins/DefaultGramplets.py index 3fe10c0c4..cfd28ea01 100644 --- a/src/plugins/DefaultGramplets.py +++ b/src/plugins/DefaultGramplets.py @@ -792,6 +792,8 @@ class PythonGramplet(Gramplet): line = line[1:].strip() else: self.append_text("%s " % self.prompt) + end = buffer.get_end_iter() + buffer.place_cursor(end) return True if echo: self.append_text(("%s " % self.prompt) + line) @@ -807,6 +809,22 @@ class PythonGramplet(Gramplet): return True return False +class QueryGramplet(PythonGramplet): + def init(self): + self.prompt = "$" + self.tooltip = _("Enter SQL query") + # GUI setup: + self.gui.textview.set_editable(True) + self.set_text("Structured Query Language\n%s " % self.prompt) + self.gui.textview.connect('key-press-event', self.on_key_press) + + def process_command(self, command): + retval = run_quick_report_by_name(self.gui.dbstate, + self.gui.uistate, + 'query', + command) + return retval + class TODOGramplet(Gramplet): def init(self): # GUI setup: @@ -990,22 +1008,6 @@ class AgeOnDateGramplet(Gramplet): 'ageondate', date) -class QueryGramplet(PythonGramplet): - def init(self): - self.prompt = "$" - self.tooltip = _("Enter SQL query") - # GUI setup: - self.gui.textview.set_editable(True) - self.set_text("Structured Query Language\n%s " % self.prompt) - self.gui.textview.connect('key-press-event', self.on_key_press) - - def process_command(self, command): - retval = run_quick_report_by_name(self.gui.dbstate, - self.gui.uistate, - 'query', - command) - return retval - register(type="gramplet", name= "Top Surnames Gramplet", tname=_("Top Surnames Gramplet"), diff --git a/src/plugins/Query.py b/src/plugins/Query.py index 5883f1790..5ecb1e7cc 100644 --- a/src/plugins/Query.py +++ b/src/plugins/Query.py @@ -284,9 +284,7 @@ class DBI: self.stab = SimpleTable(self.sdb) self.select = 0 self.progress = Utils.ProgressMeter(_('Processing Query')) - # display the title - if self.command == "select": - self.select_table() + self.process_table() if self.select > 0: self.sdoc = SimpleDoc(self.document) self.sdoc.title(self.query) @@ -306,8 +304,16 @@ class DBI: return ("grampsid", "type", "date", "description", "place", "change", "marker", "private") + # families = grampsid, father, mother, relationship, date + # sources = + # places = + # media = + # repos = + # notes = + else: + raise AttributeError("unknown table: '%s'" % table) - def select_table(self): + def process_table(self): for col_name in self.columns[:]: # copy if col_name == "*": self.columns.remove('*') @@ -385,10 +391,19 @@ class DBI: result = True if result: self.select += 1 - self.stab.row(*row) - for (col, value) in sorts: - self.stab.row_sort_val(col, value) - + if self.command == "select": + self.stab.row(*row) + for (col, value) in sorts: + self.stab.row_sort_val(col, value) + elif self.command == "delete": + self.database.active = person + trans = self.database.transaction_begin() + active_name = _("Delete Person (%s)") % self.sdb.name(person) + gen.utils.delete_person_from_database(self.database, person, trans) + # FIXME: delete familes, events, notes, resources, etc, if possible + self.database.transaction_commit(trans, active_name) + else: + raise AttributeError("unknown command: '%s'", self.command) def run(database, document, query): """