Skip to content
This repository has been archived by the owner on Mar 22, 2018. It is now read-only.

Commit

Permalink
rewritten the prefs page in glade.
Browse files Browse the repository at this point in the history
closes #249.
  • Loading branch information
mfrasca committed Dec 31, 2015
1 parent 66ce34e commit de3cd9b
Show file tree
Hide file tree
Showing 3 changed files with 189 additions and 88 deletions.
165 changes: 164 additions & 1 deletion bauble/bauble.glade
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
<property name="can_focus">True</property>
<property name="text_column">0</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext1">
<object class="GtkCellRendererText" id="main_cellrenderertext1">
<property name="xalign">0</property>
</object>
</child>
Expand Down Expand Up @@ -202,6 +202,14 @@
<column type="gchararray"/>
</columns>
</object>
<object class="GtkListStore" id="prefs_plugins_ls">
<columns>
<!-- column-name name -->
<column type="gchararray"/>
<!-- column-name version -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkWindow" id="notes_window">
<property name="can_focus">False</property>
<child>
Expand Down Expand Up @@ -278,6 +286,161 @@
</object>
</child>
</object>
<object class="GtkListStore" id="prefs_prefs_ls">
<columns>
<!-- column-name name -->
<column type="gchararray"/>
<!-- column-name repr -->
<column type="gchararray"/>
<!-- column-name type -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkWindow" id="prefs_window">
<property name="can_focus">False</property>
<child>
<object class="GtkVPaned" id="prefs_view">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="border_width">5</property>
<property name="position">300</property>
<property name="position_set">True</property>
<signal name="check-resize" handler="on_vpaned1_check_resize" swapped="no"/>
<child>
<object class="GtkFrame" id="frame1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child>
<object class="GtkScrolledWindow" id="prefs_prefs_sv">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkTreeView" id="prefs_prefs_tv">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">prefs_prefs_ls</property>
<property name="headers_clickable">False</property>
<property name="rules_hint">True</property>
<child>
<object class="GtkTreeViewColumn" id="prefs_treeviewcolumn1">
<property name="title" translatable="yes">Name</property>
<child>
<object class="GtkCellRendererText" id="prefs_cellrenderertext1"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="prefs_treeviewcolumn2">
<property name="title" translatable="yes">Value</property>
<child>
<object class="GtkCellRendererText" id="prefs_cellrenderertext2"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">'&lt;b&gt;Preferences&lt;/b&gt;</property>
<property name="use_markup">True</property>
</object>
</child>
</object>
<packing>
<property name="resize">False</property>
<property name="shrink">True</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkAlignment" id="alignment2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child>
<object class="GtkScrolledWindow" id="prefs_plugins_sv">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkTreeView" id="prefs_plugins_tv">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">prefs_plugins_ls</property>
<property name="headers_clickable">False</property>
<property name="rules_hint">True</property>
<child>
<object class="GtkTreeViewColumn" id="prefs_treeviewcolumn3">
<property name="title" translatable="yes">Name</property>
<child>
<object class="GtkCellRendererText" id="prefs_cellrenderertext3"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="prefs_treeviewcolumn4">
<property name="title" translatable="yes">Version</property>
<child>
<object class="GtkCellRendererText" id="prefs_cellrenderertext4"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;b&gt;Plugins&lt;/b&gt;</property>
<property name="use_markup">True</property>
</object>
</child>
</object>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkWindow" id="search_window">
<property name="can_focus">True</property>
<child>
Expand Down
6 changes: 6 additions & 0 deletions bauble/pluginmgr.py
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,13 @@ def __init__(self, *args, **kwargs):
If a class extends this View and provides its own __init__ it *must*
call its parent (this) __init__
"""
root_widget = kwargs.get('root_widget')
if root_widget is not None:
del kwargs['root_widget']
super(View, self).__init__(*args, **kwargs)
if root_widget is not None:
self.view.widgets.remove_parent(root_widget)
self.add(root_widget)

def cancel_threads(self):
pass
Expand Down
106 changes: 19 additions & 87 deletions bauble/prefs.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,10 +242,6 @@ def save(self, force=False):
logger.error(msg)


# TODO: remember pane sizes

# TODO: we need to include the meta table in the pref view

class PrefsView(pluginmgr.View):
"""
The PrefsView displays the values of in the preferences and the registry.
Expand All @@ -254,94 +250,30 @@ class PrefsView(pluginmgr.View):
pane_size_pref = 'bauble.prefs.pane_position'

