Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2007-01-05 20:13:46 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2007-01-05 20:13:46 (GMT)
commitf50d9f5f9a972f7149c4a57f225e00d7e48834c6 (patch)
tree5f42a715a2f91b636b9873a119b4a5761c133510 /sugar
parent74e407f9ff72249ca9d597ccb58d64de1922cd52 (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.py39
-rw-r--r--sugar/graphics/canvasicon.py6
-rw-r--r--sugar/graphics/menu.py10
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)