diff options
author | Pootle daemon <pootle@pootle.sugarlabs.org> | 2012-09-27 04:33:17 (GMT) |
---|---|---|
committer | Pootle daemon <pootle@pootle.sugarlabs.org> | 2012-09-27 04:33:17 (GMT) |
commit | 2fc8c41db751148fcdf5cc1398480106964e344f (patch) | |
tree | 29bd82fe70cd37e72a2ec8c23703747290eb1827 | |
parent | 7f08ea20274779f1c471e7d215fcc1ad425f8160 (diff) | |
parent | a5a79902885f3bea1bb6c99e6ccfbceb6d1b4fb6 (diff) |
Merge branch 'master' of git.sugarlabs.org:sugar/mainline
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | extensions/deviceicon/network.py | 1 | ||||
-rw-r--r-- | extensions/deviceicon/speaker.py | 1 | ||||
-rw-r--r-- | extensions/deviceicon/volume.py | 13 | ||||
-rw-r--r-- | po/POTFILES.in | 1 | ||||
-rw-r--r-- | src/jarabe/desktop/activitieslist.py | 4 | ||||
-rw-r--r-- | src/jarabe/desktop/favoritesview.py | 4 | ||||
-rw-r--r-- | src/jarabe/desktop/groupbox.py | 6 | ||||
-rw-r--r-- | src/jarabe/desktop/homebox.py | 15 | ||||
-rw-r--r-- | src/jarabe/desktop/homewindow.py | 23 | ||||
-rw-r--r-- | src/jarabe/desktop/meshbox.py | 5 | ||||
-rw-r--r-- | src/jarabe/desktop/viewcontainer.py | 1 | ||||
-rw-r--r-- | src/jarabe/desktop/viewtoolbar.py | 6 | ||||
-rw-r--r-- | src/jarabe/journal/volumestoolbar.py | 7 | ||||
-rw-r--r-- | src/jarabe/view/palettes.py | 14 |
15 files changed, 80 insertions, 25 deletions
diff --git a/configure.ac b/configure.ac index 1b68332..eb30c31 100644 --- a/configure.ac +++ b/configure.ac @@ -1,11 +1,11 @@ -AC_INIT([Sugar],[0.97.4],[],[sugar]) +AC_INIT([Sugar],[0.97.5],[],[sugar]) AC_PREREQ([2.59]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([configure.ac]) -SUCROSE_VERSION="0.97.3" +SUCROSE_VERSION="0.97.4" AC_SUBST(SUCROSE_VERSION) AM_INIT_AUTOMAKE([1.9 foreign dist-bzip2 no-dist-gzip]) diff --git a/extensions/deviceicon/network.py b/extensions/deviceicon/network.py index bc929ee..79bc764 100644 --- a/extensions/deviceicon/network.py +++ b/extensions/deviceicon/network.py @@ -38,7 +38,6 @@ from sugar3.graphics.palettemenuitem import PaletteMenuItem from sugar3.graphics.palettemenuitem import PaletteMenuItemSeparator from sugar3.graphics.toolbutton import ToolButton from sugar3.graphics.tray import TrayIcon -from sugar3.graphics.menuitem import MenuItem from sugar3.graphics.icon import Icon from sugar3.graphics import xocolor from sugar3 import profile diff --git a/extensions/deviceicon/speaker.py b/extensions/deviceicon/speaker.py index 4a09e7b..5dab329 100644 --- a/extensions/deviceicon/speaker.py +++ b/extensions/deviceicon/speaker.py @@ -23,7 +23,6 @@ from gi.repository import Gtk from sugar3.graphics import style from sugar3.graphics.icon import get_icon_state, Icon -from sugar3.graphics.menuitem import MenuItem from sugar3.graphics.tray import TrayIcon from sugar3.graphics.palette import Palette from sugar3.graphics.palettemenuitem import PaletteMenuItem diff --git a/extensions/deviceicon/volume.py b/extensions/deviceicon/volume.py index ec7b2e2..f1f223c 100644 --- a/extensions/deviceicon/volume.py +++ b/extensions/deviceicon/volume.py @@ -34,6 +34,7 @@ from jarabe.frame.frameinvoker import FrameWidgetInvoker _icons = {} +volume_monitor = None class DeviceView(TrayIcon): @@ -100,6 +101,7 @@ def setup(tray): def _setup_volumes(tray): + global volume_monitor volume_monitor = Gio.VolumeMonitor.get() for volume in volume_monitor.get_volumes(): @@ -121,17 +123,20 @@ def _mount(volume, tray): # Follow Nautilus behaviour here # since it has the same issue with removable device # and it would be good to not invent our own workflow - if hasattr(volume, 'should_automount') and not volume.should_automount(): + if not volume.should_automount(): return #TODO: should be done by some other process, like gvfs-hal-volume-monitor - #TODO: use volume.should_automount() when it gets into pygtk if volume.get_mount() is None and volume.can_mount(): #TODO: pass None as mount_operation, or better, SugarMountOperation - volume.mount(Gtk.MountOperation(tray.get_toplevel()), _mount_cb) + flags = 0 + mount_operation = Gtk.MountOperation(parent=tray.get_toplevel()) + cancellable = None + user_data = None + volume.mount(flags, mount_operation, cancellable, _mount_cb, user_data) -def _mount_cb(volume, result): +def _mount_cb(volume, result, user_data): logging.debug('_mount_cb %r %r', volume, result) volume.mount_finish(result) diff --git a/po/POTFILES.in b/po/POTFILES.in index aec4bf5..642e8f9 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -41,6 +41,7 @@ src/jarabe/desktop/activitieslist.py src/jarabe/desktop/favoriteslayout.py src/jarabe/desktop/favoritesview.py src/jarabe/desktop/homebox.py +src/jarabe/desktop/homewindow.py src/jarabe/desktop/keydialog.py src/jarabe/desktop/meshbox.py src/jarabe/desktop/networkviews.py diff --git a/src/jarabe/desktop/activitieslist.py b/src/jarabe/desktop/activitieslist.py index b830526..1b5ddd7 100644 --- a/src/jarabe/desktop/activitieslist.py +++ b/src/jarabe/desktop/activitieslist.py @@ -375,6 +375,10 @@ class ActivitiesList(Gtk.VBox): self._alert = None self._clear_message_box = None + def grab_focus(self): + # overwrite grab focus in order to grab focus from the parent + self._tree_view.grab_focus() + def set_filter(self, query): matches = self._tree_view.set_filter(query) if matches == 0: diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py index b73d016..26a89e6 100644 --- a/src/jarabe/desktop/favoritesview.py +++ b/src/jarabe/desktop/favoritesview.py @@ -85,6 +85,10 @@ class FavoritesBox(Gtk.VBox): def set_resume_mode(self, resume_mode): self._view.set_resume_mode(resume_mode) + def grab_focus(self): + # overwrite grab focus in order to grab focus from the parent + self._view.grab_focus() + def add_alert(self, alert): if self._alert is not None: self.remove_alert() diff --git a/src/jarabe/desktop/groupbox.py b/src/jarabe/desktop/groupbox.py index 3d7c0f3..f916f62 100644 --- a/src/jarabe/desktop/groupbox.py +++ b/src/jarabe/desktop/groupbox.py @@ -41,7 +41,8 @@ class GroupBox(ViewContainer): self._query = '' toolbar.connect('query-changed', self._toolbar_query_changed_cb) - + toolbar.search_entry.connect('icon-press', + self.__clear_icon_pressed_cb) self._friends = {} friends_model = friends.get_model() @@ -72,3 +73,6 @@ class GroupBox(ViewContainer): for icon in self.get_children(): if hasattr(icon, 'set_filter'): icon.set_filter(self._query) + + def __clear_icon_pressed_cb(self, entry, icon_pos, event): + self.grab_focus() diff --git a/src/jarabe/desktop/homebox.py b/src/jarabe/desktop/homebox.py index 8eda213..ed5144b 100644 --- a/src/jarabe/desktop/homebox.py +++ b/src/jarabe/desktop/homebox.py @@ -45,6 +45,8 @@ class HomeBox(Gtk.VBox): toolbar.connect('query-changed', self.__toolbar_query_changed_cb) toolbar.connect('view-changed', self.__toolbar_view_changed_cb) + toolbar.search_entry.connect('icon-press', + self.__clear_icon_pressed_cb) self._list_view.connect('clear-clicked', self.__activitylist_clear_clicked_cb, toolbar) @@ -108,6 +110,17 @@ class HomeBox(Gtk.VBox): def __activitylist_clear_clicked_cb(self, widget, toolbar): toolbar.clear_query() + def __clear_icon_pressed_cb(self, entry, icon_pos, event): + self.grab_focus() + + def grab_focus(self): + # overwrite grab focus to be able to grab focus on the + # views which are packed inside a box + if self._list_view in self.get_children(): + self._list_view.grab_focus() + else: + self._favorites_box.grab_focus() + def _set_view(self, view): if view == _FAVORITES_VIEW: if self._list_view in self.get_children(): @@ -116,6 +129,7 @@ class HomeBox(Gtk.VBox): if self._favorites_box not in self.get_children(): self.add(self._favorites_box) self._favorites_box.show() + self._favorites_box.grab_focus() elif view == _LIST_VIEW: if self._favorites_box in self.get_children(): self.remove(self._favorites_box) @@ -123,6 +137,7 @@ class HomeBox(Gtk.VBox): if self._list_view not in self.get_children(): self.add(self._list_view) self._list_view.show() + self._list_view.grab_focus() else: raise ValueError('Invalid view: %r' % view) diff --git a/src/jarabe/desktop/homewindow.py b/src/jarabe/desktop/homewindow.py index 27c81e8..a412b99 100644 --- a/src/jarabe/desktop/homewindow.py +++ b/src/jarabe/desktop/homewindow.py @@ -14,6 +14,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +from gettext import gettext as _ import logging from gi.repository import GObject @@ -64,12 +65,14 @@ class HomeWindow(Gtk.Window): self.modify_bg(Gtk.StateType.NORMAL, style.COLOR_WHITE.get_gdk_color()) - self.add_events(Gdk.EventMask.VISIBILITY_NOTIFY_MASK) + self.add_events(Gdk.EventMask.VISIBILITY_NOTIFY_MASK| + Gdk.EventMask.BUTTON_PRESS_MASK) self.connect('visibility-notify-event', self._visibility_notify_event_cb) self.connect('map-event', self.__map_event_cb) self.connect('key-press-event', self.__key_press_event_cb) self.connect('key-release-event', self.__key_release_event_cb) + self.connect('button-press-event', self.__button_pressed_cb) self._box = Gtk.VBox() @@ -80,6 +83,7 @@ class HomeWindow(Gtk.Window): self._home_box = HomeBox(self._toolbar) self._box.pack_start(self._home_box, True, True, 0) self._home_box.show() + self._home_box.grab_focus() self._toolbar.show_view_buttons() self._group_box = GroupBox(self._toolbar) @@ -131,6 +135,9 @@ class HomeWindow(Gtk.Window): self._activate_view(shell.get_model().zoom_level) def __key_press_event_cb(self, window, event): + if not self._toolbar.search_entry.has_focus(): + self._toolbar.search_entry.grab_focus() + if event.keyval in [Gdk.KEY_Alt_L, Gdk.KEY_Alt_R]: self._home_box.set_resume_mode(False) return False @@ -140,6 +147,11 @@ class HomeWindow(Gtk.Window): self._home_box.set_resume_mode(True) return False + def __button_pressed_cb(self, widget, event): + current_box = self._box.get_children()[1] + current_box.grab_focus() + return False + def __map_event_cb(self, window, event): # have to make the desktop window active # since metacity doesn't make it on startup @@ -197,19 +209,22 @@ class HomeWindow(Gtk.Window): self._box.pack_start(self._home_box, True, True, 0) self._home_box.show() self._toolbar.clear_query() - self._toolbar.search_entry.grab_focus() + self._toolbar.set_placeholder_text_for_view(_('Home')) + self._home_box.grab_focus() self._toolbar.show_view_buttons() elif level == ShellModel.ZOOM_GROUP: self._box.pack_start(self._group_box, True, True, 0) self._group_box.show() self._toolbar.clear_query() - self._toolbar.search_entry.grab_focus() + self._toolbar.set_placeholder_text_for_view(_('Group')) + self._group_box.grab_focus() self._toolbar.hide_view_buttons() elif level == ShellModel.ZOOM_MESH: self._box.pack_start(self._mesh_box, True, True, 0) self._mesh_box.show() self._toolbar.clear_query() - self._toolbar.search_entry.grab_focus() + self._toolbar.set_placeholder_text_for_view(_('Neighborhood')) + self._mesh_box.grab_focus() self._toolbar.hide_view_buttons() def get_home_box(self): diff --git a/src/jarabe/desktop/meshbox.py b/src/jarabe/desktop/meshbox.py index 049263e..e1c8381 100644 --- a/src/jarabe/desktop/meshbox.py +++ b/src/jarabe/desktop/meshbox.py @@ -362,6 +362,8 @@ class MeshBox(ViewContainer): self._query = '' toolbar.connect('query-changed', self._toolbar_query_changed_cb) + toolbar.search_entry.connect('icon-press', + self.__clear_icon_pressed_cb) for buddy_model in self._model.get_buddies(): self._add_buddy(buddy_model) @@ -590,3 +592,6 @@ class MeshBox(ViewContainer): for icon in self.get_children(): if hasattr(icon, 'set_filter'): icon.set_filter(self._query) + + def __clear_icon_pressed_cb(self, entry, icon_pos, event): + self.grab_focus() diff --git a/src/jarabe/desktop/viewcontainer.py b/src/jarabe/desktop/viewcontainer.py index 1675293..76f5a69 100644 --- a/src/jarabe/desktop/viewcontainer.py +++ b/src/jarabe/desktop/viewcontainer.py @@ -26,6 +26,7 @@ class ViewContainer(Gtk.Container): def __init__(self, layout, owner_icon, activity_icon=None, **kwargs): Gtk.Container.__init__(self, **kwargs) self.set_has_window(False) + self.set_can_focus(True) self._activity_icon = None self._owner_icon = None diff --git a/src/jarabe/desktop/viewtoolbar.py b/src/jarabe/desktop/viewtoolbar.py index 09b4512..5cb0186 100644 --- a/src/jarabe/desktop/viewtoolbar.py +++ b/src/jarabe/desktop/viewtoolbar.py @@ -59,6 +59,7 @@ class ViewToolbar(Gtk.Toolbar): self.search_entry = iconentry.IconEntry() self.search_entry.set_icon_from_name(iconentry.ICON_ENTRY_PRIMARY, 'system-search') + self.set_placeholder_text_for_view(_('Home')) self.search_entry.add_clear_button() self.search_entry.set_width_chars(25) self.search_entry.connect('activate', self._entry_activated_cb) @@ -95,6 +96,10 @@ class ViewToolbar(Gtk.Toolbar): def clear_query(self): self.search_entry.props.text = '' + def set_placeholder_text_for_view(self, view_name): + text = _('Search in %s') % view_name + self.search_entry.set_placeholder_text(text) + def _add_separator(self, expand=False): separator = Gtk.SeparatorToolItem() separator.props.draw = False @@ -132,7 +137,6 @@ class ViewToolbar(Gtk.Toolbar): def __view_button_toggled_cb(self, button, view): if button.props.active: - self.search_entry.grab_focus() self.emit('view-changed', view) diff --git a/src/jarabe/journal/volumestoolbar.py b/src/jarabe/journal/volumestoolbar.py index 8f4692d..1fc368e 100644 --- a/src/jarabe/journal/volumestoolbar.py +++ b/src/jarabe/journal/volumestoolbar.py @@ -251,13 +251,6 @@ class VolumesToolbar(Gtk.Toolbar): if button.props.active: self.emit('volume-changed', button.mount_point) - def _unmount_activated_cb(self, menu_item, mount): - logging.debug('VolumesToolbar._unmount_activated_cb: %r', mount) - mount.unmount(self.__unmount_cb) - - def __unmount_cb(self, source, result): - logging.debug('__unmount_cb %r %r', source, result) - def _get_button_for_mount(self, mount): mount_point = mount.get_root().get_path() for button in self.get_children(): diff --git a/src/jarabe/view/palettes.py b/src/jarabe/view/palettes.py index 35475d0..10844ea 100644 --- a/src/jarabe/view/palettes.py +++ b/src/jarabe/view/palettes.py @@ -246,11 +246,17 @@ class VolumePalette(Palette): self.connect('popup', self.__popup_cb) def __unmount_activate_cb(self, menu_item): - self._mount.unmount(self.__unmount_cb) - - def __unmount_cb(self, mount, result): + flags = 0 + mount_operation = Gtk.MountOperation( \ + parent=self.content_box.get_toplevel()) + cancellable = None + user_data = None + self._mount.unmount_with_operation(flags, mount_operation, cancellable, + self.__unmount_cb, user_data) + + def __unmount_cb(self, mount, result, user_data): logging.debug('__unmount_cb %r %r', mount, result) - mount.unmount_finish(result) + mount.unmount_with_operation_finish(result) def __popup_cb(self, palette): mount_point = self._mount.get_root().get_path() |