From decec5eb7885fef9820226d47c2224e689acc573 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <[EMAIL PROTECTED]>
Date: Wed, 25 Jun 2008 15:35:32 +0200
Subject: [PATCH] #7015 Add proper alignment support to the "tray" control
---
src/sugar/graphics/tray.py | 50 +++++++++++++++++++++++++++++++++++++++----
1 files changed, 45 insertions(+), 5 deletions(-)
diff --git a/src/sugar/graphics/tray.py b/src/sugar/graphics/tray.py
index 2f5db9a..200249e 100644
--- a/src/sugar/graphics/tray.py
+++ b/src/sugar/graphics/tray.py
@@ -207,10 +207,12 @@ class _TrayScrollButton(ToolButton):
viewport = property(fset=set_viewport)
+ALIGN_TO_START = 0
+ALIGN_TO_END = 1
+
class HTray(gtk.HBox):
def __init__(self, **kwargs):
gobject.GObject.__init__(self, **kwargs)
- self.set_direction(gtk.TEXT_DIR_LTR)
scroll_left = _TrayScrollButton('go-left', _PREVIOUS_PAGE)
self.pack_start(scroll_left, False)
@@ -225,17 +227,36 @@ class HTray(gtk.HBox):
scroll_left.viewport = self._viewport
scroll_right.viewport = self._viewport
+ if self.align == ALIGN_TO_END:
+ spacer = gtk.SeparatorToolItem()
+ spacer.set_size_request(0, 0)
+ spacer.props.draw = False
+ spacer.set_expand(True)
+ self._viewport.traybar.insert(spacer, 0)
+ spacer.show()
+
+ align = gobject.property(flags=gobject.PARAM_CONSTRUCT_ONLY | gobject.PARAM_READWRITE,
+ default=ALIGN_TO_START, type=int)
+
def get_children(self):
- return self._viewport.traybar.get_children()
+ children = self._viewport.traybar.get_children()[:]
+ if self.align == ALIGN_TO_END:
+ children = children[1:]
+ return children
def add_item(self, item, index=-1):
+ if self.align == ALIGN_TO_END and index > -1:
+ index += 1
self._viewport.traybar.insert(item, index)
def remove_item(self, item):
self._viewport.traybar.remove(item)
def get_item_index(self, item):
- return self._viewport.traybar.get_item_index(item)
+ index = self._viewport.traybar.get_item_index(item)
+ if self.align == ALIGN_TO_END:
+ index -= 1
+ return index
def scroll_to_item(self, item):
self._viewport.scroll_to_item(item)
@@ -259,17 +280,36 @@ class VTray(gtk.VBox):
scroll_left.viewport = self._viewport
scroll_right.viewport = self._viewport
+ if self.align == ALIGN_TO_END:
+ spacer = gtk.SeparatorToolItem()
+ spacer.set_size_request(0, 0)
+ spacer.props.draw = False
+ spacer.set_expand(True)
+ self._viewport.traybar.insert(spacer, 0)
+ spacer.show()
+
+ align = gobject.property(flags=gobject.PARAM_CONSTRUCT_ONLY | gobject.PARAM_READWRITE,
+ default=ALIGN_TO_START, type=int)
+
def get_children(self):
- return self._viewport.traybar.get_children()
+ children = self._viewport.traybar.get_children()[:]
+ if self.align == ALIGN_TO_END:
+ children = children[1:]
+ return children
def add_item(self, item, index=-1):
+ if self.align == ALIGN_TO_END and index > -1:
+ index += 1
self._viewport.traybar.insert(item, index)
def remove_item(self, item):
self._viewport.traybar.remove(item)
def get_item_index(self, item):
- return self._viewport.traybar.get_item_index(item)
+ index = self._viewport.traybar.get_item_index(item)
+ if self.align == ALIGN_TO_END:
+ index -= 1
+ return index
def scroll_to_item(self, item):
self._viewport.scroll_to_item(item)
--
1.5.4.3
From e0629952a2e06fcbe73e812584405146bd440085 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <[EMAIL PROTECTED]>
Date: Wed, 25 Jun 2008 15:36:17 +0200
Subject: [PATCH] #7015 Add proper alignment support to the "tray" control
---
src/view/frame/clipboardtray.py | 6 +++---
src/view/frame/devicestray.py | 7 +++----
2 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/src/view/frame/clipboardtray.py b/src/view/frame/clipboardtray.py
index 0a2e8b4..b5ba093 100644
--- a/src/view/frame/clipboardtray.py
+++ b/src/view/frame/clipboardtray.py
@@ -22,7 +22,7 @@ import gtk
from sugar import util
from sugar.clipboard import clipboardservice
-from sugar.graphics.tray import VTray
+from sugar.graphics import tray
from sugar.graphics import style
from view.clipboardicon import ClipboardIcon
@@ -56,12 +56,12 @@ class _ContextMap:
def has_context(self, context):
return context in self._context_map
-class ClipboardTray(VTray):
+class ClipboardTray(tray.VTray):
MAX_ITEMS = gtk.gdk.screen_height() / style.GRID_CELL_SIZE - 2
def __init__(self):
- VTray.__init__(self)
+ tray.VTray.__init__(self, align=tray.ALIGN_TO_END)
self._icons = {}
self._context_map = _ContextMap()
diff --git a/src/view/frame/devicestray.py b/src/view/frame/devicestray.py
index 7e6e797..f180cba 100644
--- a/src/view/frame/devicestray.py
+++ b/src/view/frame/devicestray.py
@@ -16,16 +16,16 @@
import logging
-from sugar.graphics.tray import HTray
+from sugar.graphics import tray
from view.devices import deviceview
from model import shellmodel
_logger = logging.getLogger('DevicesTray')
-class DevicesTray(HTray):
+class DevicesTray(tray.HTray):
def __init__(self):
- HTray.__init__(self)
+ tray.HTray.__init__(self, align=tray.ALIGN_TO_END)
self._device_icons = {}
devices_model = shellmodel.get_instance().get_devices()
@@ -41,7 +41,6 @@ class DevicesTray(HTray):
def _add_device(self, device):
try:
view = deviceview.create(device)
- # TODO: *Tray classes don't allow yet to set the alignment.
self.add_item(view)
view.show()
self._device_icons[device.get_id()] = view
--
1.5.4.3
_______________________________________________
Sugar mailing list
[email protected]
http://lists.laptop.org/listinfo/sugar