Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/HomeWindow2.py
blob: e04afe8eb7cf6fa264f3e7f09d1c6718f7b28222 (plain)
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
import gtk

from sugar.scene.Stage import Stage
from sugar.scene.StageView import StageView
from sugar.scene.PixbufActor import PixbufActor
from sugar.scene.CircleLayout import CircleLayout
from sugar.scene.Group import Group
from sugar.activity import Activity
from sugar import env

class ActivityLauncher(gtk.HButtonBox):
	def __init__(self, shell):
		gtk.HButtonBox.__init__(self)

		self._shell = shell

		for module in shell.get_registry().list_activities():
			if module.get_show_launcher():
				self._add_activity(module)

	def _add_activity(self, module):
		button = gtk.Button(module.get_name())
		activity_id = module.get_id()
		button.connect('clicked', self.__clicked_cb, activity_id)
		self.pack_start(button)
		button.show()

	def __clicked_cb(self, button, activity_id):
		Activity.create(activity_id)

class HomeScene(StageView):
	def __init__(self, shell):
		self._stage = self._create_stage()
		StageView.__init__(self, self._stage)
		self._shell = shell

		launcher = ActivityLauncher(shell)
		self.put(launcher, 10, 440)
		launcher.show()

	def _create_stage(self):
		stage = Stage()

		background = env.get_data_file('home-background.png')
		pixbuf = gtk.gdk.pixbuf_new_from_file(background)
		stage.add(PixbufActor(pixbuf))

		icons_group = Group()
		icons_group.set_position(310, 80)

		pholder = env.get_data_file('activity-placeholder.png')
		pholder_pixbuf = gtk.gdk.pixbuf_new_from_file(pholder)

		i = 0
		while i < 7:
			icons_group.add(PixbufActor(pholder_pixbuf))
			i += 1

		layout = CircleLayout(110)
		icons_group.set_layout(layout)

		stage.add(icons_group)

		return stage

class HomeWindow(gtk.Window):
	def __init__(self, shell):
		gtk.Window.__init__(self)

		self.connect('realize', self.__realize_cb)

		fixed = gtk.Fixed()

		scene = HomeScene(shell)
		scene.set_size_request(640, 480)
		self.add(scene)
		scene.show()

	def __realize_cb(self, window):
		self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DESKTOP)