[Sugar-devel] [ANNOUNCE] Groupthink 0.1 pre-alpha
Tomeu Vizoso
tomeu at sugarlabs.org
Wed Jan 14 08:02:50 EST 2009
Hi Ben,
can we use this on non-sugar pygtk apps?
For example, could we use it to add collaboration features to
Labyrinth (a pygtk app that we are reusing as a Sugar activity)? Or
does it depend on Sugar in any way?
If the data model supported sharing through telepathy tubes, I think
that the upstream GNOME developers would be interested in helping us
maintain this code.
Regards,
Tomeu
On Wed, Jan 14, 2009 at 06:11, Benjamin M. Schwartz
<bmschwar at fas.harvard.edu> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Groupthink [1] is a development toolkit for collaborative activities.
> It's designed to hide all the collaboration boilerplate and algorithms
> under a clean high-level abstraction, so that Activity developers can
> spend more time on what they really care about.
>
> Groupthink is deeply pre-alpha. Any application is likely to find a
> multitude of blocker bugs. If that is acceptable to you, then by all
> means start your experiments. If you are interested, please ask questions
> or read the code.
>
> As an example of the power of Groupthink, I have created a collaborative
> version of Chris Ball's "Words" activity, a multilingual dictionary. This
> required adding the groupthink library into the bundle. It also required
> two patches, attached. Together, these patches represent a total of 5
> lines changed. The resulting activity has the main input field shared
> synchronously across all instances. This activity will be released,
> pending further testing.
>
> Groupthink: Collab should be easy.
>
> - --Ben
>
> [1] http://dev.laptop.org/git?p=projects/dobject;a=summary
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.9 (GNU/Linux)
>
> iEYEARECAAYFAkltdAwACgkQUJT6e6HFtqQ80wCfa4f13gAvJQYcdkhdmefBPBuU
> rYEAoJne2buq5hhC29/4ZFCdVvegBsne
> =aS94
> -----END PGP SIGNATURE-----
>
> --- activity.py.orig 2009-01-12 22:51:15.000000000 -0500
> +++ activity.py 2009-01-12 23:31:59.000000000 -0500
> @@ -1,9 +1,11 @@
> from sugar.activity import activity
>
> -class ViewSourceActivity(activity.Activity):
> +from groupthink.sugar_tools import GroupActivity
> +
> +class ViewSourceActivity(GroupActivity):
> """Activity subclass which handles the 'view source' key."""
> - def __init__(self, handle):
> - super(ViewSourceActivity, self).__init__(handle)
> + def __init__(self, handle, service_name):
> + super(ViewSourceActivity, self).__init__(handle, service_name)
> self.__source_object_id = None # XXX: persist this across invocations?
> self.connect('key-press-event', self._key_press_cb)
> def _key_press_cb(self, widget, event):
>
> --- pippy_app.py.orig 2009-01-13 23:37:25.000000000 -0500
> +++ pippy_app.py 2009-01-13 00:13:49.000000000 -0500
> @@ -28,6 +28,8 @@
> from sugar.activity.activity import ActivityToolbox, \
> get_bundle_path, get_bundle_name
>
> +import groupthink.gtk_tools
> +
> SERVICE = "org.laptop.Words"
> IFACE = SERVICE
> PATH = "/org/laptop/Words"
> @@ -36,7 +38,7 @@
> """Words Activity as specified in activity.info"""
> def __init__(self, handle):
> """Set up the Words activity."""
> - super(WordsActivity, self).__init__(handle)
> + super(WordsActivity, self).__init__(handle, SERVICE)
> self._logger = logging.getLogger('words-activity')
>
> from sugar.graphics.menuitem import MenuItem
> @@ -69,7 +71,8 @@
> label2 = gtk.Label("Translation")
>
> # Text entry box to enter word to be translated.
> - self.totranslate = gtk.Entry(max=50)
> + self.cloud.totranslate = groupthink.gtk_tools.RecentEntry(max=50)
> + self.totranslate = self.cloud.totranslate
> self.totranslate.connect("changed", self.totranslate_cb)
> self.totranslate.modify_font(pango.FontDescription("Sans 14"))
>
>
> _______________________________________________
> Sugar-devel mailing list
> Sugar-devel at lists.sugarlabs.org
> http://lists.sugarlabs.org/listinfo/sugar-devel
>
>
More information about the Sugar-devel
mailing list