Sugar almanac: Difference between revisions

From OLPC
Jump to navigation Jump to search
No edit summary
No edit summary
Line 50: Line 50:
elif (event.state == gtk.gdk.VISIBILITY_UNOBSCURED):
elif (event.state == gtk.gdk.VISIBILITY_UNOBSCURED):
print "I am visible"
print "I am visible"
</pre>

=== How do I get the amount of free space available on disk under the /home directory tree? ===
The following function uses the [http://docs.python.org/lib/module-statvfs.html statvfs] module. The following code demonstrates how to get the total amount of free space under /home.

<pre>
#### 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
</pre>
</pre>



Revision as of 19:33, 26 June 2008

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?

  • Looking to get started with the basics of sugar development? Check out Christoph Derndorfer's Activity Handbook.

Now, on to the actual almanac ...

Package: sugar

Package: sugar.activity

Package: sugar.datastore

Package: sugar.graphics

Internationalization

Internationalization in Sugar

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 write to a log in my activity code?

Sugar uses python's standard logging. The following code shows how to output something at the debug log level.

   import logging
   _logger = logging.getLogger('annotate-activity')
   ...
        _logger.debug('starting activity')


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

Notes

<references />