Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README1
-rw-r--r--shell/ActivityHost.py5
-rwxr-xr-xshell/Shell.py18
-rw-r--r--shell/panel/FriendsPanel.py3
-rw-r--r--shell/panel/Panel.py55
-rw-r--r--shell/panel/PanelManager.py41
-rw-r--r--shell/panel/TopPanel.py1
-rw-r--r--shell/panel/VerbsPanel.py4
8 files changed, 71 insertions, 57 deletions
diff --git a/README b/README
index f64c4ac..78c97f3 100644
--- a/README
+++ b/README
@@ -22,4 +22,5 @@ F1 Activity zoom level
F2 Home zoom level
F3 Friends zoom level
F4 Mesh zoom level
+F5 Show the frame
F6 Open a terminal activity
diff --git a/shell/ActivityHost.py b/shell/ActivityHost.py
index 6bf3d6e..710da8f 100644
--- a/shell/ActivityHost.py
+++ b/shell/ActivityHost.py
@@ -5,7 +5,6 @@ from sugar import conf
from sugar.activity import Activity
from sugar.presence import PresenceService
from sugar.canvas.IconColor import IconColor
-from PeopleWindow import PeopleWindow
class ActivityHost:
def __init__(self, shell, window):
@@ -21,7 +20,6 @@ class ActivityHost:
self._id = self._activity.get_id()
self._default_type = self._activity.get_default_type()
self._gdk_window = gtk.gdk.window_foreign_new(self._xid)
- self._people_window = PeopleWindow(shell, self)
registry = conf.get_activity_registry()
info = registry.get_activity(self._default_type)
@@ -50,9 +48,6 @@ class ActivityHost:
def get_default_type(self):
return self._default_type
- def show_people(self):
- self.show_dialog(self._people_window)
-
def present(self):
self._window.activate(gtk.get_current_event_time())
diff --git a/shell/Shell.py b/shell/Shell.py
index b387049..6292a78 100755
--- a/shell/Shell.py
+++ b/shell/Shell.py
@@ -28,17 +28,10 @@ class ShellDbusService(dbus.service.Object):
dbus.service.Object.__init__(self, bus_name, '/com/redhat/Sugar/Shell')
self._shell = shell
- def __show_people_idle(self):
- self._shell.show_people()
-
def __show_console_idle(self):
self._shell.show_console()
@dbus.service.method('com.redhat.Sugar.Shell')
- def show_people(self):
- gobject.idle_add(self.__show_people_idle)
-
- @dbus.service.method('com.redhat.Sugar.Shell')
def show_console(self):
gobject.idle_add(self.__show_console_idle)
@@ -59,6 +52,7 @@ class Shell(gobject.GObject):
self._key_grabber.grab('F2')
self._key_grabber.grab('F3')
self._key_grabber.grab('F4')
+ self._key_grabber.grab('F5')
self._screen = wnck.screen_get_default()
self._hosts = {}
@@ -89,6 +83,8 @@ class Shell(gobject.GObject):
self.set_zoom_level(sugar.ZOOM_FRIENDS)
elif key == 'F4':
self.set_zoom_level(sugar.ZOOM_MESH)
+ elif key == 'F5':
+ self._panel_manager.toggle_visibility()
def __first_time_dialog_destroy_cb(self, dialog):
conf.get_profile().save()
@@ -112,6 +108,10 @@ class Shell(gobject.GObject):
self.set_zoom_level(sugar.ZOOM_HOME)
self._panel_manager = PanelManager(self)
+ self._panel_manager.show()
+
+ def get_panel_manager(self):
+ return self._panel_manager
def set_console(self, console):
self._console = console
@@ -158,10 +158,6 @@ class Shell(gobject.GObject):
return None
- def show_people(self):
- activity = self.get_current_activity()
- activity.show_people()
-
def show_console(self):
self._console.show()
diff --git a/shell/panel/FriendsPanel.py b/shell/panel/FriendsPanel.py
index aec995e..b7e9dc3 100644
--- a/shell/panel/FriendsPanel.py
+++ b/shell/panel/FriendsPanel.py
@@ -24,8 +24,8 @@ class ActionsBar(goocanvas.Group):
self.add_icon(icon)
def add_icon(self, icon):
- self._y += (self._width + 6)
icon.set_property('y', self._y)
+ self._y += (self._width + 6)
self.add_child(icon)
def __share_clicked_cb(self, item):
@@ -48,5 +48,4 @@ class FriendsPanel(Panel):
Panel.construct(self)
actions_bar = ActionsBar(self._shell, self.get_width())
- actions_bar.translate(self.get_border(), self.get_border())
self.get_root().add_child(actions_bar)
diff --git a/shell/panel/Panel.py b/shell/panel/Panel.py
index da77bf9..cb9b493 100644
--- a/shell/panel/Panel.py
+++ b/shell/panel/Panel.py
@@ -1,59 +1,66 @@
import gtk
import goocanvas
-class PanelModel(goocanvas.CanvasModelSimple):
+class PanelView(goocanvas.CanvasView):
BORDER = 4
- def __init__(self, width, height):
- goocanvas.CanvasModelSimple.__init__(self)
-
- root = self.get_root_item()
+ def construct(self, x, y):
+ model = goocanvas.CanvasModelSimple()
+ root = model.get_root_item()
- item = goocanvas.Rect(x=0, y=0, width=width, height=height,
+ item = goocanvas.Rect(x=0, y=0,
+ width=self.get_allocation().width,
+ height=self.get_allocation().height,
line_width=0, fill_color="#4f4f4f")
root.add_child(item)
-class PanelView(goocanvas.CanvasView):
- def construct(self):
- canvas_model = PanelModel(self.get_allocation().width,
- self.get_allocation().height)
- self.set_model(canvas_model)
+ self._group = goocanvas.Group()
+ root.add_child(self._group)
+ self._group.translate(x + PanelView.BORDER, y + PanelView.BORDER)
+
+ self.set_model(model)
+
+ def get_root_group(self):
+ return self._group
class Panel(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
+ self._x = 0
+ self._y = 0
self._view = PanelView()
self.add(self._view)
self._view.show()
- self.connect('realize', self.__realize_cb)
+ self.set_decorated(False)
+
+ self.realize()
+ self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
+
+ screen = gtk.gdk.screen_get_default()
+ self.window.set_transient_for(screen.get_root_window())
def get_view(self):
return self._view
- def get_model(self):
- return self._view.get_model()
-
def get_root(self):
- return self.get_model().get_root_item()
-
- def get_border(self):
- return PanelModel.BORDER
+ return self._view.get_root_group()
def get_height(self):
height = self._view.get_allocation().height
- return height - self.get_border() * 2
+ return height - PanelView.BORDER * 2
def get_width(self):
width = self._view.get_allocation().width
- return width - self.get_border() * 2
+ return width - PanelView.BORDER * 2
- def __realize_cb(self, window):
- self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)
+ def set_position(self, x, y):
+ self._x = x
+ self._y = y
def construct(self):
- self._view.construct()
+ self._view.construct(self._x, self._y)
def show(self):
gtk.Window.show(self)
diff --git a/shell/panel/PanelManager.py b/shell/panel/PanelManager.py
index 04ffadc..de6a3a4 100644
--- a/shell/panel/PanelManager.py
+++ b/shell/panel/PanelManager.py
@@ -10,21 +10,38 @@ class PanelManager:
size = 30
self._verbs_panel = VerbsPanel(shell)
- self._verbs_panel.move(0, gtk.gdk.screen_height() - size)
- self._verbs_panel.resize(gtk.gdk.screen_width(), size)
- self._verbs_panel.show()
+ self._verbs_panel.set_position(size, 0)
+ self._verbs_panel.move(1, gtk.gdk.screen_height() - size + 1)
+ self._verbs_panel.resize(gtk.gdk.screen_width() - 1, size - 1)
self._friends_panel = FriendsPanel(shell)
- self._friends_panel.move(gtk.gdk.screen_width() - size, 0)
- self._friends_panel.resize(size, gtk.gdk.screen_height())
- self._friends_panel.show()
+ self._friends_panel.move(gtk.gdk.screen_width() - size, size)
+ self._friends_panel.resize(size, gtk.gdk.screen_height() - size * 2 + 1)
self._top_panel = TopPanel(shell)
- self._top_panel.move(0, 0)
- self._top_panel.resize(gtk.gdk.screen_width(), size)
+ self._top_panel.set_position(size, 0)
+ # FIXME bug in matchbox, can't use 0,0
+ self._top_panel.move(0, 1)
+ self._top_panel.resize(gtk.gdk.screen_width() - 1, size - 1)
+
+ self._left_panel = Panel()
+ self._left_panel.move(0, size)
+ self._left_panel.resize(size, gtk.gdk.screen_height() - size * 2 + 1)
+
+ def show(self):
+ self._verbs_panel.show()
+ self._friends_panel.show()
self._top_panel.show()
+ self._left_panel.show()
+
+ def hide(self):
+ self._verbs_panel.hide()
+ self._friends_panel.hide()
+ self._top_panel.hide()
+ self._left_panel.hide()
- panel = Panel()
- panel.move(0, 0)
- panel.resize(size, gtk.gdk.screen_height())
- panel.show()
+ def toggle_visibility(self):
+ if self._verbs_panel.props.visible:
+ self.hide()
+ else:
+ self.show()
diff --git a/shell/panel/TopPanel.py b/shell/panel/TopPanel.py
index 2881c41..07df47c 100644
--- a/shell/panel/TopPanel.py
+++ b/shell/panel/TopPanel.py
@@ -37,5 +37,4 @@ class TopPanel(Panel):
Panel.construct(self)
zoom_bar = ZoomBar(self._shell, self.get_height())
- zoom_bar.translate(self.get_border(), self.get_border())
self.get_root().add_child(zoom_bar)
diff --git a/shell/panel/VerbsPanel.py b/shell/panel/VerbsPanel.py
index 43c0755..e0a7675 100644
--- a/shell/panel/VerbsPanel.py
+++ b/shell/panel/VerbsPanel.py
@@ -59,10 +59,9 @@ class VerbsPanel(Panel):
def construct(self):
Panel.construct(self)
- root = self.get_model().get_root_item()
+ root = self.get_root()
activity_bar = ActivityBar(self._shell, self.get_height())
- activity_bar.translate(self.get_border(), self.get_border())
root.add_child(activity_bar)
def __item_view_created_cb(self, view, item_view, item):
@@ -73,3 +72,4 @@ class VerbsPanel(Panel):
def __activity_button_press_cb(self, view, target, event, activity_id):
self._shell.start_activity(activity_id)
+ self._shell.get_panel_manager().hide()