diff options
author | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2007-01-05 20:13:46 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2007-01-05 20:13:46 (GMT) |
commit | f50d9f5f9a972f7149c4a57f225e00d7e48834c6 (patch) | |
tree | 5f42a715a2f91b636b9873a119b4a5761c133510 /sugar | |
parent | 74e407f9ff72249ca9d597ccb58d64de1922cd52 (diff) |
Added icon, title and preview for clipboard objects. Also allow for opening docs and rtfs from the web.
Diffstat (limited to 'sugar')
-rw-r--r-- | sugar/clipboard/clipboardservice.py | 39 | ||||
-rw-r--r-- | sugar/graphics/canvasicon.py | 6 | ||||
-rw-r--r-- | sugar/graphics/menu.py | 10 |
3 files changed, 34 insertions, 21 deletions
diff --git a/sugar/clipboard/clipboardservice.py b/sugar/clipboard/clipboardservice.py index 425a16d..8455751 100644 --- a/sugar/clipboard/clipboardservice.py +++ b/sugar/clipboard/clipboardservice.py @@ -2,7 +2,11 @@ import logging import dbus import gobject -from sugar import util +NAME_KEY = 'NAME' +PERCENT_KEY = 'PERCENT' +ICON_KEY = 'ICON' +PREVIEW_KEY = 'PREVIEW' +FORMATS_KEY = 'FORMATS' DBUS_SERVICE = "org.laptop.Clipboard" DBUS_INTERFACE = "org.laptop.Clipboard" @@ -16,7 +20,7 @@ class ClipboardService(gobject.GObject): 'object-deleted': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([str])), 'object-state-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([str, int])), + ([str, str, int, str, str])), } def __init__(self): @@ -58,8 +62,9 @@ class ClipboardService(gobject.GObject): def _object_deleted_cb(self, object_id): self.emit('object-deleted', object_id) - def _object_state_changed_cb(self, object_id, percent): - self.emit('object-state-changed', object_id, percent) + def _object_state_changed_cb(self, object_id, values): + self.emit('object-state-changed', object_id, values[NAME_KEY], + values[PERCENT_KEY], values[ICON_KEY], values[PREVIEW_KEY]) def add_object(self, object_id, name): self._dbus_service.add_object(object_id, name) @@ -67,27 +72,25 @@ class ClipboardService(gobject.GObject): def add_object_format(self, object_id, formatType, data, on_disk): self._dbus_service.add_object_format(object_id, formatType, - dbus.types.ByteArray(data), + data, on_disk) def delete_object(self, object_id): self._dbus_service.delete_object(object_id) - def set_object_state(self, object_id, percent): - self._dbus_service.set_object_state(object_id, percent) + def set_object_percent(self, object_id, percent): + self._dbus_service.set_object_percent(object_id, percent) - def get_object_format_types(self, object_id): - return self._dbus_service.get_object_format_types(object_id) - - def get_object_data(self, object_id, formatType): - data = self._dbus_service.get_object_data(object_id, formatType) + def get_object(self, object_id): + result_dict = self._dbus_service.get_object(object_id,) - # FIXME: Take it out when using the 0.80 dbus bindings - s = "" - for i in data: - s += chr(i) - - return s + return (result_dict[NAME_KEY], result_dict[PERCENT_KEY], + result_dict[ICON_KEY], result_dict[PREVIEW_KEY], + result_dict[FORMATS_KEY]) + + def get_object_data(self, object_id, formatType): + return self._dbus_service.get_object_data(object_id, formatType, + byte_arrays=True) _clipboard_service = None def get_instance(): diff --git a/sugar/graphics/canvasicon.py b/sugar/graphics/canvasicon.py index 06aff7b..f47f06b 100644 --- a/sugar/graphics/canvasicon.py +++ b/sugar/graphics/canvasicon.py @@ -16,6 +16,7 @@ # Boston, MA 02111-1307, USA. import re +import logging import gobject import gtk @@ -156,3 +157,8 @@ class CanvasIcon(hippo.CanvasBox, hippo.CanvasItem): def _button_press_event_cb(self, item, event): item.emit_activated() + + def set_icon_name(self, icon_name): + self._icon_name = icon_name + self._buffer = None + self.emit_paint_needed(0, 0, -1, -1) diff --git a/sugar/graphics/menu.py b/sugar/graphics/menu.py index 5b68d61..153c5bc 100644 --- a/sugar/graphics/menu.py +++ b/sugar/graphics/menu.py @@ -76,7 +76,7 @@ class Menu(gtk.Window): orientation=hippo.ORIENTATION_HORIZONTAL) self._root.append(self._action_box) - def add_item(self, label, action_id): + def add_item(self, label, action_id=None): if not self._item_box: self._create_item_box() @@ -84,8 +84,9 @@ class Menu(gtk.Window): style.apply_stylesheet(text, 'menu.Item') # FIXME need a way to make hippo items activable in python - text.connect('button-press-event', self._item_clicked_cb, action_id) - #text.connect('activated', self._action_clicked_cb, action_id) + if action_id: + text.connect('button-press-event', self._item_clicked_cb, action_id) + #text.connect('activated', self._action_clicked_cb, action_id) self._item_box.append(text) @@ -105,3 +106,6 @@ class Menu(gtk.Window): def _action_clicked_cb(self, icon, action): self.emit('action', action) + + def set_title(self, title): + self._title_item.set_text(title) |