# python import import logging, os # gtk import import gtk # sugar import from sugar.activity import activity from sugar.datastore import datastore # get application logger logger = logging.getLogger('atoidepoc') ACTIVITY_NAMES = { 'paint': 'org.laptop.Oficina' } def get_pixbuf_from_data(data, image_type=None, size=None): # load it if image_type: _loader = gtk.gdk.PixbufLoader(image_type=image_type) else: _loader = gtk.gdk.PixbufLoader() # size check if size is None: pass else: # parse size _w, _h = size # set loader size _loader.set_size(_w, _h) # load date _loader.write(data) # close loader _loader.close() # pix it return _loader.get_pixbuf() def get_journal_objects(activity_name): # prepare query _query = {'activity': ACTIVITY_NAMES[activity_name]} # find in ds _results, _count = datastore.find(_query, sorting='timestamp') # return it return _results def list_info_from_journal(activity_name): # get objects first _objs = get_journal_objects(activity_name) # make unique titles _titles = {} # return infos for _o in _objs: # get meta _m = _o.get_metadata() # get title _t = _m['title'] # little check if _t in _titles: # udpate reg _titles[_t] += 1 # update value to show _t = '%s (%s)' % (_t, _titles[_t]) # init title reg else: _titles[_t] = 1 # ensure info yield { 'description' : _m['description'], 'activity_id' : _m['activity_id'], 'timestamp' : _m['timestamp'], 'preview' : _m['preview'], 'title' : _t, } def list_files_from_journal(activity_name): # get objects first _objs = get_journal_objects(activity_name) # return paths for _o in _objs: # TODO open the files yield _o.get_file_path() def open_file_from_journal(activity_name, file_id): pass