Ticket #1447: sugar-1447.patch

File sugar-1447.patch, 4.0 KB (added by alsroot, 14 years ago)
  • src/jarabe/model/shell.py

    diff --git a/src/jarabe/model/shell.py b/src/jarabe/model/shell.py
    index ac2ef75..e03e0f7 100644
    a b class ShellModel(gobject.GObject): 
    577577        if home_activity:
    578578            logging.debug("Activity %s (%s) launch failed", activity_id,
    579579                home_activity.get_type())
    580             home_activity.props.launching = False
    581             self._remove_activity(home_activity)
     580            if home_activity.props.launching:
     581                self.emit('launch-failed', home_activity)
     582            else:
     583                self._remove_activity(home_activity)
    582584        else:
    583585            logging.error('Model for activity id %s does not exist.',
    584586                activity_id)
    585587
    586         self.emit('launch-failed', home_activity)
    587 
    588588    def _check_activity_launched(self, activity_id):
    589589        home_activity = self.get_activity_by_id(activity_id)
    590590
  • src/jarabe/view/launcher.py

    diff --git a/src/jarabe/view/launcher.py b/src/jarabe/view/launcher.py
    index d4b9967..74f6cb8 100644
    a b  
    1515# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    1616
    1717import logging
     18from gettext import gettext as _
    1819
    1920import gtk
    2021import hippo
    class LaunchWindow(gtk.Window): 
    3435
    3536        self.props.type_hint = gtk.gdk.WINDOW_TYPE_HINT_NORMAL
    3637        self.props.decorated = False
     38        self.modify_bg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color())
    3739
    38         canvas = hippo.Canvas()
    39         canvas.modify_bg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color())
    40         self.add(canvas)
     40        canvas = gtk.VBox()
    4141        canvas.show()
     42        self.add(canvas)
     43
     44        bar_size = gtk.gdk.screen_height() / 5 * 2
     45
     46        header = gtk.VBox()
     47        header.set_size_request(-1, bar_size)
     48        header.show()
     49        canvas.pack_start(header, expand=False)
    4250
    4351        self._activity_id = activity_id
    44         self._box = LaunchBox(activity_id, icon_path, icon_color)
    45         canvas.set_root(self._box)
     52        self.box = LaunchBox(activity_id, icon_path, icon_color)
     53        box = hippo.Canvas()
     54        box.modify_bg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color())
     55        box.set_root(self.box)
     56        box.show()
     57        canvas.pack_start(box)
     58
     59        footer = gtk.VBox(spacing=style.DEFAULT_SPACING)
     60        footer.set_size_request(-1, bar_size)
     61        footer.show()
     62        canvas.pack_end(footer, expand=False)
     63
     64        self.error_text = gtk.Label()
     65        self.error_text.props.use_markup = True
     66        footer.pack_start(self.error_text, expand=False)
     67
     68        button_box = gtk.Alignment(xalign=0.5)
     69        button_box.show()
     70        footer.pack_start(button_box, expand=False)
     71        self.cancel_button = gtk.Button(stock=gtk.STOCK_STOP)
     72        button_box.add(self.cancel_button)
    4673
    4774        self.connect('realize', self.__realize_cb)
    4875
    class LaunchWindow(gtk.Window): 
    5380
    5481    def show(self):
    5582        self.present()
    56         self._box.zoom_in()
     83        self.box.zoom_in()
    5784
    5885    def _update_size(self):
    5986        self.resize(gtk.gdk.screen_width(), gtk.gdk.screen_height())
    def __launch_started_cb(home_model, home_activity): 
    145172                 home_activity.get_icon_color())
    146173
    147174def __launch_failed_cb(home_model, home_activity):
     175    activity_id = home_activity.get_activity_id()
     176    launcher = _launchers.get(activity_id)
     177
     178    if launcher is None:
     179        logging.error('Launcher for %s is missing', activity_id)
     180    else:
     181        launcher.error_text.props.label = _('<b>%s</b> failed to start.') % \
     182                home_activity.get_activity_name()
     183        launcher.error_text.show()
     184
     185        launcher.cancel_button.connect('clicked',
     186                __cancel_button_clicked_cb, home_activity)
     187        launcher.cancel_button.show()
     188
     189def __cancel_button_clicked_cb(button, home_activity):
    148190    _destroy_launcher(home_activity)
    149191
    150192def __launch_completed_cb(home_model, home_activity):