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>2011-09-12 18:42:06 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2011-09-16 21:34:14 (GMT)
commita5a7ec79bb3e2ffdefeaaa00e2cdb1870b4d5758 (patch)
tree47b57af917da9520217e80df95ef9dcd2f0e247c /memorizetoolbar.py
parentbf381f143a4b12261ffa8e1690db90f59e069f5a (diff)
Implementation of new toolbar
This patch implement the proposal from Gary Martin. Unification of model between game and creation mode and save game are not implemented in this patch. Signed-of-by: Gonzalo Odiard <gonzalo@laptop.org> Reviewed-by: Manuel QuiƱones <manuq@laptop.org>
Diffstat (limited to 'memorizetoolbar.py')
-rw-r--r--memorizetoolbar.py100
1 files changed, 22 insertions, 78 deletions
diff --git a/memorizetoolbar.py b/memorizetoolbar.py
index 782f818..88556c0 100644
--- a/memorizetoolbar.py
+++ b/memorizetoolbar.py
@@ -16,21 +16,22 @@
#
import gtk
+import gobject
from os.path import join, dirname
from gettext import gettext as _
from sugar.graphics.toolbutton import ToolButton
from sugar.graphics.toolcombobox import ToolComboBox
-from sugar.graphics.objectchooser import ObjectChooser
-from sugar import profile
import logging
from gobject import SIGNAL_RUN_FIRST, TYPE_PYOBJECT
_logger = logging.getLogger('memorize-activity')
-class MemorizeToolbar(gtk.Toolbar):
- __gtype_name__ = 'MemoryToolbar'
+
+class MemorizeToolbarBuilder(gobject.GObject):
+
+ __gtype_name__ = 'MemoryToolbarBuilder'
standard_game_names = ['Load demo games',
'addition',
@@ -48,37 +49,11 @@ class MemorizeToolbar(gtk.Toolbar):
}
def __init__(self, activity):
- gtk.Toolbar.__init__(self)
+ gobject.GObject.__init__(self)
self.activity = activity
- self._lock = True
+ self.toolbar = self.activity.get_toolbar_box().toolbar
self.jobject = None
-
- # Reset Button
- restart_icon = join(dirname(__file__), 'images', 'game-restart.svg')
- restart_image = gtk.Image()
- restart_image.set_from_file(restart_icon)
- self._restart_button = ToolButton()
- self._restart_button.set_icon_widget(restart_image)
- self._restart_button.connect('clicked', self._game_reset_cb)
- self._restart_button.set_tooltip(_('Restart Game'))
- self.insert(self._restart_button, -1)
- self._restart_button.show()
-
- # Load Button
- load_icon = join(dirname(__file__), 'images', 'game-load.svg')
- load_image = gtk.Image()
- load_image.set_from_file(load_icon)
- self._load_button = ToolButton()
- self._load_button.set_icon_widget(load_image)
- self._load_button.set_tooltip(_('Load game'))
- self._load_button.connect('clicked', self._load_game)
- self._add_widget(self._load_button)
-
- # Separator
- separator = gtk.SeparatorToolItem()
- separator.set_draw(True)
- self.insert(separator, -1)
-
+
# Change size combobox
self._size_combo = ToolComboBox()
self._sizes = ['4 X 4', '5 X 5', '6 X 6']
@@ -86,14 +61,9 @@ class MemorizeToolbar(gtk.Toolbar):
self._size_combo.combo.append_item(i, f)
self.size_handle_id = self._size_combo.combo.connect( \
'changed', self._game_size_cb)
- self._add_widget(self._size_combo)
+ self.toolbar.insert(self._size_combo, -1)
self._size_combo.combo.set_active(0)
- separator = gtk.SeparatorToolItem()
- separator.set_draw(True)
- self.insert(separator, -1)
- self._lock = False
-
# Change demo games combobox
self._game_combo = ToolComboBox()
for i, f in enumerate(self.standard_game_names):
@@ -101,48 +71,22 @@ class MemorizeToolbar(gtk.Toolbar):
self._game_combo.combo.append_item(i, f)
self._game_combo.combo.set_active(0)
self._game_combo.combo.connect('changed', self._game_changed_cb)
- self._add_widget(self._game_combo)
-
- def _add_widget(self, widget, expand=False):
- tool_item = gtk.ToolItem()
- tool_item.set_expand(expand)
- tool_item.add(widget)
- widget.show()
- self.insert(tool_item, -1)
- tool_item.show()
-
+ self.toolbar.insert(self._game_combo, -1)
+
+ # Reset Button
+ self._restart_button = ToolButton('game-new')
+ self._restart_button.connect('clicked', self._game_reset_cb)
+ self._restart_button.set_tooltip(_('Restart Game'))
+ self.toolbar.insert(self._restart_button, -1)
+ self._restart_button.show()
+
def _game_reset_cb(self, widget):
self.emit('game_changed', None, None, 'reset', None, None)
- def _load_game(self, button):
- chooser = ObjectChooser(_('Choose memorize game'),
- parent=self.activity,
- flags=gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT)
- jobject = ''
- try:
- result = chooser.run()
- if result == gtk.RESPONSE_ACCEPT:
- logging.debug('ObjectChooser: %r',
- chooser.get_selected_object())
- jobject = chooser.get_selected_object()
- if not jobject or not jobject.file_path:
- return
- finally:
- chooser.destroy()
- del chooser
-
- if jobject and jobject.file_path:
- title = jobject.metadata['title']
- if jobject.metadata.has_key('icon-color'):
- color = jobject.metadata['icon-color']
- else:
- color = profile.get_color().to_string()
- self.emit('game_changed', jobject.file_path, 4,
- 'file', title, color)
-
- if self.jobject != None:
- self.jobject.destroy()
- self.jobject = jobject
+ def update_controls(self, active):
+ self._size_combo.set_sensitive(active)
+ self._game_combo.set_sensitive(active)
+ self._restart_button.set_sensitive(active)
def _game_size_cb(self, widget):
game_size = int(self._sizes[self._size_combo.combo.get_active()][0])