1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# 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
|