From d1a9762cb8fc353df0031d4cd90c79eb8a987f57 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Wed, 8 Nov 2006 16:42:50 +0100 Subject: [PATCH 1/4] Bind keys to dcon manager actions, see README --- README | 5 +++++ shell/view/Shell.py | 17 +++++++++++++++- shell/view/dconmanager.py | 43 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 shell/view/dconmanager.py diff --git a/README b/README index df40e46e..6b4c2b17 100644 --- a/README +++ b/README @@ -24,5 +24,10 @@ F3 Friends zoom level F4 Mesh zoom level F5 Show the frame F6 Open a terminal activity +F7 Toggle chat visibility +F8 Color mode (DCON) +F9 Black and white mode (DCON) +F10 Decrease brightness (DCON) +F11 Increase brightness (DCON) F12 Open the log viewer Ctrl+S Activate sketch mode in chat diff --git a/shell/view/Shell.py b/shell/view/Shell.py index 401c935d..7daade72 100644 --- a/shell/view/Shell.py +++ b/shell/view/Shell.py @@ -26,6 +26,7 @@ from view.ActivityHost import ActivityHost from sugar.activity import ActivityFactory from sugar.activity import Activity from view.frame.Frame import Frame +from view.dconmanager import DCONManager from _sugar import KeyGrabber import sugar @@ -49,6 +50,8 @@ class Shell(gobject.GObject): style.load_stylesheet(view.stylesheet) + self._dcon_manager = DCONManager() + self._key_grabber = KeyGrabber() self._key_grabber.connect('key-pressed', self.__global_key_pressed_cb) @@ -60,7 +63,11 @@ class Shell(gobject.GObject): self._key_grabber.grab('F4') self._key_grabber.grab('F5') self._key_grabber.grab('F6') + self._key_grabber.grab('F7') + self._key_grabber.grab('F8') self._key_grabber.grab('F9') + self._key_grabber.grab('F10') + self._key_grabber.grab('F11') self._home_window = HomeWindow(self) self._home_window.show() @@ -87,8 +94,16 @@ class Shell(gobject.GObject): self._frame.notify_key_press() elif key == 'F6': self.start_activity('org.sugar.Terminal') - elif key == 'F9': + elif key == 'F7': self.toggle_chat_visibility() + elif key == 'F8': + self._dcon_manager.set_mode(DCONManager.COLOR_MODE) + elif key == 'F9': + self._dcon_manager.set_mode(DCONManager.BLACK_AND_WHITE_MODE) + elif key == 'F10': + self._dcon_manager.decrease_brightness() + elif key == 'F11': + self._dcon_manager.increase_brightness() def __global_key_released_cb(self, grabber, key): if key == 'F5': diff --git a/shell/view/dconmanager.py b/shell/view/dconmanager.py new file mode 100644 index 00000000..2cf40b51 --- /dev/null +++ b/shell/view/dconmanager.py @@ -0,0 +1,43 @@ +# Copyright (C) 2006, Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +import dbus + +DCON_MANAGER_INTERFACE = 'org.laptop.DCONManager' +DCON_MANAGER_SERVICE = 'org.laptop.DCONManager' +DCON_MANAGER_OBJECT_PATH = '/org/laptop/DCONManager' + +class DCONManager(object): + COLOR_MODE = 0 + BLACK_AND_WHITE_MODE = 1 + + def __init__(self): + bus = dbus.SystemBus() + proxy = bus.get_object(DCON_MANAGER_SERVICE, DCON_MANAGER_OBJECT_PATH) + self._service = dbus.Interface(proxy, DCON_MANAGER_INTERFACE) + + def set_mode(self, mode): + self._service.set_mode(mode) + + def increase_brightness(self): + level = self._service.get_backlight_level() + if level >= 0: + self._service.set_backlight_level(level + 1) + + def decrease_brightness(self): + level = self._service.get_backlight_level() + if level >= 0: + self._service.set_backlight_level(level - 1) From c8cd4bcc4eeb427ffefa9de98d50a27a2f76c72f Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Thu, 9 Nov 2006 00:08:33 +0100 Subject: [PATCH 2/4] Add a shutdown key combination. Release 0.51 --- shell/sugar-shutdown | 4 ++++ 1 file changed, 4 insertions(+) create mode 100755 shell/sugar-shutdown diff --git a/shell/sugar-shutdown b/shell/sugar-shutdown new file mode 100755 index 00000000..e511b3d8 --- /dev/null +++ b/shell/sugar-shutdown @@ -0,0 +1,4 @@ +#!/bin/sh +dbus-send --system --print-reply --dest=org.freedesktop.Hal \ +/org/freedesktop/Hal/devices/computer \ +org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown From 5c1dbe499fa83f32fb61cdf2acb9ca5424b42acc Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Thu, 9 Nov 2006 00:31:28 +0100 Subject: [PATCH 3/4] Release 0.51 --- configure.ac | 2 +- shell/Makefile.am | 3 ++- shell/data/kbdconfig | 1 + shell/view/Makefile.am | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 77e70ca1..6c904de7 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([Sugar],[0.49],[],[sugar]) +AC_INIT([Sugar],[0.51],[],[sugar]) AC_PREREQ([2.59]) diff --git a/shell/Makefile.am b/shell/Makefile.am index a5c85337..885ca5eb 100644 --- a/shell/Makefile.am +++ b/shell/Makefile.am @@ -4,7 +4,8 @@ bin_SCRIPTS = \ sugar-activity \ sugar-activity-factory \ sugar-log-viewer \ - sugar-shell + sugar-shell \ + sugar-shutdown sugardir = $(pkgdatadir)/shell sugar_PYTHON = \ diff --git a/shell/data/kbdconfig b/shell/data/kbdconfig index 967361a6..30e49538 100644 --- a/shell/data/kbdconfig +++ b/shell/data/kbdconfig @@ -8,3 +8,4 @@ F12=!sugar-log-viewer q=!sugar-emulator-shutdown +Escape=!sugar-shutdown diff --git a/shell/view/Makefile.am b/shell/view/Makefile.am index 0e3951aa..bf77593b 100644 --- a/shell/view/Makefile.am +++ b/shell/view/Makefile.am @@ -9,4 +9,5 @@ sugar_PYTHON = \ BuddyMenu.py \ OverlayWindow.py \ Shell.py \ + dconmanager.py \ stylesheet.py From 6260647edac30a4f24ff4e6d922ffc0808dfa83e Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Thu, 9 Nov 2006 17:21:46 +0100 Subject: [PATCH 4/4] Fix compilation issue, using function name already defined in gtk --- lib/src/sugar-address-entry.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/src/sugar-address-entry.c b/lib/src/sugar-address-entry.c index 67a9f148..68fab0a2 100644 --- a/lib/src/sugar-address-entry.c +++ b/lib/src/sugar-address-entry.c @@ -378,9 +378,9 @@ gtk_entry_draw_text (GtkEntry *entry) } static void -_gtk_entry_get_borders (GtkEntry *entry, - gint *xborder, - gint *yborder) +sugar_address_entry_get_borders (GtkEntry *entry, + gint *xborder, + gint *yborder) { GtkWidget *widget = GTK_WIDGET (entry); gint focus_width; @@ -422,7 +422,7 @@ get_text_area_size (GtkEntry *entry, gtk_widget_get_child_requisition (widget, &requisition); - _gtk_entry_get_borders (entry, &xborder, &yborder); + sugar_address_entry_get_borders (entry, &xborder, &yborder); if (x) *x = xborder;