jdahlin - in flumotion/trunk: . flumotion/admin/gtk

flumotion-commit at lists.fluendo.com flumotion-commit at lists.fluendo.com
Wed Dec 5 18:09:23 CET 2007


Author: jdahlin
Date: Wed Dec  5 18:09:14 2007
New Revision: 5996

Modified:
   flumotion/trunk/ChangeLog
   flumotion/trunk/flumotion/admin/gtk/componentview.py
Log:
2007-12-05  Johan Dahlin  <johan at gnome.org>

	* flumotion/admin/gtk/componentview.py (ComponentView): 
	Mark attributes and methods as private, 
	(NodeBook.render): Simplify and refactor label creation.



Modified: flumotion/trunk/ChangeLog
==============================================================================
--- flumotion/trunk/ChangeLog	(original)
+++ flumotion/trunk/ChangeLog	Wed Dec  5 18:09:14 2007
@@ -1,3 +1,9 @@
+2007-12-05  Johan Dahlin  <johan at gnome.org>
+
+	* flumotion/admin/gtk/componentview.py (ComponentView): 
+	Mark attributes and methods as private, 
+	(NodeBook.render): Simplify and refactor label creation.
+
 2007-12-05  Michael Smith <msmith at fluendo.com>
 
 	* flumotion/component/component.py:

Modified: flumotion/trunk/flumotion/admin/gtk/componentview.py
==============================================================================
--- flumotion/trunk/flumotion/admin/gtk/componentview.py	(original)
+++ flumotion/trunk/flumotion/admin/gtk/componentview.py	Wed Dec  5 18:09:14 2007
@@ -43,32 +43,39 @@
         self.show()
 
     def _setup_pages(self):
+        def render(widget, table):
+            # dumb dumb dumb dumb
+            old_parent = widget.get_parent()
+            if old_parent:
+                old_parent.remove(widget)
+            map(table.remove, table.get_children())
+            table.add(widget)
+            widget.show()
+
         for name, node in self.nodes.items():
             table = gtk.Table(1,1)
             table.show()
             table.add(gtk.Label('Loading UI for %s...' % name))
-            title = node.title
-            if not title:
-                # FIXME: we have no way of showing an error message ?
-                # This should be added so users can file bugs.
-                self.warning("Component node %s does not have a "
-                    "translateable title. Please file a bug." % name)
-
-                # fall back for now
-                title = name
-
-            label = gtk.Label(title)
+            label = self._get_title_label(node, name)
             label.show()
             self.append_page(table, label)
 
