![]() |
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 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
name = Kartik
bundle_id = org.laptop.Kartik
exec = sugar-activity Kartik.KartikActivity
icon = myicon
activity_version = 1.0
show_launcher = yes
example :
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 :
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()
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')
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"
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
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
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:
You can click that activity to start and here you go...your first sugar activity appears like this :
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
Cheers! :D
2 comments:
V.Nyc..bt its kinda goin over the head!!!Would be needing a session on this from u!!!
For the same information in more detail and at a slower pace you might try this:
http://www.flossmanuals.net/make-your-own-sugar-activities/
Also available in other formats here:
http://archive.org/details/MakeYourOwnSugarActivities
Post a Comment