Xophoto

From OLPC
Jump to navigation Jump to search

Alpha testing version of XoPhoto

[|This link points to the most recent Download - XoPhoto-9.xo ]

To review the current bugs for XoPhoto please refer to [https://bugs.sugarlabs.org/query?status=accepted&status=assigned&status=new&status=reopened&component=XoPhoto]

You can add a bug report [here.]

Source code for XoPhoto is at [git.sugarlabs.org]

See the results of everyone's helpful feedback

Recent addition is a blog at [| XoPhoto.wordpress.com]

Introduction to XoPhoto

XoPhoto includes browsable help. The best introduction to XoPhoto is currently [that help file]

Origins

  • Adam Holt, Mike Lee suggested the need for photo/journal interface with social networking sites
  • Bruce Bell-Myers contributed significantly to the visual and human interface design
  • George Hunt, learning python on the fly, did most of the lines of python code.

The XO is a valuable tool in the developing world for social networking and visual communication. This project is conceived to facilitate the transfer of images from the XO journal to online destinations. The overall model for XoPhoto is Iphoto on the Mac.

What follows is mostly Historical

Limited Objectives

In order to achieve this objective in the shortest time span possible, the first release of XoPhoto will incorporate the following features:

  1. Import from SD or USB flash drives into the XO Journal.
  2. Create subsets of the images from the journal (imported or from the Record Activity) into album subsets.
  3. Provide limited capability to rotate, or crop images.
  4. Export albums to folders that are accessible to Browse, and thereby, to online destinations.
  5. Some limited slideshow capability

Implementation Details

  • Using pygame as development platform
  • Sqlite as storage medium for intermediate storage
  • Current development is proceeding (5/8/10) with targeted features complete by 5/24/10 by georgejhunt<at>gmail.com

Decisions and Development left for a Later Release

  • use "Gphoto2" library to import images from cameras and cell phones (1200 supported cameras)
  • Upload to PicasaWeb
  • Twitter, Facebook interfaces
  • Geotagging
  • Imagemagik or other photo touchup tools

User Interface thoughts

I'm thinking that the left-most 200 px of the screen would be allocated as follows (similar to iPhoto):

   * Journal
   * Trash
   * Duplicates
   * Last Year
   * Last Month
   * (last 5 rolls)
   * (named Albums)

The thumbnail routine is written to display a variable number of columns and rows. The latency of generating the thumbnails on the fly will force me to decide the number of columns now at design time, and then to store the reduced size thumbnails in the database. I'm thinking that 10 columns , and a full screen of rows of Journal contents would be the startup presentation. Double clicking on a thumbnail would cause a single row of thumbnails, and that picture to be displayed in the remainder of the screen. In this mode, the left and right arrow keys would move through the album, up and down would move 10 at a time.

Double clicking on the larger picture would toggle back to slide-sorter full screen of thumbnails presentation.

Drag and Drop would add a picture to an album.

Thinking about the menu icons:

Activity

   * Use the activity title entry field for "album name"
   * New Album
   * exit

Edit

   * Import (USB,SD,Camera)
   * Rotate
   * (entry field for annotation)
   * Add annotation
   * Delete

Use

   * Export to folder
   * Upload via email
   * Slide Show

The delete button would have two modes. If an empty album, or a picture in an album is selected, delete without further interaction. If a Journal picture/thumbnail, Trash, Duplicates, or album with contents is selected, ask for confirmation before delete.

If I were to add crop, or resize, how would I include them? In that case I might add a "modify" menu item between "edit" and "use" and move "Rotate":

Modify

   * Rotate
   * Crop
   * Resize

Picking, or finding, the best icons to represent these functions can be time consuming. I'll probably just pick some place holders, define the hover contents, and refine them later when everyone is happy with basic function.