-            def got_widget(w, name, table, node):
-                # dumb dumb dumb dumb
-                if w.get_parent():
-                    w.get_parent().remove(w)
-                map(table.remove, table.get_children())
-                table.add(w)
-                w.show()
-            node.render().addCallback(got_widget, name, table, node)
+            d = node.render()
+            d.addCallback(render, table)
+
+    def _get_title_label(self, node, name):
+        title = node.title
+        if not title:
+            # FIXME: we have no way of showing an error message ?
+            # This should be added so users can file bugs.
+            self.warning("Component node %s does not have a "
+                "translateable title. Please file a bug." % name)
+
+            # fall back for now
+            title = name
+
+        return gtk.Label(title)
+
 
 (OBJECT_UNSET,
  OBJECT_INACTIVE,
@@ -80,12 +87,20 @@
     def __init__(self):
         gtk.VBox.__init__(self)
         self.widget_constructor = None
-        self.widget = None
-        self.object = None
+        self._widget = None
+        self._object_state = None
         self._state = OBJECT_UNSET
         self._callStamp = 0
         self.set_single_admin(None)
 
+    # Public API
+
+    def show_object(self, state):
+        self._set_state(OBJECT_UNSET)
+        if state:
+            self._object_state = state
+            self._set_state(OBJECT_INACTIVE)
+
     def set_single_admin(self, admin):
         self.admin = admin
 
@@ -93,7 +108,17 @@
         # override me to do e.g. multi.get_admin_for_object
         return self.admin
 
-    def get_widget_constructor(self, state):
+    # Private
+
+    def _pack_widget(self, widget):
+        assert self._widget == None
+        self._widget = widget
+        self._widget.show()
+        self.pack_start(self._widget, True, True)
+
+        return self._widget
+
+    def _get_widget_constructor(self, state):
         def not_component_state():
             return gtk.Label('')
 
@@ -131,7 +156,7 @@
         d.addErrback(sleeping_component)
         return d
 
-    def object_unset_to_inactive(self):
+    def _object_unset_to_inactive(self):
         def invalidate(_):
             self._set_state(OBJECT_UNSET)
         def set(state, key, value):
@@ -142,73 +167,66 @@
                 else:
                     self._set_state(OBJECT_INACTIVE)
 
-        assert self.object is not None
-        self.object.addListener(self, invalidate=invalidate,
-                                set=set)
-        if self.object.hasKey('mood'):
-            set(self.object, 'mood', self.object.get('mood'))
+        assert self._object_state is not None
+        self._object_state.addListener(
+            self, invalidate=invalidate, set=set)
+        if self._object_state.hasKey('mood'):
+            set(self._object_state, 'mood', self._object_state.get('mood'))
 
-    def object_inactive_to_active(self):
+    def _object_inactive_to_active(self):
         def got_widget_constructor(proc, callStamp):
             if callStamp != self._callStamp:
-                # in the time that get_widget_constructor was running,
+                # in the time that _get_widget_constructor was running,
                 # perhaps the user selected another object; only update
                 # the ui if that did not happen
                 self.debug('ignoring widget constructor %r, state %d, '
                            'callstamps %d/%d', proc, self._state,
                            callStamp, self._callStamp)
                 return
-            assert self.widget == None
-            self.widget = proc()
-            self.widget.show()
-            self.pack_start(self.widget, True, True)
-            return self.widget
+            widget = proc()
+            return self._pack_widget(widget)
 
         self._callStamp += 1
         callStamp = self._callStamp
-        d = self.get_widget_constructor(self.object)
+        d = self._get_widget_constructor(self._object_state)
         d.addCallback(got_widget_constructor, callStamp)
 
-    def object_active_to_inactive(self):
+    def _object_active_to_inactive(self):
         # prevent got_widget_constructor from adding the widget above
         self._callStamp += 1
-        if self.widget:
-            self.remove(self.widget)
-            # widget maybe a gtk.Label or a NodeBook
-            if hasattr(self.widget, 'admingtk'):
-                if self.widget.admingtk:
-                    # needed for compatibility with managers with old code
-                    if hasattr(self.widget.admingtk, 'cleanup'):
-                        self.widget.admingtk.cleanup()
-                    del self.widget.admingtk
-            self.widget = None
-
-    def object_inactive_to_unset(self):
-        self.object.removeListener(self)
-        self.object = None
+        if not self._widget:
+            return
+
+        self.remove(self._widget)
+        # widget maybe a gtk.Label or a NodeBook
+        if hasattr(self._widget, 'admingtk'):
+            if self._widget.admingtk:
+                # needed for compatibility with managers with old code
+                if hasattr(self._widget.admingtk, 'cleanup'):
+                    self._widget.admingtk.cleanup()
+                del self._widget.admingtk
+        self._widget = None
+
+    def _object_inactive_to_unset(self):
+        self._object_state.removeListener(self)
+        self._object_state = None
 
     def _set_state(self, state):
-        uptable = [self.object_unset_to_inactive,
-                   self.object_inactive_to_active]
-        downtable = [self.object_inactive_to_unset,
-                     self.object_active_to_inactive]
+        uptable = [self._object_unset_to_inactive,
+                   self._object_inactive_to_active]
+        downtable = [self._object_inactive_to_unset,
+                     self._object_active_to_inactive]
         if self._state < state:
             while self._state < state:
-                self.log('object %r state change: %d++', self.object,
+                self.log('object %r state change: %d++', self._object_state,
                          self._state)
                 self._state += 1
                 uptable[self._state - 1]()
         else:
             while self._state > state:
-                self.log('object %r state change: %d--', self.object,
+                self.log('object %r state change: %d--', self._object_state,
                          self._state)
                 self._state -= 1
                 downtable[self._state]()
 
-    def show_object(self, state):
-        self._set_state(OBJECT_UNSET)
-        if state:
-            self.object = state
-            self._set_state(OBJECT_INACTIVE)
-
 gobject.type_register(ComponentView)


More information about the flumotion-commit mailing list