Get rid of the old Grid and CanvasBox

This commit is contained in:
Marco Pesenti Gritti 2006-10-04 00:25:03 +02:00
parent 6f337e0b14
commit 717bdd66f4
7 changed files with 5 additions and 148 deletions

View File

@ -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()

View File

@ -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)

View File

@ -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

View File

@ -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))

View File

@ -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)

View File

@ -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)

View File

@ -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