New 1.18 API: elm.Transit.revert()

with test
This commit is contained in:
Davide Andreoli 2016-08-09 09:51:24 +02:00
parent b37c970587
commit 48eec126bb
3 changed files with 40 additions and 2 deletions

View File

@ -343,7 +343,6 @@ cdef class Transit(object):
def __get__(self):
return elm_transit_tween_mode_get(self.obj)
property tween_mode_factor:
"""Transit animation acceleration factor.
@ -455,6 +454,28 @@ cdef class Transit(object):
"""
elm_transit_go_in(self.obj, seconds)
def revert(self):
"""This can be used to reverse play an ongoing transition.
It shows effect only when an animation is going on.
If this function is called twice transition will go in forward
direction as normal one.
If a repeat count is set, this function call will revert just the
ongoing cycle and once it is reverted back completely, the transition
will go in forward direction.
If an autoreverse is set for the transition and this function is called
in the midst of the transition the ongoing transition will be reverted
and once it is done, the transition will begin again and complete a
full auto reverse cycle.
:return: ``True`` if the transition is reverted, ``False`` otherwise.
:rtype: bool
.. versionadded:: 1.18
"""
return bool(elm_transit_revert(self.obj))
property paused:
"""Pause/Resume the transition.

View File

@ -65,6 +65,7 @@ cdef extern from "Elementary.h":
double elm_transit_duration_get(Elm_Transit *transit)
void elm_transit_go(Elm_Transit *transit)
void elm_transit_go_in(Elm_Transit *transit, double seconds)
Eina_Bool elm_transit_revert(Elm_Transit *transit)
void elm_transit_paused_set(Elm_Transit *transit, Eina_Bool paused)
Eina_Bool elm_transit_paused_get(Elm_Transit *transit)
double elm_transit_progress_value_get(Elm_Transit *transit)

View File

@ -23,6 +23,7 @@ CTRL_W, CTRL_H = 15, 15
ctrl_pt1 = None
ctrl_pt2 = None
label = None
revert_btn = None
bezier_lines = []
def clamp(minimum, x, maximum):
@ -79,6 +80,7 @@ def ctrl_pt_mouse_move_cb(obj, event):
update_curve()
def transit_del_cb(obj):
revert_btn.disabled = True
for w in ctrl_pt1, ctrl_pt2, ctrl_pt1.data["line"], ctrl_pt2.data["line"]:
w.show()
@ -92,14 +94,22 @@ def btn_clicked_cb(btn):
transit.del_cb_set(transit_del_cb)
transit.go()
revert_btn.disabled = False
revert_btn.data['transit'] = transit
for w in ctrl_pt1, ctrl_pt2, ctrl_pt1.data["line"], ctrl_pt2.data["line"]:
w.hide()
def revert_btn_clicked_cb(btn):
transit = btn.data['transit']
transit.revert()
def transit_bezier_clicked(obj, item=None):
global ctrl_pt1, ctrl_pt2, label, bezier_lines
global ctrl_pt1, ctrl_pt2, label, bezier_lines, revert_btn
win = Window("transit_bezier", ELM_WIN_BASIC, title="Transit Bezier",
autodel=True, size=(WIN_W, WIN_H))
if obj is None:
win.callback_delete_request_add(lambda o: elementary.exit())
# BG. Fix window size
bg = Background(win, size_hint_min=(WIN_W, WIN_H))
@ -145,6 +155,12 @@ def transit_bezier_clicked(obj, item=None):
label = Label(win, size=(WIN_W, 50), pass_events=True)
label.show()
# Revert btn
btn = Button(win, text="Revert", size=(70,50), pos=(100,0), disabled=True)
btn.callback_clicked_add(revert_btn_clicked_cb)
btn.show()
revert_btn = btn
# Button
btn = Button(win, text="Go", size=(BTN_SIZE,BTN_SIZE),
pos=(0, WIN_H - BTN_SIZE))