From 3c6cbc2ff7d7fc1ba59862cdaa3a86bcb4e1cba0 Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Wed, 10 Mar 2010 16:32:02 +0000 Subject: Display a message when an activity fails to start (based on wadeb patches) #1447 --- diff --git a/src/jarabe/model/shell.py b/src/jarabe/model/shell.py index ac2ef75..e03e0f7 100644 --- a/src/jarabe/model/shell.py +++ b/src/jarabe/model/shell.py @@ -577,14 +577,14 @@ class ShellModel(gobject.GObject): if home_activity: logging.debug("Activity %s (%s) launch failed", activity_id, home_activity.get_type()) - home_activity.props.launching = False - self._remove_activity(home_activity) + if home_activity.props.launching: + self.emit('launch-failed', home_activity) + else: + self._remove_activity(home_activity) else: logging.error('Model for activity id %s does not exist.', activity_id) - self.emit('launch-failed', home_activity) - def _check_activity_launched(self, activity_id): home_activity = self.get_activity_by_id(activity_id) diff --git a/src/jarabe/view/launcher.py b/src/jarabe/view/launcher.py index d4b9967..e47491c 100644 --- a/src/jarabe/view/launcher.py +++ b/src/jarabe/view/launcher.py @@ -15,6 +15,7 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import logging +from gettext import gettext as _ import gtk import hippo @@ -34,15 +35,41 @@ class LaunchWindow(gtk.Window): self.props.type_hint = gtk.gdk.WINDOW_TYPE_HINT_NORMAL self.props.decorated = False + self.modify_bg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color()) - canvas = hippo.Canvas() - canvas.modify_bg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color()) - self.add(canvas) + canvas = gtk.VBox() canvas.show() + self.add(canvas) + + bar_size = gtk.gdk.screen_height() / 5 * 2 + + header = gtk.VBox() + header.set_size_request(-1, bar_size) + header.show() + canvas.pack_start(header, expand=False) self._activity_id = activity_id self._box = LaunchBox(activity_id, icon_path, icon_color) - canvas.set_root(self._box) + box = hippo.Canvas() + box.modify_bg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color()) + box.set_root(self._box) + box.show() + canvas.pack_start(box) + + footer = gtk.VBox(spacing=style.DEFAULT_SPACING) + footer.set_size_request(-1, bar_size) + footer.show() + canvas.pack_end(footer, expand=False) + + self.error_text = gtk.Label() + self.error_text.props.use_markup = True + footer.pack_start(self.error_text, expand=False) + + button_box = gtk.Alignment(xalign=0.5) + button_box.show() + footer.pack_start(button_box, expand=False) + self.cancel_button = gtk.Button(stock=gtk.STOCK_STOP) + button_box.add(self.cancel_button) self.connect('realize', self.__realize_cb) @@ -145,6 +172,21 @@ def __launch_started_cb(home_model, home_activity): home_activity.get_icon_color()) def __launch_failed_cb(home_model, home_activity): + activity_id = home_activity.get_activity_id() + launcher = _launchers.get(activity_id) + + if launcher is None: + logging.error('Launcher for %s is missing', activity_id) + else: + launcher.error_text.props.label = _('%s failed to start.') % \ + home_activity.get_activity_name() + launcher.error_text.show() + + launcher.cancel_button.connect('clicked', + __cancel_button_clicked_cb, home_activity) + launcher.cancel_button.show() + +def __cancel_button_clicked_cb(button, home_activity): _destroy_launcher(home_activity) def __launch_completed_cb(home_model, home_activity): -- cgit v0.9.1