diff --git a/src/plugins/eval.glade b/src/plugins/eval.glade new file mode 100644 index 000000000..34b3dd890 --- /dev/null +++ b/src/plugins/eval.glade @@ -0,0 +1,235 @@ + + + + + + + + True + + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + 450 + 500 + True + False + + + + 6 + True + False + 6 + + + + True + + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + 6 + True + 4 + 2 + False + 6 + 6 + + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + GTK_JUSTIFY_LEFT + GTK_WRAP_NONE + True + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + 1 + 2 + 1 + 2 + + + + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + False + GTK_JUSTIFY_LEFT + GTK_WRAP_NONE + True + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + 1 + 2 + 3 + 4 + fill + + + + + + True + <b>Evaluation Window</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + + + 0 + 2 + 0 + 1 + fill + + + + + + + True + <b>Output Window</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + + + 0 + 2 + 2 + 3 + fill + + + + + + 0 + True + True + + + + + + 6 + True + GTK_BUTTONBOX_END + 6 + + + + True + True + True + gtk-clear + True + GTK_RELIEF_NORMAL + + + + + + + True + True + True + gtk-apply + True + GTK_RELIEF_NORMAL + + + + + + + True + True + True + gtk-close + True + GTK_RELIEF_NORMAL + + + + + + 0 + False + True + + + + + + + diff --git a/src/plugins/eval.py b/src/plugins/eval.py new file mode 100644 index 000000000..116b6c95b --- /dev/null +++ b/src/plugins/eval.py @@ -0,0 +1,75 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2003 Donald N. Allingham +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +""" +Provides a python evaluation window +""" +import os +import gtk +import gtk.glade + +from intl import gettext as _ + +class EvalWindow: + + def __init__(self): + glade_file = "%s/%s" % (os.path.dirname(__file__),"eval.glade") + self.glade = gtk.glade.XML(glade_file,"top") + + self.top = self.glade.get_widget("top") + self.display = self.glade.get_widget("display") + self.eval = self.glade.get_widget("eval") + self.ebuf = self.eval.get_buffer() + + self.glade.signal_autoconnect({ + "on_apply_clicked" : self.apply_clicked, + "on_close_clicked" : self.close_clicked, + "on_clear_clicked" : self.clear_clicked, + }) + + def apply_clicked(self,obj): + text = self.ebuf.get_text(self.ebuf.get_start_iter(), + self.ebuf.get_end_iter(),gtk.FALSE) + exec(text) + + def clear_clicked(self,obj): + pass + + def close_clicked(self,obj): + self.top.destroy() + + +#------------------------------------------------------------------------ +# +# +# +#------------------------------------------------------------------------ +from Plugins import register_tool + +def runtool(database,person,callback): + EvalWindow() + +register_tool( + runtool, + _("Python evaluation window"), + category=_("Debug"), + description=_("Provides a window that can evaluate python code") + ) + diff --git a/src/plugins/leak.glade b/src/plugins/leak.glade new file mode 100644 index 000000000..057d7035e --- /dev/null +++ b/src/plugins/leak.glade @@ -0,0 +1,163 @@ + + + + + + + + True + + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + 450 + 500 + True + False + + + + 6 + True + False + 6 + + + + True + + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + 6 + True + 2 + 2 + False + 6 + 6 + + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + GTK_JUSTIFY_LEFT + GTK_WRAP_NONE + True + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + 1 + 2 + 1 + 2 + + + + + + True + <b>Uncollected Objects</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + + + 0 + 2 + 0 + 1 + fill + + + + + + 0 + True + True + + + + + + 6 + True + GTK_BUTTONBOX_END + 6 + + + + True + True + True + gtk-refresh + True + GTK_RELIEF_NORMAL + + + + + + + True + True + True + gtk-close + True + GTK_RELIEF_NORMAL + + + + + + 0 + False + True + + + + + + + diff --git a/src/plugins/leak.py b/src/plugins/leak.py new file mode 100644 index 000000000..ec2a58b52 --- /dev/null +++ b/src/plugins/leak.py @@ -0,0 +1,82 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2003 Donald N. Allingham +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +""" +Provides a python evaluation window +""" +import os +import gtk +import gtk.glade +import gc +import string + +from intl import gettext as _ + +class EvalWindow: + + def __init__(self): + glade_file = "%s/%s" % (os.path.dirname(__file__),"leak.glade") + self.glade = gtk.glade.XML(glade_file,"top") + + self.top = self.glade.get_widget("top") + self.eval = self.glade.get_widget("eval") + self.ebuf = self.eval.get_buffer() + gc.set_debug(gc.DEBUG_UNCOLLECTABLE | gc.DEBUG_OBJECTS | gc.DEBUG_SAVEALL) + + self.glade.signal_autoconnect({ + "on_apply_clicked" : self.apply_clicked, + "on_close_clicked" : self.close_clicked, + }) + self.display() + + def display(self): + gc.collect() + mylist = [] + if len(gc.garbage): + for each in gc.garbage: + mylist.append(str(each)) + self.ebuf.set_text("Uncollected objects:\n\n" + string.join(mylist,'\n\n')) + else: + self.ebuf.set_text("No uncollected objects\n" + str(gc.get_debug())) + + def apply_clicked(self,obj): + self.display() + + def close_clicked(self,obj): + self.top.destroy() + + +#------------------------------------------------------------------------ +# +# +# +#------------------------------------------------------------------------ +from Plugins import register_tool + +def runtool(database,person,callback): + EvalWindow() + +register_tool( + runtool, + _("Show uncollected objects"), + category=_("Debug"), + description=_(""), + ) +