Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/memorizetoolbar.py
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@gmail.com>2014-01-03 21:17:04 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2014-01-06 19:41:33 (GMT)
commitb4a05d3457c6922501d2d5fd7fc1abe319648324 (patch)
tree87894d000dbf914fd08cc01833ffa42bd247831d /memorizetoolbar.py
parenteeddbc26a717f0015db558d255169558151c7a3d (diff)
Add menues for art4apps games if installed
Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Diffstat (limited to 'memorizetoolbar.py')
-rw-r--r--memorizetoolbar.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/memorizetoolbar.py b/memorizetoolbar.py
index ff27133..98b40a3 100644
--- a/memorizetoolbar.py
+++ b/memorizetoolbar.py
@@ -19,6 +19,7 @@ import logging
from os.path import join, dirname
from gi.repository import GObject
+from gi.repository import Gtk
from gettext import gettext as _
from sugar3.graphics.toolbutton import ToolButton
@@ -27,6 +28,13 @@ from sugar3.graphics.icon import Icon
from sugar3.activity.widgets import RadioMenuButton
from sugar3.graphics.menuitem import MenuItem
+USE_ART4APPS = False
+try:
+ from art4apps import Art4Apps
+ USE_ART4APPS = True
+except ImportError:
+ pass
+
_logger = logging.getLogger('memorize-activity')
@@ -62,7 +70,42 @@ class MemorizeToolbarBuilder(GObject.GObject):
menu_item.connect('activate', self.__activate_game_cb, i)
self._demo_games.props.palette.menu.append(menu_item)
menu_item.show()
+
self.toolbar.insert(self._demo_games, -1)
+
+ self._art4apps = None
+ if USE_ART4APPS:
+ self._art4apps = Art4Apps()
+ for language in self._art4apps.get_languages():
+ language_description = self._art4apps.get_language_name(
+ language)
+ lang_menu_item = MenuItem(language_description,
+ 'activity-start')
+ self._demo_games.props.palette.menu.append(lang_menu_item)
+ lang_menu_item.show()
+ categories_menu = Gtk.Menu()
+ # create a submenu with the categories
+ categories = {}
+ for category in self._art4apps.get_categories():
+ if category in ['letters', 'other']:
+ continue
+ translated_category = self._art4apps.get_translation(
+ category, language)
+ if translated_category is not None:
+ label = translated_category
+ else:
+ label = category
+ categories[label] = category
+
+ for label in sorted(categories):
+ cat_menu_item = MenuItem(label)
+ cat_menu_item.connect('activate',
+ self.__activate_art4apps_game_cb,
+ categories[label], language)
+ categories_menu.append(cat_menu_item)
+ cat_menu_item.show()
+ lang_menu_item.set_submenu(categories_menu)
+
self._selected_game = self.standard_game_names[0]
# Change size combobox
@@ -100,6 +143,33 @@ class MemorizeToolbarBuilder(GObject.GObject):
self.emit('game_changed', None, self._selected_game_size, 'size', None,
None)
+ def __activate_art4apps_game_cb(self, menu, category, language):
+ self._art4apps_data = (category, language)
+ if self.activity.game.model.is_demo:
+ self._change_art4apps_game(category, language)
+ else:
+ alert = Alert()
+ alert.props.title = _('Discard your modified game?')
+ icon = Icon(icon_name='dialog-ok')
+ alert.add_button(1, _('Discard'), icon)
+ icon = Icon(icon_name='dialog-cancel')
+ alert.add_button(0, _('Do not discard'), icon)
+ alert.connect('response', self._change_art4apps_game_alert_cb)
+ self.activity.add_alert(alert)
+
+ def _change_art4apps_game_alert_cb(self, alert, response_id):
+ if alert is not None:
+ self.activity.remove_alert(alert)
+ category, language = self._art4apps_data
+ logging.error('Selected art4apps category %s language %s',
+ category, language)
+ self._change_art4apps_game(category, language)
+
+ def _change_art4apps_game(self, category, language):
+ game_size = int(self._selected_game_size)
+ self.emit('game_changed', category, game_size, 'art4apps', language,
+ self._art4apps)
+
def __activate_game_cb(self, menu, i):
self._game_selected_index = i
if self.activity.game.model.is_demo: