Kivy-examples 2.3.1.dev0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/main.py +77 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/monkey.obj +7966 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/objloader.py +147 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/simple.glsl +47 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/RST_Editor/editor.kv +72 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/RST_Editor/main.py +64 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/compass.kv +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/main.py +77 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/needle.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/rose.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/main.py +80 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/shadow32.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/takepicture.kv +40 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/animation/animate.py +42 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_suite.py +152 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_suite_data/testkvdir.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_build.py +24 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_config.py +49 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_kv.py +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_kv_in_template1.py +27 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/template1/test.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/test.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/testkvfile.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/asyncio_advanced.py +90 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/asyncio_basic.py +59 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/trio_advanced.py +93 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/trio_basic.py +58 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12908_sweet_trip_mm_clap_hi.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12909_sweet_trip_mm_clap_lo.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12910_sweet_trip_mm_clap_mid.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12911_sweet_trip_mm_hat_cl.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12913_sweet_trip_mm_kick_hi.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12914_sweet_trip_mm_kick_lo.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12915_sweet_trip_mm_kick_mid.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12916_sweet_trip_mm_kwik_mod_01.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12917_sweet_trip_mm_kwik_mod_02.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12918_sweet_trip_mm_kwik_mod_03.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12919_sweet_trip_mm_kwik_mod_04.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12920_sweet_trip_mm_kwik_mod_05.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12921_sweet_trip_mm_kwik_mod_06.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12922_sweet_trip_mm_kwik_mod_07.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12923_sweet_trip_mm_metal_clave.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12925_sweet_trip_mm_sweep_x.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12926_sweet_trip_mm_sweep_y.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12927_sweet_trip_mm_sweep_z.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/audio.kv +59 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/main.py +81 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/pitch.py +42 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/camera/main.py +59 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/bezier.py +105 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/canvas_stress.py +72 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/circle.py +84 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/fbo_canvas.py +91 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/kiwi.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/lines.py +296 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/lines_extended.py +183 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mesh.py +57 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mesh_manipulation.py +101 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mtexture1.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mtexture2.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/multitexture.py +110 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/repeat_texture.py +65 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/rotation.py +35 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/rounded_rectangle.py +153 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/scale.py +37 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/stencil_canvas.py +85 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/tesselate.py +146 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/texture.py +143 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/texture_example_image.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/1.kv +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/2.kv +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/3.kv +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/root.kv +32 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/main.py +63 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/cover/cover_image.py +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/cover/cover_video.py +31 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/camera_puzzle.py +98 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/AnchorLayoutContainer.kv +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/BoxLayoutContainer.kv +14 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ButtonContainer.kv +27 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/CheckBoxContainer.kv +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/FileChooserContainer.kv +19 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/FloatLayoutContainer.kv +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/GridLayoutContainer.kv +20 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/LabelContainer.kv +62 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/MediaContainer.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/PlaygroundContainer.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/PopupContainer.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ProgressBarContainer.kv +17 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/RestContainer.kv +5 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ScatterContainer.kv +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/SelectorsContainer.kv +10 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/StackLayoutContainer.kv +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/TextContainer.kv +20 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/kivycatalog.kv +144 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/main.py +192 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/gesturedatabase.kv +117 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/gesturedatabase.py +180 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/helpers.py +30 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/historymanager.kv +164 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/historymanager.py +276 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/main.py +144 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/multistroke.kv +101 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/settings.kv +110 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/settings.py +97 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Bubbles.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Ill1.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Wall.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/faust_github.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/main.py +73 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/pictures.kv +57 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/shadow32.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/shadereditor/main.py +147 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/shadereditor/shadereditor.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/README.txt +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/background.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/faust_github.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/README +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/bug.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/chevron-left.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/chevron-right.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/accordions.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/bubbles.kv +33 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/buttons.kv +26 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/carousel.kv +51 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/checkboxes.kv +33 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/codeinput.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/dropdown.kv +40 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/filechoosers.kv +24 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/popups.kv +17 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/progressbar.kv +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/rstdocument.kv +24 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/scatter.kv +14 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/screenmanager.kv +46 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/sliders.kv +55 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/spinner.kv +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/splitter.kv +13 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/switches.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/tabbedpanel + layouts.kv +69 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/textinputs.kv +48 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/togglebutton.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/main.py +243 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/showcase.kv +100 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/README.txt +12 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/icon.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/main.py +170 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/particle.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/touchtracer.kv +29 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/echo_client_app.py +82 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/echo_server_app.py +49 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/twistd_app.py +66 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/gestures/gesture_board.py +95 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/gestures/my_gestures.py +90 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/designwithkv/controller.kv +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/designwithkv/main.py +29 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/1_skeleton.py +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/2_print_touch.py +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/3_draw_ellipse.py +22 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/4_draw_line.py +26 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/5_random_colors.py +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/6_button.py +38 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/quickstart/main.py +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/button.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/layout.kv +6 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/main.py +19 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/test.kv +5 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/main.py +226 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/numeric.json +38 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kinect/README.txt +13 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kinect/kinectviewer.py +283 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_button.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_camera.kv +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_fbo.kv +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_layout.kv +23 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_logo.kv +36 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_scatter.kv +6 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_stencil.kv +27 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_video.kv +42 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/builder_template.py +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/id_in_kv/id_in_kv.py +20 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/id_in_kv/test.kv +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/kv_and_py/kv_and_py.py +34 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/kv_and_py/test.kv +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/kivy.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/kvrun.py +38 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/clipboard.py +63 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/custom_titlebar.py +56 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/imagesave.py +14 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/joystick.py +83 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/multiple_dropfile.py +51 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/on_textedit_event.py +104 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/opacitywindow.py +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/shapecollisions.py +397 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/shapedwindow.py +98 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/two_panes.py +47 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/urlrequest.py +128 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/settings/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/settings/main.py +122 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/plasma.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/plasma.py +86 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/rotated.kv +91 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/rotated.py +102 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/shadertree.kv +29 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/shadertree.py +193 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/tex3.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/benchmark.py +19 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/cloud.svg +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/main-smaa.py +155 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/main.py +50 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/music.svg +68 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/rotated.svg +23 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/ship.svg +181 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/sun.svg +35 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/tiger.svg +813 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/text/pango_demo.py +296 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/data/icon.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/main.py +163 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/note.kv +154 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/main.py +82 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/pong.kv +53 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step1/main.py +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step1/pong.kv +2 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step2/main.py +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step2/pong.kv +21 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step3/main.py +26 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step3/pong.kv +31 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step4/main.py +48 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step4/pong.kv +34 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step5/main.py +75 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step5/pong.kv +53 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/accordion_1.py +17 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/actionbar.py +32 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/asyncimage.py +35 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/boxlayout_poshint.py +54 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/bubble_test.py +63 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/camera.py +33 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/carousel_buttons.py +50 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/cityCC0.mpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/cityCC0.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/codeinput.py +225 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/codeinputtest.kv +53 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/colorpicker.py +234 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/colorusage.py +62 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/compound_selection.py +83 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/customcollide.py +82 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget.py +193 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget2.py +47 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget3_advanced.py +62 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/fbowidget.py +111 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/focus_behavior.py +98 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/image_mipmap.py +31 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/keyboardlistener.py +42 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_mipmap.py +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_sizing.py +193 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_text_size.py +49 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_with_markup.py +21 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/lang_dynamic_classes.py +18 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/pagelayout.py +64 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/popup_with_kv.py +35 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/basic_data.py +124 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/infinite_scrolling.py +143 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/key_viewclass.py +149 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/messenger.py +196 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/pull_to_refresh.py +95 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/rv_animate_items.py +109 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/rstexample.py +128 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scatter.kv +53 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scatter.py +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/screenmanager.py +106 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scrollview.kv +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scrollview.py +40 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/bird.zip +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/button_white.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/button_white_animated.zip +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/cube.zip +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/info.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/info.zip +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/simple_cv_joint_animated.gif +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/main.kv +63 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/main.py +150 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/uix/__init__.py +7 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/uix/custom_button.py +98 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/settings.py +93 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/shorten_text.py +80 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/spinner.py +17 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/splitter.py +74 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/tabbed_panel_showcase.py +316 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/tabbedpanel.py +50 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textalign.kv +49 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textalign.py +48 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textinput.py +59 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/unicode_textinput.py +244 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/videoplayer.py +26 -0
- Kivy_examples-2.3.1.dev0.dist-info/AUTHORS +66 -0
- Kivy_examples-2.3.1.dev0.dist-info/LICENSE +21 -0
- Kivy_examples-2.3.1.dev0.dist-info/METADATA +382 -0
- Kivy_examples-2.3.1.dev0.dist-info/RECORD +624 -0
- Kivy_examples-2.3.1.dev0.dist-info/WHEEL +5 -0
- Kivy_examples-2.3.1.dev0.dist-info/dependency_links.txt +1 -0
- Kivy_examples-2.3.1.dev0.dist-info/top_level.txt +1 -0
- kivy/__init__.py +519 -0
- kivy/_version.py +18 -0
- kivy/animation.py +831 -0
- kivy/app.py +1213 -0
- kivy/atlas.py +456 -0
- kivy/base.py +617 -0
- kivy/cache.py +262 -0
- kivy/clock.py +1172 -0
- kivy/compat.py +82 -0
- kivy/config.py +1004 -0
- kivy/context.py +102 -0
- kivy/core/__init__.py +247 -0
- kivy/core/audio/__init__.py +223 -0
- kivy/core/audio/audio_android.py +104 -0
- kivy/core/audio/audio_avplayer.py +82 -0
- kivy/core/audio/audio_ffpyplayer.py +185 -0
- kivy/core/audio/audio_gstplayer.py +101 -0
- kivy/core/audio/audio_pygame.py +127 -0
- kivy/core/camera/__init__.py +151 -0
- kivy/core/camera/camera_android.py +206 -0
- kivy/core/camera/camera_gi.py +170 -0
- kivy/core/camera/camera_opencv.py +163 -0
- kivy/core/camera/camera_picamera.py +96 -0
- kivy/core/clipboard/__init__.py +157 -0
- kivy/core/clipboard/_clipboard_ext.py +36 -0
- kivy/core/clipboard/clipboard_android.py +91 -0
- kivy/core/clipboard/clipboard_dbusklipper.py +41 -0
- kivy/core/clipboard/clipboard_dummy.py +26 -0
- kivy/core/clipboard/clipboard_gtk3.py +47 -0
- kivy/core/clipboard/clipboard_nspaste.py +44 -0
- kivy/core/clipboard/clipboard_pygame.py +67 -0
- kivy/core/clipboard/clipboard_sdl2.py +36 -0
- kivy/core/clipboard/clipboard_winctypes.py +107 -0
- kivy/core/clipboard/clipboard_xclip.py +29 -0
- kivy/core/clipboard/clipboard_xsel.py +26 -0
- kivy/core/gl/__init__.py +90 -0
- kivy/core/image/__init__.py +996 -0
- kivy/core/image/img_dds.py +40 -0
- kivy/core/image/img_ffpyplayer.py +87 -0
- kivy/core/image/img_pil.py +123 -0
- kivy/core/image/img_pygame.py +119 -0
- kivy/core/image/img_sdl2.py +66 -0
- kivy/core/image/img_tex.py +58 -0
- kivy/core/spelling/__init__.py +135 -0
- kivy/core/spelling/spelling_enchant.py +50 -0
- kivy/core/spelling/spelling_osxappkit.py +64 -0
- kivy/core/text/__init__.py +1090 -0
- kivy/core/text/markup.py +893 -0
- kivy/core/text/text_pango.py +145 -0
- kivy/core/text/text_pil.py +84 -0
- kivy/core/text/text_pygame.py +117 -0
- kivy/core/text/text_sdl2.py +50 -0
- kivy/core/video/__init__.py +219 -0
- kivy/core/video/video_ffmpeg.py +106 -0
- kivy/core/video/video_ffpyplayer.py +449 -0
- kivy/core/video/video_gstplayer.py +140 -0
- kivy/core/video/video_null.py +12 -0
- kivy/core/window/__init__.py +2515 -0
- kivy/core/window/window_egl_rpi.py +86 -0
- kivy/core/window/window_pygame.py +441 -0
- kivy/core/window/window_sdl2.py +999 -0
- kivy/deps/__init__.py +6 -0
- kivy/effects/__init__.py +23 -0
- kivy/effects/dampedscroll.py +114 -0
- kivy/effects/kinetic.py +193 -0
- kivy/effects/opacityscroll.py +27 -0
- kivy/effects/scroll.py +126 -0
- kivy/event.py +12 -0
- kivy/eventmanager/__init__.py +185 -0
- kivy/extras/__init__.py +0 -0
- kivy/extras/highlight.py +52 -0
- kivy/factory.py +190 -0
- kivy/factory_registers.py +201 -0
- kivy/garden/__init__.py +186 -0
- kivy/geometry.py +121 -0
- kivy/gesture.py +424 -0
- kivy/graphics/__init__.py +126 -0
- kivy/graphics/cgl_backend/__init__.py +0 -0
- kivy/input/__init__.py +39 -0
- kivy/input/factory.py +35 -0
- kivy/input/motionevent.py +587 -0
- kivy/input/postproc/__init__.py +27 -0
- kivy/input/postproc/calibration.py +200 -0
- kivy/input/postproc/dejitter.py +74 -0
- kivy/input/postproc/doubletap.py +101 -0
- kivy/input/postproc/ignorelist.py +47 -0
- kivy/input/postproc/retaintouch.py +93 -0
- kivy/input/postproc/tripletap.py +106 -0
- kivy/input/provider.py +40 -0
- kivy/input/providers/__init__.py +68 -0
- kivy/input/providers/androidjoystick.py +117 -0
- kivy/input/providers/hidinput.py +778 -0
- kivy/input/providers/leapfinger.py +113 -0
- kivy/input/providers/linuxwacom.py +396 -0
- kivy/input/providers/mactouch.py +220 -0
- kivy/input/providers/mouse.py +424 -0
- kivy/input/providers/mtdev.py +380 -0
- kivy/input/providers/probesysfs.py +254 -0
- kivy/input/providers/tuio.py +326 -0
- kivy/input/providers/wm_common.py +162 -0
- kivy/input/providers/wm_pen.py +121 -0
- kivy/input/providers/wm_touch.py +157 -0
- kivy/input/recorder.py +335 -0
- kivy/input/shape.py +27 -0
- kivy/interactive.py +335 -0
- kivy/lang/__init__.py +883 -0
- kivy/lang/builder.py +1004 -0
- kivy/lang/parser.py +822 -0
- kivy/lib/__init__.py +21 -0
- kivy/lib/ddsfile.py +419 -0
- kivy/lib/gstplayer/__init__.py +27 -0
- kivy/lib/mtdev.py +254 -0
- kivy/lib/vidcore_lite/__init__.py +0 -0
- kivy/loader.py +579 -0
- kivy/logger.py +646 -0
- kivy/metrics.py +421 -0
- kivy/modules/__init__.py +300 -0
- kivy/modules/_webdebugger.py +200 -0
- kivy/modules/console.py +1059 -0
- kivy/modules/cursor.py +75 -0
- kivy/modules/inspector.py +755 -0
- kivy/modules/joycursor.py +299 -0
- kivy/modules/keybinding.py +64 -0
- kivy/modules/monitor.py +90 -0
- kivy/modules/recorder.py +94 -0
- kivy/modules/screen.py +183 -0
- kivy/modules/showborder.py +33 -0
- kivy/modules/touchring.py +97 -0
- kivy/modules/webdebugger.py +30 -0
- kivy/multistroke.py +1477 -0
- kivy/network/__init__.py +7 -0
- kivy/network/urlrequest.py +794 -0
- kivy/parser.py +154 -0
- kivy/resources.py +102 -0
- kivy/storage/__init__.py +405 -0
- kivy/storage/dictstore.py +98 -0
- kivy/storage/jsonstore.py +92 -0
- kivy/storage/redisstore.py +103 -0
- kivy/support.py +267 -0
- kivy/tests/__init__.py +11 -0
- kivy/tests/async_common.py +568 -0
- kivy/tests/common.py +524 -0
- kivy/tests/conftest.py +33 -0
- kivy/tests/fixtures.py +169 -0
- kivy/tests/perf_test_textinput.py +195 -0
- kivy/tests/pyinstaller/simple_widget/main.py +12 -0
- kivy/tests/pyinstaller/simple_widget/project/__init__.py +0 -0
- kivy/tests/pyinstaller/simple_widget/project/widget.py +12 -0
- kivy/tests/pyinstaller/test_pyinstaller.py +115 -0
- kivy/tests/pyinstaller/video_widget/main.py +6 -0
- kivy/tests/pyinstaller/video_widget/project/__init__.py +38 -0
- kivy/tests/test_animations.py +415 -0
- kivy/tests/test_app.py +216 -0
- kivy/tests/test_audio.py +69 -0
- kivy/tests/test_benchmark.py +292 -0
- kivy/tests/test_clipboard.py +48 -0
- kivy/tests/test_clock.py +292 -0
- kivy/tests/test_compat.py +6 -0
- kivy/tests/test_config.py +35 -0
- kivy/tests/test_coverage.py +83 -0
- kivy/tests/test_doc_gallery.py +38 -0
- kivy/tests/test_environ_cli.py +50 -0
- kivy/tests/test_fbo_py2py3.py +74 -0
- kivy/tests/test_filechooser.py +11 -0
- kivy/tests/test_filechooser_unicode.py +82 -0
- kivy/tests/test_fonts.py +42 -0
- kivy/tests/test_garden.py +23 -0
- kivy/tests/test_graphics.py +1149 -0
- kivy/tests/test_graphics_svg.py +84 -0
- kivy/tests/test_image.py +74 -0
- kivy/tests/test_imageloader.py +485 -0
- kivy/tests/test_invalid_lang.py +42 -0
- kivy/tests/test_issues/test_6315.py +55 -0
- kivy/tests/test_issues/test_issue_1084.py +47 -0
- kivy/tests/test_issues/test_issue_1091.py +19 -0
- kivy/tests/test_issues/test_issue_599.py +21 -0
- kivy/tests/test_issues/test_issue_609.py +19 -0
- kivy/tests/test_issues/test_issue_6909.py +28 -0
- kivy/tests/test_issues/test_issue_883.py +12 -0
- kivy/tests/test_kivy_init.py +30 -0
- kivy/tests/test_knspace.py +247 -0
- kivy/tests/test_lang.py +431 -0
- kivy/tests/test_lang_complex.py +87 -0
- kivy/tests/test_lang_pre_process_and_post_process.py +394 -0
- kivy/tests/test_logger.py +516 -0
- kivy/tests/test_metrics.py +30 -0
- kivy/tests/test_module_inspector.py +382 -0
- kivy/tests/test_motion_event.py +44 -0
- kivy/tests/test_mouse_hover_event.py +249 -0
- kivy/tests/test_mouse_multitouchsim.py +554 -0
- kivy/tests/test_multistroke.py +389 -0
- kivy/tests/test_properties.py +1332 -0
- kivy/tests/test_resources.py +79 -0
- kivy/tests/test_rst_replace.py +63 -0
- kivy/tests/test_screen.py +38 -0
- kivy/tests/test_storage.py +135 -0
- kivy/tests/test_uix_actionbar.py +363 -0
- kivy/tests/test_uix_anchorlayout.py +79 -0
- kivy/tests/test_uix_asyncimage.py +133 -0
- kivy/tests/test_uix_boxlayout.py +94 -0
- kivy/tests/test_uix_bubble.py +425 -0
- kivy/tests/test_uix_carousel.py +93 -0
- kivy/tests/test_uix_colorpicker.py +77 -0
- kivy/tests/test_uix_dropdown.py +91 -0
- kivy/tests/test_uix_gridlayout.py +244 -0
- kivy/tests/test_uix_layout.py +16 -0
- kivy/tests/test_uix_modal.py +101 -0
- kivy/tests/test_uix_recyclegridlayout.py +383 -0
- kivy/tests/test_uix_relativelayout.py +30 -0
- kivy/tests/test_uix_scrollview.py +358 -0
- kivy/tests/test_uix_settings.py +33 -0
- kivy/tests/test_uix_slider.py +156 -0
- kivy/tests/test_uix_stacklayout.py +120 -0
- kivy/tests/test_uix_textinput.py +577 -0
- kivy/tests/test_uix_translate_coordinates.py +72 -0
- kivy/tests/test_uix_videoplayer.py +112 -0
- kivy/tests/test_uix_widget.py +137 -0
- kivy/tests/test_urlrequest/test_urlrequest_requests.py +378 -0
- kivy/tests/test_urlrequest/test_urlrequest_urllib.py +155 -0
- kivy/tests/test_utils.py +237 -0
- kivy/tests/test_vector.py +256 -0
- kivy/tests/test_video.py +25 -0
- kivy/tests/test_weakmethod.py +44 -0
- kivy/tests/test_widget.py +127 -0
- kivy/tests/test_widget_walk.py +70 -0
- kivy/tests/test_window_base.py +60 -0
- kivy/tests/test_window_info.py +29 -0
- kivy/tests/visual_test_label.py +291 -0
- kivy/tools/__init__.py +44 -0
- kivy/tools/benchmark.py +286 -0
- kivy/tools/changelog_parser.py +120 -0
- kivy/tools/coverage.py +135 -0
- kivy/tools/gallery.py +323 -0
- kivy/tools/generate-icons.py +117 -0
- kivy/tools/gles_compat/subset_gles.py +125 -0
- kivy/tools/highlight/__init__.py +9 -0
- kivy/tools/kviewer.py +80 -0
- kivy/tools/packaging/__init__.py +12 -0
- kivy/tools/packaging/cython_cfg.py +82 -0
- kivy/tools/packaging/factory.py +105 -0
- kivy/tools/packaging/pyinstaller_hooks/__init__.py +381 -0
- kivy/tools/packaging/pyinstaller_hooks/__main__.py +29 -0
- kivy/tools/packaging/pyinstaller_hooks/hook-kivy.py +9 -0
- kivy/tools/packaging/pyinstaller_hooks/pyi_rth_kivy.py +17 -0
- kivy/tools/pep8checker/pep8.py +2316 -0
- kivy/tools/pep8checker/pep8kivy.py +109 -0
- kivy/tools/report.py +223 -0
- kivy/tools/stub-gl-debug.py +201 -0
- kivy/tools/texturecompress.py +233 -0
- kivy/uix/__init__.py +56 -0
- kivy/uix/accordion.py +484 -0
- kivy/uix/actionbar.py +934 -0
- kivy/uix/anchorlayout.py +122 -0
- kivy/uix/behaviors/__init__.py +95 -0
- kivy/uix/behaviors/button.py +212 -0
- kivy/uix/behaviors/codenavigation.py +167 -0
- kivy/uix/behaviors/compoundselection.py +688 -0
- kivy/uix/behaviors/cover.py +160 -0
- kivy/uix/behaviors/drag.py +234 -0
- kivy/uix/behaviors/emacs.py +140 -0
- kivy/uix/behaviors/focus.py +595 -0
- kivy/uix/behaviors/knspace.py +590 -0
- kivy/uix/behaviors/togglebutton.py +156 -0
- kivy/uix/behaviors/touchripple.py +318 -0
- kivy/uix/boxlayout.py +331 -0
- kivy/uix/bubble.py +576 -0
- kivy/uix/button.py +137 -0
- kivy/uix/camera.py +118 -0
- kivy/uix/carousel.py +695 -0
- kivy/uix/checkbox.py +197 -0
- kivy/uix/codeinput.py +238 -0
- kivy/uix/colorpicker.py +486 -0
- kivy/uix/dropdown.py +391 -0
- kivy/uix/effectwidget.py +772 -0
- kivy/uix/filechooser.py +1134 -0
- kivy/uix/floatlayout.py +148 -0
- kivy/uix/gesturesurface.py +625 -0
- kivy/uix/gridlayout.py +629 -0
- kivy/uix/image.py +528 -0
- kivy/uix/label.py +1200 -0
- kivy/uix/layout.py +322 -0
- kivy/uix/modalview.py +339 -0
- kivy/uix/pagelayout.py +233 -0
- kivy/uix/popup.py +266 -0
- kivy/uix/progressbar.py +95 -0
- kivy/uix/recycleboxlayout.py +183 -0
- kivy/uix/recyclegridlayout.py +255 -0
- kivy/uix/recyclelayout.py +446 -0
- kivy/uix/recycleview/__init__.py +624 -0
- kivy/uix/recycleview/datamodel.py +194 -0
- kivy/uix/recycleview/layout.py +253 -0
- kivy/uix/recycleview/views.py +423 -0
- kivy/uix/relativelayout.py +324 -0
- kivy/uix/rst.py +1492 -0
- kivy/uix/sandbox.py +198 -0
- kivy/uix/scatter.py +645 -0
- kivy/uix/scatterlayout.py +93 -0
- kivy/uix/screenmanager.py +1275 -0
- kivy/uix/scrollview.py +1288 -0
- kivy/uix/settings.py +1343 -0
- kivy/uix/slider.py +421 -0
- kivy/uix/spinner.py +221 -0
- kivy/uix/splitter.py +430 -0
- kivy/uix/stacklayout.py +331 -0
- kivy/uix/stencilview.py +40 -0
- kivy/uix/switch.py +122 -0
- kivy/uix/tabbedpanel.py +880 -0
- kivy/uix/textinput.py +4049 -0
- kivy/uix/togglebutton.py +37 -0
- kivy/uix/treeview.py +665 -0
- kivy/uix/video.py +302 -0
- kivy/uix/videoplayer.py +697 -0
- kivy/uix/vkeyboard.py +879 -0
- kivy/uix/widget.py +1629 -0
- kivy/utils.py +550 -0
- kivy/vector.py +412 -0
- kivy/weakmethod.py +72 -0
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Animations tests
|
|
3
|
+
================
|
|
4
|
+
'''
|
|
5
|
+
import pytest
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@pytest.fixture(scope='module')
|
|
9
|
+
def ec_cls():
|
|
10
|
+
class EventCounter:
|
|
11
|
+
def __init__(self, anim):
|
|
12
|
+
self.n_start = 0
|
|
13
|
+
self.n_progress = 0
|
|
14
|
+
self.n_complete = 0
|
|
15
|
+
anim.bind(on_start=self.on_start,
|
|
16
|
+
on_progress=self.on_progress,
|
|
17
|
+
on_complete=self.on_complete)
|
|
18
|
+
|
|
19
|
+
def on_start(self, anim, widget):
|
|
20
|
+
self.n_start += 1
|
|
21
|
+
|
|
22
|
+
def on_progress(self, anim, widget, progress):
|
|
23
|
+
self.n_progress += 1
|
|
24
|
+
|
|
25
|
+
def on_complete(self, anim, widget):
|
|
26
|
+
self.n_complete += 1
|
|
27
|
+
|
|
28
|
+
def assert_(self, n_start, n_progress_greater_than_zero, n_complete):
|
|
29
|
+
assert self.n_start == n_start
|
|
30
|
+
if n_progress_greater_than_zero:
|
|
31
|
+
assert self.n_progress > 0
|
|
32
|
+
else:
|
|
33
|
+
assert self.n_progress == 0
|
|
34
|
+
assert self.n_complete == n_complete
|
|
35
|
+
return EventCounter
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@pytest.fixture(autouse=True)
|
|
39
|
+
def cleanup():
|
|
40
|
+
from kivy.animation import Animation
|
|
41
|
+
Animation.cancel_all(None)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def no_animations_being_played():
|
|
45
|
+
from kivy.animation import Animation
|
|
46
|
+
return len(Animation._instances) == 0
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def sleep(t):
|
|
50
|
+
from time import time, sleep
|
|
51
|
+
from kivy.clock import Clock
|
|
52
|
+
tick = Clock.tick
|
|
53
|
+
deadline = time() + t
|
|
54
|
+
while time() < deadline:
|
|
55
|
+
sleep(.01)
|
|
56
|
+
tick()
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class TestAnimation:
|
|
60
|
+
|
|
61
|
+
def test_start_animation(self):
|
|
62
|
+
from kivy.animation import Animation
|
|
63
|
+
from kivy.uix.widget import Widget
|
|
64
|
+
a = Animation(x=100, d=1)
|
|
65
|
+
w = Widget()
|
|
66
|
+
a.start(w)
|
|
67
|
+
sleep(1.5)
|
|
68
|
+
assert w.x == pytest.approx(100)
|
|
69
|
+
assert no_animations_being_played()
|
|
70
|
+
|
|
71
|
+
def test_animation_duration_0(self):
|
|
72
|
+
from kivy.animation import Animation
|
|
73
|
+
from kivy.uix.widget import Widget
|
|
74
|
+
a = Animation(x=100, d=0)
|
|
75
|
+
w = Widget()
|
|
76
|
+
a.start(w)
|
|
77
|
+
sleep(.5)
|
|
78
|
+
assert no_animations_being_played()
|
|
79
|
+
|
|
80
|
+
def test_cancel_all(self):
|
|
81
|
+
from kivy.animation import Animation
|
|
82
|
+
from kivy.uix.widget import Widget
|
|
83
|
+
a1 = Animation(x=100)
|
|
84
|
+
a2 = Animation(y=100)
|
|
85
|
+
w1 = Widget()
|
|
86
|
+
w2 = Widget()
|
|
87
|
+
a1.start(w1)
|
|
88
|
+
a1.start(w2)
|
|
89
|
+
a2.start(w1)
|
|
90
|
+
a2.start(w2)
|
|
91
|
+
assert not no_animations_being_played()
|
|
92
|
+
Animation.cancel_all(None)
|
|
93
|
+
assert no_animations_being_played()
|
|
94
|
+
|
|
95
|
+
def test_cancel_all_2(self):
|
|
96
|
+
from kivy.animation import Animation
|
|
97
|
+
from kivy.uix.widget import Widget
|
|
98
|
+
a1 = Animation(x=100)
|
|
99
|
+
a2 = Animation(y=100)
|
|
100
|
+
w1 = Widget()
|
|
101
|
+
w2 = Widget()
|
|
102
|
+
a1.start(w1)
|
|
103
|
+
a1.start(w2)
|
|
104
|
+
a2.start(w1)
|
|
105
|
+
a2.start(w2)
|
|
106
|
+
assert not no_animations_being_played()
|
|
107
|
+
Animation.cancel_all(None, 'x', 'z')
|
|
108
|
+
assert not no_animations_being_played()
|
|
109
|
+
Animation.cancel_all(None, 'y')
|
|
110
|
+
assert no_animations_being_played()
|
|
111
|
+
|
|
112
|
+
def test_stop_animation(self):
|
|
113
|
+
from kivy.animation import Animation
|
|
114
|
+
from kivy.uix.widget import Widget
|
|
115
|
+
a = Animation(x=100, d=1)
|
|
116
|
+
w = Widget()
|
|
117
|
+
a.start(w)
|
|
118
|
+
sleep(.5)
|
|
119
|
+
a.stop(w)
|
|
120
|
+
assert w.x != pytest.approx(100)
|
|
121
|
+
assert w.x != pytest.approx(0)
|
|
122
|
+
assert no_animations_being_played()
|
|
123
|
+
|
|
124
|
+
def test_stop_all(self):
|
|
125
|
+
from kivy.animation import Animation
|
|
126
|
+
from kivy.uix.widget import Widget
|
|
127
|
+
a = Animation(x=100, d=1)
|
|
128
|
+
w = Widget()
|
|
129
|
+
a.start(w)
|
|
130
|
+
sleep(.5)
|
|
131
|
+
Animation.stop_all(w)
|
|
132
|
+
assert no_animations_being_played()
|
|
133
|
+
|
|
134
|
+
def test_stop_all_2(self):
|
|
135
|
+
from kivy.animation import Animation
|
|
136
|
+
from kivy.uix.widget import Widget
|
|
137
|
+
a = Animation(x=100, d=1)
|
|
138
|
+
w = Widget()
|
|
139
|
+
a.start(w)
|
|
140
|
+
sleep(.5)
|
|
141
|
+
Animation.stop_all(w, 'x')
|
|
142
|
+
assert no_animations_being_played()
|
|
143
|
+
|
|
144
|
+
def test_duration(self):
|
|
145
|
+
from kivy.animation import Animation
|
|
146
|
+
a = Animation(x=100, d=1)
|
|
147
|
+
assert a.duration == 1
|
|
148
|
+
|
|
149
|
+
def test_transition(self):
|
|
150
|
+
from kivy.animation import Animation, AnimationTransition
|
|
151
|
+
a = Animation(x=100, t='out_bounce')
|
|
152
|
+
assert a.transition is AnimationTransition.out_bounce
|
|
153
|
+
|
|
154
|
+
def test_animated_properties(self):
|
|
155
|
+
from kivy.animation import Animation
|
|
156
|
+
a = Animation(x=100)
|
|
157
|
+
assert a.animated_properties == {'x': 100, }
|
|
158
|
+
|
|
159
|
+
def test_animated_instruction(self):
|
|
160
|
+
from kivy.graphics import Scale
|
|
161
|
+
from kivy.animation import Animation
|
|
162
|
+
a = Animation(x=100, d=1)
|
|
163
|
+
instruction = Scale(3, 3, 3)
|
|
164
|
+
a.start(instruction)
|
|
165
|
+
assert a.animated_properties == {'x': 100, }
|
|
166
|
+
assert instruction.x == pytest.approx(3)
|
|
167
|
+
sleep(1.5)
|
|
168
|
+
assert instruction.x == pytest.approx(100)
|
|
169
|
+
assert no_animations_being_played()
|
|
170
|
+
|
|
171
|
+
def test_weakref(self):
|
|
172
|
+
import gc
|
|
173
|
+
from kivy.animation import Animation
|
|
174
|
+
from kivy.uix.widget import Widget
|
|
175
|
+
w = Widget()
|
|
176
|
+
a = Animation(x=100)
|
|
177
|
+
a.start(w.proxy_ref)
|
|
178
|
+
del w
|
|
179
|
+
gc.collect()
|
|
180
|
+
try:
|
|
181
|
+
sleep(1.)
|
|
182
|
+
except ReferenceError:
|
|
183
|
+
pass
|
|
184
|
+
assert no_animations_being_played()
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
class TestSequence:
|
|
188
|
+
|
|
189
|
+
def test_cancel_all(self):
|
|
190
|
+
from kivy.animation import Animation
|
|
191
|
+
from kivy.uix.widget import Widget
|
|
192
|
+
a = Animation(x=100) + Animation(x=0)
|
|
193
|
+
w = Widget()
|
|
194
|
+
a.start(w)
|
|
195
|
+
sleep(.5)
|
|
196
|
+
Animation.cancel_all(w)
|
|
197
|
+
assert no_animations_being_played()
|
|
198
|
+
|
|
199
|
+
def test_cancel_all_2(self):
|
|
200
|
+
from kivy.animation import Animation
|
|
201
|
+
from kivy.uix.widget import Widget
|
|
202
|
+
a = Animation(x=100) + Animation(x=0)
|
|
203
|
+
w = Widget()
|
|
204
|
+
a.start(w)
|
|
205
|
+
sleep(.5)
|
|
206
|
+
Animation.cancel_all(w, 'x')
|
|
207
|
+
assert no_animations_being_played()
|
|
208
|
+
|
|
209
|
+
def test_stop_all(self):
|
|
210
|
+
from kivy.animation import Animation
|
|
211
|
+
from kivy.uix.widget import Widget
|
|
212
|
+
a = Animation(x=100) + Animation(x=0)
|
|
213
|
+
w = Widget()
|
|
214
|
+
a.start(w)
|
|
215
|
+
sleep(.5)
|
|
216
|
+
Animation.stop_all(w)
|
|
217
|
+
assert no_animations_being_played()
|
|
218
|
+
|
|
219
|
+
def test_stop_all_2(self):
|
|
220
|
+
from kivy.animation import Animation
|
|
221
|
+
from kivy.uix.widget import Widget
|
|
222
|
+
a = Animation(x=100) + Animation(x=0)
|
|
223
|
+
w = Widget()
|
|
224
|
+
a.start(w)
|
|
225
|
+
sleep(.5)
|
|
226
|
+
Animation.stop_all(w, 'x')
|
|
227
|
+
assert no_animations_being_played()
|
|
228
|
+
|
|
229
|
+
def test_count_events(self, ec_cls):
|
|
230
|
+
from kivy.animation import Animation
|
|
231
|
+
from kivy.uix.widget import Widget
|
|
232
|
+
a = Animation(x=100, d=.5) + Animation(x=0, d=.5)
|
|
233
|
+
w = Widget()
|
|
234
|
+
ec = ec_cls(a)
|
|
235
|
+
ec1 = ec_cls(a.anim1)
|
|
236
|
+
ec2 = ec_cls(a.anim2)
|
|
237
|
+
a.start(w)
|
|
238
|
+
|
|
239
|
+
# right after the animation starts
|
|
240
|
+
ec.assert_(1, False, 0)
|
|
241
|
+
ec1.assert_(1, False, 0)
|
|
242
|
+
ec2.assert_(0, False, 0)
|
|
243
|
+
sleep(.2)
|
|
244
|
+
|
|
245
|
+
# during the first half of the animation
|
|
246
|
+
ec.assert_(1, True, 0)
|
|
247
|
+
ec1.assert_(1, True, 0)
|
|
248
|
+
ec2.assert_(0, False, 0)
|
|
249
|
+
sleep(.5)
|
|
250
|
+
|
|
251
|
+
# during the second half of the animation
|
|
252
|
+
ec.assert_(1, True, 0)
|
|
253
|
+
ec1.assert_(1, True, 1)
|
|
254
|
+
ec2.assert_(1, True, 0)
|
|
255
|
+
sleep(.5)
|
|
256
|
+
|
|
257
|
+
# after the animation completed
|
|
258
|
+
ec.assert_(1, True, 1)
|
|
259
|
+
ec1.assert_(1, True, 1)
|
|
260
|
+
ec2.assert_(1, True, 1)
|
|
261
|
+
assert no_animations_being_played()
|
|
262
|
+
|
|
263
|
+
def test_have_properties_to_animate(self):
|
|
264
|
+
from kivy.animation import Animation
|
|
265
|
+
from kivy.uix.widget import Widget
|
|
266
|
+
a = Animation(x=100) + Animation(x=0)
|
|
267
|
+
w = Widget()
|
|
268
|
+
assert not a.have_properties_to_animate(w)
|
|
269
|
+
a.start(w)
|
|
270
|
+
assert a.have_properties_to_animate(w)
|
|
271
|
+
a.stop(w)
|
|
272
|
+
assert not a.have_properties_to_animate(w)
|
|
273
|
+
assert no_animations_being_played()
|
|
274
|
+
|
|
275
|
+
def test_animated_properties(self):
|
|
276
|
+
from kivy.animation import Animation
|
|
277
|
+
a = Animation(x=100, y=200) + Animation(x=0)
|
|
278
|
+
assert a.animated_properties == {'x': 0, 'y': 200, }
|
|
279
|
+
|
|
280
|
+
def test_transition(self):
|
|
281
|
+
from kivy.animation import Animation
|
|
282
|
+
a = Animation(x=100) + Animation(x=0)
|
|
283
|
+
with pytest.raises(AttributeError):
|
|
284
|
+
a.transition
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
class TestRepetitiveSequence:
|
|
288
|
+
|
|
289
|
+
def test_stop(self):
|
|
290
|
+
from kivy.animation import Animation
|
|
291
|
+
from kivy.uix.widget import Widget
|
|
292
|
+
a = Animation(x=100) + Animation(x=0)
|
|
293
|
+
a.repeat = True
|
|
294
|
+
w = Widget()
|
|
295
|
+
a.start(w)
|
|
296
|
+
a.stop(w)
|
|
297
|
+
assert no_animations_being_played()
|
|
298
|
+
|
|
299
|
+
def test_count_events(self, ec_cls):
|
|
300
|
+
from kivy.animation import Animation
|
|
301
|
+
from kivy.uix.widget import Widget
|
|
302
|
+
a = Animation(x=100, d=.5) + Animation(x=0, d=.5)
|
|
303
|
+
a.repeat = True
|
|
304
|
+
w = Widget()
|
|
305
|
+
ec = ec_cls(a)
|
|
306
|
+
ec1 = ec_cls(a.anim1)
|
|
307
|
+
ec2 = ec_cls(a.anim2)
|
|
308
|
+
a.start(w)
|
|
309
|
+
|
|
310
|
+
# right after the animation starts
|
|
311
|
+
ec.assert_(1, False, 0)
|
|
312
|
+
ec1.assert_(1, False, 0)
|
|
313
|
+
ec2.assert_(0, False, 0)
|
|
314
|
+
sleep(.2)
|
|
315
|
+
|
|
316
|
+
# during the first half of the first round of the animation
|
|
317
|
+
ec.assert_(1, True, 0)
|
|
318
|
+
ec1.assert_(1, True, 0)
|
|
319
|
+
ec2.assert_(0, False, 0)
|
|
320
|
+
sleep(.5)
|
|
321
|
+
|
|
322
|
+
# during the second half of the first round of the animation
|
|
323
|
+
ec.assert_(1, True, 0)
|
|
324
|
+
ec1.assert_(1, True, 1)
|
|
325
|
+
ec2.assert_(1, True, 0)
|
|
326
|
+
sleep(.5)
|
|
327
|
+
|
|
328
|
+
# during the first half of the second round of the animation
|
|
329
|
+
ec.assert_(1, True, 0)
|
|
330
|
+
ec1.assert_(2, True, 1)
|
|
331
|
+
ec2.assert_(1, True, 1)
|
|
332
|
+
sleep(.5)
|
|
333
|
+
|
|
334
|
+
# during the second half of the second round of the animation
|
|
335
|
+
ec.assert_(1, True, 0)
|
|
336
|
+
ec1.assert_(2, True, 2)
|
|
337
|
+
ec2.assert_(2, True, 1)
|
|
338
|
+
a.stop(w)
|
|
339
|
+
|
|
340
|
+
# after the animation stopped
|
|
341
|
+
ec.assert_(1, True, 1)
|
|
342
|
+
ec1.assert_(2, True, 2)
|
|
343
|
+
ec2.assert_(2, True, 2)
|
|
344
|
+
assert no_animations_being_played()
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
class TestParallel:
|
|
348
|
+
|
|
349
|
+
def test_have_properties_to_animate(self):
|
|
350
|
+
from kivy.animation import Animation
|
|
351
|
+
from kivy.uix.widget import Widget
|
|
352
|
+
a = Animation(x=100) & Animation(y=100)
|
|
353
|
+
w = Widget()
|
|
354
|
+
assert not a.have_properties_to_animate(w)
|
|
355
|
+
a.start(w)
|
|
356
|
+
assert a.have_properties_to_animate(w)
|
|
357
|
+
a.stop(w)
|
|
358
|
+
assert not a.have_properties_to_animate(w)
|
|
359
|
+
assert no_animations_being_played()
|
|
360
|
+
|
|
361
|
+
def test_cancel_property(self):
|
|
362
|
+
from kivy.animation import Animation
|
|
363
|
+
from kivy.uix.widget import Widget
|
|
364
|
+
a = Animation(x=100) & Animation(y=100)
|
|
365
|
+
w = Widget()
|
|
366
|
+
a.start(w)
|
|
367
|
+
a.cancel_property(w, 'x')
|
|
368
|
+
assert not no_animations_being_played()
|
|
369
|
+
a.stop(w)
|
|
370
|
+
assert no_animations_being_played()
|
|
371
|
+
|
|
372
|
+
def test_animated_properties(self):
|
|
373
|
+
from kivy.animation import Animation
|
|
374
|
+
a = Animation(x=100) & Animation(y=100)
|
|
375
|
+
assert a.animated_properties == {'x': 100, 'y': 100, }
|
|
376
|
+
|
|
377
|
+
def test_transition(self):
|
|
378
|
+
from kivy.animation import Animation
|
|
379
|
+
a = Animation(x=100) & Animation(y=100)
|
|
380
|
+
with pytest.raises(AttributeError):
|
|
381
|
+
a.transition
|
|
382
|
+
|
|
383
|
+
def test_count_events(self, ec_cls):
|
|
384
|
+
from kivy.animation import Animation
|
|
385
|
+
from kivy.uix.widget import Widget
|
|
386
|
+
a = Animation(x=100) & Animation(y=100, d=.5)
|
|
387
|
+
w = Widget()
|
|
388
|
+
ec = ec_cls(a)
|
|
389
|
+
ec1 = ec_cls(a.anim1)
|
|
390
|
+
ec2 = ec_cls(a.anim2)
|
|
391
|
+
a.start(w)
|
|
392
|
+
|
|
393
|
+
# right after the animation started
|
|
394
|
+
ec.assert_(1, False, 0)
|
|
395
|
+
ec1.assert_(1, False, 0)
|
|
396
|
+
ec2.assert_(1, False, 0)
|
|
397
|
+
sleep(.2)
|
|
398
|
+
|
|
399
|
+
# during the first half of the animation
|
|
400
|
+
ec.assert_(1, False, 0) # n_progress is still 0 !!
|
|
401
|
+
ec1.assert_(1, True, 0)
|
|
402
|
+
ec2.assert_(1, True, 0)
|
|
403
|
+
sleep(.5)
|
|
404
|
+
|
|
405
|
+
# during the second half of the animation
|
|
406
|
+
ec.assert_(1, False, 0) # n_progress is still 0 !!
|
|
407
|
+
ec1.assert_(1, True, 0)
|
|
408
|
+
ec2.assert_(1, True, 1)
|
|
409
|
+
sleep(.5)
|
|
410
|
+
|
|
411
|
+
# after the animation compeleted
|
|
412
|
+
ec.assert_(1, False, 1) # n_progress is still 0 !
|
|
413
|
+
ec1.assert_(1, True, 1)
|
|
414
|
+
ec2.assert_(1, True, 1)
|
|
415
|
+
assert no_animations_being_played()
|
kivy/tests/test_app.py
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
from os import name
|
|
2
|
+
import os.path
|
|
3
|
+
from math import isclose
|
|
4
|
+
from textwrap import dedent
|
|
5
|
+
|
|
6
|
+
from kivy.app import App
|
|
7
|
+
from kivy.clock import Clock
|
|
8
|
+
from kivy import lang
|
|
9
|
+
from kivy.tests import GraphicUnitTest, async_run, UnitKivyApp
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AppTest(GraphicUnitTest):
|
|
13
|
+
def test_start_raw_app(self):
|
|
14
|
+
lang._delayed_start = None
|
|
15
|
+
a = App()
|
|
16
|
+
Clock.schedule_once(a.stop, .1)
|
|
17
|
+
a.run()
|
|
18
|
+
|
|
19
|
+
def test_start_app_with_kv(self):
|
|
20
|
+
class TestKvApp(App):
|
|
21
|
+
pass
|
|
22
|
+
|
|
23
|
+
lang._delayed_start = None
|
|
24
|
+
a = TestKvApp()
|
|
25
|
+
Clock.schedule_once(a.stop, .1)
|
|
26
|
+
a.run()
|
|
27
|
+
|
|
28
|
+
def test_user_data_dir(self):
|
|
29
|
+
a = App()
|
|
30
|
+
data_dir = a.user_data_dir
|
|
31
|
+
assert os.path.exists(data_dir)
|
|
32
|
+
|
|
33
|
+
def test_directory(self):
|
|
34
|
+
a = App()
|
|
35
|
+
assert os.path.exists(a.directory)
|
|
36
|
+
|
|
37
|
+
def test_name(self):
|
|
38
|
+
class NameTest(App):
|
|
39
|
+
pass
|
|
40
|
+
|
|
41
|
+
a = NameTest()
|
|
42
|
+
assert a.name == 'nametest'
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def basic_app():
|
|
46
|
+
from kivy.app import App
|
|
47
|
+
from kivy.uix.label import Label
|
|
48
|
+
|
|
49
|
+
class TestApp(UnitKivyApp, App):
|
|
50
|
+
def build(self):
|
|
51
|
+
return Label(text='Hello, World!')
|
|
52
|
+
|
|
53
|
+
return TestApp()
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@async_run(app_cls_func=basic_app)
|
|
57
|
+
async def test_basic_app(kivy_app):
|
|
58
|
+
assert kivy_app.root.text == 'Hello, World!'
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def button_app():
|
|
62
|
+
from kivy.app import App
|
|
63
|
+
from kivy.uix.togglebutton import ToggleButton
|
|
64
|
+
|
|
65
|
+
class TestApp(UnitKivyApp, App):
|
|
66
|
+
def build(self):
|
|
67
|
+
return ToggleButton(text='Hello, World!')
|
|
68
|
+
|
|
69
|
+
return TestApp()
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
@async_run(app_cls_func=button_app)
|
|
73
|
+
async def test_button_app(kivy_app):
|
|
74
|
+
assert kivy_app.root.text == 'Hello, World!'
|
|
75
|
+
assert kivy_app.root.state == 'normal'
|
|
76
|
+
|
|
77
|
+
async for state, touch_pos in kivy_app.do_touch_down_up(
|
|
78
|
+
widget=kivy_app.root, widget_jitter=True):
|
|
79
|
+
pass
|
|
80
|
+
|
|
81
|
+
assert kivy_app.root.state == 'down'
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def scatter_app():
|
|
85
|
+
from kivy.app import App
|
|
86
|
+
from kivy.uix.label import Label
|
|
87
|
+
from kivy.uix.scatter import Scatter
|
|
88
|
+
|
|
89
|
+
class TestApp(UnitKivyApp, App):
|
|
90
|
+
def build(self):
|
|
91
|
+
label = Label(text='Hello, World!', size=('200dp', '200dp'))
|
|
92
|
+
scatter = Scatter(do_scale=False, do_rotation=False)
|
|
93
|
+
scatter.add_widget(label)
|
|
94
|
+
return scatter
|
|
95
|
+
|
|
96
|
+
return TestApp()
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
@async_run(app_cls_func=scatter_app)
|
|
100
|
+
async def test_drag_app(kivy_app):
|
|
101
|
+
scatter = kivy_app.root
|
|
102
|
+
assert tuple(scatter.pos) == (0, 0)
|
|
103
|
+
|
|
104
|
+
async for state, touch_pos in kivy_app.do_touch_drag(
|
|
105
|
+
pos=(100, 100), target_pos=(200, 200)):
|
|
106
|
+
pass
|
|
107
|
+
|
|
108
|
+
assert isclose(scatter.x, 100)
|
|
109
|
+
assert isclose(scatter.y, 100)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def text_app():
|
|
113
|
+
from kivy.app import App
|
|
114
|
+
from kivy.uix.textinput import TextInput
|
|
115
|
+
|
|
116
|
+
class TestApp(UnitKivyApp, App):
|
|
117
|
+
def build(self):
|
|
118
|
+
return TextInput()
|
|
119
|
+
|
|
120
|
+
return TestApp()
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
@async_run(app_cls_func=text_app)
|
|
124
|
+
async def test_text_app(kivy_app):
|
|
125
|
+
text = kivy_app.root
|
|
126
|
+
assert text.text == ''
|
|
127
|
+
|
|
128
|
+
# activate widget
|
|
129
|
+
async for state, touch_pos in kivy_app.do_touch_down_up(widget=text):
|
|
130
|
+
pass
|
|
131
|
+
|
|
132
|
+
async for state, value in kivy_app.do_keyboard_key(key='A', num_press=4):
|
|
133
|
+
pass
|
|
134
|
+
async for state, value in kivy_app.do_keyboard_key(key='q', num_press=3):
|
|
135
|
+
pass
|
|
136
|
+
|
|
137
|
+
assert text.text == 'AAAAqqq'
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def graphics_app():
|
|
141
|
+
from kivy.app import App
|
|
142
|
+
from kivy.uix.widget import Widget
|
|
143
|
+
from kivy.graphics import Color, Rectangle
|
|
144
|
+
|
|
145
|
+
class TestApp(UnitKivyApp, App):
|
|
146
|
+
def build(self):
|
|
147
|
+
widget = Widget()
|
|
148
|
+
with widget.canvas:
|
|
149
|
+
Color(1, 0, 0, 1)
|
|
150
|
+
Rectangle(pos=(0, 0), size=(100, 100))
|
|
151
|
+
Color(0, 1, 0, 1)
|
|
152
|
+
Rectangle(pos=(100, 0), size=(100, 100))
|
|
153
|
+
return widget
|
|
154
|
+
|
|
155
|
+
return TestApp()
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
@async_run(app_cls_func=graphics_app)
|
|
159
|
+
async def test_graphics_app(kivy_app):
|
|
160
|
+
widget = kivy_app.root
|
|
161
|
+
(r1, g1, b1, a1), (r2, g2, b2, a2) = kivy_app.get_widget_pos_pixel(
|
|
162
|
+
widget, [(50, 50), (150, 50)])
|
|
163
|
+
|
|
164
|
+
assert not g1 and not b1 and not r2 and not b2
|
|
165
|
+
assert r1 > 50 and a1 > 50 and g2 > 50 and a2 > 50
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def kv_app_ref_app():
|
|
169
|
+
from kivy.app import App
|
|
170
|
+
from kivy.lang import Builder
|
|
171
|
+
from kivy.properties import ObjectProperty
|
|
172
|
+
from kivy.uix.widget import Widget
|
|
173
|
+
|
|
174
|
+
class MyWidget(Widget):
|
|
175
|
+
|
|
176
|
+
obj = ObjectProperty(None)
|
|
177
|
+
|
|
178
|
+
Builder.load_string(dedent(
|
|
179
|
+
"""
|
|
180
|
+
<MyWidget>:
|
|
181
|
+
obj: app.__self__
|
|
182
|
+
"""))
|
|
183
|
+
|
|
184
|
+
class TestApp(UnitKivyApp, App):
|
|
185
|
+
def build(self):
|
|
186
|
+
return MyWidget()
|
|
187
|
+
|
|
188
|
+
return TestApp()
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
@async_run(app_cls_func=kv_app_ref_app)
|
|
192
|
+
async def test_leak_app_kv_property(kivy_app):
|
|
193
|
+
# just tests whether the app is gc'd after the test is complete
|
|
194
|
+
pass
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def kv_app_default_ref_app():
|
|
198
|
+
from kivy.app import App
|
|
199
|
+
from kivy.lang import Builder
|
|
200
|
+
|
|
201
|
+
class TestApp(UnitKivyApp, App):
|
|
202
|
+
def build(self):
|
|
203
|
+
# create property in kv and set app to it
|
|
204
|
+
return Builder.load_string(dedent(
|
|
205
|
+
"""
|
|
206
|
+
Widget:
|
|
207
|
+
obj: app.__self__
|
|
208
|
+
"""))
|
|
209
|
+
|
|
210
|
+
return TestApp()
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
@async_run(app_cls_func=kv_app_default_ref_app)
|
|
214
|
+
async def test_leak_app_default_kv_property(kivy_app):
|
|
215
|
+
# just tests whether the app is gc'd after the test is complete
|
|
216
|
+
pass
|
kivy/tests/test_audio.py
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Audio tests
|
|
3
|
+
===========
|
|
4
|
+
'''
|
|
5
|
+
|
|
6
|
+
import unittest
|
|
7
|
+
import os
|
|
8
|
+
import pytest
|
|
9
|
+
if os.environ.get('KIVY_TEST_AUDIO') == '0':
|
|
10
|
+
pytestmark = pytest.mark.skip("Audio is not available")
|
|
11
|
+
|
|
12
|
+
SAMPLE_FILE = os.path.join(os.path.dirname(__file__), 'sample1.ogg')
|
|
13
|
+
SAMPLE_LENGTH = 1.402
|
|
14
|
+
DELTA = SAMPLE_LENGTH * 0.01
|
|
15
|
+
DELAY = 0.2
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class AudioTestCase(unittest.TestCase):
|
|
19
|
+
|
|
20
|
+
def get_sound(self):
|
|
21
|
+
import os
|
|
22
|
+
assert os.path.exists(SAMPLE_FILE)
|
|
23
|
+
from kivy.core import audio
|
|
24
|
+
return audio.SoundLoader.load(SAMPLE_FILE)
|
|
25
|
+
|
|
26
|
+
def test_length_simple(self):
|
|
27
|
+
sound = self.get_sound()
|
|
28
|
+
volume = sound.volume = 0.75
|
|
29
|
+
length = sound.length
|
|
30
|
+
self.assertAlmostEqual(SAMPLE_LENGTH, length, delta=DELTA)
|
|
31
|
+
# ensure that the gstreamer play/stop doesn't mess up the volume
|
|
32
|
+
assert volume == sound.volume
|
|
33
|
+
|
|
34
|
+
def test_length_playing(self):
|
|
35
|
+
import time
|
|
36
|
+
sound = self.get_sound()
|
|
37
|
+
sound.play()
|
|
38
|
+
try:
|
|
39
|
+
time.sleep(DELAY)
|
|
40
|
+
length = sound.length
|
|
41
|
+
self.assertAlmostEqual(SAMPLE_LENGTH, length, delta=DELTA)
|
|
42
|
+
finally:
|
|
43
|
+
sound.stop()
|
|
44
|
+
self.assertAlmostEqual(SAMPLE_LENGTH, length, delta=DELTA)
|
|
45
|
+
|
|
46
|
+
def test_length_stopped(self):
|
|
47
|
+
import time
|
|
48
|
+
sound = self.get_sound()
|
|
49
|
+
sound.play()
|
|
50
|
+
try:
|
|
51
|
+
time.sleep(DELAY)
|
|
52
|
+
finally:
|
|
53
|
+
sound.stop()
|
|
54
|
+
length = sound.length
|
|
55
|
+
self.assertAlmostEqual(SAMPLE_LENGTH, length, delta=DELTA)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class AudioGstreamerTestCase(AudioTestCase):
|
|
59
|
+
|
|
60
|
+
def make_sound(self, source):
|
|
61
|
+
from kivy.core.audio import audio_gstreamer
|
|
62
|
+
return audio_gstreamer.SoundGstreamer(source)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class AudioPygameTestCase(AudioTestCase):
|
|
66
|
+
|
|
67
|
+
def make_sound(self, source):
|
|
68
|
+
from kivy.core.audio import audio_pygame
|
|
69
|
+
return audio_pygame.SoundPygame(source)
|