From 57c9951c909f11cc64f96d29f0eb19fd60e88343 Mon Sep 17 00:00:00 2001 From: Florent Date: Tue, 20 Sep 2011 23:39:06 +0000 Subject: add help screen based on web_view and simple html content --- diff --git a/activity.py b/activity.py index 0d6fd14..a08ddeb 100644 --- a/activity.py +++ b/activity.py @@ -77,8 +77,10 @@ class ThreadAnim(threading.Thread): # update scene if hasattr(_current_screen, 'scene'): _current_screen.scene.refresh() - else: + elif hasattr(_current_screen, 'refresh'): _current_screen.refresh() + else: + pass # update timeline if hasattr(_current_screen, 'timeline'): _current_screen.timeline.refresh() @@ -152,6 +154,7 @@ class AToiDeJouerActivity(activity.Activity): self._thread = None self._screens = dict() self._current = None + self._previous = None self._handler_id = None self._number_of_keys = 1 # .. @@ -164,7 +167,8 @@ class AToiDeJouerActivity(activity.Activity): # tmp var _toolbar = None # init toolbars - for _n in ['story', 'graphics', 'graphics_add', 'sounds', 'sounds_add']: + for _n in ['story', 'graphics', 'graphics_add', + 'sounds', 'sounds_add', 'help']: # init toolbar _t = toolbar.Toolbar(self, name=_n) # if default toolbar .. set default screen @@ -198,6 +202,7 @@ class AToiDeJouerActivity(activity.Activity): def set_current_screen(self, name, screen): # udpate current name + self._previous = self._current self._current = name # little check self.add_screen(name, screen) @@ -237,6 +242,7 @@ class AToiDeJouerActivity(activity.Activity): return else: # update current screen name + self._previous = self._current self._current = toolbar.name if name is None else name # already exist if self._current in ['graphics', 'sounds']: @@ -267,6 +273,9 @@ class AToiDeJouerActivity(activity.Activity): # .. refresh self._screens[self._current].timeline.refresh_sequence() self._screens[self._current].timeline.refresh_adjustment() + elif self._current == 'help': + del self._screens[self._current] + self._screens[self._current] = screens.ScreenHelp(self) else: pass # exit @@ -297,6 +306,8 @@ class AToiDeJouerActivity(activity.Activity): _scr.timeline.refresh_adjustment() elif self._current == 'story': _scr = screens.ScreenStory(toolbar, set_canvas=True) + elif self._current == 'help': + _scr = screens.ScreenHelp(self) else: # ?? return @@ -325,6 +336,7 @@ class AToiDeJouerActivity(activity.Activity): # clear self.graphic_keys.ask_clear() # refresh default + self._previous = self._current _current = self.get_current_screen() _current.refresh() diff --git a/atoidejouer/tools/storage.py b/atoidejouer/tools/storage.py index 0e471cd..e96327c 100644 --- a/atoidejouer/tools/storage.py +++ b/atoidejouer/tools/storage.py @@ -129,6 +129,12 @@ def get_image_path(filename, dir_='graphics'): '%s.png' % filename) +def get_html_path(page): + # return path + return os.path.join(activity.get_bundle_path(), 'static', 'data', 'html', + '%s.html' % page) + + def get_pixbuf_from_data(data, image_type=None, size=None): # load it if image_type: diff --git a/atoidejouer/ui/screens.py b/atoidejouer/ui/screens.py index 9cf5f72..551e662 100644 --- a/atoidejouer/ui/screens.py +++ b/atoidejouer/ui/screens.py @@ -16,6 +16,9 @@ from lib import graphics from sugar.activity import activity from sugar.graphics.objectchooser import ObjectChooser +#from hulahop.webview import WebView +from hulahop.webview import WebView + # atoidejouer import from atoidejouer.tools import config, image, key, sound, storage, ui from atoidejouer.ui.panel import PanelGraphics, PanelSounds @@ -38,11 +41,6 @@ COLOR_WHITE = ui.get_color(1.0, 1.0, 1.0) def _on_drag_finish(image, event, scene, sequence_name, frame, filename, image_size): - # DEBUG - logger.debug('[screens] _on_drag_finish - sequence_name: %s' % sequence_name) - logger.debug('[screens] _on_drag_finish - frame: %s' % frame) - logger.debug('[screens] _on_drag_finish - filename: %s' % filename) - # DEBUG # get align values _a_x, _a_y = scene._reverse_x_y(image_size, (image.x, image.y)) # shortcut @@ -1003,3 +1001,21 @@ class ScreenActivity(gtk.ScrolledWindow): self.show() # update toolbar self._activity.set_canvas(self) + + +class ScreenHelp(WebView): + + def __init__(self, activity_): + WebView.__init__(self) + # keep activity + self._activity = activity_ + # load html content + self.load_uri(storage.get_html_path('help')) + # do show + self._show() + + def _show(self): + # show all + self.show() + # update toolbar + self._activity.set_canvas(self) diff --git a/atoidejouer/ui/toolbar.py b/atoidejouer/ui/toolbar.py index 1d3d550..1d0aa72 100644 --- a/atoidejouer/ui/toolbar.py +++ b/atoidejouer/ui/toolbar.py @@ -299,6 +299,16 @@ def _cb_format_value(widget, value, toolbar): # return formated value return '%1d:%02d' % divmod(value, 60) +TOOLBAR_INDEXES = ['activity', 'story', 'graphics', 'sounds', 'help'] + +def _cb_help_back(widget, toolbar): + _previous = toolbar.activity._previous + # restore default tab + toolbar.activity._toolbox.set_current_toolbar( + TOOLBAR_INDEXES.index(_previous.replace('_add', ''))) + # restore previous + toolbar.activity._change_screen(name=_previous) + BUTTONS = { 'add' : ['list-add', _cb_add], @@ -308,6 +318,7 @@ BUTTONS = { 'frame_after' : ['go-right', _cb_frame_after], 'frame_before' : ['go-left', _cb_frame_before], 'frame_entry' : [None, None], + 'help_back' : ['edit-undo', _cb_help_back], 'import' : ['insert-image', _cb_import], 'open' : ['media', _cb_open], 'pause' : ['media-playback-pause', _cb_pause], @@ -361,6 +372,10 @@ TOOLBARS = { 'view_fullscreen'], [] ], + 'help' : [ + [], + ['help_back'] + ] } TITLES = { @@ -434,6 +449,12 @@ TITLES = { 'view_return': _('Default Screen'), } }, + 'help' : { + 'toolbox': _('Help'), + 'buttons': { + 'help_back': _('Back') + } + } } diff --git a/static/data/html/help.html b/static/data/html/help.html new file mode 100644 index 0000000..b45a914 --- /dev/null +++ b/static/data/html/help.html @@ -0,0 +1,6 @@ + + +

My First Heading

+

My first paragraph.

+ + -- cgit v0.9.1