Activity tutorial
Here is a short tutorial about writing a sugar activity. It's a step by step guide to get you started quickly, without going in details of the activity system. Download the example sources
Setup the build system
Create the autogen.sh script:
#!/bin/sh # Run this to generate all the initial makefiles, etc. srcdir=`dirname $0` test -z "$srcdir" && srcdir=. PKG_NAME="sugar-drawing" (test -f $srcdir/drawing.activity) || { echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" echo " top-level $PKG_NAME directory" exit 1 } which gnome-autogen.sh || { echo "You need to install gnome-common from the GNOME CVS" exit 1 } REQUIRED_AUTOMAKE_VERSION=1.9 USE_GNOME2_MACROS=1 . gnome-autogen.sh
Create a configure.ac file:
AC_INIT([Sugar Drawing],[0.1],[],[sugar-drawing]) AM_INIT_AUTOMAKE AM_PATH_PYTHON AC_OUTPUT([ Makefile ])
Automake check for the existence of a few required files, you have to create them even if empty:
touch NEWS README AUTHORS ChangeLog
Write the activity Makefile.am:
activitydir = $(datadir)/sugar/activities/drawing activity_PYTHON = \ __init__.py \ DrawingActivity.py EXTRA_DIST = drawing.activity install-data-local: sugar-setup-activity $(srcdir)/drawing.activity
Write the activity code
Write a subclass of sugar.activity.Activity. It's a GtkWindow so you can use the "add" method to insert your own widgets. The source of DrawingActivity.py demonstrates it:
import gtk from sugar.activity.Activity import Activity class DrawingActivity(Activity): def __init__(self, service, args): Activity.__init__(self, service) button = gtk.Button('Drawing') self.add(button) button.show()
Create a package initialization file:
touch __init__.py
Write drawing.activity with the necessary informations about the activity:
[Activity] name = Drawing id = org.laptop.sugar.Drawing python_module = drawing.DrawingActivity.DrawingActivity default_type = _drawing_olpc._udp show_launcher = yes
Build and install
Initialize the build system. The value of prefix depends on the path of sugar-jhbuild:
./autogen.sh --prefix=[SUGAR-JHBUILD]/build
Build and install:
make make install