Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorgan Collett <morgan.collett@gmail.com>2007-08-16 15:17:23 (GMT)
committer Morgan Collett <morgan.collett@gmail.com>2007-08-16 15:17:23 (GMT)
commit1db4cd77d3fb3d424f92adcdf4ed2d46cf15cae4 (patch)
tree950016292841531a388b397d824dd91cf0619db6
parentdab82f6183a97471f767850bae6cd2158b25af25 (diff)
parent4ad4fe9ec8caf64f99714bbc63435d4ffbc5bb8d (diff)
Merge branch 'master' of git://dev.laptop.org/sugar
-rw-r--r--NEWS1
-rw-r--r--po/mk.po121
-rw-r--r--services/shell/objecttypeservice.py7
-rw-r--r--shell/intro/colorpicker.py2
-rw-r--r--shell/model/homeactivity.py2
-rw-r--r--shell/view/BuddyIcon.py2
-rw-r--r--shell/view/BuddyMenu.py4
-rw-r--r--shell/view/clipboardicon.py2
-rw-r--r--shell/view/clipboardmenu.py4
-rw-r--r--shell/view/devices/battery.py2
-rw-r--r--shell/view/devices/network/mesh.py2
-rw-r--r--shell/view/devices/network/wired.py2
-rw-r--r--shell/view/devices/network/wireless.py2
-rw-r--r--shell/view/home/MeshBox.py4
-rw-r--r--shell/view/home/MyIcon.py2
-rw-r--r--sugar/datastore/dbus_helpers.py38
-rw-r--r--sugar/graphics/objectchooser.py2
-rw-r--r--sugar/graphics/palette.py64
-rw-r--r--sugar/graphics/radiotoolbutton.py18
-rw-r--r--sugar/graphics/toggletoolbutton.py18
-rw-r--r--sugar/graphics/toolbutton.py15
-rwxr-xr-xtests/test-snowflake-layout.py4
-rwxr-xr-xtests/test-spread-layout.py2
-rwxr-xr-xtests/test-ui.py14
24 files changed, 193 insertions, 141 deletions
diff --git a/NEWS b/NEWS
index 52999cb..58ea6cb 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,4 @@
+* #2703: Update macedonian translation. (ArangelAngov)
* #2543: Offer multiple activities for opening clipboard objects.
Snapshot d93122bf5e
diff --git a/po/mk.po b/po/mk.po
index 7dbefec..99173f6 100644
--- a/po/mk.po
+++ b/po/mk.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: olpc-sugar.master\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-07-05 07:57-0700\n"
-"PO-Revision-Date: 2007-07-05 19:34+0200\n"
+"POT-Creation-Date: 2007-07-24 10:09-0700\n"
+"PO-Revision-Date: 2007-08-08 15:40+0200\n"
"Last-Translator: Arangel Angov <arangel@linux.net.mk>\n"
"Language-Team: Macedonian <ossm-members@hedona.on.net.mk>\n"
"MIME-Version: 1.0\n"
@@ -16,72 +16,129 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-#: ../shell/intro/intro.py:77
-msgid "Pick a buddy picture"
-msgstr "Избери слика за пријател"
+#: ../shell/intro/intro.py:61
+msgid "Name:"
+msgstr "Име:"
-#: ../shell/intro/intro.py:100
-msgid "My Picture:"
-msgstr "Мојата слика:"
+#: ../shell/intro/intro.py:84
+msgid "Click to change color:"
+msgstr "Кликни да смениш боја:"
-#: ../shell/intro/intro.py:180
-msgid "My Name:"
-msgstr "Моето име:"
+#: ../shell/intro/intro.py:134
+msgid "Back"
+msgstr "Назад"
-#: ../shell/intro/intro.py:204
-msgid "My Color:"
-msgstr "Мојата боја:"
+#: ../shell/intro/intro.py:142
+msgid "Done"
+msgstr "Завршено"
-#: ../shell/view/BuddyMenu.py:83
+#: ../shell/intro/intro.py:145
+msgid "Next"
+msgstr "Напред"
+
+#: ../shell/view/BuddyMenu.py:82
msgid "Remove friend"
msgstr "Отстрани пријател"
-#: ../shell/view/BuddyMenu.py:87
+#: ../shell/view/BuddyMenu.py:85
msgid "Make friend"
msgstr "Додај пријател"
-#: ../shell/view/BuddyMenu.py:97
+#. FIXME check that the buddy is not in the activity already
+#: ../shell/view/BuddyMenu.py:96
msgid "Invite"
msgstr "Покани"
-#: ../shell/view/clipboardmenu.py:103
+#: ../shell/view/clipboardmenu.py:66
msgid "Remove"
msgstr "Отстрани"
-#: ../shell/view/clipboardmenu.py:110
+#: ../shell/view/clipboardmenu.py:70
msgid "Open"
msgstr "Отвори"
-#: ../shell/view/clipboardmenu.py:117
-msgid "Stop download"
-msgstr "Прекини преземање"
-
-#: ../shell/view/clipboardmenu.py:124
+#. self._stop_item = MenuItem(_('Stop download'), 'stock-close')
+#. TODO: Implement stopping downloads
+#. self._stop_item.connect('activate', self._stop_item_activate_cb)
+#. self.append_menu_item(self._stop_item)
+#: ../shell/view/clipboardmenu.py:79
msgid "Add to journal"
msgstr "Додај во дневникот"
+#: ../shell/view/clipboardmenu.py:180
+#, python-format
+msgid "Clipboard object: %s."
+msgstr "Објект од таблата со исечоци: %s"
+
+#: ../shell/view/frame/zoombox.py:42
+msgid "Neighborhood"
+msgstr "Соседство"
+
+#: ../shell/view/frame/zoombox.py:55
+msgid "Group"
+msgstr "Група"
+
+#: ../shell/view/frame/zoombox.py:68
+msgid "Home"
+msgstr "Дома"
+
+#: ../shell/view/frame/zoombox.py:81
+msgid "Activity"
+msgstr "Активност"
+
#: ../services/clipboard/objecttypeservice.py:32
msgid "Text"
msgstr "Текст"
-#: ../services/clipboard/objecttypeservice.py:35
+#: ../services/clipboard/objecttypeservice.py:36
msgid "Image"
msgstr "Слика"
-#: ../shell/view/Shell.py:227
+#: ../shell/view/Shell.py:203
msgid "Screenshot"
msgstr "Слика од екранот"
-#: ../shell/view/clipboardicon.py:211
-#, python-format
-msgid "Clipboard object: %s."
-msgstr "Објект од таблата со исечоци: %s"
+#: ../shell/view/home/HomeBox.py:140
+msgid "Shutdown"
+msgstr "Исклучи"
-#: ../shell/view/home/MeshBox.py:122
+#: ../shell/view/home/MeshBox.py:126
msgid "Mesh Network"
msgstr "Соседство"
-#: ../sugar/activity/activity.py:232
+#: ../shell/view/devices/battery.py:34
+msgid "My Battery life"
+msgstr "Мојата батерија"
+
+#: ../shell/view/devices/battery.py:87
+msgid "Battery charging"
+msgstr "Батеријата се полни"
+
+#: ../shell/view/devices/battery.py:89
+msgid "Battery discharging"
+msgstr "Батерјате се празни"
+
+#: ../shell/view/devices/battery.py:91
+msgid "Battery fully charged"
+msgstr "Батеријата е наполнета"
+
+#: ../sugar/activity/activity.py:73
+msgid "Private"
+msgstr "Приватно"
+
+#: ../sugar/activity/activity.py:74
+msgid "My Neighborhood"
+msgstr "Мое соседство"
+
+#: ../sugar/activity/activity.py:81
+msgid "Keep"
+msgstr "Зачувај"
+
+#: ../sugar/activity/activity.py:87
+msgid "Stop"
+msgstr "Стоп"
+
+#: ../sugar/activity/activity.py:260
#, python-format
msgid "%s Activity"
msgstr "%s активност"
diff --git a/services/shell/objecttypeservice.py b/services/shell/objecttypeservice.py
index e12398e..01e387d 100644
--- a/services/shell/objecttypeservice.py
+++ b/services/shell/objecttypeservice.py
@@ -17,6 +17,8 @@
import dbus
import dbus.service
+from gettext import gettext as _
+
_REGISTRY_IFACE = "org.laptop.ObjectTypeRegistry"
_REGISTRY_PATH = "/org/laptop/ObjectTypeRegistry"
@@ -28,12 +30,11 @@ class ObjectTypeRegistry(dbus.service.Object):
self._types = {}
- from gettext import gettext as _
- self._add_primitive('Text', _('Text'), 'theme:object-text',
+ self._add_primitive('Text', _('Text'), 'theme:text',
[ 'text/plain', 'text/rtf', 'application/pdf',
'application/x-pdf', 'text/html',
'application/vnd.oasis.opendocument.text' ])
- self._add_primitive('Image', _('Image'), 'theme:object-image',
+ self._add_primitive('Image', _('Image'), 'theme:image',
[ 'image/png', 'image/gif', 'image/jpeg' ])
def _add_primitive(self, type_id, name, icon, mime_types):
diff --git a/shell/intro/colorpicker.py b/shell/intro/colorpicker.py
index f7ab59c..d70d84c 100644
--- a/shell/intro/colorpicker.py
+++ b/shell/intro/colorpicker.py
@@ -26,7 +26,7 @@ class ColorPicker(hippo.CanvasBox, hippo.CanvasItem):
self.props.orientation = hippo.ORIENTATION_HORIZONTAL
self._xo = CanvasIcon(size=style.XLARGE_ICON_SIZE,
- icon_name='theme:stock-buddy')
+ icon_name='theme:xo')
self._set_random_colors()
self._xo.connect('activated', self._xo_activated_cb)
self.append(self._xo)
diff --git a/shell/model/homeactivity.py b/shell/model/homeactivity.py
index e95fe9a..434a3a6 100644
--- a/shell/model/homeactivity.py
+++ b/shell/model/homeactivity.py
@@ -103,7 +103,7 @@ class HomeActivity(gobject.GObject):
if self._activity_info:
return self._activity_info.icon
else:
- return 'theme:stock-missing'
+ return 'theme:image-missing'
def get_icon_color(self):
"""Retrieve the appropriate icon colour for this activity
diff --git a/shell/view/BuddyIcon.py b/shell/view/BuddyIcon.py
index ebd12f0..f16b71c 100644
--- a/shell/view/BuddyIcon.py
+++ b/shell/view/BuddyIcon.py
@@ -20,7 +20,7 @@ from view.BuddyMenu import BuddyMenu
class BuddyIcon(CanvasIcon):
def __init__(self, shell, buddy):
- CanvasIcon.__init__(self, icon_name='theme:stock-buddy',
+ CanvasIcon.__init__(self, icon_name='theme:xo',
xo_color=buddy.get_color())
self._shell = shell
diff --git a/shell/view/BuddyMenu.py b/shell/view/BuddyMenu.py
index e3efb5c..e3d1a20 100644
--- a/shell/view/BuddyMenu.py
+++ b/shell/view/BuddyMenu.py
@@ -80,10 +80,10 @@ class BuddyMenu(Palette):
friends = shell_model.get_friends()
if friends.has_buddy(self._buddy):
- menu_item = MenuItem(_('Remove friend'), 'stock-remove')
+ menu_item = MenuItem(_('Remove friend'), 'list-remove')
menu_item.connect('activate', self._remove_friend_cb)
else:
- menu_item = MenuItem(_('Make friend'), 'stock-add')
+ menu_item = MenuItem(_('Make friend'), 'list-add')
menu_item.connect('activate', self._make_friend_cb)
self.menu.append(menu_item)
diff --git a/shell/view/clipboardicon.py b/shell/view/clipboardicon.py
index 2e60e36..c9d910a 100644
--- a/shell/view/clipboardicon.py
+++ b/shell/view/clipboardicon.py
@@ -88,7 +88,7 @@ class ClipboardIcon(CanvasIcon):
if icon_name:
self.props.icon_name = icon_name
else:
- self.props.icon_name = 'theme:object-generic'
+ self.props.icon_name = 'theme:unknown-object'
self._name = name
self._percent = percent
diff --git a/shell/view/clipboardmenu.py b/shell/view/clipboardmenu.py
index 3acf90e..7b0c52a 100644
--- a/shell/view/clipboardmenu.py
+++ b/shell/view/clipboardmenu.py
@@ -63,12 +63,12 @@ class ClipboardMenu(Palette):
self.append(self._preview_text)
"""
- self._remove_item = MenuItem(_('Remove'), 'stock-remove')
+ self._remove_item = MenuItem(_('Remove'), 'list-remove')
self._remove_item.connect('activate', self._remove_item_activate_cb)
self.menu.append(self._remove_item)
self._remove_item.show()
- self._open_item = MenuItem(_('Open'), 'stock-keep')
+ self._open_item = MenuItem(_('Open'))
self._open_item_activate_sid = self._open_item.connect('activate',
self._open_item_activate_cb)
self.menu.append(self._open_item)
diff --git a/shell/view/devices/battery.py b/shell/view/devices/battery.py
index 16863d3..cdd2e78 100644
--- a/shell/view/devices/battery.py
+++ b/shell/view/devices/battery.py
@@ -21,7 +21,7 @@ from sugar.graphics import canvasicon
from sugar.graphics import style
from sugar.graphics.palette import Palette
-_ICON_NAME = 'device-battery'
+_ICON_NAME = 'battery'
_STATUS_CHARGING = 0
_STATUS_DISCHARGING = 1
diff --git a/shell/view/devices/network/mesh.py b/shell/view/devices/network/mesh.py
index 1f108cb..10830f2 100644
--- a/shell/view/devices/network/mesh.py
+++ b/shell/view/devices/network/mesh.py
@@ -22,7 +22,7 @@ from model.devices import device
class DeviceView(canvasicon.CanvasIcon):
def __init__(self, model):
canvasicon.CanvasIcon.__init__(self, size=style.MEDIUM_ICON_SIZE,
- icon_name='theme:device-network-mesh')
+ icon_name='theme:network-mesh')
self._model = model
model.connect('notify::state', self._state_changed_cb)
diff --git a/shell/view/devices/network/wired.py b/shell/view/devices/network/wired.py
index e2b9ce3..662c672 100644
--- a/shell/view/devices/network/wired.py
+++ b/shell/view/devices/network/wired.py
@@ -19,4 +19,4 @@ from view.devices import deviceview
class DeviceView(deviceview.DeviceView):
def __init__(self, model):
deviceview.DeviceView.__init__(self, model)
- self.props.icon_name = 'theme:stock-net-wired'
+ self.props.icon_name = 'theme:network-wired'
diff --git a/shell/view/devices/network/wireless.py b/shell/view/devices/network/wireless.py
index 0be096d..9f0abd8 100644
--- a/shell/view/devices/network/wireless.py
+++ b/shell/view/devices/network/wireless.py
@@ -22,7 +22,7 @@ from model.devices.network import wireless
from sugar.graphics.canvasicon import CanvasIcon
from model.devices import device
-_ICON_NAME = 'device-network-wireless'
+_ICON_NAME = 'network-wireless'
class DeviceView(CanvasIcon):
def __init__(self, model):
diff --git a/shell/view/home/MeshBox.py b/shell/view/home/MeshBox.py
index e632770..ff6d290 100644
--- a/shell/view/home/MeshBox.py
+++ b/shell/view/home/MeshBox.py
@@ -36,7 +36,7 @@ from view.BuddyIcon import BuddyIcon
from view.pulsingicon import PulsingIcon
from view.home.snowflakelayout import SnowflakeLayout
-_ICON_NAME = 'device-network-wireless'
+_ICON_NAME = 'network-wireless'
class AccessPointView(PulsingIcon):
def __init__(self, model):
@@ -116,7 +116,7 @@ class AccessPointView(PulsingIcon):
]
-_MESH_ICON_NAME = 'theme:device-network-mesh'
+_MESH_ICON_NAME = 'theme:network-mesh'
class MeshDeviceView(PulsingIcon):
def __init__(self, nm_device):
diff --git a/shell/view/home/MyIcon.py b/shell/view/home/MyIcon.py
index 2168b0b..f4013b9 100644
--- a/shell/view/home/MyIcon.py
+++ b/shell/view/home/MyIcon.py
@@ -20,5 +20,5 @@ from sugar import profile
class MyIcon(CanvasIcon):
def __init__(self, size):
CanvasIcon.__init__(self, size=size,
- icon_name='theme:stock-buddy',
+ icon_name='theme:xo',
xo_color=profile.get_color())
diff --git a/sugar/datastore/dbus_helpers.py b/sugar/datastore/dbus_helpers.py
index f0cfa3b..442a35d 100644
--- a/sugar/datastore/dbus_helpers.py
+++ b/sugar/datastore/dbus_helpers.py
@@ -28,55 +28,63 @@ DS_DBUS_SERVICE = "org.laptop.sugar.DataStore"
DS_DBUS_INTERFACE = "org.laptop.sugar.DataStore"
DS_DBUS_PATH = "/org/laptop/sugar/DataStore"
-_bus = dbus.SessionBus()
-_data_store = dbus.Interface(_bus.get_object(DS_DBUS_SERVICE, DS_DBUS_PATH),
- DS_DBUS_INTERFACE)
+_data_store = None
+
+def _get_data_store():
+ global _data_store
+
+ if not _data_store:
+ _bus = dbus.SessionBus()
+ _data_store = dbus.Interface(_bus.get_object(DS_DBUS_SERVICE,
+ DS_DBUS_PATH),
+ DS_DBUS_INTERFACE)
+ return _data_store
def create(properties, filename):
- object_id = _data_store.create(dbus.Dictionary(properties), filename)
+ object_id = _get_data_store().create(dbus.Dictionary(properties), filename)
logging.debug('dbus_helpers.create: ' + object_id)
return object_id
def update(uid, properties, filename, reply_handler=None, error_handler=None, timeout=-1):
logging.debug('dbus_helpers.update: %s, %s, %s' % (uid, filename, properties))
if reply_handler and error_handler:
- _data_store.update(uid, dbus.Dictionary(properties), filename,
+ _get_data_store().update(uid, dbus.Dictionary(properties), filename,
reply_handler=reply_handler,
error_handler=error_handler,
timeout=timeout)
else:
- _data_store.update(uid, dbus.Dictionary(properties), filename)
+ _get_data_store().update(uid, dbus.Dictionary(properties), filename)
def delete(uid):
logging.debug('dbus_helpers.delete: %r' % uid)
- _data_store.delete(uid)
+ _get_data_store().delete(uid)
def get_properties(uid):
logging.debug('dbus_helpers.get_properties: %s' % uid)
- return _data_store.get_properties(uid)
+ return _get_data_store().get_properties(uid)
def get_filename(uid):
- filename = _data_store.get_filename(uid)
+ filename = _get_data_store().get_filename(uid)
logging.debug('dbus_helpers.get_filename: %s, %s' % (uid, filename))
return filename
def find(query, reply_handler, error_handler):
logging.debug('dbus_helpers.find: %r' % query)
if reply_handler and error_handler:
- return _data_store.find(query, reply_handler=reply_handler,
+ return _get_data_store().find(query, reply_handler=reply_handler,
error_handler=error_handler)
else:
- return _data_store.find(query)
+ return _get_data_store().find(query)
def mount(uri, options):
- return _data_store.mount(uri, options)
+ return _get_data_store().mount(uri, options)
def unmount(mount_point_id):
- _data_store.unmount(mount_point_id)
+ _get_data_store().unmount(mount_point_id)
def mounts():
- return _data_store.mounts()
+ return _get_data_store().mounts()
def get_unique_values(key):
- return _data_store.get_uniquevaluesfor(key, dbus.Dictionary({}, signature='ss'))
+ return _get_data_store().get_uniquevaluesfor(key, dbus.Dictionary({}, signature='ss'))
diff --git a/sugar/graphics/objectchooser.py b/sugar/graphics/objectchooser.py
index 5b09e13..46739f6 100644
--- a/sugar/graphics/objectchooser.py
+++ b/sugar/graphics/objectchooser.py
@@ -150,7 +150,7 @@ class CollapsedEntry(CanvasRoundBox):
self._icon_name = type.icon
if not self._icon_name:
- self._icon_name = 'theme:stock-missing'
+ self._icon_name = 'theme:image-missing'
return self._icon_name
diff --git a/sugar/graphics/palette.py b/sugar/graphics/palette.py
index 368a0f6..3573e96 100644
--- a/sugar/graphics/palette.py
+++ b/sugar/graphics/palette.py
@@ -87,9 +87,7 @@ class Palette(gtk.Window):
'invoker' : (object, None, None,
gobject.PARAM_READWRITE),
'position' : (gobject.TYPE_INT, None, None, 0, 6,
- 0, gobject.PARAM_READWRITE),
- 'draw-gap' : (bool, None, None, False,
- gobject.PARAM_READWRITE)
+ 0, gobject.PARAM_READWRITE)
}
__gsignals__ = {
@@ -114,7 +112,6 @@ class Palette(gtk.Window):
self._group_id = None
self._up = False
self._position = self.DEFAULT
- self._draw_gap = False
self._palette_popup_sid = None
self._popup_anim = animator.Animator(0.3, 10)
@@ -206,9 +203,6 @@ class Palette(gtk.Window):
self._invoker.connect('mouse-leave', self._invoker_mouse_leave_cb)
elif pspec.name == 'position':
self._position = value
- elif pspec.name == 'draw-gap':
- self._draw_gap = value
- self.queue_draw()
else:
raise AssertionError
@@ -217,8 +211,6 @@ class Palette(gtk.Window):
return self._invoker
elif pspec.name == 'position':
return self._position
- elif pspec.name == 'draw-gap':
- return self._draw_gap
else:
raise AssertionError
@@ -228,7 +220,7 @@ class Palette(gtk.Window):
def do_expose_event(self, event):
# We want to draw a border with a beautiful gap
- if self._draw_gap:
+ if self._invoker.has_rectangle_gap():
invoker = self._invoker.get_rect()
palette = self.get_rect()
@@ -398,6 +390,9 @@ class Palette(gtk.Window):
self.menu.set_active(True)
self.show()
+ if self._invoker:
+ self._invoker.notify_popup()
+
self._up = True
_palette_observer.emit('popup', self)
self.emit('popup')
@@ -406,9 +401,13 @@ class Palette(gtk.Window):
if not self._palette_popup_sid is None:
_palette_observer.disconnect(self._palette_popup_sid)
self._palette_popup_sid = None
+
self.menu.set_active(False)
self.hide()
+ if self._invoker:
+ self._invoker.notify_popdown()
+
self._up = False
self.emit('popdown')
@@ -535,6 +534,12 @@ class Invoker(gobject.GObject):
def __init__(self):
gobject.GObject.__init__(self)
+ def has_rectangle_gap(self):
+ return False
+
+ def draw_rectangle(self, event, palette):
+ pass
+
def get_default_position(self):
return Palette.AROUND
@@ -543,6 +548,12 @@ class Invoker(gobject.GObject):
height = gtk.gdk.screen_height()
return gtk.gdk.Rectangle(0, 0, width, height)
+ def notify_popup(self):
+ pass
+
+ def notify_popdown(self):
+ pass
+
class WidgetInvoker(Invoker):
def __init__(self, widget):
Invoker.__init__(self)
@@ -562,31 +573,24 @@ class WidgetInvoker(Invoker):
return gtk.gdk.Rectangle(x, y, width, height)
- def draw_invoker_rect(self, event, palette):
+ def has_rectangle_gap(self):
+ return True
+
+ def draw_rectangle(self, event, palette):
style = self._widget.style
- if palette.is_up():
- gap = _calculate_gap(self.get_rect(), palette.get_rect())
-
- if gap:
- style.paint_box_gap(event.window, gtk.STATE_PRELIGHT,
- gtk.SHADOW_IN, event.area, self._widget,
- "palette-invoker",
- self._widget.allocation.x,
- self._widget.allocation.y,
- self._widget.allocation.width,
- self._widget.allocation.height,
- gap[0], gap[1], gap[2])
- else:
- style.paint_box(event.window, gtk.STATE_PRELIGHT,
+ gap = _calculate_gap(self.get_rect(), palette.get_rect())
+ if gap:
+ style.paint_box_gap(event.window, gtk.STATE_PRELIGHT,
gtk.SHADOW_IN, event.area, self._widget,
"palette-invoker",
self._widget.allocation.x,
self._widget.allocation.y,
self._widget.allocation.width,
- self._widget.allocation.height)
+ self._widget.allocation.height,
+ gap[0], gap[1], gap[2])
else:
style.paint_box(event.window, gtk.STATE_PRELIGHT,
- gtk.SHADOW_NONE, event.area, self._widget,
+ gtk.SHADOW_IN, event.area, self._widget,
"palette-invoker",
self._widget.allocation.x,
self._widget.allocation.y,
@@ -602,6 +606,12 @@ class WidgetInvoker(Invoker):
def get_toplevel(self):
return self._widget.get_toplevel()
+ def notify_popup(self):
+ self._widget.queue_draw()
+
+ def notify_popdown(self):
+ self._widget.queue_draw()
+
class CanvasInvoker(Invoker):
def __init__(self, item):
Invoker.__init__(self)
diff --git a/sugar/graphics/radiotoolbutton.py b/sugar/graphics/radiotoolbutton.py
index fb584ee..4ffc7d1 100644
--- a/sugar/graphics/radiotoolbutton.py
+++ b/sugar/graphics/radiotoolbutton.py
@@ -40,25 +40,15 @@ class RadioToolButton(gtk.RadioToolButton):
def set_palette(self, palette):
self._palette = palette
self._palette.props.invoker = WidgetInvoker(self.child)
- self._palette.props.draw_gap = True
-
- self._palette.connect("popup", self._palette_changed)
- self._palette.connect("popdown", self._palette_changed)
def set_tooltip(self, text):
- self._palette = Palette(text)
- self._palette.props.invoker = WidgetInvoker(self.child)
+ self._set_palette(Palette(text))
def do_expose_event(self, event):
- if self._palette and self._palette.props.draw_gap:
- if self._palette.is_up() or self.child.state == gtk.STATE_PRELIGHT:
- invoker = self._palette.props.invoker
- invoker.draw_invoker_rect(event, self._palette)
+ if self._palette and self._palette.is_up():
+ invoker = self._palette.props.invoker
+ invoker.draw_rectangle(event, self._palette)
gtk.RadioToolButton.do_expose_event(self, event)
- def _palette_changed(self, palette):
- # Force a redraw to update the invoker rectangle
- self.queue_draw()
-
palette = property(get_palette, set_palette)
diff --git a/sugar/graphics/toggletoolbutton.py b/sugar/graphics/toggletoolbutton.py
index 41050e2..74e78a6 100644
--- a/sugar/graphics/toggletoolbutton.py
+++ b/sugar/graphics/toggletoolbutton.py
@@ -39,25 +39,15 @@ class ToggleToolButton(gtk.ToggleToolButton):
def set_palette(self, palette):
self._palette = palette
self._palette.props.invoker = WidgetInvoker(self.child)
- self._palette.props.draw_gap = True
-
- self._palette.connect("popup", self._palette_changed)
- self._palette.connect("popdown", self._palette_changed)
def set_tooltip(self, text):
- self._palette = Palette(text)
- self._palette.props.invoker = WidgetInvoker(self.child)
+ self._set_palette(Palette(text))
def do_expose_event(self, event):
- if self._palette and self._palette.props.draw_gap:
- if self._palette.is_up() or self.child.state == gtk.STATE_PRELIGHT:
- invoker = self._palette.props.invoker
- invoker.draw_invoker_rect(event, self._palette)
+ if self._palette and self._palette.is_up():
+ invoker = self._palette.props.invoker
+ invoker.draw_rectangle(event, self._palette)
gtk.ToggleToolButton.do_expose_event(self, event)
- def _palette_changed(self, palette):
- # Force a redraw to update the invoker rectangle
- self.queue_draw()
-
palette = property(get_palette, set_palette)
diff --git a/sugar/graphics/toolbutton.py b/sugar/graphics/toolbutton.py
index 52a5d62..8e982e4 100644
--- a/sugar/graphics/toolbutton.py
+++ b/sugar/graphics/toolbutton.py
@@ -42,19 +42,14 @@ class ToolButton(gtk.ToolButton):
def set_palette(self, palette):
self._palette = palette
self._palette.props.invoker = WidgetInvoker(self.child)
- self._palette.props.draw_gap = True
-
- self._palette.connect("popup", self._palette_changed)
- self._palette.connect("popdown", self._palette_changed)
def set_tooltip(self, text):
self.set_palette(Palette(text))
def do_expose_event(self, event):
- if self._palette and self._palette.props.draw_gap:
- if self._palette.is_up() or self.child.state == gtk.STATE_PRELIGHT:
- invoker = self._palette.props.invoker
- invoker.draw_invoker_rect(event, self._palette)
+ if self._palette and self._palette.is_up():
+ invoker = self._palette.props.invoker
+ invoker.draw_rectangle(event, self._palette)
gtk.ToolButton.do_expose_event(self, event)
@@ -62,8 +57,4 @@ class ToolButton(gtk.ToolButton):
if self._palette:
self._palette.popdown(True)
- def _palette_changed(self, palette):
- # Force a redraw to update the invoker rectangle
- self.queue_draw()
-
palette = property(get_palette, set_palette)
diff --git a/tests/test-snowflake-layout.py b/tests/test-snowflake-layout.py
index 279f638..bf3e69e 100755
--- a/tests/test-snowflake-layout.py
+++ b/tests/test-snowflake-layout.py
@@ -37,12 +37,12 @@ def add_snowflake(parent, size):
box.set_layout(layout)
icon = CanvasIcon(scale=0.8, xo_color=XoColor(),
- icon_name='theme:object-link')
+ icon_name='theme:xo')
layout.add_center(icon)
for k in range(0, size):
icon = CanvasIcon(scale=0.4, xo_color=XoColor(),
- icon_name='theme:stock-buddy')
+ icon_name='theme:xo')
layout.add(icon)
window = gtk.Window()
diff --git a/tests/test-spread-layout.py b/tests/test-spread-layout.py
index 412d7fc..7d12315 100755
--- a/tests/test-spread-layout.py
+++ b/tests/test-spread-layout.py
@@ -35,7 +35,7 @@ def _create_icon():
scale = 1.0 + random.random() * 1.5
icon = CanvasIcon(scale=scale, xo_color=color,
- icon_name='theme:stock-buddy')
+ icon_name='theme:xo')
icon.set_tooltip('Test')
layout.add(icon)
diff --git a/tests/test-ui.py b/tests/test-ui.py
index bb80201..0701b3e 100755
--- a/tests/test-ui.py
+++ b/tests/test-ui.py
@@ -35,16 +35,20 @@ class TextToolbar(gtk.Toolbar):
self.insert(button, -1)
button.show()
- palette = Palette()
+ palette = Palette('Title')
button.set_palette(palette)
- palette.set_primary_state('This is a palette')
menu_item = gtk.MenuItem('First menu item')
- palette.append_menu_item(menu_item)
+ palette.menu.append(menu_item)
+ menu_item.show()
+
menu_item = gtk.MenuItem('Second menu item')
- palette.append_menu_item(menu_item)
+ palette.menu.append(menu_item)
+ menu_item.show()
+
menu_item = gtk.MenuItem('Third menu item')
- palette.append_menu_item(menu_item)
+ palette.menu.append(menu_item)
+ menu_item.show()
class ImageToolbar(gtk.Toolbar):
def __init__(self):