diff options
Diffstat (limited to 'atoidejouer/ui/screens/activity.py')
-rw-r--r-- | atoidejouer/ui/screens/activity.py | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/atoidejouer/ui/screens/activity.py b/atoidejouer/ui/screens/activity.py new file mode 100644 index 0000000..24f72e4 --- /dev/null +++ b/atoidejouer/ui/screens/activity.py @@ -0,0 +1,231 @@ +# python import +import logging, os +# .. +from gettext import gettext as _ + +# gtk import +import gtk + +# atoidejouer import +from atoidejouer.tools import config, ui + +# get application logger +logger = logging.getLogger('atoidejouer') + + +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._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() + # .. + 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) + + 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) |