# -*- coding: utf-8 -*- import logging import sugargame.canvas from sugargame import mesh import pygame from gi.repository import Gtk from sugar3.activity import activity from sugar3.activity.widgets import ActivityToolbarButton from sugar3.activity.widgets import StopButton from sugar3.graphics.toolbarbox import ToolbarBox from sugar3.graphics.toolbutton import ToolButton from gettext import gettext as _ import game class MazeActivity(activity.Activity): def __init__(self, handle): super(MazeActivity, self).__init__(handle) self.build_toolbar() # Build the Pygame canvas. self._pygamecanvas = sugargame.canvas.PygameCanvas(self) self.set_canvas(self._pygamecanvas) def shared_cb(*args, **kwargs): mesh.activity_shared(self) self._pygamecanvas.grab_focus() def joined_cb(*args, **kwargs): mesh.activity_joined(self) self._pygamecanvas.grab_focus() self.connect('shared', shared_cb) self.connect('joined', joined_cb) if self.get_shared(): joined_cb() self.game = game.MazeGame(self._pygamecanvas) self._pygamecanvas.run_pygame(self.game.run) self._pygamecanvas.grab_focus() def get_preview(self): return self._pygamecanvas.get_preview() def build_toolbar(self): """Build our Activity toolbar for the Sugar system.""" toolbar_box = ToolbarBox() activity_button = ActivityToolbarButton(self) toolbar_box.toolbar.insert(activity_button, 0) activity_button.show() separator = Gtk.SeparatorToolItem() toolbar_box.toolbar.insert(separator, -1) separator.show() easier_button = ToolButton('create-easier') easier_button.set_tooltip(_('Easier level')) easier_button.connect('clicked', self._easier_button_cb) toolbar_box.toolbar.insert(easier_button, -1) harder_button = ToolButton('create-harder') harder_button.set_tooltip(_('Harder level')) harder_button.connect('clicked', self._harder_button_cb) toolbar_box.toolbar.insert(harder_button, -1) separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_size_request(0, -1) separator.set_expand(True) toolbar_box.toolbar.insert(separator, -1) separator.show() stop_button = StopButton(self) toolbar_box.toolbar.insert(stop_button, -1) stop_button.show() self.set_toolbar_box(toolbar_box) toolbar_box.show_all() self.connect("destroy", self.__stop_pygame) return toolbar_box def __stop_pygame(self, widget): pygame.quit() def _easier_button_cb(self, button): pygame.event.post(pygame.event.Event(pygame.USEREVENT, action='easier_button')) def _harder_button_cb(self, button): pygame.event.post(pygame.event.Event(pygame.USEREVENT, action='harder_button'))