Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/model/homemodel.py
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2006-12-24 13:35:02 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2006-12-24 13:35:02 (GMT)
commit0d1e07d9c34a4e1c24cc5f374963ad55b7ee035b (patch)
tree0944f7fecc4464728d5cd821ce985d38c804d912 /shell/model/homemodel.py
parent2db2ae531208cdb58c448f4bd4a91f8ea947066a (diff)
Split ActivityHost in model/view. Refactor accordingly.
Diffstat (limited to 'shell/model/homemodel.py')
-rw-r--r--shell/model/homemodel.py49
1 files changed, 24 insertions, 25 deletions
diff --git a/shell/model/homemodel.py b/shell/model/homemodel.py
index a5e2634..c1eefe4 100644
--- a/shell/model/homemodel.py
+++ b/shell/model/homemodel.py
@@ -15,9 +15,8 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import gobject
+import wnck
-from sugar.graphics.canvasicon import CanvasIcon
-from sugar.graphics import style
from model.homeactivity import HomeActivity
class HomeModel(gobject.GObject):
@@ -31,13 +30,15 @@ class HomeModel(gobject.GObject):
([gobject.TYPE_PYOBJECT]))
}
- def __init__(self, shell):
+ def __init__(self, bundle_registry):
gobject.GObject.__init__(self)
- self._activities = []
- self._shell = shell
-
- shell.connect('activity-opened', self.__activity_opened_cb)
- shell.connect('activity-closed', self.__activity_closed_cb)
+
+ self._activities = {}
+ self._bundle_registry = bundle_registry
+
+ screen = wnck.screen_get_default()
+ screen.connect('window-opened', self._window_opened_cb)
+ screen.connect('window-closed', self._window_closed_cb)
def __iter__(self):
return iter(self._activities)
@@ -47,23 +48,21 @@ class HomeModel(gobject.GObject):
def __getitem__(self, i):
return self._activities[i]
-
- def __activity_opened_cb(self, model, activity):
- self._add_activity(activity)
- def __activity_closed_cb(self, model, activity):
- self._remove_activity(activity)
+ def _window_opened_cb(self, screen, window):
+ if window.get_window_type() == wnck.WINDOW_NORMAL:
+ self._add_activity(window)
+
+ def _window_closed_cb(self, screen, window):
+ if window.get_window_type() == wnck.WINDOW_NORMAL:
+ self._remove_activity(window.get_xid())
- def _add_activity(self, activity):
- h_activity = HomeActivity(activity)
- self._activities.append(h_activity)
- self.emit('activity-added', h_activity)
+ def _add_activity(self, window):
+ activity = HomeActivity(self._bundle_registry, window)
+ self._activities[window.get_xid()] = activity
+ self.emit('activity-added', activity)
- def _remove_activity(self, activity):
- i = 0
- for h_activity in self._activities:
- if h_activity.get_id() == activity.get_id():
- self.emit('activity-removed', self._activities[i])
- del self._activities[i]
- return
- i += 1
+ def _remove_activity(self, xid):
+ if self._activities.has_key(xid):
+ self.emit('activity-removed', self._activities[xid])
+ del self._activities[xid]