Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/view
diff options
context:
space:
mode:
authorSimon Schampijer <simon@schampijer.de>2008-06-04 19:06:12 (GMT)
committer Simon Schampijer <simon@schampijer.de>2008-06-04 19:06:12 (GMT)
commit754b4c5d460db45555a36bbc0cddcb385ea071e0 (patch)
tree01efe2f65776b3d7c137a812266d478079fac279 /src/view
parent2b6e3b653dd3de53991e180ef390b6a2abaeaf1d (diff)
Control Panel push missed these changes
Diffstat (limited to 'src/view')
-rw-r--r--src/view/frame/eventarea.py66
-rw-r--r--src/view/home/activitiesring.py68
2 files changed, 64 insertions, 70 deletions
diff --git a/src/view/frame/eventarea.py b/src/view/frame/eventarea.py
index 99f8c76..0eba150 100644
--- a/src/view/frame/eventarea.py
+++ b/src/view/frame/eventarea.py
@@ -18,6 +18,10 @@ import gtk
import gobject
import wnck
+from sugar import profile
+
+_MAX_DELAY = 1000
+
class EventArea(gobject.GObject):
__gsignals__ = {
'enter': (gobject.SIGNAL_RUN_FIRST,
@@ -31,30 +35,56 @@ class EventArea(gobject.GObject):
self._windows = []
self._hover = False
+ self._sids = {}
+ pro = profile.get_profile()
+ self._hot_delay = int(pro.hot_corners_delay)
+ self._warm_delay = int(pro.warm_edges_delay)
right = gtk.gdk.screen_width() - 1
bottom = gtk.gdk.screen_height() -1
+ width = gtk.gdk.screen_width() - 2
+ height = gtk.gdk.screen_height() - 2
+
+ if self._warm_delay != _MAX_DELAY:
+ invisible = self._create_invisible(1, 0, width, 1, self._warm_delay)
+ self._windows.append(invisible)
+
+ invisible = self._create_invisible(1, bottom, width, 1,
+ self._warm_delay)
+ self._windows.append(invisible)
- invisible = self._create_invisible(0, 0, 1, 1)
- self._windows.append(invisible)
+ invisible = self._create_invisible(0, 1, 1, height,
+ self._warm_delay)
+ self._windows.append(invisible)
- invisible = self._create_invisible(right, 0, 1, 1)
- self._windows.append(invisible)
+ invisible = self._create_invisible(right, 1, 1, height,
+ self._warm_delay)
+ self._windows.append(invisible)
- invisible = self._create_invisible(0, bottom, 1, 1)
- self._windows.append(invisible)
+ if self._hot_delay != _MAX_DELAY:
+ invisible = self._create_invisible(0, 0, 1, 1, self._hot_delay)
+ self._windows.append(invisible)
- invisible = self._create_invisible(right, bottom, 1, 1)
- self._windows.append(invisible)
+ invisible = self._create_invisible(right, 0, 1, 1, self._hot_delay)
+ self._windows.append(invisible)
+
+ invisible = self._create_invisible(0, bottom, 1, 1, self._hot_delay)
+ self._windows.append(invisible)
+
+ invisible = self._create_invisible(right, bottom, 1, 1,
+ self._hot_delay)
+ self._windows.append(invisible)
screen = wnck.screen_get_default()
screen.connect('window-stacking-changed',
self._window_stacking_changed_cb)
- def _create_invisible(self, x, y, width, height):
+ def _create_invisible(self, x, y, width, height, delay):
invisible = gtk.Invisible()
- invisible.connect('enter-notify-event', self._enter_notify_cb)
- invisible.connect('leave-notify-event', self._leave_notify_cb)
+ if delay >= 0:
+ invisible.connect('enter-notify-event', self._enter_notify_cb,
+ delay)
+ invisible.connect('leave-notify-event', self._leave_notify_cb)
invisible.drag_dest_set(0, [], 0)
invisible.connect('drag_motion', self._drag_motion_cb)
@@ -78,10 +108,22 @@ class EventArea(gobject.GObject):
self._hover = False
self.emit('leave')
- def _enter_notify_cb(self, widget, event):
+ def _enter_notify_cb(self, widget, event, delay):
+ if widget in self._sids:
+ gobject.source_remove(self._sids[widget])
+ self._sids[widget] = gobject.timeout_add(delay,
+ self.__delay_cb,
+ widget)
+
+ def __delay_cb(self, widget):
+ del self._sids[widget]
self._notify_enter()
+ return False
def _leave_notify_cb(self, widget, event):
+ if widget in self._sids:
+ gobject.source_remove(self._sids[widget])
+ del self._sids[widget]
self._notify_leave()
def _drag_motion_cb(self, widget, drag_context, x, y, timestamp):
diff --git a/src/view/home/activitiesring.py b/src/view/home/activitiesring.py
index e299fab..beb1e81 100644
--- a/src/view/home/activitiesring.py
+++ b/src/view/home/activitiesring.py
@@ -43,6 +43,7 @@ from view.home.MyIcon import MyIcon
from model import shellmodel
from model.shellmodel import ShellModel
from hardware import schoolserver
+from controlpanel.gui import ControlPanel
_logger = logging.getLogger('ActivitiesRing')
@@ -306,14 +307,14 @@ class _MyIcon(MyIcon):
#secondary_text='Sample secondary label',
icon=palette_icon)
- item = MenuItem(_('About this XO'))
+ item = MenuItem(_('Control Panel'))
icon = Icon(icon_name='computer-xo', icon_size=gtk.ICON_SIZE_MENU,
xo_color=self._profile.color)
item.set_image(icon)
icon.show()
- item.connect('activate', self._about_activate_cb)
+ item.connect('activate', self.__controlpanel_activate_cb)
palette.menu.append(item)
item.show()
@@ -368,62 +369,13 @@ class _MyIcon(MyIcon):
if self._profile.is_registered():
self.get_palette().menu.remove(menuitem)
- def _about_activate_cb(self, menuitem):
- dialog = gtk.Dialog(_('About this XO'),
- self.palette,
- gtk.DIALOG_MODAL |
- gtk.DIALOG_DESTROY_WITH_PARENT,
- (gtk.STOCK_OK, gtk.RESPONSE_OK))
-
- not_available = _('Not available')
- build = self._read_file('/boot/olpc_build')
- if build is None:
- build = not_available
- label_build = gtk.Label('Build: %s' % build)
- label_build.set_alignment(0, 0.5)
- label_build.show()
- vbox = dialog.get_child()
- vbox.pack_start(label_build)
-
- firmware = self._read_file('/ofw/openprom/model')
- if firmware is None:
- firmware = not_available
- else:
- firmware = re.split(" +", firmware)
- if len(firmware) == 3:
- firmware = firmware[1]
- label_firmware = gtk.Label('Firmware: %s' % firmware)
- label_firmware.set_alignment(0, 0.5)
- label_firmware.show()
- vbox.pack_start(label_firmware)
-
- serial = self._read_file('/ofw/serial-number')
- if serial is None:
- serial = not_available
- label_serial = gtk.Label('Serial Number: %s' % serial)
- label_serial.set_alignment(0, 0.5)
- label_serial.show()
- vbox.pack_start(label_serial)
-
- dialog.set_default_response(gtk.RESPONSE_OK)
- dialog.connect('response', self._response_cb)
- dialog.show()
-
- def _read_file(self, path):
- if os.access(path, os.R_OK) == 0:
- _logger.error('read_file() No such file or directory: %s' % path)
- return None
-
- fd = open(path, 'r')
- value = fd.read()
- fd.close()
- if value:
- value = value.strip('\n')
- return value
- else:
- _logger.error('read_file() No information in file or directory: %s'
- % path)
- return None
+ def get_toplevel(self):
+ return hippo.get_canvas_for_item(self).get_toplevel()
+
+ def __controlpanel_activate_cb(self, menuitem):
+ panel = ControlPanel()
+ panel.set_transient_for(self.get_toplevel())
+ panel.show()
def _response_cb(self, widget, response_id):
if response_id == gtk.RESPONSE_OK: