ViewManager: added Info button that shows -L info for db

This commit is contained in:
Doug Blank 2015-08-10 22:42:27 -04:00
parent d02640b6d1
commit 96241bd77b
3 changed files with 65 additions and 7 deletions

View File

@ -75,6 +75,7 @@ from .user import User
from .dialog import ErrorDialog, QuestionDialog, QuestionDialog2, ICON from .dialog import ErrorDialog, QuestionDialog, QuestionDialog2, ICON
from .pluginmanager import GuiPluginManager from .pluginmanager import GuiPluginManager
from gramps.cli.clidbman import CLIDbManager, NAME_FILE, time_val from gramps.cli.clidbman import CLIDbManager, NAME_FILE, time_val
from .managedwindow import ManagedWindow
from .ddtargets import DdTargets from .ddtargets import DdTargets
from gramps.gen.recentfiles import rename_filename, remove_filename from gramps.gen.recentfiles import rename_filename, remove_filename
from .glade import Glade from .glade import Glade
@ -104,6 +105,29 @@ ICON_COL = 6
RCS_BUTTON = { True : _('_Extract'), False : _('_Archive') } RCS_BUTTON = { True : _('_Extract'), False : _('_Archive') }
class Information(ManagedWindow):
def __init__(self, uistate, text, parent):
super().__init__(uistate, [], self)
self.window = Gtk.Dialog('Gramp')
self.set_window(self.window, None, _("Database Information"))
self.window.set_modal(True)
self.ok = self.window.add_button(_('_OK'), Gtk.ResponseType.OK)
self.ok.connect('clicked', self.on_ok_clicked)
self.window.set_position(Gtk.WindowPosition.CENTER)
self.window.set_default_size(600, 400)
s = Gtk.ScrolledWindow()
self.window.vbox.pack_start(s, True, True, 0)
self.textview = Gtk.TextView()
self.textview.get_buffer().set_text(text)
s.add(self.textview)
self.show()
def on_ok_clicked(self, obj):
self.window.close()
def build_menu_names(self, obj):
return (_('Database Information'), None)
class DbManager(CLIDbManager): class DbManager(CLIDbManager):
""" """
Database Manager. Opens a database manager window that allows users to Database Manager. Opens a database manager window that allows users to
@ -118,11 +142,12 @@ class DbManager(CLIDbManager):
ERROR = ErrorDialog ERROR = ErrorDialog
def __init__(self, dbstate, parent=None): def __init__(self, uistate, dbstate, parent=None):
""" """
Create the top level window from the glade description, and extracts Create the top level window from the glade description, and extracts
the GTK widgets that are needed. the GTK widgets that are needed.
""" """
self.uistate = uistate
CLIDbManager.__init__(self, dbstate) CLIDbManager.__init__(self, dbstate)
self.glade = Glade(toplevel='dbmanager') self.glade = Glade(toplevel='dbmanager')
self.top = self.glade.toplevel self.top = self.glade.toplevel
@ -130,7 +155,7 @@ class DbManager(CLIDbManager):
if parent: if parent:
self.top.set_transient_for(parent) self.top.set_transient_for(parent)
for attr in ['connect', 'cancel', 'new', 'remove', for attr in ['connect', 'cancel', 'new', 'remove', 'info',
'dblist', 'rename', 'repair', 'rcs', 'msg']: 'dblist', 'rename', 'repair', 'rcs', 'msg']:
setattr(self, attr, self.glade.get_object(attr)) setattr(self, attr, self.glade.get_object(attr))
@ -159,6 +184,7 @@ class DbManager(CLIDbManager):
self.remove.connect('clicked', self.__remove_db) self.remove.connect('clicked', self.__remove_db)
self.new.connect('clicked', self.__new_db) self.new.connect('clicked', self.__new_db)
self.rename.connect('clicked', self.__rename_db) self.rename.connect('clicked', self.__rename_db)
self.info.connect('clicked', self.__info_db)
self.repair.connect('clicked', self.__repair_db) self.repair.connect('clicked', self.__repair_db)
self.selection.connect('changed', self.__selection_changed) self.selection.connect('changed', self.__selection_changed)
self.dblist.connect('button-press-event', self.__button_press) self.dblist.connect('button-press-event', self.__button_press)
@ -215,6 +241,7 @@ class DbManager(CLIDbManager):
if not node: if not node:
self.connect.set_sensitive(False) self.connect.set_sensitive(False)
self.rename.set_sensitive(False) self.rename.set_sensitive(False)
self.info.set_sensitive(False)
self.rcs.set_sensitive(False) self.rcs.set_sensitive(False)
self.repair.set_sensitive(False) self.repair.set_sensitive(False)
self.remove.set_sensitive(False) self.remove.set_sensitive(False)
@ -246,6 +273,7 @@ class DbManager(CLIDbManager):
self.repair.set_sensitive(False) self.repair.set_sensitive(False)
self.rename.set_sensitive(True) self.rename.set_sensitive(True)
self.info.set_sensitive(True)
self.remove.set_sensitive(True) self.remove.set_sensitive(True)
self.new.set_sensitive(True) self.new.set_sensitive(True)
@ -411,6 +439,7 @@ class DbManager(CLIDbManager):
""" """
self.connect.set_sensitive(False) self.connect.set_sensitive(False)
self.rename.set_sensitive(False) self.rename.set_sensitive(False)
self.info.set_sensitive(False)
self.rcs.set_sensitive(False) self.rcs.set_sensitive(False)
self.repair.set_sensitive(False) self.repair.set_sensitive(False)
self.remove.set_sensitive(False) self.remove.set_sensitive(False)
@ -632,6 +661,20 @@ class DbManager(CLIDbManager):
self.name_renderer.set_property('editable', True) self.name_renderer.set_property('editable', True)
self.dblist.set_cursor(path, self.column, True) self.dblist.set_cursor(path, self.column, True)
def __info_db(self, obj):
"""
Show info on this database.
"""
store, node = self.selection.get_selected()
name = store[node][0]
dirname = store[node][1]
# if this is open, get info from there, otherwise, temp open?
result = self.get_dbdir_summary(dirname, name)
result_str = ""
for key in sorted(result.keys()):
result_str += "%s: %s\n" % (key, result[key])
Information(self.uistate, result_str, parent=self.top)
def __repair_db(self, obj): def __repair_db(self, obj):
""" """
Start the repair process by calling the start_editing option on Start the repair process by calling the start_editing option on

View File

@ -232,6 +232,21 @@
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkButton" id="info">
<property name="label" translatable="yes">_Info</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child> <child>
<object class="GtkButton" id="remove"> <object class="GtkButton" id="remove">
<property name="label" translatable="yes">_Delete</property> <property name="label" translatable="yes">_Delete</property>
@ -245,7 +260,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property> <property name="fill">False</property>
<property name="position">1</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -261,7 +276,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property> <property name="fill">False</property>
<property name="position">2</property> <property name="position">3</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -277,7 +292,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property> <property name="fill">False</property>
<property name="position">3</property> <property name="position">4</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -293,7 +308,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property> <property name="fill">False</property>
<property name="position">4</property> <property name="position">5</property>
</packing> </packing>
</child> </child>
</object> </object>

View File

@ -1091,7 +1091,7 @@ class ViewManager(CLIManager):
Called when the Open button is clicked, opens the DbManager Called when the Open button is clicked, opens the DbManager
""" """
from .dbman import DbManager from .dbman import DbManager
dialog = DbManager(self.dbstate, self.window) dialog = DbManager(self.uistate, self.dbstate, self.window)
value = dialog.run() value = dialog.run()
if value: if value:
(filename, title) = value (filename, title) = value