[hamster-applet] Quick implementation of the new preferences
- From: Patryk Zawadzki <pzawadzki src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [hamster-applet] Quick implementation of the new preferences
- Date: Tue, 19 Jan 2010 13:05:16 +0000 (UTC)
commit 8ca601d37fc4932661dcec7a1b1b973a4b0afad0
Author: Patryk Zawadzki <patrys pld-linux org>
Date: Tue Jan 19 12:42:41 2010 +0100
Quick implementation of the new preferences
Actual binding of activities to workspaces is stil left to do.
data/preferences.ui | 189 ++++++++++++++++++++++++++++++++----------------
hamster/preferences.py | 62 +++++++++++++++-
2 files changed, 187 insertions(+), 64 deletions(-)
---
diff --git a/data/preferences.ui b/data/preferences.ui
index 21ec7d9..61c0d05 100644
--- a/data/preferences.ui
+++ b/data/preferences.ui
@@ -207,67 +207,6 @@
</packing>
</child>
<child>
- <object class="GtkFrame" id="workspace_frame">
- <property name="visible">True</property>
- <property name="no_show_all">True</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">none</property>
- <child>
- <object class="GtkAlignment" id="alignment10">
- <property name="visible">True</property>
- <property name="top_padding">6</property>
- <property name="left_padding">12</property>
- <child>
- <object class="GtkVBox" id="vbox6">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">8</property>
- <child>
- <object class="GtkCheckButton" id="workspace_tracking_name">
- <property name="label" translatable="yes">Switch activities if workspace name matches an earlier activity</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_workspace_tracking_toggled"/>
- </object>
- <packing>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="workspace_tracking_memory">
- <property name="label" translatable="yes">Resume the last activity when returning to a workspace</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_workspace_tracking_toggled"/>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label9">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Workspaces</property>
- <property name="use_markup">True</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
<object class="GtkFrame" id="frame1">
<property name="visible">True</property>
<property name="label_xalign">0</property>
@@ -301,7 +240,7 @@
</object>
<packing>
<property name="expand">False</property>
- <property name="position">2</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
@@ -757,6 +696,132 @@
<property name="tab_fill">False</property>
</packing>
</child>
+ <child>
+ <object class="GtkAlignment" id="alignment11">
+ <property name="visible">True</property>
+ <property name="top_padding">12</property>
+ <property name="bottom_padding">8</property>
+ <property name="left_padding">4</property>
+ <property name="right_padding">4</property>
+ <child>
+ <object class="GtkVBox" id="vbox8">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="workspace_frame">
+ <property name="visible">True</property>
+ <property name="no_show_all">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment10">
+ <property name="visible">True</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox6">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkCheckButton" id="workspace_tracking_name">
+ <property name="label" translatable="yes">Switch activities if workspace name matches an earlier activity</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_workspace_tracking_toggled"/>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="workspace_tracking_memory">
+ <property name="label" translatable="yes">Resume the last activity when returning to a workspace</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_workspace_tracking_toggled"/>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Workspaces</property>
+ <property name="use_markup">True</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame4">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow5">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="workspace_list">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xpad">1</property>
+ <property name="ypad">2</property>
+ <property name="label" translatable="yes">_Workspace:</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">2</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Workspaces</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="position">0</property>
diff --git a/hamster/preferences.py b/hamster/preferences.py
index ad61e53..6bee733 100755
--- a/hamster/preferences.py
+++ b/hamster/preferences.py
@@ -22,6 +22,7 @@ import pygtk
pygtk.require('2.0')
import os
+import gobject
import gtk
import datetime as dt
@@ -78,6 +79,11 @@ class ActivityStore(gtk.ListStore):
activity['activity_order']])
+class WorkspaceStore(gtk.ListStore):
+ def __init__(self):
+ #id, name, color_code, order
+ gtk.ListStore.__init__(self, int, gobject.TYPE_PYOBJECT, str)
+
formats = ["fixed", "symbolic", "minutes"]
appearances = ["text", "icon", "both"]
@@ -108,7 +114,7 @@ class PreferencesEditor:
self.activityCell = gtk.CellRendererText()
self.activityCell.connect('edited', self.activity_name_edited_cb, self.activity_store)
self.activityColumn.pack_start(self.activityCell, True)
- self.activityColumn.set_attributes(self.activityCell, text = 1)
+ self.activityColumn.set_attributes(self.activityCell, text=1)
self.activityColumn.set_sort_column_id(1)
self.activity_tree.append_column(self.activityColumn)
@@ -129,7 +135,7 @@ class PreferencesEditor:
self.categoryCell.connect('edited', self.category_edited_cb, self.category_store)
self.categoryColumn.pack_start(self.categoryCell, True)
- self.categoryColumn.set_attributes(self.categoryCell, text = 1)
+ self.categoryColumn.set_attributes(self.categoryCell, text=1)
self.categoryColumn.set_sort_column_id(1)
self.categoryColumn.set_cell_data_func(self.categoryCell, self.unsorted_painter)
self.category_tree.append_column(self.categoryColumn)
@@ -173,6 +179,33 @@ class PreferencesEditor:
self.prev_selected_category = None
+ # create and fill workspace tree
+ self.workspace_tree = self.get_widget('workspace_list')
+# self.get_widget("workspaces_label").set_mnemonic_widget(self.workspace_tree)
+ self.workspace_store = WorkspaceStore()
+
+ self.wNameColumn = gtk.TreeViewColumn(_("Name"))
+ self.wNameColumn.set_expand(True)
+ self.wNameCell = gtk.CellRendererText()
+ self.wNameCell.set_property('editable', False)
+ self.wActivityColumn = gtk.TreeViewColumn(_("Activity"))
+ self.wActivityColumn.set_expand(True)
+ self.wActivityCell = gtk.CellRendererText()
+ self.wActivityCell.set_property('editable', True)
+# self.wActivityCell.connect('edited', self.category_edited_cb, self.category_store)
+
+ self.wNameColumn.pack_start(self.wNameCell, True)
+ self.wNameColumn.set_attributes(self.wNameCell)
+ self.wNameColumn.set_sort_column_id(1)
+ self.wNameColumn.set_cell_data_func(self.wNameCell, self.workspace_name_celldata)
+ self.workspace_tree.append_column(self.wNameColumn)
+ self.wActivityColumn.pack_start(self.wActivityCell, True)
+ self.wActivityColumn.set_attributes(self.wActivityCell, text=2)
+ self.wActivityColumn.set_sort_column_id(1)
+ self.workspace_tree.append_column(self.wActivityColumn)
+
+ self.workspace_tree.set_model(self.workspace_store)
+
# disable notification thing if pynotify is not available
try:
import pynotify
@@ -186,9 +219,34 @@ class PreferencesEditor:
except:
self.get_widget("workspace_frame").hide()
+ self.screen = wnck.screen_get_default()
+ self.screen.workspace_add_handler = self.screen.connect("workspace-created", self.on_workspace_created)
+ self.screen.workspace_del_handler = self.screen.connect("workspace-destroyed", self.on_workspace_deleted)
+
self._gui.connect_signals(self)
self.window.show_all()
+ def workspace_name_celldata(self, column, cell, model, iter, user_data=None):
+ name = model.get_value(iter, 1).get_name()
+ cell.set_property('text', str(name))
+
+ def on_workspace_created(self, screen, workspace, user_data=None):
+ self.workspace_store.append([
+ workspace.get_number(),
+ workspace,
+ u'Not implemented'
+ ])
+
+ def on_workspace_deleted(self, screen, workspace, user_data=None):
+ row = self.workspace_store.get_iter_first()
+ while row:
+ if self.workspace_store.get_value(row, 1) == workspace:
+ if not self.workspace_store.remove(row):
+ # row is now invalid, stop iteration
+ break
+ else:
+ row = self.workspace_store.iter_next(row)
+
def load_config(self, *args):
self.get_widget("shutdown_track").set_active(conf.get("stop_on_shutdown"))
self.get_widget("idle_track").set_active(conf.get("enable_timeout"))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]