diff options
Diffstat (limited to 'CixosActivity.py')
-rw-r--r-- | CixosActivity.py | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/CixosActivity.py b/CixosActivity.py new file mode 100644 index 0000000..f586eeb --- /dev/null +++ b/CixosActivity.py @@ -0,0 +1,171 @@ +# -*- coding: utf-8 -*- +#Copyright (c) 2009, Walter Bender +#Copyright (c) 2009, Cixos-Fia + +#Permission is hereby granted, free of charge, to any person obtaining a copy +#of this software and associated documentation files (the "Software"), to deal +#in the Software without restriction, including without limitation the rights +#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +#copies of the Software, and to permit persons to whom the Software is +#furnished to do so, subject to the following conditions: + +#The above copyright notice and this permission notice shall be included in +#all copies or substantial portions of the Software. + +#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +#THE SOFTWARE. + +import pygtk +pygtk.require('2.0') +import gtk +import gobject + +import sugar +from sugar.activity import activity +try: # 0.86+ toolbar widgets + from sugar.bundle.activitybundle import ActivityBundle + from sugar.activity.widgets import ActivityToolbarButton + from sugar.activity.widgets import StopButton + from sugar.graphics.toolbarbox import ToolbarBox + from sugar.graphics.toolbarbox import ToolbarButton +except ImportError: + pass +from sugar.graphics.toolbutton import ToolButton +from sugar.graphics.menuitem import MenuItem +from sugar.graphics.icon import Icon +from sugar.datastore import datastore + +from gettext import gettext as _ +import locale +import os.path + +import logging +_logger = logging.getLogger("cixos-activity") + +from sprites import * +import window + +# +# Sugar activity +# +class CixosActivity(activity.Activity): + + def __init__(self, handle): + super(CixosActivity,self).__init__(handle) + + try: + # Use 0.86 toolbar design + toolbar_box = ToolbarBox() + + # Buttons added to the Activity toolbar + activity_button = ActivityToolbarButton(self) + toolbar_box.toolbar.insert(activity_button, 0) + activity_button.show() + + # Label for showing status + self.results_label = gtk.Label("anything you want as a label") + self.results_label.show() + results_toolitem = gtk.ToolItem() + results_toolitem.add(self.results_label) + toolbar_box.toolbar.insert(results_toolitem,-1) + + separator = gtk.SeparatorToolItem() + separator.props.draw = False + separator.set_expand(True) + separator.show() + toolbar_box.toolbar.insert(separator, -1) + + # The ever-present Stop Button + stop_button = StopButton(self) + stop_button.props.accelerator = '<Ctrl>Q' + toolbar_box.toolbar.insert(stop_button, -1) + stop_button.show() + + self.set_toolbar_box(toolbar_box) + toolbar_box.show() + + except NameError: + # Use pre-0.86 toolbar design + self.toolbox = activity.ActivityToolbox(self) + self.set_toolbox(self.toolbox) + + self.projectToolbar = ProjectToolbar(self) + self.toolbox.add_toolbar( _('Project'), self.projectToolbar ) + + self.toolbox.show() + + # Create a canvas + canvas = gtk.DrawingArea() + canvas.set_size_request(gtk.gdk.screen_width(), \ + gtk.gdk.screen_height()) + self.set_canvas(canvas) + canvas.show() + self.show_all() + + # Initialize the canvas + self.tw = window.new_window(canvas, \ + os.path.join(activity.get_bundle_path(), \ + 'images/'), \ + self) + # Read the dpi from the Journal + try: + cardx = self.metadata['card-x-offsets'].replace("[","").replace("]","").split(", ") + cardl = self.metadata['card-layers'].replace("[","").replace("]","").split(", ") + numberx = self.metadata['number-x-offsets'].replace("[","").replace("]","").split(", ") + numberl = self.metadata['number-layers'].replace("[","").replace("]","").split(", ") + j = 0 + for i in self.tw.cards: + move(i.spr,(int(cardx[j]),i.spr.y)) + setlayer(i.spr,int(cardl[j])) + draw(i.spr) + j += 1 + j = 0 + for i in self.tw.numbers: + move(i.spr,(int(numberx[j]),i.spr.y)) + setlayer(i.spr,int(numberl[j])) + draw(i.spr) + j += 1 + except: + pass + + """ + Write the slider positions to the Journal + """ + + def write_file(self, file_path): + cardx = [] + cardl = [] + numberx = [] + numberl = [] + for i in self.tw.cards: + cardx.append(i.spr.x) + cardl.append(i.spr.layer) + for i in self.tw.numbers: + numberx.append(i.spr.x) + numberl.append(i.spr.layer) + self.metadata['card-x-offsets'] = str(cardx) + self.metadata['card-layers'] = str(cardl) + self.metadata['number-x-offsets'] = str(numberx) + self.metadata['number-layers'] = str(numberl) + +# +# Project toolbar for pre-0.86 toolbars +# +class ProjectToolbar(gtk.Toolbar): + + def __init__(self, pc): + gtk.Toolbar.__init__(self) + self.activity = pc + + # Label for showing status + self.activity.results_label = gtk.Label( _("some label text here")) + self.activity.results_label.show() + self.activity.results_toolitem = gtk.ToolItem() + self.activity.results_toolitem.add(self.activity.results_label) + self.insert(self.activity.results_toolitem, -1) + self.activity.results_toolitem.show() |