Sugar Components

From OLPC
Revision as of 20:55, 18 May 2009 by Davewa (talk | contribs) (Undo revision 208510 by 72.234.111.129 (Talk)vandalism)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

This is part 2 of the Sugar internals series. Part 1 is at Understanding sugar code. Part 3 is at Activity creation internals.

Sugar Components

Here, we are in the middle of walking through a sugar shell initialization to see all of the packages and utilities used in the sugar environment. Previously, we saw how Fedora is set up to launch sugar within a python context. Sugar had python launch Matchbox as an X windows environment, and DBUS as an interprocess messaging bus. After importing serveral python libraries (sys, os, gtk, & gobject), and some sugar environment libraries (env, logger, profile, & TracebackUtils), sugar is now going to continue setting up by importing special core python libraries and instantiating various classes and routines... Let's see what happens:Hahahaha this is so funny when the fedora was launched the sugar in it exploded!!!

Sugar Package & Module Imports

The sugar-shell has already imported python and sugar environment modules, but now, sugar starts to import component modules from the view and model packages:

>>> from view.FirstTimeDialog import FirstTimeDialog
>>> from view.Shell import Shell
>>> from model.ShellModel import ShellModel

This looks a good bit like a Model, View, Controller design pattern.

Also, here is a bit about Python Modules and Packages.

Sugar's View Package

This thing's python path is sugar.view

It includes these modules:

  • ActivityHost -- For sharing activities and managing a chat for each shared activity
  • BuddyIcon -- The actual buddy Icon (an object) in the neighborhood & friends window.
  • BuddyMenu -- Popup menu when you point to a buddy in your neighborhood (or friends window?)
  • FirstTimeDialog -- Special dialog to get your nickname. Also randomly assigns you a color.
  • OverlayWindow -- something to do with window management??
  • Shell -- This module pulls together several objects and manages the actuall Shell class.
  • clipboardicon -- logic for one item on the clipboard.
  • clipboardmenu -- manages items on clipboard and copy status.
  • stylesheet -- Sets default sizes and colors for sugar UI icons.

And these sub-packages:

frame

Manages the OLPC-HIG sugar ui side frame.

  • ActivitiesBox
  • Frame
  • FriendsBox
  • PanelWindow
  • ZoomBox
  • clipboardbox
  • clipboardpanelwindow
  • notificationtray
  • overlaybox

home

Manages the OLPC-HIG zoom metaphor of the sugar ui center for the Mesh, Friends, & Donut views.

Sugar's Shell Module

Sugar's Shell Module pulls lots of services and system interfaces together and unifies them into a full user interface. The Shell module is a part of the View package.

Imports:

  • logging -- (sugar logger)
  • gtk -- (The GIMP Tool Kit)
  • gobject -- (gtk package)
  • wnck -- (Window Navigator Construction Kit)

Lots of Sugar UI imports:

  • view.stylesheet
  • style
  • HomeWindow
  • PresenceService
  • ActivityHost
  • ActivityFactory
  • Activity
  • Frame
  • ShellModel
  • HardwareManager
  • KeyGrabber
  • AudioManager
  • env
  • sugar

Sugar's Model Package

The Model Packages has the following modules:

  • BuddyModel -- Tracks the details and connection to a single buddy on the mesh
  • Friends -- Adds and removes Buddies to a list of friends
  • Invites -- Invites Buddies to shared activities.
  • MeshModel -- Tracks Activities, presense, and connections
  • Owner -- Tracks details about the OLPC owner (nickname, icon, etc.)
  • ShellModel -- Tracks List of Activities, Presence, List of Friends, Home, also announces presence of computer to others.
  • homeactivity -- This class is instantiated to control a running activity.
  • homemodel -- This is the data model used to manage a running activity.