From 6c580f9e36d6cceed948aec7d684a90b62ff2c93 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Tue, 22 Jul 2008 12:41:48 +0000 Subject: Refactor activity launcher. Fix #7546 --- diff --git a/src/view/Makefile.am b/src/view/Makefile.am index a710bfe..d905b7a 100644 --- a/src/view/Makefile.am +++ b/src/view/Makefile.am @@ -9,6 +9,7 @@ sugar_PYTHON = \ clipboardicon.py \ clipboardmenu.py \ keyhandler.py \ + launchwindow.py \ pulsingicon.py \ tabbinghandler.py \ OverlayWindow.py \ diff --git a/src/view/Shell.py b/src/view/Shell.py index 1c90c40..5fd81c1 100644 --- a/src/view/Shell.py +++ b/src/view/Shell.py @@ -38,6 +38,7 @@ from view.ActivityHost import ActivityHost from view.frame import frame from view.keyhandler import KeyHandler from view.home.HomeWindow import HomeWindow +from view.launchwindow import LaunchWindow from model import shellmodel # #3903 - this constant can be removed and assumed to be 1 when dbus-python @@ -63,6 +64,8 @@ class Shell(gobject.GObject): self._home_window = HomeWindow() self._home_window.show() + self._launch_window = LaunchWindow() + home_model = self._model.get_home() home_model.connect('launch-started', self.__launch_started_cb) home_model.connect('launch-failed', self.__launch_failed_cb) @@ -92,12 +95,14 @@ class Shell(gobject.GObject): def __launch_started_cb(self, home_model, home_activity): if home_activity.get_type() != 'org.laptop.JournalActivity': - self._home_window.show_launcher() + self._launch_window.show() def __launch_failed_cb(self, home_model, home_activity): - self._home_window.hide_launcher() + self._launch_window.hide() def __launch_completed_cb(self, home_model, home_activity): + self._launch_window.hide() + activity_host = ActivityHost(home_activity) self._hosts[activity_host.get_xid()] = activity_host diff --git a/src/view/home/HomeWindow.py b/src/view/home/HomeWindow.py index 9c5180c..4ff0620 100644 --- a/src/view/home/HomeWindow.py +++ b/src/view/home/HomeWindow.py @@ -23,7 +23,6 @@ from view.home.MeshBox import MeshBox from view.home.HomeBox import HomeBox from view.home.FriendsBox import FriendsBox from view.home.transitionbox import TransitionBox -from view.home.launchbox import LaunchBox from model.shellmodel import ShellModel from model import shellmodel @@ -31,7 +30,6 @@ _HOME_PAGE = 0 _FRIENDS_PAGE = 1 _MESH_PAGE = 2 _TRANSITION_PAGE = 3 -_LAUNCH_PAGE = 4 class HomeWindow(gtk.Window): def __init__(self): @@ -63,7 +61,6 @@ class HomeWindow(gtk.Window): self._friends_box = FriendsBox() self._mesh_box = MeshBox() self._transition_box = TransitionBox() - self._launch_box = LaunchBox() self._activate_view() self.add(self._home_box) @@ -137,9 +134,6 @@ class HomeWindow(gtk.Window): self._transition_box.set_size(size) def _transition_completed_cb(self, transition_box): - self._sync_view() - - def _sync_view(self): current_child = self.get_child() self.remove(current_child) @@ -156,13 +150,3 @@ class HomeWindow(gtk.Window): def get_home_box(self): return self._home_box - - def show_launcher(self): - self.remove(self.get_child()) - self.add(self._launch_box) - self._launch_box.show() - - self._launch_box.zoom_in() - - def hide_launcher(self): - self._sync_view() diff --git a/src/view/home/Makefile.am b/src/view/home/Makefile.am index 80781d7..b323589 100644 --- a/src/view/home/Makefile.am +++ b/src/view/home/Makefile.am @@ -7,7 +7,6 @@ sugar_PYTHON = \ grid.py \ FriendView.py \ FriendsBox.py \ - launchbox.py \ HomeBox.py \ HomeWindow.py \ MeshBox.py \ diff --git a/src/view/home/launchbox.py b/src/view/launchwindow.py index da4cb84..ee3ccfa 100644 --- a/src/view/home/launchbox.py +++ b/src/view/launchwindow.py @@ -14,6 +14,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +import gtk import hippo import gobject import logging @@ -25,22 +26,47 @@ from sugar.graphics.xocolor import XoColor from model import shellmodel from view.pulsingicon import CanvasPulsingIcon -class LaunchBox(hippo.Canvas): +class LaunchWindow(hippo.CanvasWindow): def __init__(self): - gobject.GObject.__init__(self) + gobject.GObject.__init__( + self, type_hint=gtk.gdk.WINDOW_TYPE_HINT_SPLASHSCREEN) + + self._box = LaunchBox() + self.set_root(self._box) + + self.connect('focus-out-event', self.__focus_out_event_cb) + + screen = gtk.gdk.screen_get_default() + screen.connect('size-changed', self.__size_changed_cb) + + self._update_size() + + def show(self): + self.present() + self._box.zoom_in() + + def _update_size(self): + self.resize(gtk.gdk.screen_width(), gtk.gdk.screen_height()) + + def __focus_out_event_cb(self, widget, event): + self.hide() + + def __size_changed_cb(self, screen): + self._update_size() + +class LaunchBox(hippo.CanvasBox): + def __init__(self): + gobject.GObject.__init__(self, orientation=hippo.ORIENTATION_VERTICAL, + background_color=style.COLOR_WHITE.get_int()) self._activity_icon = CanvasPulsingIcon() + self.append(self._activity_icon, hippo.PACK_EXPAND) # FIXME support non-xo colors in CanvasPulsingIcon self._activity_icon.props.base_color = \ XoColor('%s,%s' % (style.COLOR_BUTTON_GREY.get_svg(), style.COLOR_TRANSPARENT.get_svg())) - vbox = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL) - vbox.props.background_color = style.COLOR_WHITE.get_int() - vbox.append(self._activity_icon, hippo.PACK_EXPAND) - self.set_root(vbox) - self._animator = animator.Animator(1.0) self._home = shellmodel.get_instance().get_home() -- cgit v0.9.1