Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/atoidejouer/ui/screens/activity.py
diff options
context:
space:
mode:
Diffstat (limited to 'atoidejouer/ui/screens/activity.py')
-rw-r--r--atoidejouer/ui/screens/activity.py231
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)