[sugar] frame redesign

Tomeu Vizoso tomeu at tomeuvizoso.net
Sat Mar 1 11:32:45 EST 2008


On Sat, Mar 1, 2008 at 2:48 AM, Marco Pesenti Gritti <mpgritti at gmail.com> wrote:
>
> On Fri, Feb 29, 2008 at 4:59 AM, Tomeu Vizoso <tomeu at tomeuvizoso.net> wrote:
>
>  d7336f7358eba894616f47e32d8061bad6a3e4f0
>
>  Talked with Eben. The zoom buttons should actually stay in a toolbar. The
>  activity icons should be in a separate Tray, on the right of the zoom toolbar.
>  That way if activities scroll, the zoom buttons stays in screen.

Ok.

>  0ad5327f664e49ce7e32fee4deb307165c5e7732
>
>  +        if new_level == ShellModel.ZOOM_MESH:
>  +            self._mesh_button.props.active = True
>  +        elif new_level == ShellModel.ZOOM_FRIENDS:
>  +            self._groups_button.props.active = True
>  +        elif new_level == ShellModel.ZOOM_HOME:
>  +            self._home_button.props.active = True
>  +        elif new_level == ShellModel.ZOOM_ACTIVITY:
>  +            self._activity_button.props.active = True
>
>  I think we should start using the new style gobject properties in new code.

You mean 'self._activity_button.active = True' should work? It doesn't
work here with 2.14.0.

>  There will be conflicts with the Tray vs Toolbar thing in the previous one.
>
>  af16fc5b4c2b15bee68656867355883146f07030
>  d61258768b33d8bb646c6bdf159ad46bc9059f19
>
>  What problems do you have there? I'll just note that sometimes it's easier
>  to use toggle buttons then radio, not sure if this is the case.

The problem is that shell_model.props.zoom_level is saying
ShellModel.ZOOM_ACTIVITY when it is really ShellModel.ZOOM_HOME, so
the radio button is wrong at start time.

I don't like much how the model stores the zoom level and the view has
a setter that does something else when changing levels. Perhaps we
should set and get from the model, and the view could listen for a
signal and take screenshots, etc.

>  f0689cc5bde7235ce73be14414a2648070215959
>
>         activitiestray.py               \
>  +       activitiestray2.py              \
>
>  I suppose the 2 is temporary. Any reason to do this? The rename will mess up
>  the history. Hmm, I guess I'm confused by this one, You are modifying both
>  versions of the tray and I'm not sure which one we are going to use...

Sorry about the confusion. activitiestray2.py is the old activities
tray in the bottom frame. I kept it for a while because I needed a way
of launching activities.

+        # TODO: setting box_width and hippo.PACK_EXPAND looks like a
hack to me.
+        # Why hippo cannot respect the request size of these controls?
+
         zoom_toolbar = ZoomToolbar(self._shell)
-        panel.append(hippo.CanvasWidget(widget=zoom_toolbar),
hippo.PACK_EXPAND)
+        panel.append(hippo.CanvasWidget(widget=zoom_toolbar,
+                box_width=4*style.GRID_CELL_SIZE))
         zoom_toolbar.show()

+        activities_tray = ActivitiesTray(self._shell)
+        panel.append(hippo.CanvasWidget(widget=activities_tray),
+                hippo.PACK_EXPAND)
+        activities_tray.show()

If I don't set box_width and hippo.PACK_EXPAND, both the toolbar and
the tray appear with their minimum sizes (the toolbar shows a drop
down arrow and the tray shoes the two arrows). Why is hippo just
respecting the minimum size for the widgets and not using all the
available space?

>  3677745a10fbc7481fa1da02bd7b4c63e28d0deb
>
>  +        if home_activity.props.launching:
>  +            palette = Palette(_('Starting...'))
>  +            palette.props.invoker = FrameWidgetInvoker(self)
>  +            palette.set_group_id('frame')
>  +            self.set_palette(palette)
>  +
>  +            #self._start_pulsing()
>  +            home_activity.connect('notify::launching',
>  self._launching_changed_cb)
>  +        else:
>  +            self._setup_palette()
>
>  Maybe it would be cleaner to have the launching case inside _setup_palette too?

Agreed.

>  1c2ce9f1c374e85b3174a6a8868cb6fad15cb715
>
>  -        self.props.icon_name = name
>  +        self.get_icon().props.icon_name = name
>
>  Can we fix the toolkit and make this:
>
>  self.icon.props.icon_name = name

Done

>  (should get even more convenient if we start using the new style gobject props).
>
>  +        view = deviceview.create(device)
>  +        self.pack_end(view, expand=False, fill=False, padding=0)
>
>  I'd rather pack_end the container then each widget, if that works as well.

We would have to set xalign = hippo.ALIGNMENT_END in the CanvasBox
inside the FrameWindow, but that's not accessible from outside.

If/when we remove hippo from the frame, then we'll be able to pack_end
as you say.

>  +        """
>          activities_tray = activitiestray2.ActivitiesTray(self._shell)
>          panel.append(hippo.CanvasWidget(widget=activities_tray),
>  hippo.PACK_EXPAND)
>  +        """
>
>  Please remove this.

Done

Thanks a lot for the review. I'm about to commit the home view work,
can you give it a look as well?

Thanks,

Tomeu


More information about the Sugar mailing list