"""Package containing stuff related to animating widgets.


```py
# a lot of animations depend on current geometry.
# It´s advisable to show widget first so that it gets layouted.
widget = widget.Label("I will get animated.")
widget.show()

# start a general fade animation with fixed start/end
widget.fx["windowOpacity"].animate(start=0, end=1, duration=1000)

# Transition widget size from current value to (500, 500)
widget.fx["size"].transition_to((500, 500), duration=1000)

# Transition widget size from current value to (500, 500)
widget.fx["pos"].transition_from((0, -100), duration=1000)

# fade-in when widget gets clicked
widget.fx["windowOpacity"].animate_on_event("mouse_button_press", start=0, end=1)

# convenience method for mentioned fade-in
widget.fx.fade_in(start=0, end=1, start=500)

# start a zoom animation
widget.fx.zoom(start=1, end=1.5, duration=400)

# start a slide animation 100px to the right
widget.fx.slide(start=(0, 0), end=(100, 0), duration=400)
```

PrettyQt makes it easy to animate your widgets.
All animation-related methods are available via the Widget.fx attribute.

Animating stylesheet values is also possible easily.

TODO.


"""

from .cursormoveanimation import CursorMoveAnimation
from .slideanimation import SlideAnimation
from .textanimation import TextAnimation
from .zoomanimation import ZoomAnimation
from .fx import Fx
from .animator import Animator


__all__ = [
    "SlideAnimation",
    "ZoomAnimation",
    "TextAnimation",
    "CursorMoveAnimation",
    "Animator",
    "Fx",
]
