Get rid of the old Grid and CanvasBox
This commit is contained in:
parent
6f337e0b14
commit
717bdd66f4
@ -2,7 +2,6 @@ import gtk
|
|||||||
import gobject
|
import gobject
|
||||||
import wnck
|
import wnck
|
||||||
|
|
||||||
from sugar.canvas.Grid import Grid
|
|
||||||
from view.home.HomeWindow import HomeWindow
|
from view.home.HomeWindow import HomeWindow
|
||||||
from sugar.presence import PresenceService
|
from sugar.presence import PresenceService
|
||||||
from view.ActivityHost import ActivityHost
|
from view.ActivityHost import ActivityHost
|
||||||
@ -28,7 +27,6 @@ class Shell(gobject.GObject):
|
|||||||
self._model = model
|
self._model = model
|
||||||
self._hosts = {}
|
self._hosts = {}
|
||||||
self._screen = wnck.screen_get_default()
|
self._screen = wnck.screen_get_default()
|
||||||
self._grid = Grid()
|
|
||||||
|
|
||||||
self._key_grabber = KeyGrabber()
|
self._key_grabber = KeyGrabber()
|
||||||
self._key_grabber.connect('key-pressed',
|
self._key_grabber.connect('key-pressed',
|
||||||
@ -108,9 +106,6 @@ class Shell(gobject.GObject):
|
|||||||
def get_model(self):
|
def get_model(self):
|
||||||
return self._model
|
return self._model
|
||||||
|
|
||||||
def get_grid(self):
|
|
||||||
return self._grid
|
|
||||||
|
|
||||||
def join_activity(self, bundle_id, activity_id):
|
def join_activity(self, bundle_id, activity_id):
|
||||||
pservice = PresenceService.get_instance()
|
pservice = PresenceService.get_instance()
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ class Frame:
|
|||||||
|
|
||||||
grid = Grid()
|
grid = Grid()
|
||||||
|
|
||||||
self._menu_shell = MenuShell(grid)
|
self._menu_shell = MenuShell()
|
||||||
self._menu_shell.connect('activated', self._menu_shell_activated_cb)
|
self._menu_shell.connect('activated', self._menu_shell_activated_cb)
|
||||||
self._menu_shell.connect('deactivated', self._menu_shell_deactivated_cb)
|
self._menu_shell.connect('deactivated', self._menu_shell_deactivated_cb)
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ class ActivityMenu(Menu):
|
|||||||
ACTION_SHARE = 1
|
ACTION_SHARE = 1
|
||||||
ACTION_CLOSE = 2
|
ACTION_CLOSE = 2
|
||||||
|
|
||||||
def __init__(self, grid, activity_host):
|
def __init__(self, activity_host):
|
||||||
Menu.__init__(self, activity_host.get_title())
|
Menu.__init__(self, activity_host.get_title())
|
||||||
|
|
||||||
icon = CanvasIcon(icon_name='stock-share-mesh')
|
icon = CanvasIcon(icon_name='stock-share-mesh')
|
||||||
@ -37,7 +37,7 @@ class ActivityIcon(MenuIcon):
|
|||||||
self.set_menu_strategy(MenuStrategy())
|
self.set_menu_strategy(MenuStrategy())
|
||||||
|
|
||||||
def create_menu(self):
|
def create_menu(self):
|
||||||
menu = ActivityMenu(self._shell.get_grid(), self._activity_host)
|
menu = ActivityMenu(self._activity_host)
|
||||||
menu.connect('action', self._action_cb)
|
menu.connect('action', self._action_cb)
|
||||||
return menu
|
return menu
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ class HomeWindow(gtk.Window):
|
|||||||
self.add(self._nb)
|
self.add(self._nb)
|
||||||
self._nb.show()
|
self._nb.show()
|
||||||
|
|
||||||
menu_shell = MenuShell(shell.get_grid())
|
menu_shell = MenuShell()
|
||||||
|
|
||||||
self._add_page(HomeGroup(shell))
|
self._add_page(HomeGroup(shell))
|
||||||
|
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
import goocanvas
|
|
||||||
|
|
||||||
class CanvasBox(goocanvas.Group):
|
|
||||||
VERTICAL = 0
|
|
||||||
HORIZONTAL = 1
|
|
||||||
|
|
||||||
def __init__(self, grid, orientation, padding=0):
|
|
||||||
goocanvas.Group.__init__(self)
|
|
||||||
|
|
||||||
self._grid = grid
|
|
||||||
self._orientation = orientation
|
|
||||||
self._padding = padding
|
|
||||||
self._constraints = {}
|
|
||||||
|
|
||||||
self.connect('child-added', self._child_added_cb)
|
|
||||||
self.connect('child-removed', self._child_removed_cb)
|
|
||||||
|
|
||||||
def set_constraints(self, item, width, height):
|
|
||||||
self._constraints[item] = [width, height]
|
|
||||||
|
|
||||||
def _layout(self, start_item):
|
|
||||||
if start_item == -1:
|
|
||||||
start_item = self.get_n_children() - 1
|
|
||||||
|
|
||||||
pos = 0
|
|
||||||
i = 0
|
|
||||||
while i < self.get_n_children():
|
|
||||||
item = self.get_child(i)
|
|
||||||
[width, height] = self._constraints[item]
|
|
||||||
|
|
||||||
pos += self._padding
|
|
||||||
|
|
||||||
if self._orientation == CanvasBox.VERTICAL:
|
|
||||||
x = self._padding
|
|
||||||
y = pos
|
|
||||||
pos += height + self._padding
|
|
||||||
else:
|
|
||||||
x = pos
|
|
||||||
y = self._padding
|
|
||||||
pos += width + self._padding
|
|
||||||
|
|
||||||
if i >= start_item:
|
|
||||||
self._grid.set_constraints(item, x, y, width, height)
|
|
||||||
|
|
||||||
i += 1
|
|
||||||
|
|
||||||
def _child_added_cb(self, item, position):
|
|
||||||
self._layout(position)
|
|
||||||
|
|
||||||
def _child_removed_cb(self, item, position):
|
|
||||||
self._layout(position)
|
|
@ -1,83 +0,0 @@
|
|||||||
import gtk
|
|
||||||
import goocanvas
|
|
||||||
import cairo
|
|
||||||
|
|
||||||
from sugar.canvas.IconItem import IconItem
|
|
||||||
|
|
||||||
class Grid:
|
|
||||||
COLS = 80.0
|
|
||||||
ROWS = 60.0
|
|
||||||
MACRO_CELL_FACTOR = 5.0
|
|
||||||
|
|
||||||
def get_macro_rows(self):
|
|
||||||
return Grid.ROWS / Grid.MACRO_CELL_FACTOR
|
|
||||||
|
|
||||||
def get_macro_cols(self):
|
|
||||||
return Grid.COLS / Grid.MACRO_CELL_FACTOR
|
|
||||||
|
|
||||||
def macro_to_micro(self, x, y):
|
|
||||||
return [round(x * Grid.MACRO_CELL_FACTOR),
|
|
||||||
round(y * Grid.MACRO_CELL_FACTOR)]
|
|
||||||
|
|
||||||
def micro_to_macro(self, x, y):
|
|
||||||
return [round(x / Grid.MACRO_CELL_FACTOR),
|
|
||||||
round(y / Grid.MACRO_CELL_FACTOR)]
|
|
||||||
|
|
||||||
def convert_from_screen(self, x, y):
|
|
||||||
factor = Grid.COLS / gtk.gdk.screen_width()
|
|
||||||
|
|
||||||
grid_x = round(x * factor)
|
|
||||||
grid_y = round(y * factor)
|
|
||||||
|
|
||||||
return [grid_x, grid_y]
|
|
||||||
|
|
||||||
def convert_to_canvas(self, grid_x, grid_y):
|
|
||||||
scale = 1200 / Grid.COLS
|
|
||||||
return [grid_x * scale, grid_y * scale]
|
|
||||||
|
|
||||||
def set_constraints(self, component, x, y, width=-1, height=-1):
|
|
||||||
if isinstance(component, gtk.Window):
|
|
||||||
self._layout_window(component, x, y, width, height)
|
|
||||||
elif isinstance(component, goocanvas.Item):
|
|
||||||
self._layout_item(component, x, y, width, height)
|
|
||||||
elif isinstance(component, goocanvas.CanvasView):
|
|
||||||
self._layout_canvas(component, x, y, width, height)
|
|
||||||
|
|
||||||
def _layout_window(self, window, x, y, width, height):
|
|
||||||
scale = gtk.gdk.screen_width() / Grid.COLS
|
|
||||||
|
|
||||||
window.move(int(x * scale), int(y * scale))
|
|
||||||
window.resize(int(width * scale), int(height * scale))
|
|
||||||
|
|
||||||
def _layout_item(self, item, x, y, width, height):
|
|
||||||
scale = 1200 / Grid.COLS
|
|
||||||
|
|
||||||
self._allocate_item_position(item, x * scale, y * scale)
|
|
||||||
if width > 0 and height > 0:
|
|
||||||
self._allocate_item_size(item, width * scale, height * scale)
|
|
||||||
|
|
||||||
# FIXME We really need layout support in goocanvas
|
|
||||||
def _allocate_item_size(self, item, width, height):
|
|
||||||
if isinstance(item, goocanvas.Rect):
|
|
||||||
item.props.width = width - (item.props.line_width - 1) * 2
|
|
||||||
item.props.height = height - (item.props.line_width - 1) * 2
|
|
||||||
elif isinstance(item, goocanvas.Text):
|
|
||||||
item.props.width = width
|
|
||||||
elif isinstance(item, goocanvas.Image):
|
|
||||||
item.props.width = width
|
|
||||||
item.props.height = height
|
|
||||||
elif isinstance(item, IconItem):
|
|
||||||
item.props.size = width
|
|
||||||
|
|
||||||
def _allocate_item_position(self, item, x, y):
|
|
||||||
if isinstance(item, goocanvas.Rect):
|
|
||||||
x = x + (item.props.line_width - 1)
|
|
||||||
y = y + (item.props.line_width - 1)
|
|
||||||
|
|
||||||
matrix = cairo.Matrix(1, 0, 0, 1, 0, 0)
|
|
||||||
matrix.translate(x, y)
|
|
||||||
item.set_transform(matrix)
|
|
||||||
|
|
||||||
def _layout_canvas(self, canvas, x, y, width, height):
|
|
||||||
scale = 1200 / Grid.COLS
|
|
||||||
canvas.set_bounds(x * scale, y * scale, width * scale, height * scale)
|
|
@ -8,10 +8,9 @@ class MenuShell(gobject.GObject):
|
|||||||
gobject.TYPE_NONE, ([])),
|
gobject.TYPE_NONE, ([])),
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, grid):
|
def __init__(self):
|
||||||
gobject.GObject.__init__(self)
|
gobject.GObject.__init__(self)
|
||||||
self._menu_controller = None
|
self._menu_controller = None
|
||||||
self._grid = grid
|
|
||||||
|
|
||||||
def is_active(self):
|
def is_active(self):
|
||||||
return (self._menu_controller != None)
|
return (self._menu_controller != None)
|
||||||
@ -25,6 +24,3 @@ class MenuShell(gobject.GObject):
|
|||||||
if self._menu_controller:
|
if self._menu_controller:
|
||||||
self._menu_controller.popdown()
|
self._menu_controller.popdown()
|
||||||
self._menu_controller = controller
|
self._menu_controller = controller
|
||||||
|
|
||||||
def get_grid(self):
|
|
||||||
return self._grid
|
|
||||||
|
Loading…
Reference in New Issue
Block a user