diff options
Diffstat (limited to 'atoidejouer/ui/screens.py')
-rw-r--r-- | atoidejouer/ui/screens.py | 1021 |
1 files changed, 0 insertions, 1021 deletions
diff --git a/atoidejouer/ui/screens.py b/atoidejouer/ui/screens.py deleted file mode 100644 index 551e662..0000000 --- a/atoidejouer/ui/screens.py +++ /dev/null @@ -1,1021 +0,0 @@ - -# python import -import logging, os, threading, time -# .. -from functools import partial -# .. -from gettext import gettext as _ - -# gtk import -import cairo, gobject, gtk, glib - -# graphics import -from lib import graphics - -# sugar import -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 -from atoidejouer.ui.preview import ImagePreview, SequencePreview, SoundPreview -from atoidejouer.ui.timeline import Timeline -from atoidejouer.ui.notebook import ResourceNotebook -# .. -from atoidejouer.story.keys import StoryKeys - -# get application logger -logger = logging.getLogger('atoidejouer') - - -COLOR_BLACK = ui.get_color(0.0, 0.0, 0.0) -COLOR_GREY_DARK = ui.get_color(0.5, 0.5, 0.5) -COLOR_GREY_LIGHT = ui.get_color(0.7, 0.7, 0.7) -COLOR_GREY_WHITE = ui.get_color(0.85, 0.85, 0.85) -COLOR_WHITE = ui.get_color(1.0, 1.0, 1.0) - - -def _on_drag_finish(image, event, scene, sequence_name, frame, filename, - image_size): - # get align values - _a_x, _a_y = scene._reverse_x_y(image_size, (image.x, image.y)) - # shortcut - _story_keys = scene._get_keys('graphics') - # update keys - _story_keys.set_align(sequence_name, frame, filename, - (_a_x, _a_y)) - # update transitions - _story_keys.refresh(sequence_name) - # _story_keys.ask_clear() - # refresh scene with rounded values - scene.refresh(sequence_name=sequence_name) - # get current screen - _screen = scene.toolbar.activity.get_current_screen() - # update timeline - if hasattr(_screen, 'timeline'): - _screen.timeline.set_active_sequence(sequence_name) - else: - pass - # update position in panel - if hasattr(_screen, 'panel'): - _screen.panel.refresh() - else: - pass - - -def _on_click(image, event, scene, sequence_name): - # get current screen - _screen = scene.toolbar.activity.get_current_screen() - # update timeline - if hasattr(_screen, 'timeline'): - _screen.timeline.set_active_sequence(sequence_name) - else: - pass - # update panel - if hasattr(_screen, 'panel'): - _screen.panel.refresh() - else: - pass - - -class ScreenStory(graphics.Scene): - - def __init__(self, toolbar, height_offset=0, width_offset=0, - set_canvas=False, frame=None): - # .. - graphics.Scene.__init__(self) - self.background_color = "#ffffff" - # keep toolbar - self.toolbar = toolbar - # .. - self._set_canvas = set_canvas - # init image dicts - self.__sizes = dict() - self.__graphics = dict() - self.__sounds = dict() - self.__dd_signals = dict() - # init fullscreen flag - self.fullscreen = False - self._fullscreen_changed = True - # screen size first - self._height_offset = height_offset - self._width_offset = width_offset - # .. - self._screen_height = None - self._screen_width = None - # ... - self._refresh_screen_size() - # and show - self._show() - - def _get_keys(self, type_): - # .. - if type_ == 'graphics': - return self.toolbar.activity.graphic_keys - else: - return self.toolbar.activity.sound_keys - - def set_fullscreen(self, fullscreen): - # update fullscreen flag - self.fullscreen = fullscreen - # has changed - self._fullscreen_changed = True - # refresh - self.refresh() - - def _refresh_screen_size(self): - # keep some info - self._screen_height = gtk.gdk.screen_height() - self._height_offset - self._screen_width = gtk.gdk.screen_width() - self._width_offset - - def _check_clear(self): - # need clear - if self._get_keys('graphics').get_clear(self.toolbar.name) is True: - # hide previous - for _image in self.__graphics.values(): - _image.visible = False - del _image - # .. - self.__graphics = dict() - # .. - self.__sizes = dict() - # done - self._get_keys('graphics').set_clear(self.toolbar.name, False) - # .. - return True - else: - return False - - def refresh(self, sequence_name=None): - # get the current frame - _time = 0.0 if self.toolbar.activity._thread is None\ - else self.toolbar.activity._thread._time - # get the current rate - _rate = config.Config().get_rate_value() - # clear ?? - self._check_clear() - # .. - self._refresh_screen_size() - # .. - _currents = list() - # for each images - for _n in self._get_keys('graphics').get_names(): - if sequence_name is None\ - or sequence_name == _n: - # do move - _currents.append(self.__refresh_image(_n, _time, _rate)) - else: - # just get code - _currents.append(self._get_current_code('graphics', _n, - _time)) - # draw mask - _currents.append(self.__refresh_default('mask')) - # hide previous - for _code, _image in self.__graphics.items(): - if _code in _currents: - continue - else: - _image.visible = False - self.queue_draw() - # show first - if self._fullscreen_changed is True: - # disable changed flag - self._fullscreen_changed = False - else: - pass - # refresh sounds if playing - if self.toolbar.activity._thread is None: - pass - elif self.toolbar.activity._thread._pause is False: - # for each sound - for _n in self._get_keys('sounds').get_names(): - if sequence_name is None\ - or sequence_name == _n: - # do move - self.__refresh_sound(_n, _time) - else: - # just get code - _currents.append(self._get_current_code('sounds', _n, - _time)) - else: - # stop all - for _code, _sound in self.__sounds.items(): - if self.toolbar.activity._thread._time == 0: - _sound.stop() - else: - _sound.pause() - - def _update_w_h(self, filename): - if filename in self.__sizes: - pass - else: - # get graphics path - _path = storage.get_image_path(filename) - # get file size - _c, _w, _h = image.get_image_info(_path) - # .. - if (self.fullscreen is True\ - or self._screen_width < 1024)\ - and _w != 0: - _new_w = _w * self._screen_width / 1024 - _new_h = _h * _new_w / _w - else: - _new_w = _w - _new_h = _h - # update size - self.__sizes[filename] = _new_w, _new_h, _w, _h - # return new values - return self.__sizes[filename] - - def _reverse_x_y(self, size, position): - # .. - _w, _h = size - _x, _y = position - # .. - if self.fullscreen is True\ - or self._screen_width < 1024: - _scene_with = self._screen_width - _scene_height = 516 * _scene_with / 1024.0 - else: - _scene_with = 1024 - _scene_height = 516 - # update x - _a_x = _x - (self._screen_width - _w) / 2 - _a_x = int(_a_x * 100.0 / _scene_with) - # update y - _a_y = _y - (self._screen_height - _h - 88) / 2 - _a_y = int(_a_y * 100.0 / _scene_height) - # return it - return _a_x, _a_y - - def _update_x_y(self, size, align): - # .. - _new_w, _new_h, _w, _h = size - _x, _y = align - # - if self.fullscreen is True\ - or self._screen_width < 1024: - _scene_with = self._screen_width - _scene_height = 516 * _scene_with / 1024.0 - else: - _scene_with = 1024 - _scene_height = 516 - # update x - _new_x = ((self._screen_width - _new_w) / 2) - _new_x += int(_x * _scene_with / 100.0) - # update y - _new_y = ((self._screen_height - _new_h - 88) / 2) - _new_y += int(_y * _scene_height / 100.0) - # return it - return _new_x, _new_y - - def __get_scene_size(self): - # - if self.fullscreen is True\ - or self._screen_width < 1024: - _scene_with = self._screen_width - _scene_height = 516 * _scene_with / 1024.0 - else: - _scene_with = 1024 - _scene_height = 516 - # .. - return _scene_with, _scene_height - - def __refresh_default(self, default_name): - _code = '__%s' % default_name - # ensure current image - if _code in self.__graphics: - # .. - self.__graphics[_code].visible = True - else: - _filename = '%s_default' % default_name - # .. - _align = (0, 0) - # get/update width and height - _size = self._update_w_h(_filename) - # .. - self.__graphics[_code] =\ - self.__update_drawing_area(_filename, _code, _size, _align) - # and return displayed code - return _code - - def __get_transition_align(self, sequence_name, time, filename, rate): - # get align - _x, _y = self._get_keys('graphics').get_align(sequence_name, - int(time), filename) - # get transition ratio - _ratio = time - int(time) - if _ratio < rate: - return _x, _y - else: - _next_x, _next_y = self._get_keys('graphics').get_next_align( - sequence_name, int(time), filename, use_transition=True) - # ... - _next_x = _x if _next_x is None else _x + (_next_x - _x) * _ratio - _next_y = _y if _next_y is None else _y + (_next_y - _y) * _ratio - # .. - return _next_x, _next_y - - def _get_current_code(self, type_, sequence_name, time): - # get sequence filename - _current, _f_type, _k_type = self._get_keys(type_).get_current( - sequence_name, int(time)) - # need current - if _current is None: - return None - else: - pass - # get sequence file codes - return self._get_keys(type_).get_code( - self.toolbar.name, sequence_name, _current) - - def __refresh_image(self, sequence_name, time, rate): - # get sequence filename - _current, _f_type, _k_type = self._get_keys('graphics').get_current( - sequence_name, int(time)) - # need current - if _current is None: - return None - else: - pass - # get sequence file codes - _code = self._get_keys('graphics').get_code( - self.toolbar.name, sequence_name, _current) - # current file code - _code = key.random_str() if _code is None else _code - # get/update width and height - _size = self._update_w_h(_current) - # get align - _align = self.__get_transition_align(sequence_name, time, _current, - rate) - # ensure current image - if _code in self.__graphics: - # .. - _image = self.__graphics[_code] - # update x, y - _image.x, _image.y = self._update_x_y(_size, _align) - # get z_order - _image.z_order = self._get_keys('graphics').get_layout( - sequence_name) - # disconnect - if _code in self.__dd_signals: - _image.disconnect(self.__dd_signals[_code]) - else: - pass - # scale - _new_w, _new_h, _w, _h = _size - # re-connect - _h_id = _image.connect('on-drag-finish', _on_drag_finish, self, - sequence_name, int(time), _current, (_new_w, _new_h)) - # .. - self.__dd_signals[_code] = _h_id - # .. - _image.visible = True - else: - # draggable for edit only - _draggable = self._set_canvas is False\ - and config.Config().use_dnd() is True - # .. - _image = self.__update_drawing_area(_current, _code, _size, _align, - sequence_name=sequence_name, frame=int(time), - draggable=_draggable) - # .. - self.__graphics[_code] = _image - # .. - self._get_keys('graphics').set_code(self.toolbar.name, sequence_name, - _current, _code) - # and return displayed code - return _code - - def __update_drawing_area(self, filename, code, size, align, - sequence_name=None, frame=None, draggable=False): - # get path - _path = storage.get_image_path(filename) - # update x, y - _x, _y = self._update_x_y(size, align) - # scale - _new_w, _new_h, _w, _h = size - # .. - if _w is None or _w == 0: - _scale = 1 - else: - _scale = float(_new_w)/_w - # get z_order - if sequence_name is None: - _z_order = 1000 - else: - _z_order = self._get_keys('graphics').get_layout(sequence_name) - # image - _image = graphics.Image(_path, x=_x, y=_y, scale_x=_scale, - scale_y=_scale, z_order=_z_order, draggable=draggable) - # connect drag - if self._set_canvas is True\ - or config.Config().use_dnd() is False\ - or self.toolbar.name != 'graphics': - pass - else: - # .. - _h_id = _image.connect('on-drag-finish', _on_drag_finish, self, - sequence_name, frame, filename, (_new_w, _new_h)) - # .. - self.__dd_signals[code] = _h_id - # connect on click - if sequence_name is None: - pass - else: - _image.connect('on-click', _on_click, self, sequence_name) - # do add - self.add_child(_image) - # .. - return _image - - def __stop_unused_sounds(self, sequence_codes, current_code): - # hide previous - for _filename, _code in sequence_codes.items(): - if _code != current_code\ - and _code in self.__sounds: - self.__sounds[_code].pause() - else: - continue - - def __refresh_sound(self, sequence_name, frame): - # get sequence file codes - _seq_codes = self._get_keys('sounds').get_sequence_codes( - self.toolbar.name, sequence_name) - # get sequence filename - _current, _f_type, _k_type = self._get_keys('sounds').get_current( - sequence_name, frame) - # need current - if _current is None: - return self.__stop_unused_sounds(_seq_codes, None) - else: - pass - # current file code - _code = _seq_codes[_current] if _current in _seq_codes else None - # ensure current image - if _code in self.__sounds: - _s = self.__sounds[_code] - if _k_type is None: - _s.pause() - elif _k_type == 'key': - # reset - _s.seek(0) - # play - _s.play() - else: - _s.seek(frame) - _s.play() - else: - # create new - if _k_type is None: - pass - else: - # ... TODO manage start time - _code, _sound = self._prepare_sound(sequence_name, _current) - _sound.play() - # .. - self.__stop_unused_sounds(_seq_codes, _code) - - def _prepare_sound(self, sequence_name, current): - # get graphics path - _path = storage.get_sound_path(current) - # ensure/generate code - _filecode = key.random_str() - # update story key object - self._get_keys('sounds').set_code(self.toolbar.name, sequence_name, - current, _filecode) - # ... - _sound = sound.Player() - _sound.load(_path) - # update graphic dict - self.__sounds[_filecode] = _sound - # return image for futher use - return _filecode, _sound - - def _show(self): - # first refresh - self.refresh() - # .. - self.show() - # update size request - self.set_size_request(self._screen_width, self._screen_height) - # update canvas - if self._set_canvas is True: - self.toolbar.activity.set_canvas(self) - else: - pass - - -class Splash(graphics.Scene): - - def __init__(self, toolbar): - # .. - graphics.Scene.__init__(self) - # .. - # self.background_color = "#ffffff" - # .. - self.__current = 0 - # toolbar keep - self.toolbar = toolbar - # .. - self._image = None - # .. - if self.toolbar is None: - self._screen_height = None - self._screen_width = None - else: - # keep some info - self._screen_height = gtk.gdk.screen_height() - self._screen_width = gtk.gdk.screen_width() - # .. - self._show() - - def _update_x_y(self, path): - # get file size - _c, _w, _h = image.get_image_info(path) - # update x - _x = ((self._screen_width - _w) / 2) - # update y - _y = ((self._screen_height - _h - 88) / 2) - # return it - return _x, _y - - def _get_image(self): - # get path - _path = storage.get_image_path('splash', dir_='data') - # .. - _x, _y = self._update_x_y(_path) - # image - return graphics.Image(_path, x=_x, y=_y, draggable=False) - - def _show(self): - # .. - self._image = self._get_image() - # do add - self.add_child(self._image) - # show - self.show() - # update toolbar - self.toolbar.activity.set_canvas(self) - - -class ScreenEdit(gtk.HBox): - - def __init__(self, toolbar): - # init parent - gtk.HBox.__init__(self, homogeneous=False, spacing=2) - # keep toolbar - self.toolbar = toolbar - # render - self.render() - # init main vars - self.scene = None - self.panel = None - self.timeline = None - # init top box - _vbox = gtk.VBox(homogeneous=False, spacing=2) - # do show - _vbox.show() - # init frames - self.add_scene(_vbox) - # .. - self.add_timelime(_vbox) - # add top box - self.pack_start(_vbox, expand=False, fill=False) - # .. - self.add_panel() - # and show - self._show() - - def add_scene(self, vbox): - # get scene - self.scene = ScreenStory(self.toolbar, height_offset=148, - width_offset=300) - # add it - vbox.pack_start(self.scene, expand=True, fill=True) - - def add_timelime(self, vbox): - # init time line and keep it - self.timeline = Timeline(self) - # add it - vbox.pack_start(self.timeline, expand=True, fill=True) - - def add_panel(self): - pass - - def render(self): - pass - - def _show(self): - # show self - self.show_all() - # .. - self.toolbar.story_keys.check_sequences() - # .. - self.scene.refresh() - # get current time - self.timeline.refresh() - # update toolbar - self.toolbar.activity.set_canvas(self) - - -class ScreenEditGraphics(ScreenEdit): - - def __init__(self, toolbar): - # init parent - ScreenEdit.__init__(self, toolbar) - - def add_panel(self): - # init time line and keep it - self.panel = PanelGraphics(self) - # add it - self.pack_start(self.panel, expand=False, fill=False) - - -class ScreenEditSounds(ScreenEdit): - - def __init__(self, toolbar): - # init parent - ScreenEdit.__init__(self, toolbar) - - def add_panel(self): - # init time line and keep it - self.panel = PanelSounds(self) - # add it - self.pack_start(self.panel, expand=False, fill=False) - - -class ScreenBrowser(gtk.HBox): - - def __init__(self, toolbar, type_): - # init parent - gtk.HBox.__init__(self, homogeneous=False, spacing=2) - # keep toolbar - self.toolbar = toolbar - # keep name - self._type = type_ - # keep previews - self.notebook = None - self.item_preview = None - self.sequence_preview = None - # add it - self._add_previews() - self._add_notebook() - # do show - self._show() - - def _add_previews(self): - # init top box - _vbox = gtk.VBox(homogeneous=False, spacing=4) - # do show - _vbox.show() - # add the box - self.pack_start(_vbox, expand=True, fill=True) - # init frame - self.item_preview = ImagePreview(self) if self._type == 'graphics'\ - else SoundPreview(self) - # add it - _vbox.pack_start(self.item_preview, expand=True, fill=True) - # .. - self.sequence_preview = SequencePreview(self, self._type) - # add it - _vbox.pack_start(self.sequence_preview, expand=False, fill=True) - - def _add_notebook(self): - # init - self.notebook = ResourceNotebook(self, self._type) - # add - self.pack_start(self.notebook, expand=False, fill=True) - - def _show(self): - # show all - self.show() - # update toolbar - self.toolbar.activity.set_canvas(self) - - -class ScreenBrowserGraphics(ScreenBrowser): - - def __init__(self, toolbar): - # init parent - ScreenBrowser.__init__(self, toolbar, 'graphics') - - -class ScreenBrowserSounds(ScreenBrowser): - - def __init__(self, toolbar): - # init parent - ScreenBrowser.__init__(self, toolbar, 'sounds') - - -def _on_toggle_click(radio, screen, option, value): - # manage change state manually - _previous = config.Config().get('activity>%s' % option) - # remove screens to recreate them after - if screen._initialized is True\ - and _previous != value: - # update - config.Config().set('activity>%s' % option, value) - # ... - if option in ['mode', 'dnd']: - screen._activity.remove_screen('graphics') - screen._activity.remove_screen('sounds') - else: - pass - else: - pass - - -def _on_button_click(button, screen, name, msg_label, value): - if name == 'import': - try: - # int file chooser - _chooser = ObjectChooser(button.get_label(), screen, - gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT) - # get chooser result - _r = _chooser.run() - # check result - if _r == gtk.RESPONSE_ACCEPT: - # get selected object - _object = _chooser.get_selected_object() - # do import - storage.import_project(screen._activity, _object.file_path, - msg_label) - else: - pass - except Exception, e: - # ERROR - logger.error('[screens] _on_button_click - e: %s' % e) - elif name == 'export': - # do export - storage.export_project(screen._activity, msg_label, value) - else: - pass - - -[ - ADVANCED, - EASY, -] = range(2) - - -[ - FASTER, - SMOOTH, - NORMAL, -] = range(3) - - -[ - YES, - NO, -] = range(2) - - -class ScreenActivity(gtk.ScrolledWindow): - - def __init__(self, activity_): - gtk.ScrolledWindow.__init__(self) - self.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) - # keep toolbar - self._activity = activity_ - # dummy flag - self._initialized = False - # keep result label - self.msg_label_import = None - self.msg_label_export = None - # init main box - self.__main_box = gtk.HBox(homogeneous=True, spacing=2) - self.__main_box.show() - # .. - self.add_with_viewport(self.__main_box) - # add left menu - self._group_mode = None - self._group_rate = None - self._group_dnd = None - self._add_left_part() - # .. - self.__main_box.pack_start(gtk.EventBox(), expand=False, fill=True) - # add right menu - self._add_right_part() - # do show - self._show() - - def _get_title(self, text): - # init - _label = gtk.Label() - # show - _label.show() - # set markup - _label.set_use_markup(True) - _label.set_markup('<span size="x-large" weight="heavy">%s</span>' % text) - # align - _label.set_padding(5, 5) - _label.set_alignment(0, 0.5) - # return it - return _label - - def _get_toggle_box(self, group, option, value, text): - # create checkbox - _toggle = gtk.RadioButton(group=group, label=text) - _toggle.show() - # set current - _current = config.Config().get('activity>%s' % option) - _toggle.set_active(_current==value) - # set cb - _toggle.connect('toggled', _on_toggle_click, self, option, value) - # return it - return _toggle - - 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)) - _button.show() - # set cb - _button.connect('clicked', _on_button_click, self, name, msg_label, - value) - # return it - return _button - - def _get_hidden_text(self): - # init - _label = gtk.Label() - # set markup - _label.set_use_markup(True) - # align - _label.set_padding(5, 5) - _label.set_alignment(0, 0.5) - # return it - return _label - - def _get_mode_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(_('MODE')), - expand=False, fill=True) - # TODO - add some explanation text - # init easy option and use it as group - _easy = self._get_toggle_box(None, 'mode', 'easy', _('Easy')) - # add options - _vbox.pack_start(_easy, expand=False, fill=True) - # with easy as group - _vbox.pack_start(self._get_toggle_box(_easy, 'mode', 'advanced', - _('Advanced')), expand=False, fill=True) - # init group - self._group_mode = _easy.get_group() - # .. - return _vbox - - def _get_rate_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(_('FRAME RATE')), - expand=False, fill=True) - # TODO - add some explanation text - # init normal option and use it as group - _normal = self._get_toggle_box(None, 'rate', 'normal', _('Normal')) - # add options - _vbox.pack_start(_normal, expand=False, fill=True) - # with easy as group - _vbox.pack_start(self._get_toggle_box(_normal, 'rate', 'smooth', - _('Smooth')), expand=False, fill=True) - # with easy as group - _vbox.pack_start(self._get_toggle_box(_normal, 'rate', 'faster', - _('Faster')), expand=False, fill=True) - # init group - self._group_rate = _normal.get_group() - # .. - return _vbox - - def _get_dnd_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(_('DRAG\'N\'DROP')), - expand=False, fill=True) - # TODO - add some explanation text - # init normal option and use it as group - _no = self._get_toggle_box(None, 'dnd', 'no', _('Don\'t Use Drag\'n\'Drop')) - # add options - _vbox.pack_start(_no, expand=False, fill=True) - # with easy as group - _vbox.pack_start(self._get_toggle_box(_no, 'dnd', 'yes', - _('Use Drag\'n\'Drop')), expand=False, fill=True) - # init group - self._group_dnd = _no.get_group() - # .. - return _vbox - - def _add_left_part(self): - # .. - _vbox = gtk.VBox(homogeneous=False, spacing=5) - # border - _vbox.set_border_width(5) - # show - _vbox.show() - # 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) - # add rate choices - _vbox.pack_start(self._get_rate_part(), - expand=False, fill=True) - # add dnd choices - _vbox.pack_start(self._get_dnd_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')), - expand=False, fill=True) - self.msg_label_import = self._get_hidden_text() - _vbox.pack_start(self._get_button('import', _('Choose a File'), - 'import', msg_label=self.msg_label_import), expand=False, fill=True) - _vbox.pack_start(self.msg_label_import, expand=False, fill=True) - # add first part title - _vbox.pack_start(self._get_title(_('EXPORT')), - expand=False, fill=True) - self.msg_label_export = self._get_hidden_text() - # list the possible medias - for _media in os.listdir('/media'): - # current path - _path = os.path.join('/media', _media) - # should be a dir - if os.path.isdir(_path): - # set export button text - _button_text = _('Export to') + ' "' + _media + '"' - # init button - _button = self._get_button('export', _button_text, 'export', - msg_label=self.msg_label_export, value=_media) - # add button - _vbox.pack_start(_button, expand=False, fill=True) - else: - continue - # add label - _vbox.pack_start(self.msg_label_export, expand=False, fill=True) - # .. - return _vbox - - def _add_right_part(self): - # .. - _vbox = gtk.VBox(homogeneous=False, spacing=5) - # border - _vbox.set_border_width(5) - # show - _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) - - def _show(self): - self._initialized = True - # show all - 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) |