[OLPC-Asia] Writing Your First Sugar Activity !

lite li litekok at gmail.com
Mon Aug 20 11:45:32 EDT 2012


http://kperisetla.blogspot.com/2012/08/writing-your-first-sugar-activity.html

The best open source project to work with is "Sugar" primarily developed by
SugarLabs and developers, contributors around the world. As a  Sugar
Evangelist, I take this opportunity to share this post that describes on
how you can get started with your first Sugar activity. The program that
runs on Sugar Desktop environment is called as an Activity.

Prerequisites:

   - Familiarity with Python and PyGTK(Python interface for GUI programming
   using GTK+)
   - Sugar Desktop environment( installed, build or emulator on qemu)
   - GTK+ packages installed on you Linux flavor.

The example Activity shared in the following section has been tested on
Fedora 17( Beefy Miracle).

1. Create a directory structure :
mkdir -p KartikActivity.activity/activity

2.Create activity.info :
Create a file inside the "activity" sub directory with name "activity.info"
to describe your bundle in the activity sub-directory. The Activity
Bundles<http://wiki.laptop.org/go/Activity_Bundles>specification
explain in detail the meaning of each field.Write downs attribute names and
corresponding values in this file as :


*[Activity]
name = Kartik
bundle_id = org.laptop.Kartik
exec = sugar-activity Kartik.KartikActivity
icon = myicon
activity_version = 1.0
show_launcher = yes*



example :
<http://3.bp.blogspot.com/-R9OdYHMUpUY/UCEUaIZ7zaI/AAAAAAAAD1M/9HAWxiH3vLk/s1600/Screenshot+from+2012-08-07+18:42:35.png>

3. Activity Icon:
Design an icon for your activity by following the instructions on making
icons for Sugar and place it in the activity sub-directory. The file name
should match the icon file name specified in the info file (e.g.
myicon.svg).

I used the same icon as is used in paint :
<http://2.bp.blogspot.com/-uN70owQpRk4/UCEYGOgvWyI/AAAAAAAAD1k/uhle7ScBNZc/s1600/Screenshot+from+2012-08-07+18:59:27.png>

4. Create setup.py:
Write the setup.py script in the top level directory (e.g.
KartikActivity.activity/setup.py). The content should be like:

*from sugar.activity import bundlebuilder
bundlebuilder.start()*

A more advanced version, which supports building activity bundles without
Sugar installed, looks like this:

 *#!/usr/bin/env python
 try:
     from sugar.activity import bundlebuilder
     bundlebuilder.start()
 except ImportError:
     import os
     os.system("find ./ | sed 's,^./,KartikActivity.activity/,g' >
MANIFEST")
     os.system('rm KartikActivity.xo')
     os.chdir('..')
     os.system('zip -r KartikActivity.xo KartikActivity.activity')
     os.system('mv KartikActivity.xo ./KartikActivity.activity')
     os.chdir('KartikActivity.activity')*

5. Code your activity in Python:
The name you specified in the .info file as "class" is the name of the
class which runs your code. For the activity.info file above, we specify a
top-level module named KartikActivity.Kartik

The content in Katik.py file :

*from sugar.activity import activity
import logging

import sys, os
import gtk

class KartikActivity(activity.Activity):
    def hello(self, widget, data=None):
        logging.info('Hello Kartik')

    def __init__(self, handle):
        print "running activity init", handle
        activity.Activity.__init__(self, handle)
        print "activity running"

        # Creates the Toolbox. It contains the Activity Toolbar, which is
the
        # bar that appears on every Sugar window and contains essential
        # functionalities, such as the 'Collaborate' and 'Close' buttons.
        toolbox = activity.ActivityToolbox(self)
        self.set_toolbox(toolbox)
        toolbox.show()

        # Creates a new button with the label "Hello Kartik".
        self.button = gtk.Button("Hello Kartik")

        # When the button receives the "clicked" signal, it will call the
        # function hello() passing it None as its argument.  The hello()
        # function is defined above.
        self.button.connect("clicked", self.hello, None)

        # Set the button to be our canvas. The canvas is the main section of
        # every Sugar Window. It fills all the area below the toolbox.
        self.set_canvas(self.button)

        # The final step is to display this newly created widget.
        self.button.show()

        print "AT END OF THE CLASS"*

6. Create a MANIFEST:
(e.g. KartikActivity.activity/MANIFEST), containing the list of the files
(relative to the directory that the MANIFEST is in) to include in the
package. (Note: Be sure not to leave blank lines at the end of the file.)
This script does that in linux (run it from within the
KartikActivity.activity directory):
*
**cd KartikActivity.activity
find . -type f | sed 's,^./,,g' > MANIFEST*

Content of MANIFEST should look like this:

*activity/myicon.svg
activity/activity.info
MANIFEST
Kartik.py
setup.py*

7. Give permissions:
Make sure that all your python files have the required permissions to be
used.

*chmod a+x setup.py
chmod a+x Kartik.py*

8. Bundle your Activity:
Setup your bundle for development (must be user olpc when you do this) to
become user olpc, type: su - olpc
If you are prompted for a password, trying using: su

*python setup.py dev*

This just creates a symlink to your activity folder in ~/Activities, so
that Sugar can find your activity.

9. Run your Activity !:
Restart Sugar using Ctrl-Alt-Erase and your activity will appear in the
interface! (NOTE: By default, the Home view shows only the favorite
activities. You should press Ctrl+2 or go the right-upper corner and change
to the List View)

Now you can see your activity is visible within Journal:
<http://3.bp.blogspot.com/-DkVrad9rooA/UCEY0ClL1MI/AAAAAAAAD1s/embYr0MOFfE/s1600/Screenshot+of+_Home_.png>



You can click that activity to start and here you go...your first sugar
activity appears like this :
<http://3.bp.blogspot.com/-I-IGOQFszT4/UCEZ6Y5qNqI/AAAAAAAAD18/4DIDxQ_Cies/s1600/Screenshot+of+_Kartik+Activity__1.png>

I hope this post helps you understand sugar basics and how to develop
activities for sugar.

For more details on sugar activities visit: Sugar
Activities<http://wiki.laptop.org/go/Activities>

Cheers! :D
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.laptop.org/pipermail/olpc-asia/attachments/20120820/b88de328/attachment-0001.html>


More information about the OLPC-Asia mailing list