Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/frame/Frame.py
blob: 826295f1cf0e5010bccb1b95f33a7594e6e682b9 (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
import gtk
import gobject
import goocanvas

from frame.BottomPanel import BottomPanel
from frame.RightPanel import RightPanel
from frame.TopPanel import TopPanel
from frame.PanelWindow import PanelWindow
from sugar.canvas.Grid import Grid

class Frame:
	def __init__(self, shell):
		self._windows = []

		shell_model = shell.get_model()

		model = goocanvas.CanvasModelSimple()
		root = model.get_root_item()

		grid = Grid()

		bg = goocanvas.Rect(fill_color="#4f4f4f", line_width=0)
		grid.set_constraints(bg, 0, 0, 80, 60)
		root.add_child(bg)

		panel = BottomPanel(grid, shell_model)
		grid.set_constraints(panel, 5, 55)
		root.add_child(panel)

		panel_window = PanelWindow(grid, model, 0, 55, 80, 5)
		self._windows.append(panel_window)

		panel = TopPanel(grid, shell)
		root.add_child(panel)

		panel_window = PanelWindow(grid, model, 0, 0, 80, 5)
		self._windows.append(panel_window)
		
		panel = RightPanel(grid, shell_model)
		grid.set_constraints(panel, 75, 5)
		root.add_child(panel)

		panel_window = PanelWindow(grid, model, 75, 5, 5, 50)
		self._windows.append(panel_window)

		panel_window = PanelWindow(grid, model, 0, 5, 5, 50)
		self._windows.append(panel_window)

	def __hide_timeout_cb(self):
		self.hide()
		return False

	def show_and_hide(self, seconds):
		self.show()
		gobject.timeout_add(seconds * 1000, self.__hide_timeout_cb)

	def show(self):
		for panel in self._windows:
			panel.show()

	def hide(self):
		for panel in self._windows:
			panel.hide()

	def toggle_visibility(self):
		for panel in self._windows:
			if panel.props.visible:
				panel.hide()
			else:
				panel.show()