diff options
author | Simon Schampijer <simon@schampijer.de> | 2008-06-04 19:06:12 (GMT) |
---|---|---|
committer | Simon Schampijer <simon@schampijer.de> | 2008-06-04 19:06:12 (GMT) |
commit | 754b4c5d460db45555a36bbc0cddcb385ea071e0 (patch) | |
tree | 01efe2f65776b3d7c137a812266d478079fac279 /src/view | |
parent | 2b6e3b653dd3de53991e180ef390b6a2abaeaf1d (diff) |
Control Panel push missed these changes
Diffstat (limited to 'src/view')
-rw-r--r-- | src/view/frame/eventarea.py | 66 | ||||
-rw-r--r-- | src/view/home/activitiesring.py | 68 |
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: |