* DisplayState.py: recent file support

* EditPerson.py: Window management
* EditSource.py: Window management
* EventEdit.py: Window management
* ListBox.py: Window management
* Sources.py: Window management
* UrlEdit.py: Window management
* ViewManager.py: Window management


svn: r5629
This commit is contained in:
Don Allingham 2005-12-24 00:09:04 +00:00
parent 4f96128b79
commit 318def7c23
9 changed files with 112 additions and 53 deletions

View File

@ -1,3 +1,13 @@
2005-12-23 Don Allingham <don@gramps-project.org>
* DisplayState.py: recent file support
* EditPerson.py: Window management
* EditSource.py: Window management
* EventEdit.py: Window management
* ListBox.py: Window management
* Sources.py: Window management
* UrlEdit.py: Window management
* ViewManager.py: Window management
2005-12-23 Alex Roitman <shura@gramps-project.org>
* src/EditPerson.py: Swap menu/submenu labels.
* src/EventEdit.py: Menu label fixes.

View File

@ -340,6 +340,59 @@ class GrampsWindowManager:
self.action_group.add_actions(action_data)
self.enable()
#-------------------------------------------------------------------------
#
# Recent Docs Menu
#
#-------------------------------------------------------------------------
_rct_top = '<ui><menubar name="MenuBar"><menu action="FileMenu"><menu action="OpenRecent">'
_rct_btm = '</menu></menu></menubar></ui>'
import RecentFiles
import os
try:
from gnomevfs import get_mime_type
except:
from gnome.vfs import get_mime_type
class RecentDocsMenu:
def __init__(self,uimanager):
self.action_group = gtk.ActionGroup('RecentFiles')
self.active = DISABLED
self.uimanager = uimanager
def build(self):
f = StringIO()
f.write(_rct_top)
gramps_rf = RecentFiles.GrampsRecentFiles()
count = 0
if self.active != DISABLED:
self.uimanager.remove_ui(self.active)
self.uimanager.remove_action_group(self.action_group)
self.active = DISABLED
actions = []
for item in gramps_rf.gramps_recent_files:
try:
filename = os.path.basename(item.get_path()).replace('_','__')
filetype = get_mime_type(item.get_path())
action_id = "RecentMenu%d" % count
f.write('<menuitem action="%s"/>' % action_id)
actions.append((action_id,None,filename,None,None,None))
except RuntimeError:
pass # ignore no longer existing files
count +=1
f.write(_rct_btm)
self.action_group.add_actions(actions)
self.uimanager.insert_action_group(self.action_group,1)
self.action = self.uimanager.add_ui_from_string(f.getvalue())
f.close()
#-------------------------------------------------------------------------
#
# Gramps Managed Window class

View File

@ -108,7 +108,7 @@ class EditPerson(DisplayState.ManagedWindow):
else:
self.orig_handle = ""
DisplayState.ManagedWindow.__init__(self, uistate, [], person)
DisplayState.ManagedWindow.__init__(self, uistate, track, person)
if self.already_exist:
return

View File

@ -181,7 +181,7 @@ class EditSource(DisplayState.ManagedWindow):
self.idle = None
self.name_display = NameDisplay.displayer.display
DisplayState.ManagedWindow.__init__(self, uistate, self.track, self.source)
DisplayState.ManagedWindow.__init__(self, uistate, self.track, source)
if source:
self.source = source
@ -411,7 +411,7 @@ class EditSource(DisplayState.ManagedWindow):
if data_type == 0:
import EditPerson
person = self.db.get_person_from_handle(handle)
EditPerson.EditPerson(self.parent,person,self.db)
EditPerson.EditPerson(self.state, self.uistate, self.track, person)
elif data_type == 1:
import Marriage
family = self.db.get_family_from_handle(handle)

View File

@ -113,7 +113,7 @@ class EventEditor(DisplayState.ManagedWindow):
self.dp = _dp
self.dd = _dd
DisplayState.ManagedWindow.__init__(self, uistate, [], event)
DisplayState.ManagedWindow.__init__(self, uistate, self.track, event)
if self.already_exist:
return

View File

@ -612,15 +612,16 @@ class UrlListBox(ReorderListBox):
self.data[index].set_description(value)
def add(self,obj):
UrlEdit.UrlEditor(self.state, self.uistate, self.name, None,
self.edit_callback)
UrlEdit.UrlEditor(self.state, self.uistate, self.track,
self.name, None, self.edit_callback)
def update(self,obj):
store,node = self.list_model.get_selected()
if node:
UrlEdit.UrlEditor(self.state, self.uistate, self.name,
UrlEdit.UrlEditor(self.state, self.uistate, self.track,
self.name,
self.list_model.get_object(node),
self.edit_callback, self.window)
self.edit_callback)
def display_data(self,url):
return [url.get_path(), url.get_description()]

View File

@ -319,7 +319,8 @@ class SourceTab:
if node:
col = store.get_path(node)
src = self.list[col[0]]
SourceEditor(self.state, self.uistate, self.track, src, self.update_clist)
SourceEditor(self.state, self.uistate, self.track,
src, self.update_clist)
def add_src_clicked(self,obj):
src = RelLib.SourceRef()
@ -351,9 +352,7 @@ class SourceEditor(DisplayState.ManagedWindow):
else:
submenu_label = _('New Source Reference')
DisplayState.ManagedWindow.__init__(
self, uistate, self.track, srcref, submenu_label,
_('Source Reference Editor'))
DisplayState.ManagedWindow.__init__(self, uistate, self.track, srcref)
self.update = update
self.source_ref = srcref
@ -427,6 +426,13 @@ class SourceEditor(DisplayState.ManagedWindow):
self.db.connect('source-add', self.rebuild_menu)
self.window.show()
def build_menu_names(self,srcref):
if srcref:
submenu_label = _('Source Reference')
else:
submenu_label = _('New Source Reference')
return (_('Source Reference Editor'),submenu_label)
def rebuild_menu(self,handle_list):
self.build_source_menu(handle_list[0])

