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.ScreenContainer import ScreenContainer from sugar.canvas.Grid import Grid class Frame: def __init__(self, shell, owner): self._windows = [] model = goocanvas.CanvasModelSimple() root = model.get_root_item() grid = Grid() bg = goocanvas.Rect(fill_color="#4f4f4f") grid.set_constraints(bg, 0, 0, 80, 60) root.add_child(bg) panel = BottomPanel(grid, shell, owner.get_invites()) 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, owner.get_friends()) 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()