From 2fef57a57cb1c7962a922d5ac63ef22602bb5784 Mon Sep 17 00:00:00 2001 From: Florent Pigout Date: Mon, 17 Oct 2011 22:38:06 +0000 Subject: permits to reload recent stories from the activity screen --- diff --git a/activity.py b/activity.py index 42e28c1..2f43550 100644 --- a/activity.py +++ b/activity.py @@ -1,9 +1,7 @@ # python import -import json, logging, os, threading, time -# ... +import logging, os, threading, time from functools import partial -# .. from gettext import gettext as _ # gtk import @@ -252,6 +250,8 @@ class AToiDeJouerActivity(activity.Activity): self._update_slider(toolbar) def read_file(self, file_path): + if not file_path or not os.path.exists(file_path): + return # close db story.DB().close() # save content @@ -266,8 +266,14 @@ class AToiDeJouerActivity(activity.Activity): story.DB(force=True) # update max time self.update_max_time() + # clear screens + if 'story' in self._screens: + self._screens['story'].set_clear(True) + if 'edit' in self._screens: + self._screens['edit'].scene.set_clear(True) def write_file(self, file_path): + self.metadata['mime_type'] = 'atoidejouer/db' # close db story.DB().close() # save content diff --git a/atoidejouer/tools/storage.py b/atoidejouer/tools/storage.py index 88eb294..9552130 100644 --- a/atoidejouer/tools/storage.py +++ b/atoidejouer/tools/storage.py @@ -315,7 +315,7 @@ def get_path_from_journal(timestamp, mime_type): # find in ds _results, _count = datastore.find(_query) if _count == 1: - return _results[0].get_file_path() + return _results[0].file_path else: return None diff --git a/atoidejouer/ui/panel/sound.py b/atoidejouer/ui/panel/sound.py index 406cc32..cb94d9d 100644 --- a/atoidejouer/ui/panel/sound.py +++ b/atoidejouer/ui/panel/sound.py @@ -181,7 +181,6 @@ class PanelSound(gtk.Frame): _set_bg(_item) _item.set_size_request(96, 78) _item.set_relief(gtk.RELIEF_NONE) - _item.add_events(gtk.gdk.BUTTON_PRESS_MASK) _item.connect('clicked', _cb_on_click, self, key) _item.show() # add a picture here diff --git a/atoidejouer/ui/screens/activity.py b/atoidejouer/ui/screens/activity.py index 24f72e4..54cd04f 100644 --- a/atoidejouer/ui/screens/activity.py +++ b/atoidejouer/ui/screens/activity.py @@ -1,13 +1,12 @@ # python import import logging, os -# .. from gettext import gettext as _ # gtk import import gtk # atoidejouer import -from atoidejouer.tools import config, ui +from atoidejouer.tools import config, ui, storage # get application logger logger = logging.getLogger('atoidejouer') @@ -57,6 +56,10 @@ def _on_button_click(button, screen, name, msg_label, value): else: pass +def _on_recent_click(button, screen, timestamp): + _path = storage.get_path_from_journal(timestamp, 'atoidejouer/db') + screen._activity.read_file(_path) + [ ADVANCED, @@ -130,11 +133,11 @@ class ScreenActivity(gtk.ScrolledWindow): def _get_button(self, name, text, stock_id, msg_label=None, value=None): # init button _button = ui.get_button(label=text, stock_id=stock_id, width=48, - padding=(10, 0)) + padding=(10, 0)) _button.show() # set cb _button.connect('clicked', _on_button_click, self, name, msg_label, - value) + value) # return it return _button @@ -149,14 +152,13 @@ class ScreenActivity(gtk.ScrolledWindow): # return it return _label - def _get_mode_part(self): - # .. + def _get_included_part(self): _vbox = gtk.VBox(homogeneous=False, spacing=5) - # border _vbox.set_border_width(5) - # show _vbox.show() - # .. + # add first part title + _vbox.pack_start(self._get_title(_('INCLUDED STORIES')), + expand=False, fill=True) return _vbox def _add_left_part(self): @@ -169,15 +171,11 @@ class ScreenActivity(gtk.ScrolledWindow): # add self.__main_box.pack_start(_vbox, expand=False, fill=True) # add part choices - _vbox.pack_start(self._get_mode_part(), - expand=False, fill=True) + _vbox.pack_start(self._get_included_part(), expand=False, fill=True) def _get_export_part(self): - # .. _vbox = gtk.VBox(homogeneous=False, spacing=5) - # border _vbox.set_border_width(5) - # show _vbox.show() # add first part title _vbox.pack_start(self._get_title(_('IMPORT')), @@ -210,6 +208,34 @@ class ScreenActivity(gtk.ScrolledWindow): # .. return _vbox + def _get_story_button(self, ds_object): + _button = ui.get_button(label=ds_object.metadata['title'], + stock_id="play", width=48, padding=(10, 0)) + _button.connect('clicked', _on_recent_click, self, + ds_object.metadata['timestamp']) + _button.show() + return _button + + def _get_recent_part(self): + _vbox = gtk.VBox(homogeneous=False, spacing=5) + _vbox.set_border_width(5) + _vbox.show() + # add first part title + _vbox.pack_start(self._get_title(_('RECENT STORIES')), + expand=False, fill=True) + # list stories + _nb_of_recent = config.Config().get('activity>recent', type_=int) + _cur = 0 + for ds_obj in storage.journal_query({ + 'activity': 'org.laptop.AToiDeJouerActivity'}): + if _cur == _nb_of_recent: + break + elif os.path.exists(ds_obj.file_path): + _cur += 1 + _vbox.pack_start(self._get_story_button(ds_obj), expand=False, + fill=True) + return _vbox + def _add_right_part(self): # .. _vbox = gtk.VBox(homogeneous=False, spacing=5) @@ -219,9 +245,10 @@ class ScreenActivity(gtk.ScrolledWindow): _vbox.show() # add self.__main_box.pack_start(_vbox, expand=False, fill=True) - # add first part title - _vbox.pack_start(self._get_export_part(), - expand=False, fill=True) + # add export + _vbox.pack_start(self._get_export_part(), expand=False, fill=True) + # add recent part + _vbox.pack_start(self._get_recent_part(), expand=False, fill=True) def _show(self): self._initialized = True diff --git a/atoidejouer/ui/screens/story.py b/atoidejouer/ui/screens/story.py index 54181d5..ef53f60 100644 --- a/atoidejouer/ui/screens/story.py +++ b/atoidejouer/ui/screens/story.py @@ -105,6 +105,8 @@ class ScreenStory(graphics.Scene): return False def refresh(self, **kargs): + # clear? + self._check_clear() # ensure valid screen size self._refresh_screen_size() # get the current frame diff --git a/static/data/config/config.ini b/static/data/config/config.ini index ef5aad1..28e4d96 100644 --- a/static/data/config/config.ini +++ b/static/data/config/config.ini @@ -2,6 +2,7 @@ mode = advanced rate = normal dnd = yes +recent = 4 [mode] easy = image position sound -- cgit v0.9.1