Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSimon Schampijer <simon@schampijer.de>2009-08-20 13:28:00 (GMT)
committer Simon Schampijer <simon@schampijer.de>2009-08-20 13:28:00 (GMT)
commitf4e1500a00804812481a5a0b2aa4be13eba8f3dc (patch)
tree4c38984fed283d21007d53415818ed0330591afb /src
parentd4da49bebd1b0cbd12e80ff471dee12593440e0a (diff)
parentd57bb1b20aa123821d1008432620fb316645e34b (diff)
Merge branch 'master' of gitorious@git.sugarlabs.org:sugar/mainline
Diffstat (limited to 'src')
-rw-r--r--src/jarabe/desktop/activitieslist.py118
-rw-r--r--src/jarabe/desktop/favoritesview.py18
-rw-r--r--src/jarabe/desktop/homebox.py43
-rw-r--r--src/jarabe/frame/clipboard.py18
-rw-r--r--src/jarabe/frame/clipboardmenu.py12
-rw-r--r--src/jarabe/frame/clipboardobject.py20
-rw-r--r--src/jarabe/frame/clipboardtray.py4
-rw-r--r--src/jarabe/journal/listview.py26
-rw-r--r--src/jarabe/journal/misc.py3
-rw-r--r--src/jarabe/journal/model.py8
-rw-r--r--src/jarabe/journal/objectchooser.py6
-rw-r--r--src/jarabe/model/bundleregistry.py4
-rw-r--r--src/jarabe/model/screen.py21
-rw-r--r--src/jarabe/view/keyhandler.py76
-rw-r--r--src/jarabe/view/palettes.py76
15 files changed, 156 insertions, 297 deletions
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',
- '<alt>F9' : 'brightness_min',
- '<alt>F10' : 'brightness_max',
'XF86AudioMute' : 'volume_mute',
'F11' : 'volume_down',
'XF86AudioLowerVolume' : 'volume_down',
@@ -60,7 +53,6 @@ _actions_table = {
'<alt>F11' : 'volume_min',
'<alt>F12' : 'volume_max',
'0x93' : 'frame',
- '0xEB' : 'rotate',
'<alt>Tab' : 'next_window',
'<alt><shift>Tab' : 'previous_window',
'<alt>Escape' : 'close_window',
@@ -70,7 +62,6 @@ _actions_table = {
'<alt><shift>q' : 'quit_emulator',
'XF86Search' : 'open_search',
'<alt><shift>o' : 'open_search',
- '<alt><shift>r' : 'rotate',
'<alt><shift>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