From f4e1500a00804812481a5a0b2aa4be13eba8f3dc Mon Sep 17 00:00:00 2001 From: Simon Schampijer Date: Thu, 20 Aug 2009 13:28:00 +0000 Subject: Merge branch 'master' of gitorious@git.sugarlabs.org:sugar/mainline --- (limited to 'src') diff --git a/src/jarabe/desktop/activitieslist.py b/src/jarabe/desktop/activitieslist.py index 1284af4..8b35560 100644 --- a/src/jarabe/desktop/activitieslist.py +++ b/src/jarabe/desktop/activitieslist.py @@ -15,6 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +import os import logging from gettext import gettext as _ @@ -22,13 +23,13 @@ import gobject import pango import gconf import gtk -import hippo from sugar import util from sugar.graphics import style -from sugar.graphics.icon import CanvasIcon, CellRendererIcon -from sugar.graphics.palette import Palette +from sugar.graphics.icon import Icon, CellRendererIcon from sugar.graphics.xocolor import XoColor +from sugar.graphics.menuitem import MenuItem +from sugar.graphics.alert import Alert from sugar.activity import activityfactory from sugar.activity.activityhandle import ActivityHandle @@ -199,7 +200,6 @@ class ListModel(gtk.TreeModelSort): def __activity_removed_cb(self, activity_registry, activity_info): bundle_id = activity_info.get_bundle_id() version = activity_info.get_activity_version() - favorite = activity_registry.is_bundle_favorite(bundle_id, version) for row in self._model: if row[ListModel.COLUMN_BUNDLE_ID] == bundle_id and \ row[ListModel.COLUMN_VERSION] == version: @@ -286,7 +286,7 @@ class CellRendererActivityIcon(CellRendererIcon): bundle_id = row[ListModel.COLUMN_BUNDLE_ID] registry = bundleregistry.get_registry() - palette = ActivityPalette(registry.get_bundle(bundle_id)) + palette = ActivityListPalette(registry.get_bundle(bundle_id)) palette.connect('erase-activated', self.__erase_activated_cb) return palette @@ -296,11 +296,6 @@ class CellRendererActivityIcon(CellRendererIcon): class ActivitiesList(gtk.VBox): __gtype_name__ = 'SugarActivitiesList' - __gsignals__ = { - 'erase-activated' : (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, ([str])) - } - def __init__(self): logging.debug('STARTUP: Loading the activities list') @@ -353,5 +348,106 @@ class ActivitiesList(gtk.VBox): self._alert = None def __erase_activated_cb(self, tree_view, bundle_id): - self.emit('erase-activated', bundle_id) + registry = bundleregistry.get_registry() + activity_info = registry.get_bundle(bundle_id) + + alert = Alert() + alert.props.title = _('Confirm erase') + alert.props.msg = \ + _('Confirm erase: Do you want to permanently erase %s?') \ + % activity_info.get_name() + + cancel_icon = Icon(icon_name='dialog-cancel') + alert.add_button(gtk.RESPONSE_CANCEL, _('Keep'), cancel_icon) + + erase_icon = Icon(icon_name='dialog-ok') + alert.add_button(gtk.RESPONSE_OK, _('Erase'), erase_icon) + + alert.connect('response', self.__erase_confirmation_dialog_response_cb, + bundle_id) + + self.add_alert(alert) + + def __erase_confirmation_dialog_response_cb(self, alert, response_id, + bundle_id): + self.remove_alert() + if response_id == gtk.RESPONSE_OK: + registry = bundleregistry.get_registry() + bundle = registry.get_bundle(bundle_id) + registry.uninstall(bundle) + +class ActivityListPalette(ActivityPalette): + __gtype_name__ = 'SugarActivityListPalette' + + __gsignals__ = { + 'erase-activated' : (gobject.SIGNAL_RUN_FIRST, + gobject.TYPE_NONE, ([str])) + } + + def __init__(self, activity_info): + ActivityPalette.__init__(self, activity_info) + + self._bundle_id = activity_info.get_bundle_id() + self._version = activity_info.get_activity_version() + + registry = bundleregistry.get_registry() + self._favorite = registry.is_bundle_favorite(self._bundle_id, + self._version) + + self._favorite_item = MenuItem('') + self._favorite_icon = Icon(icon_name='emblem-favorite', + icon_size=gtk.ICON_SIZE_MENU) + self._favorite_item.set_image(self._favorite_icon) + self._favorite_item.connect('activate', + self.__change_favorite_activate_cb) + self.menu.append(self._favorite_item) + self._favorite_item.show() + + menu_item = MenuItem(_('Erase'), 'list-remove') + menu_item.connect('activate', self.__erase_activate_cb) + self.menu.append(menu_item) + menu_item.show() + + if not os.access(activity_info.get_path(), os.W_OK): + menu_item.props.sensitive = False + + registry = bundleregistry.get_registry() + self._activity_changed_sid = registry.connect('bundle_changed', + self.__activity_changed_cb) + self._update_favorite_item() + + self.connect('destroy', self.__destroy_cb) + + def __destroy_cb(self, palette): + self.disconnect(self._activity_changed_sid) + + def _update_favorite_item(self): + label = self._favorite_item.child + if self._favorite: + label.set_text(_('Remove favorite')) + xo_color = XoColor('%s,%s' % (style.COLOR_WHITE.get_svg(), + style.COLOR_TRANSPARENT.get_svg())) + else: + label.set_text(_('Make favorite')) + client = gconf.client_get_default() + xo_color = XoColor(client.get_string("/desktop/sugar/user/color")) + + self._favorite_icon.props.xo_color = xo_color + + def __change_favorite_activate_cb(self, menu_item): + registry = bundleregistry.get_registry() + registry.set_bundle_favorite(self._bundle_id, + self._version, + not self._favorite) + + def __activity_changed_cb(self, activity_registry, activity_info): + if activity_info.get_bundle_id() == self._bundle_id and \ + activity_info.get_activity_version() == self._version: + registry = bundleregistry.get_registry() + self._favorite = registry.is_bundle_favorite(self._bundle_id, + self._version) + self._update_favorite_item() + + def __erase_activate_cb(self, menu_item): + self.emit('erase-activated', self._bundle_id) diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py index 4037fae..6ca8732 100644 --- a/src/jarabe/desktop/favoritesview.py +++ b/src/jarabe/desktop/favoritesview.py @@ -65,11 +65,6 @@ about the layout can be accessed with fields of the class.""" class FavoritesView(hippo.Canvas): __gtype_name__ = 'SugarFavoritesView' - __gsignals__ = { - 'erase-activated' : (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, ([str])) - } - def __init__(self, **kwargs): logging.debug('STARTUP: Loading the favorites view') @@ -134,14 +129,10 @@ class FavoritesView(hippo.Canvas): if activity_info.get_bundle_id() == 'org.laptop.JournalActivity': return icon = ActivityIcon(activity_info, self._datastore_listener) - icon.connect('erase-activated', self.__erase_activated_cb) icon.props.size = style.STANDARD_ICON_SIZE self._box.insert_sorted(icon, 0, self._layout.compare_activities) self._layout.append(icon) - def __erase_activated_cb(self, activity_icon, bundle_id): - self.emit('erase-activated', bundle_id) - def __activity_added_cb(self, activity_registry, activity_info): registry = bundleregistry.get_registry() if registry.is_bundle_favorite(activity_info.get_bundle_id(), @@ -402,11 +393,6 @@ class ActivityIcon(CanvasIcon): _BORDER_WIDTH = style.zoom(3) - __gsignals__ = { - 'erase-activated' : (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, ([str])) - } - def __init__(self, activity_info, datastore_listener): CanvasIcon.__init__(self, cache=True, file_name=activity_info.get_icon()) @@ -470,12 +456,8 @@ class ActivityIcon(CanvasIcon): def create_palette(self): palette = FavoritePalette(self._activity_info, self._journal_entries) palette.connect('activate', self.__palette_activate_cb) - palette.connect('erase-activated', self.__erase_activated_cb) return palette - def __erase_activated_cb(self, palette, bundle_id): - self.emit('erase-activated', bundle_id) - def __palette_activate_cb(self, palette): self._activate() diff --git a/src/jarabe/desktop/homebox.py b/src/jarabe/desktop/homebox.py index 6fdc8f1..88da9d2 100644 --- a/src/jarabe/desktop/homebox.py +++ b/src/jarabe/desktop/homebox.py @@ -27,7 +27,6 @@ from sugar.graphics.radiotoolbutton import RadioToolButton from sugar.graphics.alert import Alert from sugar.graphics.icon import Icon -from jarabe.model import bundleregistry from jarabe.desktop import favoritesview from jarabe.desktop.activitieslist import ActivitiesList @@ -47,10 +46,6 @@ class HomeBox(gtk.VBox): self._favorites_view = favoritesview.FavoritesView() self._list_view = ActivitiesList() - self._favorites_view.connect('erase-activated', - self.__erase_activated_cb) - self._list_view.connect('erase-activated', self.__erase_activated_cb) - self._toolbar = HomeToolbar() self._toolbar.connect('query-changed', self.__toolbar_query_changed_cb) self._toolbar.connect('view-changed', self.__toolbar_view_changed_cb) @@ -58,44 +53,6 @@ class HomeBox(gtk.VBox): self._toolbar.show() self._set_view(_FAVORITES_VIEW) - - def __erase_activated_cb(self, view, bundle_id): - registry = bundleregistry.get_registry() - activity_info = registry.get_bundle(bundle_id) - - alert = Alert() - alert.props.title = _('Confirm erase') - alert.props.msg = \ - _('Confirm erase: Do you want to permanently erase %s?') \ - % activity_info.get_name() - - cancel_icon = Icon(icon_name='dialog-cancel') - alert.add_button(gtk.RESPONSE_CANCEL, _('Keep'), cancel_icon) - - erase_icon = Icon(icon_name='dialog-ok') - alert.add_button(gtk.RESPONSE_OK, _('Erase'), erase_icon) - - if self._list_view in self.get_children(): - self._list_view.add_alert(alert) - else: - self._favorites_view.add_alert(alert) - # TODO: If the favorite layouts didn't hardcoded the box size, we could - # just pack an alert between the toolbar and the canvas. - #self.pack_start(alert, False) - #self.reorder_child(alert, 1) - alert.connect('response', self.__erase_confirmation_dialog_response_cb, - bundle_id) - - def __erase_confirmation_dialog_response_cb(self, alert, response_id, - bundle_id): - if self._list_view in self.get_children(): - self._list_view.remove_alert() - else: - self._favorites_view.remove_alert() - if response_id == gtk.RESPONSE_OK: - registry = bundleregistry.get_registry() - bundle = registry.get_bundle(bundle_id) - registry.uninstall(bundle) def show_software_updates_alert(self): alert = Alert() diff --git a/src/jarabe/frame/clipboard.py b/src/jarabe/frame/clipboard.py index 0e3e125..d18dd44 100644 --- a/src/jarabe/frame/clipboard.py +++ b/src/jarabe/frame/clipboard.py @@ -59,9 +59,9 @@ class Clipboard(gobject.GObject): cb_object = self._objects[object_id] if format_type == 'XdndDirectSave0': - format = Format('text/uri-list', data + '\r\n', on_disk) - format.owns_disk_data = True - cb_object.add_format(format) + format_ = Format('text/uri-list', data + '\r\n', on_disk) + format_.owns_disk_data = True + cb_object.add_format(format_) elif on_disk and cb_object.get_percent() == 100: new_uri = self._copy_file(data) cb_object.add_format(Format(format_type, new_uri, on_disk)) @@ -98,10 +98,10 @@ class Clipboard(gobject.GObject): def _process_object(self, cb_object): formats = cb_object.get_formats() - for format_name, format in formats.iteritems(): - if format.is_on_disk() and not format.owns_disk_data: - new_uri = self._copy_file(format.get_data()) - format.set_data(new_uri) + for format_name, format_ in formats.iteritems(): + if format_.is_on_disk() and not format_.owns_disk_data: + new_uri = self._copy_file(format_.get_data()) + format_.set_data(new_uri) # Add a text/plain format to objects that are text but lack it if 'text/plain' not in formats.keys(): @@ -121,8 +121,8 @@ class Clipboard(gobject.GObject): def get_object_data(self, object_id, format_type): logging.debug('Clipboard.get_object_data') cb_object = self._objects[object_id] - format = cb_object.get_formats()[format_type] - return format + format_ = cb_object.get_formats()[format_type] + return format_ def _copy_file(self, original_uri): uri = urlparse.urlparse(original_uri) diff --git a/src/jarabe/frame/clipboardmenu.py b/src/jarabe/frame/clipboardmenu.py index d1d4105..8a8ba11 100644 --- a/src/jarabe/frame/clipboardmenu.py +++ b/src/jarabe/frame/clipboardmenu.py @@ -204,26 +204,26 @@ class ClipboardMenu(Palette): def _copy_to_journal(self): formats = self._cb_object.get_formats().keys() most_significant_mime_type = mime.choose_most_significant(formats) - format = self._cb_object.get_formats()[most_significant_mime_type] + format_ = self._cb_object.get_formats()[most_significant_mime_type] transfer_ownership = False if most_significant_mime_type == 'text/uri-list': - uris = mime.split_uri_list(format.get_data()) + uris = mime.split_uri_list(format_.get_data()) if len(uris) == 1 and uris[0].startswith('file://'): file_path = urlparse.urlparse(uris[0]).path transfer_ownership = False mime_type = mime.get_for_file(file_path) else: - file_path = self._write_to_temp_file(format.get_data()) + file_path = self._write_to_temp_file(format_.get_data()) transfer_ownership = True mime_type = 'text/uri-list' else: - if format.is_on_disk(): - file_path = urlparse.urlparse(format.get_data()).path + if format_.is_on_disk(): + file_path = urlparse.urlparse(format_.get_data()).path transfer_ownership = False mime_type = mime.get_for_file(file_path) else: - file_path = self._write_to_temp_file(format.get_data()) + file_path = self._write_to_temp_file(format_.get_data()) transfer_ownership = True sniffed_mime_type = mime.get_for_file(file_path) if sniffed_mime_type == 'application/octet-stream': diff --git a/src/jarabe/frame/clipboardobject.py b/src/jarabe/frame/clipboardobject.py index 38da151..91fa1e6 100644 --- a/src/jarabe/frame/clipboardobject.py +++ b/src/jarabe/frame/clipboardobject.py @@ -33,8 +33,8 @@ class ClipboardObject(object): self._formats = {} def destroy(self): - for format in self._formats.itervalues(): - format.destroy() + for format_ in self._formats.itervalues(): + format_.destroy() def get_id(self): return self._id @@ -91,8 +91,8 @@ class ClipboardObject(object): def set_percent(self, percent): self._percent = percent - def add_format(self, format): - self._formats[format.get_type()] = format + def add_format(self, format_): + self._formats[format_.get_type()] = format_ def get_formats(self): return self._formats @@ -101,18 +101,18 @@ class ClipboardObject(object): if not self._formats: return '' - format = mime.choose_most_significant(self._formats.keys()) - if format == 'text/uri-list': + format_ = mime.choose_most_significant(self._formats.keys()) + if format_ == 'text/uri-list': data = self._formats['text/uri-list'].get_data() uri = urlparse.urlparse(mime.split_uri_list(data)[0], 'file') if uri.scheme == 'file': if os.path.exists(uri.path): - format = mime.get_for_file(uri.path) + format_ = mime.get_for_file(uri.path) else: - format = mime.get_from_file_name(uri.path) - logging.debug('Choosed %r!' % format) + format_ = mime.get_from_file_name(uri.path) + logging.debug('Choosed %r!' % format_) - return format + return format_ class Format(object): diff --git a/src/jarabe/frame/clipboardtray.py b/src/jarabe/frame/clipboardtray.py index 40f0a32..a387328 100644 --- a/src/jarabe/frame/clipboardtray.py +++ b/src/jarabe/frame/clipboardtray.py @@ -153,7 +153,7 @@ class ClipboardTray(tray.VTray): if 'XdndDirectSave0' in context.targets: window = context.source_window - prop_type, format, filename = \ + prop_type, format_, filename = \ window.property_get('XdndDirectSave0','text/plain') # FIXME query the clipboard service for a filename? @@ -165,7 +165,7 @@ class ClipboardTray(tray.VTray): dest_uri = 'file://' + os.path.join(base_dir, dest_filename) - window.property_change('XdndDirectSave0', prop_type, format, + window.property_change('XdndDirectSave0', prop_type, format_, gtk.gdk.PROP_MODE_REPLACE, dest_uri) widget.drag_get_data(context, 'XdndDirectSave0', time) diff --git a/src/jarabe/journal/listview.py b/src/jarabe/journal/listview.py index 5e20577..332edc9 100644 --- a/src/jarabe/journal/listview.py +++ b/src/jarabe/journal/listview.py @@ -15,8 +15,6 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import logging -import traceback -import sys from gettext import gettext as _ import time @@ -50,14 +48,14 @@ class TreeView(gtk.TreeView): def do_size_request(self, requisition): # HACK: We tell the model that the view is just resizing so it can avoid # hitting both D-Bus and disk. - model = self.get_model() - if model is not None: - model.view_is_resizing = True + tree_model = self.get_model() + if tree_model is not None: + tree_model.view_is_resizing = True try: gtk.TreeView.do_size_request(self, requisition) finally: - if model is not None: - model.view_is_resizing = False + if tree_model is not None: + tree_model.view_is_resizing = False class BaseListView(gtk.Bin): __gtype_name__ = 'JournalBaseListView' @@ -93,6 +91,7 @@ class BaseListView(gtk.Bin): self.cell_title = None self.cell_icon = None self._title_column = None + self.date_column = None self._add_columns() self.tree_view.enable_model_drag_source(gtk.gdk.BUTTON1_MASK, @@ -137,7 +136,8 @@ class BaseListView(gtk.Bin): column.props.fixed_width = self.cell_icon.props.width column.pack_start(self.cell_icon) column.add_attribute(self.cell_icon, 'file-name', ListModel.COLUMN_ICON) - column.add_attribute(self.cell_icon, 'xo-color', ListModel.COLUMN_ICON_COLOR) + column.add_attribute(self.cell_icon, 'xo-color', + ListModel.COLUMN_ICON_COLOR) self.tree_view.append_column(column) self.cell_title = gtk.CellRendererText() @@ -234,7 +234,7 @@ class BaseListView(gtk.Bin): context = widget.get_pango_context() layout = pango.Layout(context) layout.set_text(text) - width, height = layout.get_size() + width, height_ = layout.get_size() return pango.PIXELS(width) def do_size_allocate(self, allocation): @@ -289,14 +289,14 @@ class BaseListView(gtk.Bin): self._model.connect('progress', self.__model_progress_cb) self._model.setup() - def __model_ready_cb(self, model): + def __model_ready_cb(self, tree_model): self._stop_progress_bar() # Cannot set it up earlier because will try to access the model and it # needs to be ready. self.tree_view.set_model(self._model) - if len(model) == 0: + if len(tree_model) == 0: if self._is_query_empty(): self._show_message(MESSAGE_EMPTY_JOURNAL) else: @@ -564,8 +564,8 @@ class CellRendererBuddy(CellRendererIcon): self._model_column_index = column_index def create_palette(self): - model = self.tree_view.get_model() - row = model[self.props.palette_invoker.path] + tree_model = self.tree_view.get_model() + row = tree_model[self.props.palette_invoker.path] if row[self._model_column_index] is not None: nick, xo_color = row[self._model_column_index] diff --git a/src/jarabe/journal/misc.py b/src/jarabe/journal/misc.py index b29b744..5a9feb0 100644 --- a/src/jarabe/journal/misc.py +++ b/src/jarabe/journal/misc.py @@ -17,7 +17,6 @@ import logging import time import traceback -import sys import os from gettext import gettext as _ @@ -69,7 +68,7 @@ def get_icon_name(metadata): try: bundle = ActivityBundle(file_path) file_name = bundle.get_icon() - except: + except Exception: logging.warning('Could not read bundle:\n' + \ traceback.format_exc()) diff --git a/src/jarabe/journal/model.py b/src/jarabe/journal/model.py index 7517d78..e710464 100644 --- a/src/jarabe/journal/model.py +++ b/src/jarabe/journal/model.py @@ -119,7 +119,7 @@ class BaseResultSet(object): self._position = position def read(self): - #logging.debug('ResultSet.read position: %r' % self._position) + logging.debug('ResultSet.read position: %r' % self._position) if self._position == -1: self.seek(0) @@ -149,7 +149,7 @@ class BaseResultSet(object): query['offset'] = offset entries, self._total_count = self.find(query) - self._cache.remove_all(self._cache._array) + self._cache.remove_all(self._cache) self._cache.append_all(entries) self._offset = offset @@ -195,8 +195,8 @@ class BaseResultSet(object): objects_excess = len(self._cache) - cache_limit if objects_excess > 0: self._cache.remove_all(self._cache[-objects_excess:]) - #else: - # logging.debug('cache hit and no need to grow the cache') + else: + logging.debug('cache hit and no need to grow the cache') return self._cache[self._position - self._offset] diff --git a/src/jarabe/journal/objectchooser.py b/src/jarabe/journal/objectchooser.py index 827f228..32bfbb3 100644 --- a/src/jarabe/journal/objectchooser.py +++ b/src/jarabe/journal/objectchooser.py @@ -19,7 +19,6 @@ import logging import gobject import gtk -import hippo import wnck from sugar.graphics import style @@ -181,11 +180,6 @@ class ChooserListView(BaseListView): self.tree_view.connect('button-release-event', self.__button_release_event_cb) - def create_entry(self): - entry = ChooserCollapsedEntry() - entry.connect('entry-activated', self.__entry_activated_cb) - return entry - def __entry_activated_cb(self, entry): self.emit('entry-activated', entry) diff --git a/src/jarabe/model/bundleregistry.py b/src/jarabe/model/bundleregistry.py index 4e5b2f0..3e5e586 100644 --- a/src/jarabe/model/bundleregistry.py +++ b/src/jarabe/model/bundleregistry.py @@ -184,10 +184,10 @@ class BundleRegistry(gobject.GObject): bundle_dir = os.path.join(path, f) if os.path.isdir(bundle_dir): bundles[bundle_dir] = os.stat(bundle_dir).st_mtime - except Exception, e: + except Exception: logging.error('Error while processing installed activity ' \ 'bundle %s:\n%s' % \ - (folder, traceback.format_exc())) + (bundle_dir, traceback.format_exc())) bundle_dirs = bundles.keys() bundle_dirs.sort(lambda d1, d2: cmp(bundles[d1], bundles[d2])) diff --git a/src/jarabe/model/screen.py b/src/jarabe/model/screen.py index 87dc370..4403c1c 100644 --- a/src/jarabe/model/screen.py +++ b/src/jarabe/model/screen.py @@ -22,9 +22,6 @@ _HARDWARE_MANAGER_INTERFACE = 'org.freedesktop.ohm.Keystore' _HARDWARE_MANAGER_SERVICE = 'org.freedesktop.ohm' _HARDWARE_MANAGER_OBJECT_PATH = '/org/freedesktop/ohm/Keystore' -COLOR_MODE = 0 -B_AND_W_MODE = 1 - _ohm_service = None def _get_ohm(): @@ -44,21 +41,3 @@ def set_dcon_freeze(frozen): except dbus.DBusException: logging.error('Cannot unfreeze the DCON') -def set_display_mode(mode): - try: - _get_ohm().SetKey("display.dcon_mode", mode) - except dbus.DBusException: - logging.error('Cannot change DCON mode') - -def set_display_brightness(level): - try: - _get_ohm().SetKey("backlight.hardware_brightness", level) - except dbus.DBusException: - logging.error('Cannot set display brightness') - -def get_display_brightness(): - try: - return _get_ohm().GetKey("backlight.hardware_brightness") - except dbus.DBusException: - logging.error('Cannot get display brightness') - return 0 diff --git a/src/jarabe/view/keyhandler.py b/src/jarabe/view/keyhandler.py index 5634ef4..0505c52 100644 --- a/src/jarabe/view/keyhandler.py +++ b/src/jarabe/view/keyhandler.py @@ -28,7 +28,6 @@ import gtk from sugar._sugarext import KeyGrabber -from jarabe.model import screen from jarabe.model import sound from jarabe.model import shell from jarabe.model import session @@ -37,9 +36,7 @@ from jarabe.model.shell import ShellModel from jarabe import config from jarabe.journal import journalactivity -_BRIGHTNESS_STEP = 2 _VOLUME_STEP = sound.VOLUME_STEP -_BRIGHTNESS_MAX = 15 _VOLUME_MAX = 100 _TABBING_MODIFIER = gtk.gdk.MOD1_MASK @@ -48,10 +45,6 @@ _actions_table = { 'F2' : 'zoom_group', 'F3' : 'zoom_home', 'F4' : 'zoom_activity', - 'F9' : 'brightness_down', - 'F10' : 'brightness_up', - 'F9' : 'brightness_min', - 'F10' : 'brightness_max', 'XF86AudioMute' : 'volume_mute', 'F11' : 'volume_down', 'XF86AudioLowerVolume' : 'volume_down', @@ -60,7 +53,6 @@ _actions_table = { 'F11' : 'volume_min', 'F12' : 'volume_max', '0x93' : 'frame', - '0xEB' : 'rotate', 'Tab' : 'next_window', 'Tab' : 'previous_window', 'Escape' : 'close_window', @@ -70,7 +62,6 @@ _actions_table = { 'q' : 'quit_emulator', 'XF86Search' : 'open_search', 'o' : 'open_search', - 'r' : 'rotate', 's' : 'say_text', } @@ -81,7 +72,6 @@ SPEECH_DBUS_INTERFACE = 'org.laptop.Speech' class KeyHandler(object): def __init__(self, frame): self._frame = frame - self._screen_rotation = 0 self._key_pressed = None self._keycode_pressed = 0 self._keystate_pressed = 0 @@ -134,20 +124,6 @@ class KeyHandler(object): sound.set_volume(volume) sound.set_muted(volume == 0) - def _change_brightness(self, step=None, value=None): - if step is not None: - level = screen.get_display_brightness() + step - elif value is not None: - level = value - - level = min(max(0, level), _BRIGHTNESS_MAX) - - screen.set_display_brightness(level) - if level == 0: - screen.set_display_mode(screen.B_AND_W_MODE) - else: - screen.set_display_mode(screen.COLOR_MODE) - def _get_speech_proxy(self): if self._speech_proxy is None: bus = dbus.SessionBus() @@ -195,24 +171,12 @@ class KeyHandler(object): def handle_zoom_activity(self, event_time): shell.get_model().zoom_level = ShellModel.ZOOM_ACTIVITY - def handle_brightness_max(self, event_time): - self._change_brightness(value=_BRIGHTNESS_MAX) - - def handle_brightness_min(self, event_time): - self._change_brightness(value=0) - def handle_volume_max(self, event_time): self._change_volume(value=_VOLUME_MAX) def handle_volume_min(self, event_time): self._change_volume(value=0) - def handle_brightness_up(self, event_time): - self._change_brightness(step=_BRIGHTNESS_STEP) - - def handle_brightness_down(self, event_time): - self._change_brightness(step=-_BRIGHTNESS_STEP) - def handle_volume_mute(self, event_time): if sound.get_muted() is True: sound.set_muted(False) @@ -228,46 +192,6 @@ class KeyHandler(object): def handle_frame(self, event_time): self._frame.notify_key_press() - def handle_rotate(self, event_time): - """ - Handles rotation of the display (using xrandr) and of the d-pad. - - Notes: default mappings for keypad on MP - KP_Up 80 - KP_Right 85 - KP_Down 88 - KP_Left 83 - """ - - states = [ 'normal', 'left', 'inverted', 'right'] - keycodes = (80, 85, 88, 83, 80, 85, 88, 83) - keysyms = ("KP_Up", "KP_Right", "KP_Down", "KP_Left") - - self._screen_rotation -= 1 - self._screen_rotation %= 4 - - actual_keycodes = keycodes[self._screen_rotation:self._screen_rotation - + 4] - # code_pairs now contains a mapping of keycode -> keysym in the current - # orientation - code_pairs = zip(actual_keycodes, keysyms) - - # Using the mappings in code_pairs, we dynamically build up an xmodmap - # command to rotate the dpad keys. - argv = ['xmodmap'] - for arg in [('-e', 'keycode %i = %s' % p) for p in code_pairs]: - argv.extend(arg) - - # If either the xmodmap or xrandr command fails, check_call will fail - # with CalledProcessError, which we raise. - try: - subprocess.check_call(argv) - subprocess.check_call(['xrandr', '-o', - states[self._screen_rotation]]) - except OSError, e: - if e.errno != errno.EINTR: - raise - def handle_quit_emulator(self, event_time): session.get_session_manager().shutdown() diff --git a/src/jarabe/view/palettes.py b/src/jarabe/view/palettes.py index 9d45eb5..317a15f 100644 --- a/src/jarabe/view/palettes.py +++ b/src/jarabe/view/palettes.py @@ -17,10 +17,9 @@ import os import statvfs from gettext import gettext as _ -import gconf import logging -import gobject +import gconf import gtk from sugar import env @@ -32,7 +31,6 @@ from sugar.graphics.xocolor import XoColor from sugar.activity import activityfactory from sugar.activity.activityhandle import ActivityHandle -from jarabe.model import bundleregistry from jarabe.model import shell from jarabe.view import launcher from jarabe.view.viewsource import setup_view_source @@ -107,11 +105,6 @@ class CurrentActivityPalette(BasePalette): class ActivityPalette(Palette): __gtype_name__ = 'SugarActivityPalette' - __gsignals__ = { - 'erase-activated' : (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, ([str])) - } - def __init__(self, activity_info): client = gconf.client_get_default() color = XoColor(client.get_string("/desktop/sugar/user/color")) @@ -122,17 +115,9 @@ class ActivityPalette(Palette): Palette.__init__(self, primary_text=activity_info.get_name(), icon=activity_icon) - registry = bundleregistry.get_registry() - - self._bundle = activity_info - self._bundle_id = activity_info.get_bundle_id() - self._version = activity_info.get_activity_version() - self._favorite = registry.is_bundle_favorite(self._bundle_id, - self._version) - xo_color = XoColor('%s,%s' % (style.COLOR_WHITE.get_svg(), style.COLOR_TRANSPARENT.get_svg())) - menu_item = MenuItem(text_label=_('Start'), + menu_item = MenuItem(text_label=_('Start new'), file_name=activity_info.get_icon(), xo_color=xo_color) menu_item.connect('activate', self.__start_activate_cb) @@ -141,46 +126,6 @@ class ActivityPalette(Palette): # TODO: start-with - self._favorite_item = MenuItem('') - self._favorite_icon = Icon(icon_name='emblem-favorite', - icon_size=gtk.ICON_SIZE_MENU) - self._favorite_item.set_image(self._favorite_icon) - self._favorite_item.connect('activate', - self.__change_favorite_activate_cb) - self.menu.append(self._favorite_item) - self._favorite_item.show() - - menu_item = MenuItem(_('Erase'), 'list-remove') - menu_item.connect('activate', self.__erase_activate_cb) - self.menu.append(menu_item) - menu_item.show() - - if not os.access(self._bundle.get_path(), os.W_OK): - menu_item.props.sensitive = False - - registry = bundleregistry.get_registry() - self._activity_changed_sid = registry.connect('bundle_changed', - self.__activity_changed_cb) - self._update_favorite_item() - - self.connect('destroy', self.__destroy_cb) - - def __destroy_cb(self, palette): - self.disconnect(self._activity_changed_sid) - - def _update_favorite_item(self): - label = self._favorite_item.child - if self._favorite: - label.set_text(_('Remove favorite')) - xo_color = XoColor('%s,%s' % (style.COLOR_WHITE.get_svg(), - style.COLOR_TRANSPARENT.get_svg())) - else: - label.set_text(_('Make favorite')) - client = gconf.client_get_default() - xo_color = XoColor(client.get_string("/desktop/sugar/user/color")) - - self._favorite_icon.props.xo_color = xo_color - def __start_activate_cb(self, menu_item): self.popdown(immediate=True) @@ -195,23 +140,6 @@ class ActivityPalette(Palette): handle = ActivityHandle(activity_id) activityfactory.create(self._bundle, handle) - def __change_favorite_activate_cb(self, menu_item): - registry = bundleregistry.get_registry() - registry.set_bundle_favorite(self._bundle_id, - self._version, - not self._favorite) - - def __activity_changed_cb(self, activity_registry, activity_info): - if activity_info.get_bundle_id() == self._bundle_id and \ - activity_info.get_activity_version() == self._version: - registry = bundleregistry.get_registry() - self._favorite = registry.is_bundle_favorite(self._bundle_id, - self._version) - self._update_favorite_item() - - def __erase_activate_cb(self, menu_item): - self.emit('erase-activated', self._bundle_id) - class JournalPalette(BasePalette): def __init__(self, home_activity): self._home_activity = home_activity -- cgit v0.9.1