def __init__(self):
super(PrefsView, self).__init__()
self.create_gui()

# def create_registry_view(self):
# pass

def create_meta_view(self):
pass

def create_gui(self):
pane = gtk.VPaned()
self.pack_start(pane)
pane.set_border_width(5)
width, height = pane.size_request()

# TODO: check-resize and move_handle are not the correct
# signals when the pane is resized....so right now the size is
# not getting saved in the prefs

def on_move_handle(paned, data=None):
logger.debug("handle moved to %s" % paned.get_position())
prefs[self.pane_size_pref] = paned.get_position()
pane.connect('check-resize', on_move_handle)

if prefs.get(self.pane_size_pref, None) is not None:
pane.set_position(prefs[self.pane_size_pref])
else:
# setting the default to half the height of the window is
# close enough to the middle even though the top pane will
# be a little larger
rect = bauble.gui.window.get_allocation()
pane.set_position(int(rect.height/2))

label = gtk.Label()
label.set_markup(_('<b>Preferences</b>'))
label.set_padding(5, 0)
frame = gtk.Frame()
frame.set_label_widget(label)
view = self.create_prefs_view()
frame.add(view)
pane.pack1(frame)

label = gtk.Label()
label.set_markup(_('<b>Plugins</b>'))
label.set_padding(5, 0)
frame = gtk.Frame()
frame.set_label_widget(label)
view = self.create_registry_view()
frame.add(view)
pane.pack2(frame)

def create_tree(self, columns, itemsiter):
treeview = gtk.TreeView()
treeview.set_rules_hint(True)

i = 0
model_cols = []
for c in columns:
renderer = gtk.CellRendererText()
column = gtk.TreeViewColumn(c, renderer, text=i)
treeview.append_column(column)
i += 1
model_cols.append(str)

model = gtk.ListStore(*model_cols)
for item in itemsiter:
model.append(item)
treeview.set_model(model)

sw = gtk.ScrolledWindow()
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
sw.add(treeview)
return sw

def create_prefs_view(self):
logger.debug('PrefsView::__init__')
filename = os.path.join(paths.lib_dir(), 'bauble.glade')
from bauble import utils, editor
self.widgets = utils.load_widgets(filename)
self.view = editor.GenericEditorView(
filename, root_widget_name='prefs_window')
super(PrefsView, self
).__init__(root_widget=self.view.widgets.prefs_view)
self.update()

def update(self):
self.widgets.prefs_prefs_ls.clear()
global prefs
tree = self.create_tree([_('Names'), _('Values')], prefs.iteritems())
return tree
for key, value in prefs.iteritems():
self.widgets.prefs_prefs_ls.append((key, value, str(type(value))))

def create_registry_view(self):
#from bauble.pluginmgr import Registry
self.widgets.prefs_plugins_ls.clear()
from bauble.pluginmgr import PluginRegistry
session = db.Session()
plugins = session.query(PluginRegistry.name, PluginRegistry.version)
tree = self.create_tree([_('Name'), _('Version')],
plugins)
for item in plugins:
self.widgets.prefs_plugins_ls.append(item)
session.close()
return tree
pass


class PrefsCommandHandler(pluginmgr.CommandHandler):
Expand All @@ -354,7 +286,7 @@ def __call__(self, cmd, arg):

def get_view(self):
if self.view is None:
self.view = PrefsView()
self.__class__.view = PrefsView()
return self.view


Expand Down

0 comments on commit de3cd9b

Please sign in to comment.