Hi Esteban.<br><br>Please send the file "bin/sugar-session" (that contains the "gobject.idle_add(show_notification_cb)" call.<br><br>It seems that the call has been placed too early in the bootstrap process.<br>
<br>Regards,<br>Ajay<br><br><div class="gmail_quote">On Tue, Jan 31, 2012 at 10:40 PM, Esteban Bordón <span dir="ltr"><<a href="mailto:ebordon@plan.ceibal.edu.uy">ebordon@plan.ceibal.edu.uy</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
I've applied this patch on a dx3 image and activities icons are still missed.<br><br>To test I've created a callback for display a notification:<br><br>def show_notification_cb():<br>    from jarabe.frame import get_view<br>


    frame = get_view()<br>    frame.add_message(body="body", summary="summary")<br><br>and I've added in bootstrap:<br><br>gobject.idle_add(show_notification_cb)<br><br>I attach shell.log because some messages refers to frame/activitiestray.py that was patched<br>


<br clear="all">    <div>  </div><font face="'times new roman', serif">cheers,<br><font color="#888888">Esteban<br></font></font><div><div></div><div class="h5">
<br><br><div class="gmail_quote">2012/1/31 Anish Mangal <span dir="ltr"><<a href="mailto:anish@sugarlabs.org" target="_blank">anish@sugarlabs.org</a>></span><br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


Ping. Could somebody review this please :-)<br>
<div><div><br>
On Tue, Jan 24, 2012 at 10:35, Ajay Garg <<a href="mailto:ajay@activitycentral.com" target="_blank">ajay@activitycentral.com</a>> wrote:<br>
> ---<br>
><br>
> Issue:<br>
> ------<br>
> Originally discussed at :<br>
> <a href="http://lists.sugarlabs.org/archive/dextrose/2011-August/001340.html" target="_blank">http://lists.sugarlabs.org/archive/dextrose/2011-August/001340.html</a><br>
><br>
> and catched by Esteban Bordón, the issue is that whenever (and not just<br>
> at startup) any notification-messages are displayed, any Activity-icon<br>
> (and not just the Journal-Activity icon) is not displayed in the<br>
> top-panel-frame.<br>
><br>
> Technical history/details:<br>
> ---------------------------<br>
><br>
> The mesh-, group-, home-, and activity-zoom buttons are a group of<br>
> radiobuttons; only one may be visibly-active at a time (this is<br>
> highlighted by the white-background of the corresponding selected<br>
> zoom-button).<br>
> Please see:<br>
>               "src/jarabe/frame/zoomtoolbar.py"<br>
> for code-details.<br>
><br>
> Similarly, all the opened activity-instances are shown by a yet another<br>
> group of radiobuttons; the selected activity being highlighed by the<br>
> corresponding selected activity-icon-button.<br>
><br>
> Now, what was happening, was that the notification-message-icon was<br>
> being added into the Activities-Tray (the second group of radiobuttons<br>
> as discussed above); but any further activity-icons were not being added<br>
> into the tray, because the notification-message-icon did not respect the<br>
> semantics of the activity-icons. Hence, the notification-message-icon, and<br>
> any other activity-icon (including Journal-activity icon) were not being<br>
> made a part of the same group.<br>
><br>
> Fix:<br>
> ----<br>
><br>
> The top-panel-frame-setup (wherein the startup-notification-messages may<br>
> be added) gets processed, ONLY after the journal has been set-up.<br>
> Thus, "gio.File.monitor_file" has been used as the signalling mechanism.<br>
><br>
> As rightly pointed out by Bernie and Sascha, gio-file-monitor might not<br>
> be the best signalling/synchronizing mechaism here. I tried to use threading.Event()<br>
> objects, but it needed to spawn another thread (note that all operations<br>
> happen here in the context of the main-thread, even for "gobject.idle_add()"<br>
> operations.<br>
><br>
><br>
> CHANGELOG:<br>
> ---------<br>
><br>
> Changes of version-3 over version-2 :<br>
> -------------------------------------<br>
> a. Review changes as per Bernie and Sascha.<br>
><br>
><br>
> Changes of version-2 over version-1 :<br>
> -------------------------------------<br>
> a. Reverted to the previous-behaviour, wherein the notification-message-icon<br>
>   is shown at the end of all activity-icons (Thanks Anish and Estaban).<br>
>   Of course, this included the fix of the issue :)<br>
><br>
><br>
>  bin/sugar-session                  |   22 +++++++++++++++++++++-<br>
>  src/jarabe/frame/activitiestray.py |   18 ++++++++++++++++++<br>
>  2 files changed, 39 insertions(+), 1 deletions(-)<br>
><br>
> diff --git a/bin/sugar-session b/bin/sugar-session<br>
> index 40c9db7..1b28d4f 100755<br>
> --- a/bin/sugar-session<br>
> +++ b/bin/sugar-session<br>
> @@ -21,6 +21,7 @@ import sys<br>
>  import time<br>
>  import subprocess<br>
>  import shutil<br>
> +import gio<br>
><br>
>  if os.environ.get('SUGAR_LOGGER_LEVEL', '') == 'debug':<br>
>     print '%r STARTUP: Starting the shell' % time.time()<br>
> @@ -35,6 +36,9 @@ import gobject<br>
>  import dbus.glib<br>
>  import wnck<br>
><br>
> +MONITORS = []<br>
> +MONITOR_ACTION_TAKEN = False<br>
> +<br>
>  try:<br>
>     import xklavier<br>
>  except ImportError:<br>
> @@ -181,15 +185,31 @@ def setup_window_manager():<br>
>             shell=True):<br>
>         logging.warning('Can not disable metacity keybindings')<br>
><br>
> +def file_monitor_changed_cb(monitor, one_file, other_file, event_type):<br>
> +    global MONITOR_ACTION_TAKEN<br>
> +    if (not MONITOR_ACTION_TAKEN) and \<br>
> +       (one_file.get_path() == os.path.expanduser('~/.sugar/journal_created')):<br>
> +        if event_type == gio.FILE_MONITOR_EVENT_CREATED:<br>
> +            gobject.idle_add(setup_frame_cb)<br>
> +            MONITOR_ACTION_TAKEN = True<br>
> +<br>
> +def arrange_for_setup_frame_cb():<br>
> +    path = gio.File(os.path.expanduser('~/.sugar/journal_created'))<br>
> +    monitor = path.monitor_file()<br>
> +    monitor.connect('changed', file_monitor_changed_cb)<br>
> +    MONITORS.append(monitor)<br>
> +<br>
>  def bootstrap():<br>
>     setup_window_manager()<br>
><br>
>     from jarabe.view import launcher<br>
>     launcher.setup()<br>
><br>
> -    gobject.idle_add(setup_frame_cb)<br>
>     gobject.idle_add(setup_keyhandler_cb)<br>
> +<br>
> +    arrange_for_setup_frame_cb()<br>
>     gobject.idle_add(setup_journal_cb)<br>
> +<br>
>     gobject.idle_add(setup_notification_service_cb)<br>
>     gobject.idle_add(setup_file_transfer_cb)<br>
>     gobject.idle_add(show_software_updates_cb)<br>
> diff --git a/src/jarabe/frame/activitiestray.py b/src/jarabe/frame/activitiestray.py<br>
> index 2b8b7c6..1c8e285 100644<br>
> --- a/src/jarabe/frame/activitiestray.py<br>
> +++ b/src/jarabe/frame/activitiestray.py<br>
> @@ -246,6 +246,24 @@ class ActivitiesTray(HTray):<br>
>         button.connect('clicked', self.__activity_clicked_cb, home_activity)<br>
>         button.show()<br>
><br>
> +        # JournalActivity is always the first activity to be added.<br>
> +        # Broadcast the signal-of-its-creation.<br>
> +        if group is None:<br>
> +            self._signal_addition_of_journal_activity()<br>
> +<br>
> +    def _signal_addition_of_journal_activity(self):<br>
> +        monitor_file = os.path.expanduser('~/.sugar/journal_created')<br>
> +<br>
> +        # Remove the file, if it exists.<br>
> +        # This is important, since we are checking for the<br>
> +        # FILE_CREATED event in the monitor.<br>
> +        if os.path.exists(monitor_file):<br>
> +            os.remove(monitor_file)<br>
> +<br>
> +        # Now, create the file.<br>
> +        f = open(monitor_file, 'w')<br>
> +        f.close()<br>
> +<br>
>     def __activity_removed_cb(self, home_model, home_activity):<br>
>         logging.debug('__activity_removed_cb: %r', home_activity)<br>
>         button = self._buttons[home_activity]<br>
> --<br>
> 1.7.4.4<br>
><br>
> _______________________________________________<br>
> Dextrose mailing list<br>
> <a href="mailto:Dextrose@lists.sugarlabs.org" target="_blank">Dextrose@lists.sugarlabs.org</a><br>
> <a href="http://lists.sugarlabs.org/listinfo/dextrose" target="_blank">http://lists.sugarlabs.org/listinfo/dextrose</a><br>
<br>
<br>
<br>
</div></div><span><font color="#888888">--<br>
Anish | <a href="mailto:anish@sugarlabs.org" target="_blank">anish@sugarlabs.org</a><br>
</font></span><div><div>_______________________________________________<br>
Dextrose mailing list<br>
<a href="mailto:Dextrose@lists.sugarlabs.org" target="_blank">Dextrose@lists.sugarlabs.org</a><br>
<a href="http://lists.sugarlabs.org/listinfo/dextrose" target="_blank">http://lists.sugarlabs.org/listinfo/dextrose</a><br>
</div></div></blockquote></div><br>
</div></div></blockquote></div><br>