Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/graphics/menu.py
blob: 9a85bcf4d9abf0e64fa8cbedecd9e94fd72f0900 (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
import gtk
import hippo
import gobject

from sugar.graphics.canvasicon import CanvasIcon

class Menu(gtk.Window):
	__gsignals__ = {
		'action': (gobject.SIGNAL_RUN_FIRST,
				   gobject.TYPE_NONE, ([int])),
	}

	def __init__(self, title, content_box=None):
		gtk.Window.__init__(self, gtk.WINDOW_POPUP)

		canvas = hippo.Canvas()
		self.add(canvas)
		canvas.show()

		self._root = hippo.CanvasBox(background_color=0x000000FF,
									 spacing=6)
		canvas.set_root(self._root)

		text = hippo.CanvasText(text=title, color=0xFFFFFFFF)
		self._root.append(text)

		if content_box:
			separator = self._create_separator()
			self._root.append(separator)
			self._root.append(content_box)

		separator = self._create_separator()
		self._root.append(separator)

		self._action_box = hippo.CanvasBox(
						orientation=hippo.ORIENTATION_HORIZONTAL)
		self._root.append(self._action_box)

	def _create_separator(self):
		separator = hippo.CanvasBox(background_color=0xFFFFFFFF,
									border_left=6, border_right=6,
								    box_height=2)
		return separator

	def add_action(self, icon, action_id):
		icon.connect('activated', self._action_clicked_cb, action_id)
		self._action_box.append(icon)

	def _action_clicked_cb(self, icon, action):
		self.emit('action', action)