Sugar Components: Difference between revisions

From OLPC
Jump to navigation Jump to search
m (Reverted edits by 82.28.159.19 (Talk) to last revision by Patrol)
 
(49 intermediate revisions by 11 users not shown)
Line 1: Line 1:
This is part 2 of the [[Sugar]] internals series. Part 1 is [[Understanding Sugar code]]. Part 3 is [[Activity creation internals]].

==Sugar Components==
==Sugar Components==


This is a continuation of [[Understanding sugar code]]. 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:
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.


==Sugar Module Imports==
==Sugar Package & Module Imports==
The sugar-shell has already imported python and sugar environment modules, but now, sugar starts to import Component Modules:
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.FirstTimeDialog import FirstTimeDialog
Line 12: Line 14:
This looks a good bit like a [http://en.wikipedia.org/wiki/Model-view-controller Model, View, Controller] design pattern.
This looks a good bit like a [http://en.wikipedia.org/wiki/Model-view-controller Model, View, Controller] design pattern.


Also, here is a bit about [http://docs.python.org/tut/node8.html Python Modules and Packages].
==Sugar's View Module==

==Sugar's View Package==


This thing's python path is sugar.view
This thing's python path is sugar.view

It includes:
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 Human Interface Guidelines/The Laptop Experience/The Frame|OLPC-HIG sugar ui side frame]].
*ActivitiesBox
*Frame
*FriendsBox
*PanelWindow
*ZoomBox
*clipboardbox
*clipboardpanelwindow
*notificationtray
*overlaybox

====home====
Manages the [[OLPC Human Interface Guidelines/The Laptop Experience/Zoom Metaphor|OLPC-HIG zoom metaphor]] of the sugar ui center for the Mesh, Friends, & Donut views.
*FriendView -- ?[[OLPC Human Interface Guidelines/The Laptop Experience/Zoom Metaphor#Groups| OLPC-HIG Groups]]
*FriendsBox -- ?[[OLPC Human Interface Guidelines/The Laptop Experience/Zoom Metaphor#Groups| OLPC-HIG Groups]]
*HomeBox -- ?[[OLPC Human Interface Guidelines/The Laptop Experience/Zoom Metaphor#Home| OLPC-HIG home]]
*HomeWindow -- ?
*MeshBox -- ?[[OLPC Human Interface Guidelines/The Laptop Experience/Zoom Metaphor#Neighborhood| OLPC-HIG Neighborhood]]
*MyIcon -- Initializes [[OLPC Human Interface Guidelines/The Sugar Interface/Icons#The XO|OLPC-HIG user icon]] color based on stored preference file.
*activitiesdonut -- Manage the activities in the process donut view.

===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
* ActivityHost
* ActivityFactory
* BuddyIcon
* Activity
* BuddyMenu
* Frame
* FirstTimeDialog
* ShellModel
* OverlayWindow
* HardwareManager
* Shell
* KeyGrabber
* clipboardicon
* AudioManager
* clipboardmenu
* env
* stylsheet
* 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.


==Sugar's Shell Module==


[[Category:Python]]
==Sugar's Model Module==
[[Category:Sugar]]

Latest revision as of 19:12, 27 October 2012

This is part 2 of the Sugar internals series. Part 1 is Understanding Sugar code. Part 3 is 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.

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.