Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/sugar/activity/activity.py
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2009-07-30 11:29:52 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-07-30 11:29:52 (GMT)
commita2f20f39ff359ecc3ea4430d0dfe7cb3d75dd320 (patch)
tree901e2fc5606104101071299ac47aaceeaf85ccfd /src/sugar/activity/activity.py
parente03fd4ddde95d8fcdf857f6cbdb0b05e9fd36471 (diff)
Fix review issues
Diffstat (limited to 'src/sugar/activity/activity.py')
-rw-r--r--src/sugar/activity/activity.py325
1 files changed, 203 insertions, 122 deletions
diff --git a/src/sugar/activity/activity.py b/src/sugar/activity/activity.py
index 7b6c094..28bb935 100644
--- a/src/sugar/activity/activity.py
+++ b/src/sugar/activity/activity.py
@@ -61,7 +61,7 @@ import dbus
import dbus.service
import cjson
-from sugar import util
+from sugar import util
from sugar.presence import presenceservice
from sugar.activity.activityservice import ActivityService
from sugar.activity.namingalert import NamingAlert
@@ -101,6 +101,12 @@ class ActivityToolbar(gtk.Toolbar):
gtk.Toolbar.__init__(self)
self._activity = activity
+ self._updating_share = False
+
+ activity.connect('shared', self.__activity_shared_cb)
+ activity.connect('joined', self.__activity_shared_cb)
+ activity.connect('notify::max_participants',
+ self.__max_participants_changed_cb)
if activity.metadata:
self.title = gtk.Entry()
@@ -117,17 +123,66 @@ class ActivityToolbar(gtk.Toolbar):
self.insert(separator, -1)
separator.show()
- self.share = share_button(activity)
+ self.share = ToolComboBox(label_text=_('Share with:'))
+ self.share.combo.connect('changed', self.__share_changed_cb)
+ self.share.combo.append_item(SCOPE_PRIVATE, _('Private'), 'zoom-home')
+ self.share.combo.append_item(SCOPE_NEIGHBORHOOD, _('My Neighborhood'),
+ 'zoom-neighborhood')
self.insert(self.share, -1)
-
- self.keep = keep_button(activity)
+ self.share.show()
+
+ self._update_share()
+
+ self.keep = ToolButton(tooltip=_('Keep'))
+ client = gconf.client_get_default()
+ color = XoColor(client.get_string('/desktop/sugar/user/color'))
+ keep_icon = Icon(icon_name='document-save', xo_color=color)
+ self.keep.set_icon_widget(keep_icon)
+ keep_icon.show()
+ self.keep.props.accelerator = '<Ctrl>S'
+ self.keep.connect('clicked', self.__keep_clicked_cb)
self.insert(self.keep, -1)
+ self.keep.show()
- self.stop = stop_button(activity)
+ self.stop = ToolButton('activity-stop', tooltip=_('Stop'))
+ self.stop.props.accelerator = '<Ctrl>Q'
+ self.stop.connect('clicked', self.__stop_clicked_cb)
self.insert(self.stop, -1)
+ self.stop.show()
self._update_title_sid = None
+ def _update_share(self):
+ self._updating_share = True
+
+ if self._activity.props.max_participants == 1:
+ self.share.hide()
+
+ if self._activity.get_shared():
+ self.share.set_sensitive(False)
+ self.share.combo.set_active(1)
+ else:
+ self.share.set_sensitive(True)
+ self.share.combo.set_active(0)
+
+ self._updating_share = False
+
+ def __share_changed_cb(self, combo):
+ if self._updating_share:
+ return
+
+ model = self.share.combo.get_model()
+ it = self.share.combo.get_active_iter()
+ (scope, ) = model.get(it, 0)
+ if scope == SCOPE_NEIGHBORHOOD:
+ self._activity.share()
+
+ def __keep_clicked_cb(self, button):
+ self._activity.copy()
+
+ def __stop_clicked_cb(self, button):
+ self._activity.close()
+
def __jobject_updated_cb(self, jobject):
self.title.set_text(jobject['title'])
@@ -160,9 +215,15 @@ class ActivityToolbar(gtk.Toolbar):
self.insert(tool_item, -1)
tool_item.show()
+ def __activity_shared_cb(self, activity):
+ self._update_share()
+
+ def __max_participants_changed_cb(self, activity, pspec):
+ self._update_share()
+
class EditToolbar(gtk.Toolbar):
"""Provides the standard edit toolbar for Activities.
-
+
Members:
undo -- the undo button
redo -- the redo button
@@ -196,20 +257,30 @@ class EditToolbar(gtk.Toolbar):
def __init__(self):
gtk.Toolbar.__init__(self)
- self.undo = undo_button()
+ self.undo = ToolButton('edit-undo')
+ self.undo.set_tooltip(_('Undo'))
self.insert(self.undo, -1)
+ self.undo.show()
- self.redo = redo_button()
+ self.redo = ToolButton('edit-redo')
+ self.redo.set_tooltip(_('Redo'))
self.insert(self.redo, -1)
+ self.redo.show()
- self.separator = separator()
+ self.separator = gtk.SeparatorToolItem()
+ self.separator.set_draw(True)
self.insert(self.separator, -1)
+ self.separator.show()
- self.copy = copy_button()
+ self.copy = ToolButton('edit-copy')
+ self.copy.set_tooltip(_('Copy'))
self.insert(self.copy, -1)
+ self.copy.show()
- self.paste = paste_button()
+ self.paste = ToolButton('edit-paste')
+ self.paste.set_tooltip(_('Paste'))
self.insert(self.paste, -1)
+ self.paste.show()
class ActivityToolbox(Toolbox):
"""Creates the Toolbox for the Activity
@@ -962,6 +1033,126 @@ class Activity(Window, gtk.Container):
# DEPRECATED
_shared_activity = property(lambda self: self.shared_activity, None)
+class ActivityToolbarButton(ToolbarButton):
+ def __init__(self, activity, **kwargs):
+ from jarabe.journal.misc import get_icon_name
+
+ toolbar = ActivityToolbar(activity)
+ toolbar.stop.hide()
+
+ ToolbarButton.__init__(self, page=toolbar, **kwargs)
+
+ self.activity = activity
+
+ client = gconf.client_get_default()
+ color = XoColor(client.get_string('/desktop/sugar/user/color'))
+ icon = Icon(file=get_icon_name(activity.metadata), xo_color=color)
+ icon.show()
+ self.set_icon_widget(icon)
+
+ def expander(self):
+ separator = gtk.SeparatorToolItem()
+ separator.props.draw = False
+ separator.set_expand(True)
+ separator.show()
+ return separator
+
+ def stop_button(self, **kwargs):
+ stop = ToolButton('activity-stop', tooltip=_('Stop'), **kwargs)
+ stop.props.accelerator = '<Ctrl>Q'
+ stop.connect('clicked', self.__stop_button_clicked_cb)
+ stop.show()
+ return stop
+
+ def __stop_button_clicked_cb(self, button):
+ self.activity.close()
+
+ def undo_button(self, **kwargs):
+ undo = ToolButton('edit-undo', **kwargs)
+ undo.set_tooltip(_('Undo'))
+ undo.show()
+ return undo
+
+ def redo_button(self, **kwargs):
+ redo = ToolButton('edit-redo', **kwargs)
+ redo.set_tooltip(_('Redo'))
+ redo.show()
+ return redo
+
+ def separator(self, **kwargs):
+ separator = gtk.SeparatorToolItem(**kwargs)
+ separator.set_draw(True)
+ separator.show()
+ return separator
+
+ def copy_button(self, **kwargs):
+ copy = ToolButton('edit-copy', **kwargs)
+ copy.set_tooltip(_('Copy'))
+ copy.show()
+ return copy
+
+ def paste_button(self, **kwargs):
+ paste = ToolButton('edit-paste', **kwargs)
+ paste.set_tooltip(_('Paste'))
+ paste.show()
+ return paste
+
+ def share_button(self):
+ palette = RadioPalette()
+
+ private = RadioToolButton(
+ icon_name='zoom-home')
+ palette.append(private, _('Private'))
+
+ neighborhood = RadioToolButton(
+ icon_name='zoom-neighborhood',
+ group=private)
+ neighborhood_handle = neighborhood.connect('clicked',
+ self.__neighborhood_clicked_cb)
+ palette.append(neighborhood, _('My Neighborhood'))
+
+ self.activity.connect('shared', self.__update_share)
+ self.activity.connect('joined', self.__update_share)
+
+ share = RadioMenuButton(palette=palette)
+ share.show()
+
+ return share
+
+ def __neighborhood_clicked_cb(self, button):
+ self.activity.share()
+
+ def __update_share(self, activity):
+ neighborhood.handler_block(neighborhood_handle)
+ try:
+ if self.activity.get_shared():
+ private.props.sensitive = False
+ neighborhood.props.sensitive = False
+ neighborhood.props.active = True
+ else:
+ private.props.sensitive = True
+ neighborhood.props.sensitive = True
+ private.props.active = True
+ finally:
+ neighborhood.handler_unblock(neighborhood_handle)
+
+ def keep_button(self, **kwargs):
+ client = gconf.client_get_default()
+ color = XoColor(client.get_string('/desktop/sugar/user/color'))
+ keep_icon = Icon(icon_name='document-save', xo_color=color)
+ keep_icon.show()
+
+ keep = ToolButton(tooltip=_('Keep'), **kwargs)
+ keep.set_icon_widget(keep_icon)
+ keep.props.accelerator = '<Ctrl>S'
+ keep.connect('clicked', self.__keep_button_clicked)
+ keep.show()
+
+ return keep
+
+ def __keep_button_clicked(self, button):
+ self.activity.copy()
+
_session = None
def _get_session():
@@ -975,7 +1166,7 @@ def _get_session():
def get_bundle_name():
"""Return the bundle name for the current process' bundle"""
return os.environ['SUGAR_BUNDLE_NAME']
-
+
def get_bundle_path():
"""Return the bundle path for the current process' bundle"""
return os.environ['SUGAR_BUNDLE_PATH']
@@ -993,113 +1184,3 @@ def show_object_in_journal(object_id):
obj = bus.get_object(J_DBUS_SERVICE, J_DBUS_PATH)
journal = dbus.Interface(obj, J_DBUS_INTERFACE)
journal.ShowObject(object_id)
-
-def toolbar(activity):
- from jarabe.journal.misc import get_icon_name
-
- toolbar = ActivityToolbar(activity)
- toolbar.stop.hide()
- activity_button = ToolbarButton(page=toolbar)
- activity_button.show()
-
- client = gconf.client_get_default()
- color = XoColor(client.get_string('/desktop/sugar/user/color'))
- icon = Icon(file=get_icon_name(activity.metadata), xo_color=color)
- icon.show()
- activity_button.set_icon_widget(icon)
-
- return activity_button
-
-def expander():
- separator = gtk.SeparatorToolItem()
- separator.props.draw = False
- separator.set_expand(True)
- separator.show()
- return separator
-
-def stop_button(activity, **kwargs):
- stop = ToolButton('activity-stop', tooltip=_('Stop'), **kwargs)
- stop.props.accelerator = '<Ctrl>Q'
- stop.connect('clicked', lambda button: activity.close())
- stop.show()
- return stop
-
-def undo_button(**kwargs):
- undo = ToolButton('edit-undo', **kwargs)
- undo.set_tooltip(_('Undo'))
- undo.show()
- return undo
-
-def redo_button(**kwargs):
- redo = ToolButton('edit-redo', **kwargs)
- redo.set_tooltip(_('Redo'))
- redo.show()
- return redo
-
-def separator(**kwargs):
- separator = gtk.SeparatorToolItem(**kwargs)
- separator.set_draw(True)
- separator.show()
- return separator
-
-def copy_button(**kwargs):
- copy = ToolButton('edit-copy', **kwargs)
- copy.set_tooltip(_('Copy'))
- copy.show()
- return copy
-
-def paste_button(**kwargs):
- paste = ToolButton('edit-paste', **kwargs)
- paste.set_tooltip(_('Paste'))
- paste.show()
- return paste
-
-def share_button(activity, **kwargs):
- palette = RadioPalette()
-
- private = RadioToolButton(
- icon_name='zoom-home')
- palette.append(private, _('Private'))
-
- neighborhood = RadioToolButton(
- icon_name='zoom-neighborhood',
- group=private)
- neighborhood_handle = neighborhood.connect('clicked',
- lambda button: activity.share())
- palette.append(neighborhood, _('My Neighborhood'))
-
- def update_share():
- neighborhood.handler_block(neighborhood_handle)
- try:
- if activity.get_shared():
- private.props.sensitive = False
- neighborhood.props.sensitive = False
- neighborhood.props.active = True
- else:
- private.props.sensitive = True
- neighborhood.props.sensitive = True
- private.props.active = True
- finally:
- neighborhood.handler_unblock(neighborhood_handle)
-
- activity.connect('shared', lambda activity: update_share())
- activity.connect('joined', lambda activity: update_share())
-
- share = RadioMenuButton(palette=palette)
- share.show()
-
- return share
-
-def keep_button(activity, **kwargs):
- client = gconf.client_get_default()
- color = XoColor(client.get_string('/desktop/sugar/user/color'))
- keep_icon = Icon(icon_name='document-save', xo_color=color)
- keep_icon.show()
-
- keep = ToolButton(tooltip=_('Keep'), **kwargs)
- keep.set_icon_widget(keep_icon)
- keep.props.accelerator = '<Ctrl>S'
- keep.connect('clicked', lambda button: activity.copy())
- keep.show()
-
- return keep