Sugar almanac

From OLPC
Revision as of 12:22, 15 July 2008 by 18.85.46.242 (talk)
Jump to: navigation, search

Sugar Almanac for Developers

Sugar Almanac Main Page

Package: sugar

sugar.env

sugar.profile

sugar.mime

Package: sugar.activity

sugar.activity.activity

sugar.activity.registry

Package: sugar.graphics

sugar.graphics.alert

sugar.graphics.toolbutton

sugar.graphics.toolbox

Package: sugar.datastore

sugar.datastore.datastore

Logging

sugar.logger

Notes on using Python Standard Logging in Sugar

Internationalization

Internationalization in Sugar

How do I get additional help beyond this almanac?


Now, on to the actual almanac ...

Package: sugar

Package: sugar.activity

Package: sugar.datastore

Package: sugar.graphics

Logging

Internationalization

Internationalization in Sugar

Text and Graphics for Sugar Activities

MISCELLANEOUS

The tasks below are random useful techniques that have come up as I write code and documentation for this reference. They have yet to be categorized, but will be as a sufficient set of related entries are written.


How do I know when my activity is "active" or not?

You can set an event using the VISIBILITY_NOTIFY_MASK constant in order to know when your activity changes visibility. Then in the callback for this event, you simply compare the event's state to gtk-defined variables for activity visibility. See the GDK Visibility State Constants section of gtk.gdk.Constants for more information.

        #Notify when the visibility state changes by calling self._visibleNotifyCb
        #(PUT THIS IN YOUR ACTIVITY CODE - EG. THE __init__() METHOD)
        self.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK)
        self.connect("visibility-notify-event", self._visibleNotifyCb)
    ...
    #Callback method for when the activity's visibility changes
    def _visibleNotifyCb(self, widget, event):
        if (event.state == gtk.gdk.VISIBILITY_FULLY_OBSCURED):
            print "I am not visible"
        elif (event.state == gtk.gdk.VISIBILITY_UNOBSCURED):
            print "I am visible"

How do I get the amount of free space available on disk under the /home directory tree?

The following function uses the statvfs module. The following code demonstrates how to get the total amount of free space under /home.

    #### Method: getFreespaceKb, returns the available freespace in kilobytes. 
    def getFreespaceKb(self):
        stat = os.statvfs("/home")
        freebytes  = stat[statvfs.F_BSIZE] * stat[statvfs.F_BAVAIL]
        freekb = freebytes / 1024
        return freekb


How do I know whether my activity is running on a physical XO?

While your activity is typically going to be run on a real XO, there might be circumstances (such as for development through sugar-jhbuild) that you will not be running on an XO machine. The easiest way to tell if you are on a physical XO is to check whether /sys/power/olpc-pm, an essential power management file for the XO, exists. <ref>reliably detecting if running on an XO</ref> <ref>OLPC Power Management Interface</ref>

import os
...
      #Print out a boolean value that tells us whether we are on an XO or not. 
      print os.path.exists('/sys/power/olpc-pm')

Notes

<references />