Hi Gonzalo,

thanks for this great writeup!

On 09/19/2012 09:13 PM, Gonzalo Odiard wrote:
> Today we explored with Simon different alternatives:
>
> - override the icon-name property and fallback to what we do in
> set_named_icon
> - override the icon-name property and print a warning to use 'named_icon'
> - override the icon-name property, do what we do in set_named_icon and
> remove the named_icon property (there is not a better moment to do the last
> one than now, if we think this is the right thing to do)
>
> In toolbutton, we are using the icon_name property:
>
>      def __init__(self, icon_name=None, **kwargs):
>          .....
>          if icon_name:
>              self.set_icon(icon_name)
>
>      def set_icon(self, icon_name):
>          icon = Icon(icon_name=icon_name)
>          self.set_icon_widget(icon)
>          icon.show()
>
>      icon_name = GObject.property(type=str, setter=set_icon)
>
> In toogletoolbutton we are using named_icon and can be set as a parameter
> when created,
> there are a set_named_icon but there are not a property:
>
>      def __init__(self, named_icon=None):
>          ....
>          self.set_named_icon(named_icon)
>
>      def set_named_icon(self, named_icon):
>          icon = Icon(icon_name=named_icon)
>          self.set_icon_widget(icon)
>          icon.show()
>
> And in radiotoolbutton there are a property and a method named_icon, but
> can't be set at creation time:
>
>      def __init__(self, **kwargs):
>
>      def set_named_icon(self, named_icon):
>          icon = Icon(icon_name=named_icon,
>                      xo_color=self._xo_color,
>                      icon_size=Gtk.IconSize.LARGE_TOOLBAR)
>          self.set_icon_widget(icon)
>          icon.show()
>
>      def get_named_icon(self):
>          if self.props.icon_widget is not None:
>              return self.props.icon_widget.props.icon_name
>          else:
>              return None
>
>      named_icon = GObject.property(type=str, setter=set_named_icon,
>                                    getter=get_named_icon)
>
> (icon_name is a property of Gtk.Gtk.RadioToolButton, but is not set in the
> same way,
> and the button looks bigger)
>
> I think we should have a consistent API, doing the same than in toolbutton.

Agreed!

> Questions:
>
> 1) Do you agree with have a consistent API and do the change now in gtk3
> toolkit?

Yes, we should do the change now, before we have more activities to be ported over.

> 2) What should we do with the old named_icon properties? Remove it?
> Mark as deprecated?
> How?

The activities in your list are not all ported yet (e.g. TamTam) so that can be part of the porting.

If an API is considered stable you would normally announce the deprecation and add warnings. See for example how we handled the keep button. Then after a some time you remove the API completely. In this case as the toolkit-gtk3 is new and the state is arguable we might get away in doing it a bit more radical.

If we only keep the 'icon-name' property and remove 'named-icon' is it doable form the existing ported activities side? If too heavy we go the deprecated step. In any case, we should make all that API the same.

Regards,
   Simon
_______________________________________________
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel

Reply via email to