-
Notifications
You must be signed in to change notification settings - Fork 12
/
activity.py
111 lines (91 loc) · 3.64 KB
/
activity.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
import sugargame
import sugargame.canvas
from sugar3.activity import activity
from sugar3.graphics.toolbarbox import ToolbarBox
from sugar3.activity.widgets import ActivityToolbarButton
from sugar3.graphics.radiotoolbutton import RadioToolButton
from sugar3.graphics.toolbutton import ToolButton
from sugar3.activity.widgets import StopButton
from gettext import gettext as _
import main
import pygame
class Activity(activity.Activity):
def __init__(self, handle):
activity.Activity.__init__(self, handle)
self.max_participants = 1
self.sound = True
self.game = main.Flappy()
self.build_toolbar()
self.game.canvas = self._pygamecanvas = \
sugargame.canvas.PygameCanvas(self,
main=self.game.run,
modules=[pygame.display, pygame.font,
pygame.mixer])
self.set_canvas(self._pygamecanvas)
self._pygamecanvas.grab_focus()
def build_toolbar(self):
toolbar_box = ToolbarBox()
activity_button = ActivityToolbarButton(self)
toolbar_box.toolbar.insert(activity_button, -1)
activity_button.show()
separator = Gtk.SeparatorToolItem()
separator.props.draw = False
separator.set_expand(False)
toolbar_box.toolbar.insert(separator, -1)
separator.show()
self._levels_buttons = []
def add_level_button(icon_name, tooltip, numeric_level):
if self._levels_buttons:
button = RadioToolButton(icon_name=icon_name,
group=self._levels_buttons[0])
else:
button = RadioToolButton(icon_name=icon_name)
self._levels_buttons.append(button)
def callback(source):
if source.get_active():
self.game.set_level(numeric_level)
self.game.run()
button.connect('clicked', callback)
button.set_tooltip(tooltip)
add_level_button('male-7', _("Hard"), 3)
add_level_button('male-4', _("Medium"), 2)
add_level_button('male-1', _("Easy"), 1)
for button in self._levels_buttons[::-1]:
toolbar_box.toolbar.insert(button, -1)
separator2 = Gtk.SeparatorToolItem()
separator2.props.draw = True
separator2.set_expand(False)
toolbar_box.toolbar.insert(separator2, -1)
separator2.show()
button = ToolButton('speaker-muted-100')
button.set_tooltip(_('Sound'))
button.connect('clicked', self.sound_control)
toolbar_box.toolbar.insert(button, -1)
separator3 = Gtk.SeparatorToolItem()
separator3.props.draw = False
separator3.set_expand(True)
toolbar_box.toolbar.insert(separator3, -1)
separator3.show()
stop_button = StopButton(self)
toolbar_box.toolbar.insert(stop_button, -1)
stop_button.show()
stop_button.connect('clicked', self._stop_cb)
self.set_toolbar_box(toolbar_box)
toolbar_box.show()
self.show_all()
def _stop_cb(self, button):
self.game.running = False
def sound_control(self, button):
self.sound = not self.sound
self.game.sound = self.sound
if not self.sound:
button.set_icon_name('speaker-muted-000')
button.set_tooltip(_('No sound'))
else:
button.set_icon_name('speaker-muted-100')
button.set_tooltip(_('Sound'))