View File

@ -45,6 +45,8 @@ import const
import Utils
import RelLib
import GrampsDisplay
import DisplayState
from WindowUtils import GladeIf
#-------------------------------------------------------------------------
@ -52,18 +54,20 @@ from WindowUtils import GladeIf
# UrlEditor class
#
#-------------------------------------------------------------------------
class UrlEditor:
class UrlEditor(DisplayState.ManagedWindow):
def __init__(self, dbstate, uistate, track, name, url, callback):
self.db = dbstate.db
self.uistate = uistate
self.state = dbstate
self.callback = callback
self.name = name
DisplayState.ManagedWindow.__init__(self, uistate, track, url)
if self.already_exist:
return
def __init__(self,parent,name,url,callback,parent_window=None):
self.parent = parent
if url:
if self.parent.child_windows.has_key(url):
self.parent.child_windows[url].present(None)
return
else:
self.win_key = url
else:
self.win_key = self
self.url = url
self.callback = callback
self.top = gtk.glade.XML(const.dialogFile, "url_edit","gramps")
@ -78,7 +82,7 @@ class UrlEditor:
if not name or name == ", ":
etitle =_('Internet Address Editor')
else:
etitle =_('Internet Address Editor for %s') % escape(name),
etitle =_('Internet Address Editor for %s') % escape(name)
Utils.set_titles(self.window,title_label, etitle,
@ -93,37 +97,25 @@ class UrlEditor:
self.gladeif.connect('button124','clicked', self.on_url_edit_ok_clicked)
self.gladeif.connect('button130','clicked', self.on_help_clicked)
if parent_window:
self.window.set_transient_for(parent_window)
self.add_itself_to_menu()
self.window.set_transient_for(self.parent_window)
self.window.show()
def build_menu_names(self,obj):
if not self.name or self.name == ", ":
etitle =_('Internet Address Editor')
else:
etitle =_('Internet Address Editor for %s') % escape(self.name)
return (etitle, _('Internet Address Editor'))
def on_delete_event(self,*obj):
self.gladeif.close()
self.remove_itself_from_menu()
gc.collect()
def close(self,*obj):
self.gladeif.close()
self.remove_itself_from_menu()
self.window.destroy()
gc.collect()
def add_itself_to_menu(self):
self.parent.child_windows[self.win_key] = self
label = _('Internet Address Editor')
self.parent_menu_item = gtk.MenuItem(label)
self.parent_menu_item.connect("activate",self.present)
self.parent_menu_item.show()
self.parent.winsmenu.append(self.parent_menu_item)
def remove_itself_from_menu(self):
del self.parent.child_windows[self.win_key]
self.parent_menu_item.destroy()
def present(self,*obj):
self.window.present()
def on_help_clicked(self,*obj):
"""Display the relevant portion of GRAMPS manual"""
GrampsDisplay.help('gramps-edit-complete')
@ -133,10 +125,6 @@ class UrlEditor:
addr = unicode(self.addr.get_text())
priv = self.priv.get_active()
if self.url == None:
self.url = RelLib.Url()
self.parent.ulist.append(self.url)
self.update_url(des,addr,priv)
self.callback(self.url)
self.close(obj)
@ -144,12 +132,10 @@ class UrlEditor:
def update_url(self,des,addr,priv):
if self.url.get_path() != addr:
self.url.set_path(addr)
self.parent.lists_changed = 1
if self.url.get_description() != des:
self.url.set_description(des)
self.parent.lists_changed = 1
if self.url.get_privacy() != priv:
self.url.set_privacy(priv)
self.parent.lists_changed = 1

View File

@ -78,7 +78,8 @@ uidefault = '''<ui>
<menu action="FileMenu">
<menuitem action="New"/>
<menuitem action="Open"/>
<menuitem action="OpenRecent"/>
<menu action="OpenRecent">
</menu>
<separator/>
<menuitem action="Import"/>
<menuitem action="SaveAs"/>
@ -203,6 +204,8 @@ class ViewManager:
person_nav = Navigation.PersonNavigation(self.uistate)
self.navigation_type[PageView.NAVIGATION_PERSON] = (person_nav,None)
self.recent_manager = DisplayState.RecentDocsMenu(self.uimanager)
self.recent_manager.build()
self.window.show()
def init_interface(self):
@ -237,7 +240,7 @@ class ViewManager:
('FileMenu', None, '_File'),
('New', gtk.STOCK_NEW, '_New', "<control>n", None, self.new_activate),
('Open', gtk.STOCK_OPEN, '_Open', "<control>o", None, self.open_activate),
('OpenRecent', gtk.STOCK_OPEN, 'Open _Recent'),
('OpenRecent', None, 'Open _Recent'),
('Quit', gtk.STOCK_QUIT, '_Quit', "<control>q", None, self.quit),
('ViewMenu', None, '_View'),
('Preferences', gtk.STOCK_PREFERENCES, '_Preferences'),