This commit is contained in:
Zen-CODE 2016-07-31 01:45:38 +02:00
commit cfec8f3dba
1 changed files with 23 additions and 4 deletions

View File

@ -596,15 +596,34 @@ class SwapTransition(TransitionBase):
'''Swap transition that looks like iOS transition when a new window
appears on the screen.
'''
def __init__(self, **kwargs):
super(SwapTransition, self).__init__(**kwargs)
self.scales = {}
def start(self, manager):
for screen in self.screen_in, self.screen_out:
with screen.canvas.before:
PushMatrix(group='swaptransition_scale')
scale = Scale(group='swaptransition_scale')
with screen.canvas.after:
PopMatrix(group='swaptransition_scale')
screen.bind(center=self.update_scale)
self.scales[screen] = scale
super(SwapTransition, self).start(manager)
def update_scale(self, screen, center):
self.scales[screen].origin = center
def add_screen(self, screen):
self.manager.real_add_widget(screen, 1)
def on_complete(self):
self.screen_in.scale = 1.
self.screen_out.scale = 1.
self.screen_in.pos = self.manager.pos
self.screen_out.pos = self.manager.pos
for screen in self.screen_in, self.screen_out:
for canvas in screen.canvas.before, screen.canvas.after:
canvas.remove_group('swaptransition_scale')
super(SwapTransition, self).on_complete()
def on_progress(self, progression):
@ -612,8 +631,8 @@ class SwapTransition(TransitionBase):
b = self.screen_out
manager = self.manager
b.scale = 1. - progression * 0.7
a.scale = 0.5 + progression * 0.5
self.scales[b].xyz = [1. - progression * 0.7 for xyz in 'xyz']
self.scales[a].xyz = [0.5 + progression * 0.5 for xyz in 'xyz']
a.center_y = b.center_y = manager.center_y
al = AnimationTransition.in_out_sine