From 9fa72e4cba586a457266ac071176d5eaa1ee814b Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 7 Mar 2007 13:56:22 -0500 Subject: [PATCH 1/9] Remove some erroneous error handler code --- services/presence2/server_plugin.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/services/presence2/server_plugin.py b/services/presence2/server_plugin.py index a195b4ed..bf5d8f3e 100644 --- a/services/presence2/server_plugin.py +++ b/services/presence2/server_plugin.py @@ -358,9 +358,6 @@ class ServerPlugin(gobject.GObject): except dbus.DBusException, e: if str(e).startswith("org.freedesktop.DBus.Error.NoReply"): raise InvalidBuddyError("couldn't get properties") - except KeyError, e: - if str(e) == "'%s'" % CONN_INTERFACE_BUDDY_INFO: - raise InvalidBuddyError("server doesn't support BuddyInfo interface") if not props.has_key('color'): raise InvalidBuddyError("no color") From 11320e8883f9043edabe78ffad258397468e3a38 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 7 Mar 2007 16:23:33 -0500 Subject: [PATCH 2/9] Ensure entry can accept input --- shell/hardware/wepkeydialog.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shell/hardware/wepkeydialog.py b/shell/hardware/wepkeydialog.py index 13c7908b..e4d11745 100644 --- a/shell/hardware/wepkeydialog.py +++ b/shell/hardware/wepkeydialog.py @@ -23,7 +23,7 @@ IW_AUTH_ALG_SHARED_KEY = 0x00000002 class WEPKeyDialog(gtk.Dialog): def __init__(self, net, async_cb, async_err_cb): - gtk.Dialog.__init__(self) + gtk.Dialog.__init__(self, flags=gtk.DIALOG_MODAL) self.set_title("Wireless Key Required") self._net = net @@ -48,6 +48,8 @@ class WEPKeyDialog(gtk.Dialog): self.set_default_response(gtk.RESPONSE_OK) self._update_response_sensitivity() + self._entry.grab_focus() + def get_key(self): return self._entry.get_text() From a2bd1194f35912e70d909a65685c1bf723ec1121 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 7 Mar 2007 16:23:52 -0500 Subject: [PATCH 3/9] Work around bus-python bug with named exceptions --- shell/hardware/nminfo.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/shell/hardware/nminfo.py b/shell/hardware/nminfo.py index f512a8b8..2b59f91b 100644 --- a/shell/hardware/nminfo.py +++ b/shell/hardware/nminfo.py @@ -434,9 +434,8 @@ class NMInfo(object): is closed. """ if canceled: - e = CanceledKeyRequestError("Request was canceled.") # key dialog dialog was canceled; send the error back to NM - async_err_cb(e) + async_err_cb(CanceledKeyRequestError()) return if not key or not auth_alg: From 44f00a9cd84bed34fb10abd08f16a8acf3a29924 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 7 Mar 2007 16:24:21 -0500 Subject: [PATCH 4/9] Fix traceback due to bad merge --- shell/hardware/nmclient.py | 1 - 1 file changed, 1 deletion(-) diff --git a/shell/hardware/nmclient.py b/shell/hardware/nmclient.py index 8f542150..54f67624 100644 --- a/shell/hardware/nmclient.py +++ b/shell/hardware/nmclient.py @@ -300,7 +300,6 @@ class Device(gobject.GObject): # Make sure the old one doesn't get a stuck state if self._active_network: - self._active_network.disconnect(self._ssid_sid) self._active_network.set_state(NETWORK_STATE_NOTCONNECTED) self._active_network = network From 08e65464894ff2d8564e770026f0a02b18ee5f9e Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Wed, 7 Mar 2007 22:23:11 +0100 Subject: [PATCH 5/9] Fix for keyboard focus bug when f. --- lib/src/sugar-key-grabber.c | 27 ++++++++++++++++++++++++--- lib/src/sugar-key-grabber.h | 2 ++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/lib/src/sugar-key-grabber.c b/lib/src/sugar-key-grabber.c index ee428cb6..b086ba07 100644 --- a/lib/src/sugar-key-grabber.c +++ b/lib/src/sugar-key-grabber.c @@ -103,11 +103,27 @@ get_key_from_event(SugarKeyGrabber *grabber, XEvent *xev) keycode = xev->xkey.keycode; state = xev->xkey.state; + if(grabber->last_key_pressed == keycode) { + grabber->last_key_pressed = 0; + } + if(grabber->last_key_pressed_modifier == state) { + grabber->last_key_pressed_modifier = 0; + } + for (l = grabber->keys; l != NULL; l = l->next) { Key *keyinfo = (Key *)l->data; - if (keyinfo->keycode == keycode && - (state & USED_MODS) == keyinfo->state) { - return g_strdup(keyinfo->key); + if (keyinfo->keycode == keycode) { + if (xev->type == KeyPress && + (state & USED_MODS) == keyinfo->state) { + + return g_strdup(keyinfo->key); + } else if (xev->type == KeyRelease) { + if(!grabber->last_key_pressed && + !grabber->last_key_pressed_modifier) { + + return g_strdup(keyinfo->key); + } + } } } @@ -139,6 +155,9 @@ filter_events(GdkXEvent *xevent, GdkEvent *event, gpointer data) key = get_key_from_event(grabber, xevent); if (key) { + grabber->last_key_pressed = xev->xkey.keycode; + grabber->last_key_pressed_modifier = xev->xkey.state; + g_signal_emit (grabber, signals[KEY_PRESSED], 0, key); g_free(key); @@ -161,6 +180,8 @@ sugar_key_grabber_init(SugarKeyGrabber *grabber) screen = gdk_screen_get_default(); grabber->root = gdk_screen_get_root_window(screen); grabber->keys = NULL; + grabber->last_key_pressed = 0; + grabber->last_key_pressed_modifier = 0; gdk_window_add_filter(grabber->root, filter_events, grabber); } diff --git a/lib/src/sugar-key-grabber.h b/lib/src/sugar-key-grabber.h index 720a9310..e45c329b 100644 --- a/lib/src/sugar-key-grabber.h +++ b/lib/src/sugar-key-grabber.h @@ -39,6 +39,8 @@ struct _SugarKeyGrabber { GdkWindow *root; GList *keys; + guint last_key_pressed; + guint last_key_pressed_modifier; }; struct _SugarKeyGrabberClass { From 655e4018f2430239500b6c743a4cc3c7bb012bc4 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Wed, 7 Mar 2007 22:30:52 +0100 Subject: [PATCH 6/9] Do not show the battery device since it's not hooked up --- shell/model/devices/devicesmodel.py | 2 +- tools/build-snapshot.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/shell/model/devices/devicesmodel.py b/shell/model/devices/devicesmodel.py index df5e6fa0..735b063c 100644 --- a/shell/model/devices/devicesmodel.py +++ b/shell/model/devices/devicesmodel.py @@ -21,7 +21,7 @@ class DevicesModel(gobject.GObject): gobject.GObject.__init__(self) self._devices = {} - self.add_device(battery.Device()) + #self.add_device(battery.Device()) self._observe_network_manager() diff --git a/tools/build-snapshot.sh b/tools/build-snapshot.sh index 717caeec..f7dcabf6 100755 --- a/tools/build-snapshot.sh +++ b/tools/build-snapshot.sh @@ -1,6 +1,6 @@ VERSION=0.63 DATE=`date +%Y%m%d` -RELEASE=2.44 +RELEASE=2.46 TARBALL=sugar-$VERSION-$RELEASE.${DATE}git.tar.bz2 rm sugar-$VERSION.tar.bz2 From 8ddaa516b32f41717cc022c7f6d3f3101a6fc69b Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Thu, 8 Mar 2007 01:33:55 +0100 Subject: [PATCH 7/9] Add a default picture, so that we don't force people to find one. Implementation is ugly but the cleanest I could come with :( --- shell/data/Makefile.am | 5 ++++- shell/data/default-picture.png | Bin 0 -> 10442 bytes shell/intro/intro.py | 12 ++++++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 shell/data/default-picture.png diff --git a/shell/data/Makefile.am b/shell/data/Makefile.am index 1f0f9c05..2709c921 100644 --- a/shell/data/Makefile.am +++ b/shell/data/Makefile.am @@ -1,4 +1,7 @@ confdir = $(pkgdatadir) conf_DATA = kbdconfig -EXTRA_DIST = $(conf_DATA) +imagedir = $(pkgdatadir) +image_DATA = default-picture.png + +EXTRA_DIST = $(conf_DATA) $(image_DATA) diff --git a/shell/data/default-picture.png b/shell/data/default-picture.png new file mode 100644 index 0000000000000000000000000000000000000000..e26b9b0114e992c22509da03a4e9d0e0847928e4 GIT binary patch literal 10442 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 G%>M(oi&U%t literal 0 HcmV?d00001 diff --git a/shell/intro/intro.py b/shell/intro/intro.py index 83c88da8..55aa1354 100644 --- a/shell/intro/intro.py +++ b/shell/intro/intro.py @@ -63,6 +63,7 @@ class IntroFallbackVideo(gtk.EventBox): self._image = gtk.Image() self._image.set_from_stock(gtk.STOCK_OPEN, -1) self.add(self._image) + self._image.show() self.connect('button-press-event', self._button_press_event_cb) def play(self): @@ -80,12 +81,15 @@ class IntroFallbackVideo(gtk.EventBox): resp = chooser.run() if resp == gtk.RESPONSE_ACCEPT: fname = chooser.get_filename() - pixbuf = gtk.gdk.pixbuf_new_from_file(fname) - self.emit('pixbuf', pixbuf) + self.load_image(fname) chooser.hide() chooser.destroy() return True + def load_image(self, path): + pixbuf = gtk.gdk.pixbuf_new_from_file(path) + self.emit('pixbuf', pixbuf) + class VideoBox(hippo.CanvasBox, hippo.CanvasItem): __gtype_name__ = "SugarVideoBox" @@ -138,6 +142,10 @@ class VideoBox(hippo.CanvasBox, hippo.CanvasItem): self._img_widget = hippo.CanvasWidget() self._img_widget.props.widget = self._img + if not has_webcam: + path = os.path.join(env.get_data_dir(),'default-picture.png') + self._video.load_image(path) + def _clear_image_cb(self, widget, event): del self._pixbuf self._pixbuf = None From e1f0ba15f4241fe9a74eec621de957c72d2f2265 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Thu, 8 Mar 2007 11:44:00 +0100 Subject: [PATCH 8/9] Make sugar-emulator [program] actually work again --- sugar-emulator | 4 ++-- tools/build-snapshot.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sugar-emulator b/sugar-emulator index f951649a..e83c20a4 100755 --- a/sugar-emulator +++ b/sugar-emulator @@ -39,7 +39,7 @@ from sugar.emulator import Emulator import _sugar if len(sys.argv) == 1: - program = 'sugar-shell' + program = 'shell/sugar-shell' else: program = sys.argv[1] @@ -58,7 +58,7 @@ emulator = Emulator(width, height, fullscreen, dpi) emulator.start() if sourcedir: - program = os.path.join(os.path.join(sourcedir, 'shell'), program) + program = os.path.join(sourcedir, program) os.execlp('dbus-launch', 'dbus-launch', '--exit-with-session', program, sourcedir) else: os.execlp('dbus-launch', 'dbus-launch', '--exit-with-session', program) diff --git a/tools/build-snapshot.sh b/tools/build-snapshot.sh index f7dcabf6..8d46550a 100755 --- a/tools/build-snapshot.sh +++ b/tools/build-snapshot.sh @@ -1,6 +1,6 @@ VERSION=0.63 DATE=`date +%Y%m%d` -RELEASE=2.46 +RELEASE=2.47 TARBALL=sugar-$VERSION-$RELEASE.${DATE}git.tar.bz2 rm sugar-$VERSION.tar.bz2 From 66b1c48211ebf37a02921c883b25e83d97d80165 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Thu, 8 Mar 2007 11:47:39 +0100 Subject: [PATCH 9/9] Remove theme hack for tests. Marco has fixed the tests in sugar-emulator. --- tests/data/stock-close.svg | 15 --------------- tests/test-button.py | 4 ---- tests/test-entry.py | 4 ---- tests/test-label.py | 4 ---- tests/test-option-menu.py | 4 ---- 5 files changed, 31 deletions(-) delete mode 100644 tests/data/stock-close.svg diff --git a/tests/data/stock-close.svg b/tests/data/stock-close.svg deleted file mode 100644 index 0354c634..00000000 --- a/tests/data/stock-close.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - -]> - - - - - diff --git a/tests/test-button.py b/tests/test-button.py index e452811c..0f3ded26 100755 --- a/tests/test-button.py +++ b/tests/test-button.py @@ -29,10 +29,6 @@ from sugar.graphics.entry import Entry def _button_activated_cb(button): print "_button_activated_cb" -import os -theme = gtk.icon_theme_get_default() -theme.prepend_search_path(os.path.join(os.path.dirname(__file__), 'data')) - window = gtk.Window() window.connect("destroy", lambda w: gtk.main_quit()) window.show() diff --git a/tests/test-entry.py b/tests/test-entry.py index d83c07d0..80f0e234 100755 --- a/tests/test-entry.py +++ b/tests/test-entry.py @@ -30,10 +30,6 @@ def _entry_button_activated_cb(entry, action_id): print "_entry_button_activated_cb: " + str(action_id) entry.props.text = '' -import os -theme = gtk.icon_theme_get_default() -theme.prepend_search_path(os.path.join(os.path.dirname(__file__), 'data')) - window = gtk.Window() window.connect("destroy", lambda w: gtk.main_quit()) window.show() diff --git a/tests/test-label.py b/tests/test-label.py index 2a238a26..6e7b6b28 100755 --- a/tests/test-label.py +++ b/tests/test-label.py @@ -22,10 +22,6 @@ from sugar.graphics.toolbar import Toolbar from sugar.graphics.label import Label from sugar.graphics.iconbutton import IconButton -import os -theme = gtk.icon_theme_get_default() -theme.prepend_search_path(os.path.join(os.path.dirname(__file__), 'data')) - BUTTON_DELETE = 1 window = gtk.Window() diff --git a/tests/test-option-menu.py b/tests/test-option-menu.py index f320afcc..79748390 100755 --- a/tests/test-option-menu.py +++ b/tests/test-option-menu.py @@ -30,10 +30,6 @@ from sugar.graphics.iconbutton import IconButton def _option_menu_changed_cb(option_menu): print '_option_menu_activated_cb: %i' % option_menu.props.value -import os -theme = gtk.icon_theme_get_default() -theme.prepend_search_path(os.path.join(os.path.dirname(__file__), 'data')) - window = gtk.Window() window.connect("destroy", lambda w: gtk.main_quit()) window.show()