Complete transition to new spread layout.
This commit is contained in:
parent
cc11d5ebd5
commit
f1ecb99207
@ -19,21 +19,24 @@ import random
|
|||||||
import hippo
|
import hippo
|
||||||
import gobject
|
import gobject
|
||||||
|
|
||||||
from sugar.graphics.spreadbox import SpreadBox
|
from sugar.graphics.spreadlayout import SpreadLayout
|
||||||
from sugar.graphics import units
|
from sugar.graphics import units
|
||||||
from view.home.MyIcon import MyIcon
|
from view.home.MyIcon import MyIcon
|
||||||
from view.home.FriendView import FriendView
|
from view.home.FriendView import FriendView
|
||||||
|
|
||||||
class FriendsBox(SpreadBox):
|
class FriendsBox(hippo.CanvasBox):
|
||||||
__gtype_name__ = 'SugarFriendsBox'
|
__gtype_name__ = 'SugarFriendsBox'
|
||||||
def __init__(self, shell):
|
def __init__(self, shell):
|
||||||
SpreadBox.__init__(self, background_color=0xe2e2e2ff)
|
hippo.CanvasBox.__init__(self, background_color=0xe2e2e2ff)
|
||||||
|
|
||||||
self._shell = shell
|
self._shell = shell
|
||||||
self._friends = {}
|
self._friends = {}
|
||||||
|
|
||||||
|
self._layout = SpreadLayout()
|
||||||
|
self.set_layout(self._layout)
|
||||||
|
|
||||||
self._my_icon = MyIcon(units.LARGE_ICON_SCALE)
|
self._my_icon = MyIcon(units.LARGE_ICON_SCALE)
|
||||||
self.set_center_item(self._my_icon)
|
self._layout.add_center(self._my_icon)
|
||||||
|
|
||||||
friends = self._shell.get_model().get_friends()
|
friends = self._shell.get_model().get_friends()
|
||||||
|
|
||||||
@ -45,7 +48,7 @@ class FriendsBox(SpreadBox):
|
|||||||
|
|
||||||
def add_friend(self, buddy_info):
|
def add_friend(self, buddy_info):
|
||||||
icon = FriendView(self._shell, buddy_info)
|
icon = FriendView(self._shell, buddy_info)
|
||||||
self.add_item(icon)
|
self._layout.add(icon)
|
||||||
|
|
||||||
self._friends[buddy_info.get_key()] = icon
|
self._friends[buddy_info.get_key()] = icon
|
||||||
|
|
||||||
@ -53,5 +56,5 @@ class FriendsBox(SpreadBox):
|
|||||||
self.add_friend(buddy_info)
|
self.add_friend(buddy_info)
|
||||||
|
|
||||||
def _friend_removed_cb(self, data_model, key):
|
def _friend_removed_cb(self, data_model, key):
|
||||||
self.remove_item(self._friends[key])
|
self._layout.remove(self._friends[key])
|
||||||
del self._friends[key]
|
del self._friends[key]
|
||||||
|
@ -215,8 +215,8 @@ class MeshBox(hippo.CanvasBox):
|
|||||||
self._buddy_to_activity = {}
|
self._buddy_to_activity = {}
|
||||||
self._suspended = True
|
self._suspended = True
|
||||||
|
|
||||||
self.layout = SpreadLayout()
|
self._layout = SpreadLayout()
|
||||||
self.set_layout(self.layout)
|
self.set_layout(self._layout)
|
||||||
|
|
||||||
for buddy_model in self._model.get_buddies():
|
for buddy_model in self._model.get_buddies():
|
||||||
self._add_alone_buddy(buddy_model)
|
self._add_alone_buddy(buddy_model)
|
||||||
@ -280,26 +280,26 @@ class MeshBox(hippo.CanvasBox):
|
|||||||
if not mesh:
|
if not mesh:
|
||||||
return
|
return
|
||||||
self._mesh = MeshDeviceView(mesh)
|
self._mesh = MeshDeviceView(mesh)
|
||||||
self.layout.add(self._mesh)
|
self._layout.add(self._mesh)
|
||||||
|
|
||||||
def _remove_mesh(self):
|
def _remove_mesh(self):
|
||||||
if not self._mesh:
|
if not self._mesh:
|
||||||
return
|
return
|
||||||
self.layout.remove(self._mesh)
|
self._layout.remove(self._mesh)
|
||||||
self._mesh = None
|
self._mesh = None
|
||||||
|
|
||||||
def _add_alone_buddy(self, buddy_model):
|
def _add_alone_buddy(self, buddy_model):
|
||||||
icon = BuddyIcon(self._shell, buddy_model)
|
icon = BuddyIcon(self._shell, buddy_model)
|
||||||
if buddy_model.is_owner():
|
if buddy_model.is_owner():
|
||||||
self.layout.add_center(icon)
|
self._layout.add_center(icon)
|
||||||
else:
|
else:
|
||||||
self.layout.add(icon)
|
self._layout.add(icon)
|
||||||
|
|
||||||
self._buddies[buddy_model.get_key()] = icon
|
self._buddies[buddy_model.get_key()] = icon
|
||||||
|
|
||||||
def _remove_alone_buddy(self, buddy_model):
|
def _remove_alone_buddy(self, buddy_model):
|
||||||
icon = self._buddies[buddy_model.get_key()]
|
icon = self._buddies[buddy_model.get_key()]
|
||||||
self.layout.remove(icon)
|
self._layout.remove(icon)
|
||||||
del self._buddies[buddy_model.get_key()]
|
del self._buddies[buddy_model.get_key()]
|
||||||
|
|
||||||
def _remove_buddy(self, buddy_model):
|
def _remove_buddy(self, buddy_model):
|
||||||
@ -326,24 +326,24 @@ class MeshBox(hippo.CanvasBox):
|
|||||||
|
|
||||||
def _add_activity(self, activity_model):
|
def _add_activity(self, activity_model):
|
||||||
icon = ActivityView(self._shell, activity_model)
|
icon = ActivityView(self._shell, activity_model)
|
||||||
self.layout.add(icon)
|
self._layout.add(icon)
|
||||||
|
|
||||||
self._activities[activity_model.get_id()] = icon
|
self._activities[activity_model.get_id()] = icon
|
||||||
|
|
||||||
def _remove_activity(self, activity_model):
|
def _remove_activity(self, activity_model):
|
||||||
icon = self._activities[activity_model.get_id()]
|
icon = self._activities[activity_model.get_id()]
|
||||||
self.layout.remove(icon)
|
self._layout.remove(icon)
|
||||||
del self._activities[activity_model.get_id()]
|
del self._activities[activity_model.get_id()]
|
||||||
|
|
||||||
def _add_access_point(self, ap_model):
|
def _add_access_point(self, ap_model):
|
||||||
icon = AccessPointView(ap_model)
|
icon = AccessPointView(ap_model)
|
||||||
self.layout.add(icon)
|
self._layout.add(icon)
|
||||||
|
|
||||||
self._access_points[ap_model.get_id()] = icon
|
self._access_points[ap_model.get_id()] = icon
|
||||||
|
|
||||||
def _remove_access_point(self, ap_model):
|
def _remove_access_point(self, ap_model):
|
||||||
icon = self._access_points[ap_model.get_id()]
|
icon = self._access_points[ap_model.get_id()]
|
||||||
self.layout.remove(icon)
|
self._layout.remove(icon)
|
||||||
del self._access_points[ap_model.get_id()]
|
del self._access_points[ap_model.get_id()]
|
||||||
|
|
||||||
def suspend(self):
|
def suspend(self):
|
||||||
|
@ -19,7 +19,7 @@ import gobject
|
|||||||
|
|
||||||
from sugar.graphics import units
|
from sugar.graphics import units
|
||||||
from sugar.graphics import animator
|
from sugar.graphics import animator
|
||||||
from sugar.graphics.spreadbox import SpreadBox
|
from sugar.graphics.spreadlayout import SpreadLayout
|
||||||
|
|
||||||
from view.home.MyIcon import MyIcon
|
from view.home.MyIcon import MyIcon
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ class _Animation(animator.Animation):
|
|||||||
d = (self.end_scale - self.start_scale) * current
|
d = (self.end_scale - self.start_scale) * current
|
||||||
self._icon.props.scale = self.start_scale + d
|
self._icon.props.scale = self.start_scale + d
|
||||||
|
|
||||||
class TransitionBox(SpreadBox):
|
class TransitionBox(hippo.CanvasBox):
|
||||||
__gtype_name__ = 'SugarTransitionBox'
|
__gtype_name__ = 'SugarTransitionBox'
|
||||||
|
|
||||||
__gsignals__ = {
|
__gsignals__ = {
|
||||||
@ -44,12 +44,15 @@ class TransitionBox(SpreadBox):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
SpreadBox.__init__(self, background_color=0xe2e2e2ff)
|
hippo.CanvasBox.__init__(self, background_color=0xe2e2e2ff)
|
||||||
|
|
||||||
self._scale = units.XLARGE_ICON_SCALE
|
self._scale = units.XLARGE_ICON_SCALE
|
||||||
|
|
||||||
|
self._layout = SpreadLayout()
|
||||||
|
self.set_layout(self._layout)
|
||||||
|
|
||||||
self._my_icon = MyIcon(self._scale)
|
self._my_icon = MyIcon(self._scale)
|
||||||
self.set_center_item(self._my_icon)
|
self._layout.add_center(self._my_icon)
|
||||||
|
|
||||||
self._animator = animator.Animator(0.3)
|
self._animator = animator.Animator(0.3)
|
||||||
self._animator.connect('completed', self._animation_completed_cb)
|
self._animator.connect('completed', self._animation_completed_cb)
|
||||||
|
@ -82,7 +82,11 @@ class _Grid(gobject.GObject):
|
|||||||
self._add_weight(child.grid_rect)
|
self._add_weight(child.grid_rect)
|
||||||
|
|
||||||
def _move_child(self, child, new_rect):
|
def _move_child(self, child, new_rect):
|
||||||
|
self._remove_weight(child.grid_rect)
|
||||||
|
self._add_weight(new_rect)
|
||||||
|
|
||||||
child.grid_rect = new_rect
|
child.grid_rect = new_rect
|
||||||
|
|
||||||
self.emit('child-changed', child)
|
self.emit('child-changed', child)
|
||||||
|
|
||||||
def _shift_child(self, child):
|
def _shift_child(self, child):
|
||||||
@ -128,14 +132,20 @@ class _Grid(gobject.GObject):
|
|||||||
return (len(self._collisions) > 0)
|
return (len(self._collisions) > 0)
|
||||||
|
|
||||||
def _detect_collisions(self, child):
|
def _detect_collisions(self, child):
|
||||||
|
collision_found = False
|
||||||
for c in self._children:
|
for c in self._children:
|
||||||
intersection = child.grid_rect.intersect(c.grid_rect)
|
intersection = child.grid_rect.intersect(c.grid_rect)
|
||||||
if c != child and intersection.width > 0:
|
if c != child and intersection.width > 0:
|
||||||
if c not in self._collisions:
|
if c not in self._collisions:
|
||||||
|
collision_found = True
|
||||||
self._collisions.append(c)
|
self._collisions.append(c)
|
||||||
if not self._collisions_sid:
|
|
||||||
self._collisions_sid = \
|
if collision_found:
|
||||||
gobject.idle_add(self._solve_collisions)
|
if child not in self._collisions:
|
||||||
|
self._collisions.append(child)
|
||||||
|
|
||||||
|
# if len(self._collisions) and not self._collisions_sid:
|
||||||
|
# self._collisions_sid = gobject.idle_add(self._solve_collisions)
|
||||||
|
|
||||||
def _add_weight(self, rect):
|
def _add_weight(self, rect):
|
||||||
for i in range(rect.x, rect.x + rect.width):
|
for i in range(rect.x, rect.x + rect.width):
|
||||||
@ -153,7 +163,7 @@ class _Grid(gobject.GObject):
|
|||||||
for i in range(rect.x, rect.x + rect.width):
|
for i in range(rect.x, rect.x + rect.width):
|
||||||
for j in range(rect.y, rect.y + rect.height):
|
for j in range(rect.y, rect.y + rect.height):
|
||||||
weight += self[j, i]
|
weight += self[j, i]
|
||||||
|
|
||||||
return weight
|
return weight
|
||||||
|
|
||||||
def __getitem__(self, (row, col)):
|
def __getitem__(self, (row, col)):
|
||||||
|
@ -56,6 +56,6 @@ canvas.set_root(box)
|
|||||||
window.add(canvas)
|
window.add(canvas)
|
||||||
canvas.show()
|
canvas.show()
|
||||||
|
|
||||||
gobject.timeout_add(100, _create_icon)
|
gobject.timeout_add(200, _create_icon)
|
||||||
|
|
||||||
gtk.main()
|
gtk.main()
|
||||||
|
Loading…
Reference in New Issue
Block a user