diff --git a/NEWS b/NEWS index efffc6c0..5ceacfac 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,5 @@ +* #2014 Use a combobox to represent activity network state. (marco) + Snapshot 4a924a8e5d * #2399 Fix a bug which was preventing Write to start. (tomeu) diff --git a/sugar/activity/activity.py b/sugar/activity/activity.py index 08a98936..5615f38f 100644 --- a/sugar/activity/activity.py +++ b/sugar/activity/activity.py @@ -36,12 +36,16 @@ from sugar.graphics import units from sugar.graphics.window import Window from sugar.graphics.toolbox import Toolbox from sugar.graphics.toolbutton import ToolButton +from sugar.graphics.toolcombobox import ToolComboBox from sugar.datastore import datastore from sugar import wm from sugar import profile from sugar import _sugarext class ActivityToolbar(gtk.Toolbar): + SHARE_PRIVATE = 0 + SHARE_NEIGHBORHOOD = 1 + def __init__(self, activity): gtk.Toolbar.__init__(self) @@ -64,25 +68,21 @@ class ActivityToolbar(gtk.Toolbar): self.insert(separator, -1) separator.show() + self.share = ToolComboBox(label_text='Share with:') + self.share.combo.connect('changed', self._share_changed_cb) + self.share.combo.append_item(None, _('Private')) + self.share.combo.append_item(None, _('My Neighborhood')) + self._update_share() + + self.insert(self.share, -1) + self.share.show() + self.keep = ToolButton('document-save') self.keep.set_tooltip(_('Keep')) self.keep.connect('clicked', self._keep_clicked_cb) self.insert(self.keep, -1) self.keep.show() - self.share = ToolButton('stock-share-mesh') - self.share.set_tooltip(_('Share')) - self.share.connect('clicked', self._share_clicked_cb) - self.insert(self.share, -1) - if activity.get_shared(): - self.share.set_sensitive(False) - self.share.show() - - separator = gtk.SeparatorToolItem() - separator.props.draw = False - self.insert(separator, -1) - separator.show() - self.stop = ToolButton('activity-stop') self.stop.set_tooltip(_('Stop')) self.stop.connect('clicked', self._stop_clicked_cb) @@ -91,8 +91,17 @@ class ActivityToolbar(gtk.Toolbar): self._update_title_sid = None - def _share_clicked_cb(self, button): - self._activity.share() + def _update_share(self): + if self._activity.get_shared(): + self.share.set_sensitive(False) + self.share.combo.set_active(self.SHARE_NEIGHBORHOOD) + else: + self.share.set_sensitive(True) + self.share.combo.set_active(self.SHARE_PRIVATE) + + def _share_changed_cb(self, combo): + if self.share.combo.get_active() == self.SHARE_NEIGHBORHOOD: + self._activity.share() def _keep_clicked_cb(self, button): self._activity.save() @@ -126,7 +135,7 @@ class ActivityToolbar(gtk.Toolbar): tool_item.show() def _activity_shared_cb(self, activity): - self.share.set_sensitive(False) + self._update_share() class EditToolbar(gtk.Toolbar): def __init__(self): diff --git a/sugar/graphics/toolcombobox.py b/sugar/graphics/toolcombobox.py index b39465e2..01b308e3 100644 --- a/sugar/graphics/toolcombobox.py +++ b/sugar/graphics/toolcombobox.py @@ -16,20 +16,45 @@ # Boston, MA 02111-1307, USA. import gtk +import gobject from sugar.graphics.combobox import ComboBox from sugar.graphics import units +from sugar.graphics import style class ToolComboBox(gtk.ToolItem): - def __init__(self, combo=None): - gtk.ToolItem.__init__(self) + __gproperties__ = { + 'label-text' : (str, None, None, None, + gobject.PARAM_WRITABLE), + } + + def __init__(self, combo=None, **kwargs): + self.label = None + self._label_text = '' + + gobject.GObject.__init__(self, **kwargs) self.set_border_width(units.microgrid_to_pixels(1)) + hbox = gtk.HBox(False, style.DEFAULT_SPACING) + + self.label = gtk.Label(self._label_text) + hbox.pack_start(self.label, False) + self.label.show() + if combo: self.combo = combo else: self.combo = ComboBox() - self.add(self.combo) + + hbox.pack_start(self.combo) self.combo.show() + self.add(hbox) + hbox.show() + + def do_set_property(self, pspec, value): + if pspec.name == 'label-text': + self._label_text = value + if self.label: + self.label.set_text(self._label_text)