9795: remember the last location of windows [partial: some tools]
This commit is contained in:
parent
2577367f01
commit
341d48bd40
@ -336,7 +336,7 @@ class ManagedWindow:
|
|||||||
|
|
||||||
from .managedwindow import ManagedWindow
|
from .managedwindow import ManagedWindow
|
||||||
class SomeWindowClass(ManagedWindow):
|
class SomeWindowClass(ManagedWindow):
|
||||||
def __init__(self, uistate, dbstate, track, modal):
|
def __init__(self, uistate, track, obj, modal):
|
||||||
window_id = self # Or e.g. window_id = person.handle
|
window_id = self # Or e.g. window_id = person.handle
|
||||||
ManagedWindow.__init__(self,
|
ManagedWindow.__init__(self,
|
||||||
uistate,
|
uistate,
|
||||||
@ -354,10 +354,11 @@ class ManagedWindow:
|
|||||||
:param track: {list of parent windows, [] if the main GRAMPS window
|
:param track: {list of parent windows, [] if the main GRAMPS window
|
||||||
is the parent}
|
is the parent}
|
||||||
:param obj: The object that is used to id the managed window,
|
:param obj: The object that is used to id the managed window,
|
||||||
The inheriting object needs a method build_menu_names(self, obj)
|
The inheriting object needs a method
|
||||||
|
build_menu_names(self, obj)
|
||||||
which works on this obj and creates menu labels
|
which works on this obj and creates menu labels
|
||||||
for use in the Gramps Window Menu.
|
for use in the Gramps Window Menu.
|
||||||
If self.submenu_label ='' then leaf, otherwise branch
|
If self.submenu_label ='' then leaf, else branch
|
||||||
:param modal: True/False, if True, this window is made modal
|
:param modal: True/False, if True, this window is made modal
|
||||||
(always on top, and always has focus). Any child
|
(always on top, and always has focus). Any child
|
||||||
windows are also automatically made modal by moving
|
windows are also automatically made modal by moving
|
||||||
@ -425,8 +426,10 @@ class ManagedWindow:
|
|||||||
"""
|
"""
|
||||||
Set the window that is managed.
|
Set the window that is managed.
|
||||||
|
|
||||||
:param window: if isWindow=False window must be a Gtk.Window() object, otherwise None
|
:param window: if isWindow=False window must be a Gtk.Window() object
|
||||||
:param title: a label widget in which to write the title, None if not needed
|
(or a subclass such as Gtk.Dialog), otherwise None
|
||||||
|
:param title: a label widget in which to write the title,
|
||||||
|
else None if not needed
|
||||||
:param text: text to use as title of window and in title param
|
:param text: text to use as title of window and in title param
|
||||||
:param msg: if not None, use msg as title of window instead of text
|
:param msg: if not None, use msg as title of window instead of text
|
||||||
:param isWindow: {if isWindow than self is the window
|
:param isWindow: {if isWindow than self is the window
|
||||||
|
@ -883,7 +883,7 @@ class ToolManagedWindowBase(ManagedWindow):
|
|||||||
def pre_run(self):
|
def pre_run(self):
|
||||||
from ..utils import ProgressMeter
|
from ..utils import ProgressMeter
|
||||||
self.progress = ProgressMeter(self.get_title(),
|
self.progress = ProgressMeter(self.get_title(),
|
||||||
parent=self.uistate.window)
|
parent=self.window)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
raise NotImplementedError("tool needs to define a run() method")
|
raise NotImplementedError("tool needs to define a run() method")
|
||||||
|
@ -5,8 +5,6 @@
|
|||||||
<object class="GtkWindow" id="changenames">
|
<object class="GtkWindow" id="changenames">
|
||||||
<property name="visible">False</property>
|
<property name="visible">False</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="default_width">500</property>
|
|
||||||
<property name="default_height">450</property>
|
|
||||||
<signal name="delete-event" handler="on_delete_event" swapped="no"/>
|
<signal name="delete-event" handler="on_delete_event" swapped="no"/>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="vbox2">
|
<object class="GtkBox" id="vbox2">
|
||||||
|
@ -186,6 +186,7 @@ class ChangeNames(tool.BatchTool, ManagedWindow):
|
|||||||
|
|
||||||
self.list = self.top.get_object("list")
|
self.list = self.top.get_object("list")
|
||||||
self.set_window(window,self.top.get_object('title'),self.label)
|
self.set_window(window,self.top.get_object('title'),self.label)
|
||||||
|
self.setup_configs('interface.changenames', 500, 450)
|
||||||
|
|
||||||
self.model = Gtk.ListStore(GObject.TYPE_BOOLEAN, GObject.TYPE_STRING,
|
self.model = Gtk.ListStore(GObject.TYPE_BOOLEAN, GObject.TYPE_STRING,
|
||||||
GObject.TYPE_STRING)
|
GObject.TYPE_STRING)
|
||||||
|
@ -94,6 +94,7 @@ class ChangeTypes(tool.BatchTool, ManagedWindow):
|
|||||||
|
|
||||||
window = self.glade.toplevel
|
window = self.glade.toplevel
|
||||||
self.set_window(window,self.glade.get_object('title'),self.title)
|
self.set_window(window,self.glade.get_object('title'),self.title)
|
||||||
|
self.setup_configs('interface.changetypes', 640, 260)
|
||||||
|
|
||||||
self.glade.connect_signals({
|
self.glade.connect_signals({
|
||||||
"on_close_clicked" : self.close,
|
"on_close_clicked" : self.close,
|
||||||
|
@ -68,16 +68,16 @@ class DumpGenderStats(tool.Tool, ManagedWindow):
|
|||||||
|
|
||||||
treeview = Gtk.TreeView()
|
treeview = Gtk.TreeView()
|
||||||
model = ListModel(treeview, titles)
|
model = ListModel(treeview, titles)
|
||||||
for entry in stats_list:
|
for entry in sorted(stats_list):
|
||||||
model.add(entry, entry[0])
|
model.add(entry, entry[0])
|
||||||
|
|
||||||
window = Gtk.Window()
|
window = Gtk.Window() # TODO there needs to be a way to "close" it
|
||||||
window.set_default_size(400, 300)
|
|
||||||
s = Gtk.ScrolledWindow()
|
s = Gtk.ScrolledWindow()
|
||||||
s.add(treeview)
|
s.add(treeview)
|
||||||
window.add(s)
|
window.add(s)
|
||||||
window.show_all()
|
window.show_all()
|
||||||
self.set_window(window, None, self.label)
|
self.set_window(window, None, self.label)
|
||||||
|
self.setup_configs('interface.dumpgenderstats', 400, 300)
|
||||||
self.show()
|
self.show()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
@ -4,8 +4,6 @@
|
|||||||
<requires lib="gtk+" version="3.10"/>
|
<requires lib="gtk+" version="3.10"/>
|
||||||
<object class="GtkDialog" id="eventcmp">
|
<object class="GtkDialog" id="eventcmp">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="default_width">500</property>
|
|
||||||
<property name="default_height">400</property>
|
|
||||||
<property name="type_hint">dialog</property>
|
<property name="type_hint">dialog</property>
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
<object class="GtkBox" id="dialog-vbox3">
|
<object class="GtkBox" id="dialog-vbox3">
|
||||||
@ -139,7 +137,6 @@
|
|||||||
</object>
|
</object>
|
||||||
<object class="GtkDialog" id="filters">
|
<object class="GtkDialog" id="filters">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="default_width">400</property>
|
|
||||||
<property name="type_hint">dialog</property>
|
<property name="type_hint">dialog</property>
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
<object class="GtkBox" id="dialog-vbox5">
|
<object class="GtkBox" id="dialog-vbox5">
|
||||||
|
@ -138,6 +138,7 @@ class EventComparison(tool.Tool,ManagedWindow):
|
|||||||
self.label = _('Event comparison filter selection')
|
self.label = _('Event comparison filter selection')
|
||||||
self.set_window(window,self.filterDialog.get_object('title'),
|
self.set_window(window,self.filterDialog.get_object('title'),
|
||||||
self.label)
|
self.label)
|
||||||
|
self.setup_configs('interface.eventcomparison', 640, 220)
|
||||||
|
|
||||||
self.on_filters_changed('Person')
|
self.on_filters_changed('Person')
|
||||||
uistate.connect('filters-changed', self.on_filters_changed)
|
uistate.connect('filters-changed', self.on_filters_changed)
|
||||||
@ -193,7 +194,7 @@ class EventComparison(tool.Tool,ManagedWindow):
|
|||||||
WarningDialog(_("No matches were found"),
|
WarningDialog(_("No matches were found"),
|
||||||
parent=self.window)
|
parent=self.window)
|
||||||
else:
|
else:
|
||||||
DisplayChart(self.dbstate,self.uistate,plist,self.track)
|
EventComparisonResults(self.dbstate, self.uistate, plist, self.track)
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -217,7 +218,7 @@ def fix(line):
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
class DisplayChart(ManagedWindow):
|
class EventComparisonResults(ManagedWindow):
|
||||||
def __init__(self,dbstate,uistate,people_list,track):
|
def __init__(self,dbstate,uistate,people_list,track):
|
||||||
self.dbstate = dbstate
|
self.dbstate = dbstate
|
||||||
self.uistate = uistate
|
self.uistate = uistate
|
||||||
@ -241,6 +242,7 @@ class DisplayChart(ManagedWindow):
|
|||||||
window = self.topDialog.toplevel
|
window = self.topDialog.toplevel
|
||||||
self.set_window(window, self.topDialog.get_object('title'),
|
self.set_window(window, self.topDialog.get_object('title'),
|
||||||
_('Event Comparison Results'))
|
_('Event Comparison Results'))
|
||||||
|
self.setup_configs('interface.eventcomparisonresults', 750, 400)
|
||||||
|
|
||||||
self.eventlist = self.topDialog.get_object('treeview')
|
self.eventlist = self.topDialog.get_object('treeview')
|
||||||
self.sort = Sort(self.db)
|
self.sort = Sort(self.db)
|
||||||
@ -307,7 +309,7 @@ class DisplayChart(ManagedWindow):
|
|||||||
|
|
||||||
def build_row_data(self):
|
def build_row_data(self):
|
||||||
self.progress_bar = ProgressMeter(
|
self.progress_bar = ProgressMeter(
|
||||||
_('Comparing Events'), '', parent=self.window)
|
_('Comparing Events'), '', parent=self.uistate.window)
|
||||||
self.progress_bar.set_pass(_('Building data'),len(self.my_list))
|
self.progress_bar.set_pass(_('Building data'),len(self.my_list))
|
||||||
for individual_id in self.my_list:
|
for individual_id in self.my_list:
|
||||||
individual = self.db.get_person_from_handle(individual_id)
|
individual = self.db.get_person_from_handle(individual_id)
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
</object>
|
</object>
|
||||||
<object class="GtkDialog" id="finddupes">
|
<object class="GtkDialog" id="finddupes">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="default_width">350</property>
|
|
||||||
<property name="type_hint">dialog</property>
|
<property name="type_hint">dialog</property>
|
||||||
<signal name="delete-event" handler="on_delete_merge_event" swapped="no"/>
|
<signal name="delete-event" handler="on_delete_merge_event" swapped="no"/>
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
|
@ -84,7 +84,7 @@ def is_initial(name):
|
|||||||
# The Actual tool.
|
# The Actual tool.
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
class Merge(tool.Tool,ManagedWindow):
|
class DuplicatePeopleTool(tool.Tool, ManagedWindow):
|
||||||
|
|
||||||
def __init__(self, dbstate, user, options_class, name, callback=None):
|
def __init__(self, dbstate, user, options_class, name, callback=None):
|
||||||
uistate = user.uistate
|
uistate = user.uistate
|
||||||
@ -124,6 +124,7 @@ class Merge(tool.Tool,ManagedWindow):
|
|||||||
window = top.toplevel
|
window = top.toplevel
|
||||||
self.set_window(window, top.get_object('title'),
|
self.set_window(window, top.get_object('title'),
|
||||||
_('Find Possible Duplicate People'))
|
_('Find Possible Duplicate People'))
|
||||||
|
self.setup_configs('interface.duplicatepeopletool', 350, 220)
|
||||||
|
|
||||||
top.connect_signals({
|
top.connect_signals({
|
||||||
"on_do_merge_clicked" : self.__dummy,
|
"on_do_merge_clicked" : self.__dummy,
|
||||||
@ -178,8 +179,9 @@ class Merge(tool.Tool,ManagedWindow):
|
|||||||
parent=self.window)
|
parent=self.window)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
ShowMatches(self.dbstate,self.uistate,self.track,
|
DuplicatePeopleToolMatches(self.dbstate, self.uistate,
|
||||||
self.list,self.map,self.update)
|
self.track, self.list, self.map,
|
||||||
|
self.update)
|
||||||
except WindowActiveError:
|
except WindowActiveError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -533,7 +535,7 @@ class Merge(tool.Tool,ManagedWindow):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ShowMatches(ManagedWindow):
|
class DuplicatePeopleToolMatches(ManagedWindow):
|
||||||
|
|
||||||
def __init__(self, dbstate, uistate, track, the_list, the_map, callback):
|
def __init__(self, dbstate, uistate, track, the_list, the_map, callback):
|
||||||
ManagedWindow.__init__(self,uistate,track,self.__class__)
|
ManagedWindow.__init__(self,uistate,track,self.__class__)
|
||||||
@ -551,6 +553,7 @@ class ShowMatches(ManagedWindow):
|
|||||||
window = top.toplevel
|
window = top.toplevel
|
||||||
self.set_window(window, top.get_object('title'),
|
self.set_window(window, top.get_object('title'),
|
||||||
_('Potential Merges'))
|
_('Potential Merges'))
|
||||||
|
self.setup_configs('interface.duplicatepeopletoolmatches', 500, 350)
|
||||||
|
|
||||||
self.mlist = top.get_object("mlist")
|
self.mlist = top.get_object("mlist")
|
||||||
top.connect_signals({
|
top.connect_signals({
|
||||||
@ -665,7 +668,7 @@ def get_surnames(name):
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
class MergeOptions(tool.ToolOptions):
|
class DuplicatePeopleToolOptions(tool.ToolOptions):
|
||||||
"""
|
"""
|
||||||
Defines options and provides handling interface.
|
Defines options and provides handling interface.
|
||||||
"""
|
"""
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
</object>
|
</object>
|
||||||
<object class="GtkDialog" id="mergecitations">
|
<object class="GtkDialog" id="mergecitations">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="default_width">350</property>
|
|
||||||
<property name="type_hint">dialog</property>
|
<property name="type_hint">dialog</property>
|
||||||
<signal name="delete-event" handler="on_delete_merge_event" swapped="no"/>
|
<signal name="delete-event" handler="on_delete_merge_event" swapped="no"/>
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
|
@ -132,6 +132,7 @@ class MergeCitations(tool.BatchTool,ManagedWindow):
|
|||||||
self.set_window(window, top.get_object('title2'),
|
self.set_window(window, top.get_object('title2'),
|
||||||
_("Notes, media objects and data-items of matching "
|
_("Notes, media objects and data-items of matching "
|
||||||
"citations will be combined."))
|
"citations will be combined."))
|
||||||
|
self.setup_configs('interface.mergecitations', 700, 230)
|
||||||
|
|
||||||
top.connect_signals({
|
top.connect_signals({
|
||||||
"on_merge_ok_clicked" : self.on_merge_ok_clicked,
|
"on_merge_ok_clicked" : self.on_merge_ok_clicked,
|
||||||
@ -182,7 +183,7 @@ class MergeCitations(tool.BatchTool,ManagedWindow):
|
|||||||
self.options.handler.save_options()
|
self.options.handler.save_options()
|
||||||
|
|
||||||
self.progress = ProgressMeter(_('Checking Sources'), '',
|
self.progress = ProgressMeter(_('Checking Sources'), '',
|
||||||
parent=self.user.uistate.window)
|
parent=self.window)
|
||||||
self.progress.set_pass(_('Looking for citation fields'),
|
self.progress.set_pass(_('Looking for citation fields'),
|
||||||
self.db.get_number_of_citations())
|
self.db.get_number_of_citations())
|
||||||
|
|
||||||
@ -234,7 +235,7 @@ class MergeCitations(tool.BatchTool,ManagedWindow):
|
|||||||
ngettext("{number_of} citation merged",
|
ngettext("{number_of} citation merged",
|
||||||
"{number_of} citations merged", num_merges
|
"{number_of} citations merged", num_merges
|
||||||
).format(number_of=num_merges),
|
).format(number_of=num_merges),
|
||||||
parent=self.user.uistate.window)
|
parent=self.window)
|
||||||
self.close(obj)
|
self.close(obj)
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
|
@ -4,8 +4,6 @@
|
|||||||
<requires lib="gtk+" version="3.10"/>
|
<requires lib="gtk+" version="3.10"/>
|
||||||
<object class="GtkDialog" id="notrelated">
|
<object class="GtkDialog" id="notrelated">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="default_width">450</property>
|
|
||||||
<property name="default_height">400</property>
|
|
||||||
<property name="type_hint">dialog</property>
|
<property name="type_hint">dialog</property>
|
||||||
<signal name="delete-event" handler="on_delete_event" swapped="no"/>
|
<signal name="delete-event" handler="on_delete_event" swapped="no"/>
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
|
@ -93,6 +93,7 @@ class NotRelated(tool.ActivePersonTool, ManagedWindow) :
|
|||||||
window = topDialog.toplevel
|
window = topDialog.toplevel
|
||||||
title = topDialog.get_object("title")
|
title = topDialog.get_object("title")
|
||||||
self.set_window(window, title, self.title)
|
self.set_window(window, title, self.title)
|
||||||
|
self.setup_configs('interface.notrelated', 450, 400)
|
||||||
|
|
||||||
self.tagcombo = topDialog.get_object("tagcombo")
|
self.tagcombo = topDialog.get_object("tagcombo")
|
||||||
tagmodel = Gtk.ListStore(str)
|
tagmodel = Gtk.ListStore(str)
|
||||||
@ -108,7 +109,7 @@ class NotRelated(tool.ActivePersonTool, ManagedWindow) :
|
|||||||
|
|
||||||
# start the progress indicator
|
# start the progress indicator
|
||||||
self.progress = ProgressMeter(self.title, _('Starting'),
|
self.progress = ProgressMeter(self.title, _('Starting'),
|
||||||
parent=self.window)
|
parent=self.uistate.window)
|
||||||
|
|
||||||
# setup the columns
|
# setup the columns
|
||||||
self.model = Gtk.TreeStore(
|
self.model = Gtk.TreeStore(
|
||||||
|
@ -35,7 +35,6 @@
|
|||||||
<object class="GtkWindow" id="ownereditor">
|
<object class="GtkWindow" id="ownereditor">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="window_position">center</property>
|
<property name="window_position">center</property>
|
||||||
<property name="default_width">500</property>
|
|
||||||
<signal name="delete-event" handler="on_delete_event" swapped="no"/>
|
<signal name="delete-event" handler="on_delete_event" swapped="no"/>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkEventBox" id="eventbox">
|
<object class="GtkEventBox" id="eventbox">
|
||||||
|
@ -100,6 +100,7 @@ class OwnerEditor(tool.Tool, ManagedWindow):
|
|||||||
self.set_window(window,
|
self.set_window(window,
|
||||||
topDialog.get_object("title"),
|
topDialog.get_object("title"),
|
||||||
_("Database Owner Editor"))
|
_("Database Owner Editor"))
|
||||||
|
self.setup_configs('interface.ownereditor', 500, 400)
|
||||||
|
|
||||||
# move help button to the left side
|
# move help button to the left side
|
||||||
action_area = topDialog.get_object("action_area")
|
action_area = topDialog.get_object("action_area")
|
||||||
|
@ -4,8 +4,6 @@
|
|||||||
<requires lib="gtk+" version="3.10"/>
|
<requires lib="gtk+" version="3.10"/>
|
||||||
<object class="GtkDialog" id="removeunused">
|
<object class="GtkDialog" id="removeunused">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="default_width">500</property>
|
|
||||||
<property name="default_height">300</property>
|
|
||||||
<property name="type_hint">dialog</property>
|
<property name="type_hint">dialog</property>
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
<object class="GtkBox" id="dialog-vbox2">
|
<object class="GtkBox" id="dialog-vbox2">
|
||||||
|
@ -130,6 +130,7 @@ class RemoveUnused(tool.Tool, ManagedWindow, UpdateCallback):
|
|||||||
self.top = Glade()
|
self.top = Glade()
|
||||||
window = self.top.toplevel
|
window = self.top.toplevel
|
||||||
self.set_window(window, self.top.get_object('title'), self.title)
|
self.set_window(window, self.top.get_object('title'), self.title)
|
||||||
|
self.setup_configs('interface.removeunused', 400, 520)
|
||||||
|
|
||||||
self.events_box = self.top.get_object('events_box')
|
self.events_box = self.top.get_object('events_box')
|
||||||
self.sources_box = self.top.get_object('sources_box')
|
self.sources_box = self.top.get_object('sources_box')
|
||||||
|
@ -157,8 +157,8 @@ fname = 'finddupes.py',
|
|||||||
authors = ["Donald N. Allingham"],
|
authors = ["Donald N. Allingham"],
|
||||||
authors_email = ["don@gramps-project.org"],
|
authors_email = ["don@gramps-project.org"],
|
||||||
category = TOOL_DBPROC,
|
category = TOOL_DBPROC,
|
||||||
toolclass = 'Merge',
|
toolclass = 'DuplicatePeopleTool',
|
||||||
optionclass = 'MergeOptions',
|
optionclass = 'DuplicatePeopleToolOptions',
|
||||||
tool_modes = [TOOL_MODE_GUI]
|
tool_modes = [TOOL_MODE_GUI]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user