Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPootle 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)
commit2fc8c41db751148fcdf5cc1398480106964e344f (patch)
tree29bd82fe70cd37e72a2ec8c23703747290eb1827
parent7f08ea20274779f1c471e7d215fcc1ad425f8160 (diff)
parenta5a79902885f3bea1bb6c99e6ccfbceb6d1b4fb6 (diff)
Merge branch 'master' of git.sugarlabs.org:sugar/mainline
-rw-r--r--configure.ac4
-rw-r--r--extensions/deviceicon/network.py1
-rw-r--r--extensions/deviceicon/speaker.py1
-rw-r--r--extensions/deviceicon/volume.py13
-rw-r--r--po/POTFILES.in1
-rw-r--r--src/jarabe/desktop/activitieslist.py4
-rw-r--r--src/jarabe/desktop/favoritesview.py4
-rw-r--r--src/jarabe/desktop/groupbox.py6
-rw-r--r--src/jarabe/desktop/homebox.py15
-rw-r--r--src/jarabe/desktop/homewindow.py23
-rw-r--r--src/jarabe/desktop/meshbox.py5
-rw-r--r--src/jarabe/desktop/viewcontainer.py1
-rw-r--r--src/jarabe/desktop/viewtoolbar.py6
-rw-r--r--src/jarabe/journal/volumestoolbar.py7
-rw-r--r--src/jarabe/view/palettes.py14
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()