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
kivy/deps/__init__.py
ADDED
kivy/effects/__init__.py
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Effects
|
|
3
|
+
=======
|
|
4
|
+
|
|
5
|
+
.. versionadded:: 1.7.0
|
|
6
|
+
|
|
7
|
+
Everything starts with the :class:`~kinetic.KineticEffect`, the base class for
|
|
8
|
+
computing velocity out of a movement.
|
|
9
|
+
|
|
10
|
+
This base class is used to implement the :class:`~scroll.ScrollEffect`, a base
|
|
11
|
+
class used for our :class:`~kivy.uix.scrollview.ScrollView` widget effect.
|
|
12
|
+
We have multiple implementations:
|
|
13
|
+
|
|
14
|
+
- :class:`~kivy.effects.scroll.ScrollEffect`: base class used for implementing
|
|
15
|
+
an effect. It only calculates the scrolling and the overscroll.
|
|
16
|
+
- :class:`~kivy.effects.dampedscroll.DampedScrollEffect`: uses the overscroll
|
|
17
|
+
information to allow the user to drag more than expected. Once the user stops
|
|
18
|
+
the drag, the position is returned to one of the bounds.
|
|
19
|
+
- :class:`~kivy.effects.opacityscroll.OpacityScrollEffect`: uses the overscroll
|
|
20
|
+
information to reduce the opacity of the scrollview widget. When the user
|
|
21
|
+
stops the drag, the opacity is set back to 1.
|
|
22
|
+
|
|
23
|
+
'''
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Damped scroll effect
|
|
3
|
+
====================
|
|
4
|
+
|
|
5
|
+
.. versionadded:: 1.7.0
|
|
6
|
+
|
|
7
|
+
This damped scroll effect will use the
|
|
8
|
+
:attr:`~kivy.effects.scroll.ScrollEffect.overscroll` to calculate the scroll
|
|
9
|
+
value, and slows going back to the upper or lower limit.
|
|
10
|
+
|
|
11
|
+
'''
|
|
12
|
+
|
|
13
|
+
__all__ = ('DampedScrollEffect',)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
from kivy.effects.scroll import ScrollEffect
|
|
17
|
+
from kivy.properties import NumericProperty, BooleanProperty
|
|
18
|
+
from kivy.metrics import sp
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class DampedScrollEffect(ScrollEffect):
|
|
22
|
+
'''DampedScrollEffect class. See the module documentation for more
|
|
23
|
+
information.
|
|
24
|
+
'''
|
|
25
|
+
|
|
26
|
+
edge_damping = NumericProperty(0.25)
|
|
27
|
+
'''Edge damping.
|
|
28
|
+
|
|
29
|
+
:attr:`edge_damping` is a :class:`~kivy.properties.NumericProperty` and
|
|
30
|
+
defaults to 0.25
|
|
31
|
+
'''
|
|
32
|
+
|
|
33
|
+
spring_constant = NumericProperty(2.0)
|
|
34
|
+
'''Spring constant.
|
|
35
|
+
|
|
36
|
+
:attr:`spring_constant` is a :class:`~kivy.properties.NumericProperty` and
|
|
37
|
+
defaults to 2.0
|
|
38
|
+
'''
|
|
39
|
+
|
|
40
|
+
min_overscroll = NumericProperty(.5)
|
|
41
|
+
'''An overscroll less than this amount will be normalized to 0.
|
|
42
|
+
|
|
43
|
+
.. versionadded:: 1.8.0
|
|
44
|
+
|
|
45
|
+
:attr:`min_overscroll` is a :class:`~kivy.properties.NumericProperty` and
|
|
46
|
+
defaults to .5.
|
|
47
|
+
'''
|
|
48
|
+
|
|
49
|
+
round_value = BooleanProperty(True)
|
|
50
|
+
'''If True, when the motion stops, :attr:`value` is rounded to the nearest
|
|
51
|
+
integer.
|
|
52
|
+
|
|
53
|
+
.. versionadded:: 1.8.0
|
|
54
|
+
|
|
55
|
+
:attr:`round_value` is a :class:`~kivy.properties.BooleanProperty` and
|
|
56
|
+
defaults to True.
|
|
57
|
+
'''
|
|
58
|
+
|
|
59
|
+
def update_velocity(self, dt):
|
|
60
|
+
if abs(self.velocity) <= self.min_velocity and self.overscroll == 0:
|
|
61
|
+
self.velocity = 0
|
|
62
|
+
# why does this need to be rounded? For now refactored it.
|
|
63
|
+
if self.round_value:
|
|
64
|
+
self.value = round(self.value)
|
|
65
|
+
return
|
|
66
|
+
|
|
67
|
+
total_force = self.velocity * self.friction * dt / self.std_dt
|
|
68
|
+
if abs(self.overscroll) > self.min_overscroll:
|
|
69
|
+
total_force += self.velocity * self.edge_damping
|
|
70
|
+
total_force += self.overscroll * self.spring_constant
|
|
71
|
+
else:
|
|
72
|
+
self.overscroll = 0
|
|
73
|
+
|
|
74
|
+
stop_overscroll = ''
|
|
75
|
+
if not self.is_manual:
|
|
76
|
+
if self.overscroll > 0 and self.velocity < 0:
|
|
77
|
+
stop_overscroll = 'max'
|
|
78
|
+
elif self.overscroll < 0 and self.velocity > 0:
|
|
79
|
+
stop_overscroll = 'min'
|
|
80
|
+
|
|
81
|
+
self.velocity = self.velocity - total_force
|
|
82
|
+
if not self.is_manual:
|
|
83
|
+
self.apply_distance(self.velocity * dt)
|
|
84
|
+
if stop_overscroll == 'min' and self.value > self.min:
|
|
85
|
+
self.value = self.min
|
|
86
|
+
self.velocity = 0
|
|
87
|
+
return
|
|
88
|
+
if stop_overscroll == 'max' and self.value < self.max:
|
|
89
|
+
self.value = self.max
|
|
90
|
+
self.velocity = 0
|
|
91
|
+
return
|
|
92
|
+
self.trigger_velocity_update()
|
|
93
|
+
|
|
94
|
+
def on_value(self, *args):
|
|
95
|
+
scroll_min = self.min
|
|
96
|
+
scroll_max = self.max
|
|
97
|
+
if scroll_min > scroll_max:
|
|
98
|
+
scroll_min, scroll_max = scroll_max, scroll_min
|
|
99
|
+
if self.value < scroll_min:
|
|
100
|
+
self.overscroll = self.value - scroll_min
|
|
101
|
+
elif self.value > scroll_max:
|
|
102
|
+
self.overscroll = self.value - scroll_max
|
|
103
|
+
else:
|
|
104
|
+
self.overscroll = 0
|
|
105
|
+
self.scroll = self.value
|
|
106
|
+
|
|
107
|
+
def on_overscroll(self, *args):
|
|
108
|
+
self.trigger_velocity_update()
|
|
109
|
+
|
|
110
|
+
def apply_distance(self, distance):
|
|
111
|
+
os = abs(self.overscroll)
|
|
112
|
+
if os:
|
|
113
|
+
distance /= 1. + os / sp(200.)
|
|
114
|
+
super(DampedScrollEffect, self).apply_distance(distance)
|
kivy/effects/kinetic.py
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Kinetic effect
|
|
3
|
+
==============
|
|
4
|
+
|
|
5
|
+
.. versionadded:: 1.7.0
|
|
6
|
+
|
|
7
|
+
The :class:`KineticEffect` is the base class that is used to compute the
|
|
8
|
+
velocity out of a movement. When the movement is finished, the effect will
|
|
9
|
+
compute the position of the movement according to the velocity, and reduce the
|
|
10
|
+
velocity with a friction. The movement stop until the velocity is 0.
|
|
11
|
+
|
|
12
|
+
Conceptually, the usage could be::
|
|
13
|
+
|
|
14
|
+
>>> effect = KineticEffect()
|
|
15
|
+
>>> effect.start(10)
|
|
16
|
+
>>> effect.update(15)
|
|
17
|
+
>>> effect.update(30)
|
|
18
|
+
>>> effect.stop(48)
|
|
19
|
+
|
|
20
|
+
Over the time, you will start a movement of a value, update it, and stop the
|
|
21
|
+
movement. At this time, you'll get the movement value into
|
|
22
|
+
:attr:`KineticEffect.value`. On the example i've typed manually, the computed
|
|
23
|
+
velocity will be::
|
|
24
|
+
|
|
25
|
+
>>> effect.velocity
|
|
26
|
+
3.1619100231163046
|
|
27
|
+
|
|
28
|
+
After multiple clock interaction, the velocity will decrease according to
|
|
29
|
+
:attr:`KineticEffect.friction`. The computed value will be stored in
|
|
30
|
+
:attr:`KineticEffect.value`. The output of this `value` could be::
|
|
31
|
+
|
|
32
|
+
46.30038145219605
|
|
33
|
+
54.58302451968686
|
|
34
|
+
61.9229016256196
|
|
35
|
+
# ...
|
|
36
|
+
|
|
37
|
+
'''
|
|
38
|
+
|
|
39
|
+
__all__ = ('KineticEffect', )
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
from time import time
|
|
43
|
+
from kivy.event import EventDispatcher
|
|
44
|
+
from kivy.properties import NumericProperty, BooleanProperty
|
|
45
|
+
from kivy.clock import Clock
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class KineticEffect(EventDispatcher):
|
|
49
|
+
'''Kinetic effect class. See module documentation for more information.
|
|
50
|
+
'''
|
|
51
|
+
|
|
52
|
+
velocity = NumericProperty(0)
|
|
53
|
+
'''Velocity of the movement.
|
|
54
|
+
|
|
55
|
+
:attr:`velocity` is a :class:`~kivy.properties.NumericProperty` and
|
|
56
|
+
defaults to 0.
|
|
57
|
+
'''
|
|
58
|
+
|
|
59
|
+
friction = NumericProperty(0.05)
|
|
60
|
+
'''Friction to apply on the velocity
|
|
61
|
+
|
|
62
|
+
:attr:`friction` is a :class:`~kivy.properties.NumericProperty` and
|
|
63
|
+
defaults to 0.05.
|
|
64
|
+
'''
|
|
65
|
+
|
|
66
|
+
value = NumericProperty(0)
|
|
67
|
+
'''Value (during the movement and computed) of the effect.
|
|
68
|
+
|
|
69
|
+
:attr:`value` is a :class:`~kivy.properties.NumericProperty` and
|
|
70
|
+
defaults to 0.
|
|
71
|
+
'''
|
|
72
|
+
|
|
73
|
+
is_manual = BooleanProperty(False)
|
|
74
|
+
'''Indicate if a movement is in progress (True) or not (False).
|
|
75
|
+
|
|
76
|
+
:attr:`is_manual` is a :class:`~kivy.properties.BooleanProperty` and
|
|
77
|
+
defaults to False.
|
|
78
|
+
'''
|
|
79
|
+
|
|
80
|
+
max_history = NumericProperty(5)
|
|
81
|
+
'''Save up to `max_history` movement value into the history. This is used
|
|
82
|
+
for correctly calculating the velocity according to the movement.
|
|
83
|
+
|
|
84
|
+
:attr:`max_history` is a :class:`~kivy.properties.NumericProperty` and
|
|
85
|
+
defaults to 5.
|
|
86
|
+
'''
|
|
87
|
+
|
|
88
|
+
min_distance = NumericProperty(.1)
|
|
89
|
+
'''The minimal distance for a movement to have nonzero velocity.
|
|
90
|
+
|
|
91
|
+
.. versionadded:: 1.8.0
|
|
92
|
+
|
|
93
|
+
:attr:`min_distance` is :class:`~kivy.properties.NumericProperty` and
|
|
94
|
+
defaults to 0.1.
|
|
95
|
+
'''
|
|
96
|
+
|
|
97
|
+
min_velocity = NumericProperty(.5)
|
|
98
|
+
'''Velocity below this quantity is normalized to 0. In other words,
|
|
99
|
+
any motion whose velocity falls below this number is stopped.
|
|
100
|
+
|
|
101
|
+
.. versionadded:: 1.8.0
|
|
102
|
+
|
|
103
|
+
:attr:`min_velocity` is a :class:`~kivy.properties.NumericProperty` and
|
|
104
|
+
defaults to 0.5.
|
|
105
|
+
'''
|
|
106
|
+
|
|
107
|
+
std_dt = NumericProperty(0.017)
|
|
108
|
+
''' std_dt
|
|
109
|
+
correction update_velocity if dt is not constant
|
|
110
|
+
|
|
111
|
+
.. versionadded:: 2.0.0
|
|
112
|
+
|
|
113
|
+
:attr:`std_dt` is a :class:`~kivy.properties.NumericProperty` and
|
|
114
|
+
defaults to 0.017.
|
|
115
|
+
'''
|
|
116
|
+
|
|
117
|
+
def __init__(self, **kwargs):
|
|
118
|
+
self.history = []
|
|
119
|
+
self.trigger_velocity_update = Clock.create_trigger(
|
|
120
|
+
self.update_velocity, 0)
|
|
121
|
+
super(KineticEffect, self).__init__(**kwargs)
|
|
122
|
+
|
|
123
|
+
def apply_distance(self, distance):
|
|
124
|
+
if abs(distance) < self.min_distance:
|
|
125
|
+
self.velocity = 0
|
|
126
|
+
self.value += distance
|
|
127
|
+
|
|
128
|
+
def start(self, val, t=None):
|
|
129
|
+
'''Start the movement.
|
|
130
|
+
|
|
131
|
+
:Parameters:
|
|
132
|
+
`val`: float or int
|
|
133
|
+
Value of the movement
|
|
134
|
+
`t`: float, defaults to None
|
|
135
|
+
Time when the movement happen. If no time is set, it will use
|
|
136
|
+
time.time()
|
|
137
|
+
'''
|
|
138
|
+
self.is_manual = True
|
|
139
|
+
t = t or time()
|
|
140
|
+
self.velocity = 0
|
|
141
|
+
self.history = [(t, val)]
|
|
142
|
+
|
|
143
|
+
def update(self, val, t=None):
|
|
144
|
+
'''Update the movement.
|
|
145
|
+
|
|
146
|
+
See :meth:`start` for the arguments.
|
|
147
|
+
'''
|
|
148
|
+
t = t or time()
|
|
149
|
+
distance = val - self.history[-1][1]
|
|
150
|
+
self.apply_distance(distance)
|
|
151
|
+
self.history.append((t, val))
|
|
152
|
+
if len(self.history) > self.max_history:
|
|
153
|
+
self.history.pop(0)
|
|
154
|
+
|
|
155
|
+
def stop(self, val, t=None):
|
|
156
|
+
'''Stop the movement.
|
|
157
|
+
|
|
158
|
+
See :meth:`start` for the arguments.
|
|
159
|
+
'''
|
|
160
|
+
self.is_manual = False
|
|
161
|
+
t = t or time()
|
|
162
|
+
distance = val - self.history[-1][1]
|
|
163
|
+
self.apply_distance(distance)
|
|
164
|
+
newest_sample = (t, val)
|
|
165
|
+
old_sample = self.history[0]
|
|
166
|
+
for sample in self.history:
|
|
167
|
+
if (newest_sample[0] - sample[0]) < 10. / 60.:
|
|
168
|
+
break
|
|
169
|
+
old_sample = sample
|
|
170
|
+
distance = newest_sample[1] - old_sample[1]
|
|
171
|
+
duration = abs(newest_sample[0] - old_sample[0])
|
|
172
|
+
self.velocity = (distance / max(duration, 0.0001))
|
|
173
|
+
self.trigger_velocity_update()
|
|
174
|
+
|
|
175
|
+
def cancel(self):
|
|
176
|
+
'''Cancel a movement. This can be used in case :meth:`stop` cannot be
|
|
177
|
+
called. It will reset :attr:`is_manual` to False, and compute the
|
|
178
|
+
movement if the velocity is > 0.
|
|
179
|
+
'''
|
|
180
|
+
self.is_manual = False
|
|
181
|
+
self.trigger_velocity_update()
|
|
182
|
+
|
|
183
|
+
def update_velocity(self, dt):
|
|
184
|
+
'''(internal) Update the velocity according to the frametime and
|
|
185
|
+
friction.
|
|
186
|
+
'''
|
|
187
|
+
if abs(self.velocity) <= self.min_velocity:
|
|
188
|
+
self.velocity = 0
|
|
189
|
+
return
|
|
190
|
+
|
|
191
|
+
self.velocity -= self.velocity * self.friction * dt / self.std_dt
|
|
192
|
+
self.apply_distance(self.velocity * dt)
|
|
193
|
+
self.trigger_velocity_update()
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Opacity scroll effect
|
|
3
|
+
=====================
|
|
4
|
+
|
|
5
|
+
Based on the :class:`~kivy.effects.damped.DampedScrollEffect`, this one will
|
|
6
|
+
also decrease the opacity of the target widget during the overscroll.
|
|
7
|
+
|
|
8
|
+
'''
|
|
9
|
+
|
|
10
|
+
__all__ = ('OpacityScrollEffect', )
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
from kivy.effects.dampedscroll import DampedScrollEffect
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class OpacityScrollEffect(DampedScrollEffect):
|
|
17
|
+
'''OpacityScrollEffect class. Uses the overscroll
|
|
18
|
+
information to reduce the opacity of the scrollview widget. When the user
|
|
19
|
+
stops the drag, the opacity is set back to 1.
|
|
20
|
+
'''
|
|
21
|
+
|
|
22
|
+
def on_overscroll(self, *args):
|
|
23
|
+
if self.target_widget and self.target_widget.height != 0:
|
|
24
|
+
alpha = (1.0 -
|
|
25
|
+
abs(self.overscroll / float(self.target_widget.height)))
|
|
26
|
+
self.target_widget.opacity = min(1, alpha)
|
|
27
|
+
self.trigger_velocity_update()
|
kivy/effects/scroll.py
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Scroll effect
|
|
3
|
+
=============
|
|
4
|
+
|
|
5
|
+
.. versionadded:: 1.7.0
|
|
6
|
+
|
|
7
|
+
Based on the :class:`~kivy.effects.kinetic` effect, the :class:`ScrollEffect`
|
|
8
|
+
will limit the movement to bounds determined by its :attr:`~ScrollEffect.min`
|
|
9
|
+
and :attr:`~ScrollEffect.max` properties. If the movement exceeds these
|
|
10
|
+
bounds, it will calculate the amount of :attr:`~ScrollEffect.overscroll` and
|
|
11
|
+
try to return to the value of one of the bounds.
|
|
12
|
+
|
|
13
|
+
This is very useful for implementing a scrolling list. We actually use this
|
|
14
|
+
class as a base effect for our :class:`~kivy.uix.scrollview.ScrollView` widget.
|
|
15
|
+
|
|
16
|
+
'''
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
__all__ = ('ScrollEffect', )
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
from time import time
|
|
23
|
+
from kivy.effects.kinetic import KineticEffect
|
|
24
|
+
from kivy.uix.widget import Widget
|
|
25
|
+
from kivy.properties import NumericProperty, ObjectProperty
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class ScrollEffect(KineticEffect):
|
|
29
|
+
'''ScrollEffect class. See the module documentation for more information.
|
|
30
|
+
'''
|
|
31
|
+
|
|
32
|
+
drag_threshold = NumericProperty('20sp')
|
|
33
|
+
'''Minimum distance to travel before the movement is considered as a drag.
|
|
34
|
+
|
|
35
|
+
:attr:`drag_threshold` is a :class:`~kivy.properties.NumericProperty` and
|
|
36
|
+
defaults to 20sp.
|
|
37
|
+
'''
|
|
38
|
+
|
|
39
|
+
min = NumericProperty(0)
|
|
40
|
+
'''Minimum boundary to use for scrolling.
|
|
41
|
+
|
|
42
|
+
:attr:`min` is a :class:`~kivy.properties.NumericProperty` and defaults to
|
|
43
|
+
0.
|
|
44
|
+
'''
|
|
45
|
+
|
|
46
|
+
max = NumericProperty(0)
|
|
47
|
+
'''Maximum boundary to use for scrolling.
|
|
48
|
+
|
|
49
|
+
:attr:`max` is a :class:`~kivy.properties.NumericProperty` and defaults to
|
|
50
|
+
0.
|
|
51
|
+
'''
|
|
52
|
+
|
|
53
|
+
scroll = NumericProperty(0)
|
|
54
|
+
'''Computed value for scrolling. This value is different from
|
|
55
|
+
:py:attr:`kivy.effects.kinetic.KineticEffect.value`
|
|
56
|
+
in that it will return to one of the min/max bounds.
|
|
57
|
+
|
|
58
|
+
:attr:`scroll` is a :class:`~kivy.properties.NumericProperty` and defaults
|
|
59
|
+
to 0.
|
|
60
|
+
'''
|
|
61
|
+
|
|
62
|
+
overscroll = NumericProperty(0)
|
|
63
|
+
'''Computed value when the user over-scrolls i.e. goes out of the bounds.
|
|
64
|
+
|
|
65
|
+
:attr:`overscroll` is a :class:`~kivy.properties.NumericProperty` and
|
|
66
|
+
defaults to 0.
|
|
67
|
+
'''
|
|
68
|
+
|
|
69
|
+
target_widget = ObjectProperty(None, allownone=True, baseclass=Widget)
|
|
70
|
+
'''Widget to attach to this effect. Even if this class doesn't make changes
|
|
71
|
+
to the `target_widget` by default, subclasses can use it to change the
|
|
72
|
+
graphics or apply custom transformations.
|
|
73
|
+
|
|
74
|
+
:attr:`target_widget` is a :class:`~kivy.properties.ObjectProperty` and
|
|
75
|
+
defaults to None.
|
|
76
|
+
'''
|
|
77
|
+
|
|
78
|
+
displacement = NumericProperty(0)
|
|
79
|
+
'''Cumulative distance of the movement during the interaction. This is used
|
|
80
|
+
to determine if the movement is a drag (more than :attr:`drag_threshold`)
|
|
81
|
+
or not.
|
|
82
|
+
|
|
83
|
+
:attr:`displacement` is a :class:`~kivy.properties.NumericProperty` and
|
|
84
|
+
defaults to 0.
|
|
85
|
+
'''
|
|
86
|
+
|
|
87
|
+
def reset(self, pos):
|
|
88
|
+
'''(internal) Reset the value and the velocity to the `pos`.
|
|
89
|
+
Mostly used when the bounds are checked.
|
|
90
|
+
'''
|
|
91
|
+
self.value = pos
|
|
92
|
+
self.velocity = 0
|
|
93
|
+
if self.history:
|
|
94
|
+
val = self.history[-1][1]
|
|
95
|
+
self.history = [(time(), val)]
|
|
96
|
+
|
|
97
|
+
def on_value(self, *args):
|
|
98
|
+
scroll_min = self.min
|
|
99
|
+
scroll_max = self.max
|
|
100
|
+
if scroll_min > scroll_max:
|
|
101
|
+
scroll_min, scroll_max = scroll_max, scroll_min
|
|
102
|
+
if self.value < scroll_min:
|
|
103
|
+
self.overscroll = self.value - scroll_min
|
|
104
|
+
self.reset(scroll_min)
|
|
105
|
+
elif self.value > scroll_max:
|
|
106
|
+
self.overscroll = self.value - scroll_max
|
|
107
|
+
self.reset(scroll_max)
|
|
108
|
+
else:
|
|
109
|
+
self.scroll = self.value
|
|
110
|
+
|
|
111
|
+
def start(self, val, t=None):
|
|
112
|
+
self.is_manual = True
|
|
113
|
+
self.displacement = 0
|
|
114
|
+
return super(ScrollEffect, self).start(val, t)
|
|
115
|
+
|
|
116
|
+
def update(self, val, t=None):
|
|
117
|
+
self.displacement += abs(val - self.history[-1][1])
|
|
118
|
+
return super(ScrollEffect, self).update(val, t)
|
|
119
|
+
|
|
120
|
+
def stop(self, val, t=None):
|
|
121
|
+
self.is_manual = False
|
|
122
|
+
self.displacement += abs(val - self.history[-1][1])
|
|
123
|
+
if self.displacement <= self.drag_threshold:
|
|
124
|
+
self.velocity = 0
|
|
125
|
+
return
|
|
126
|
+
return super(ScrollEffect, self).stop(val, t)
|
kivy/event.py
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# This is a "jumping" module, required for python-for-android project
|
|
2
|
+
# Because we are putting all the module into the same .so, there can be name
|
|
3
|
+
# conflict. We have one conflict with pygame.event and kivy.event => Both are
|
|
4
|
+
# python extension and have the same "initevent" symbol. So right now, just
|
|
5
|
+
# rename this one.
|
|
6
|
+
__all__ = ('EventDispatcher', 'ObjectWithUid', 'Observable')
|
|
7
|
+
|
|
8
|
+
import kivy._event
|
|
9
|
+
__doc__ = kivy._event.__doc__
|
|
10
|
+
EventDispatcher = kivy._event.EventDispatcher
|
|
11
|
+
ObjectWithUid = kivy._event.ObjectWithUid
|
|
12
|
+
Observable = kivy._event.Observable
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Event Manager
|
|
3
|
+
=============
|
|
4
|
+
|
|
5
|
+
The :class:`EventManagerBase` is the abstract class intended for specific
|
|
6
|
+
implementation of dispatching motion events
|
|
7
|
+
(instances of :class:`~kivy.input.motionevent.MotionEvent`) to widgets through
|
|
8
|
+
:meth:`~kivy.uix.widget.Widget.on_motion` method of the
|
|
9
|
+
:class:`~kivy.uix.widget.Widget` class.
|
|
10
|
+
|
|
11
|
+
.. warning::
|
|
12
|
+
This feature is experimental and it remains so while this warning is
|
|
13
|
+
present.
|
|
14
|
+
|
|
15
|
+
Manager is a layer between the window and its widgets.
|
|
16
|
+
:class:`~kivy.core.window.WindowBase` will forward all the events it receives
|
|
17
|
+
in :meth:`~kivy.core.window.WindowBase.on_motion` method to the all managers
|
|
18
|
+
who declared to receive types of those events. Event will continue to go
|
|
19
|
+
through the managers list even if one of them accept it (by returning `True`).
|
|
20
|
+
|
|
21
|
+
When to use an event manager
|
|
22
|
+
----------------------------
|
|
23
|
+
|
|
24
|
+
Use a manager when you want to:
|
|
25
|
+
|
|
26
|
+
- Dispatch touch, hover, keyboard, joystick or any other events to the widgets
|
|
27
|
+
through :meth:`~kivy.uix.widget.Widget.on_motion` method.
|
|
28
|
+
- Dispatch filtered motion events by any criteria, like by a
|
|
29
|
+
:attr:`~kivy.input.motionevent.MotionEvent.device` or a
|
|
30
|
+
:attr:`~kivy.input.motionevent.MotionEvent.profile`.
|
|
31
|
+
- Combine several motion events (touch, hover etc.) into one new event and
|
|
32
|
+
dispatch it to the widgets.
|
|
33
|
+
- Dispatch one-time generic events, like app pause/resume.
|
|
34
|
+
- Write an event simulator, like a touch simulator which draws a circle on
|
|
35
|
+
window's canvas for every simulated touch.
|
|
36
|
+
|
|
37
|
+
Defining and registering an event manager
|
|
38
|
+
-----------------------------------------
|
|
39
|
+
|
|
40
|
+
1. Inherit :class:`EventManagerBase` and set which events this manager
|
|
41
|
+
should receive by declaring event types in
|
|
42
|
+
:attr:`EventManagerBase.type_ids` attribute.
|
|
43
|
+
2. Implement :meth:`EventManagerBase.dispatch` which will be called by window
|
|
44
|
+
to pass event type (one of "begin", "update", "end") and an event.
|
|
45
|
+
3. Implement :meth:`EventManagerBase.start` and :meth:`EventManagerBase.stop`
|
|
46
|
+
to allocate and release additional resources if needed.
|
|
47
|
+
4. Register a manager instance to window using method
|
|
48
|
+
:meth:`~kivy.core.window.WindowBase.register_event_manager`. This can be
|
|
49
|
+
done by overriding methods :meth:`~kivy.app.App.build` or
|
|
50
|
+
:meth:`~kivy.app.App.on_start`.
|
|
51
|
+
|
|
52
|
+
All registered managers are kept in the
|
|
53
|
+
:attr:`~kivy.core.window.WindowBase.event_managers` list. To unregister a
|
|
54
|
+
manager call :meth:`~kivy.core.window.WindowBase.unregister_event_manager`
|
|
55
|
+
which itself can be called in :meth:`~kivy.app.App.on_stop` method.
|
|
56
|
+
|
|
57
|
+
Dispatching events to the widgets
|
|
58
|
+
---------------------------------
|
|
59
|
+
|
|
60
|
+
Once registered, window will start the manager and forward all events of types
|
|
61
|
+
declared in :attr:`EventManagerBase.type_ids` to the manager's
|
|
62
|
+
:meth:`EventManagerBase.dispatch` method. It's up to manager to decide how to
|
|
63
|
+
dispatch them, either by going through :attr:`EventManagerBase.window.children`
|
|
64
|
+
list and dispatching `on_motion` event or by using some different logic. It's
|
|
65
|
+
also up to manager to dispatch grabbed events if grab feature is supported by
|
|
66
|
+
the event (see :meth:`~kivy.input.motionevent.MotionEvent.grab` and
|
|
67
|
+
:meth:`~kivy.input.motionevent.MotionEvent.ungrab` methods).
|
|
68
|
+
|
|
69
|
+
Manager can assign a different dispatch mode to decide how event
|
|
70
|
+
should be dispatched throughout the widget tree by changing the value of the
|
|
71
|
+
:attr:`~kivy.input.motionevent.MotionEvent.dispatch_mode` attribute. Before
|
|
72
|
+
changing the mode manager should store/restore the current one, either by using
|
|
73
|
+
a local variable or by using event's
|
|
74
|
+
:meth:`~kivy.input.motionevent.MotionEvent.push` /
|
|
75
|
+
:meth:`~kivy.input.motionevent.MotionEvent.pop` methods.
|
|
76
|
+
|
|
77
|
+
Currently there are three dispatch modes (behaviors) recognized by the
|
|
78
|
+
`on_motion` method in :class:`~kivy.uix.widget.Widget` class:
|
|
79
|
+
|
|
80
|
+
1. Default dispatch (requires :const:`MODE_DEFAULT_DISPATCH`) - event will go
|
|
81
|
+
through widget's `children` list, starting with the first widget in the
|
|
82
|
+
list until event gets accepted or last widget registered for that event is
|
|
83
|
+
reached. Mode :const:`MODE_DEFAULT_DISPATCH` is assigned by default in
|
|
84
|
+
:class:`~kivy.input.motionevent.MotionEvent` class.
|
|
85
|
+
2. Filtered dispatch (requires :const:`MODE_FILTERED_DISPATCH`) - event will go
|
|
86
|
+
only through registered child widgets.
|
|
87
|
+
3. No dispatch to children (requires :const:`MODE_DONT_DISPATCH`) - event will
|
|
88
|
+
not be dispatched to child widgets.
|
|
89
|
+
|
|
90
|
+
Note that window does not have a `motion_filter` property and therefore does
|
|
91
|
+
not have a list of filtered widgets from its `children` list.
|
|
92
|
+
'''
|
|
93
|
+
|
|
94
|
+
MODE_DEFAULT_DISPATCH = 'default'
|
|
95
|
+
'''Assign this mode to make event dispatch through widget's `children` list,
|
|
96
|
+
starting with the first widget in the list until event gets accepted or last
|
|
97
|
+
widget registered for that event is reached. Widgets after the last registered
|
|
98
|
+
widget are ignored.
|
|
99
|
+
|
|
100
|
+
.. versionadded:: 2.1.0
|
|
101
|
+
'''
|
|
102
|
+
|
|
103
|
+
MODE_FILTERED_DISPATCH = 'filtered'
|
|
104
|
+
'''Assign this mode to make event dispatch only to child widgets which were
|
|
105
|
+
previously registered to receive events of the same
|
|
106
|
+
:attr:`~kivy.input.motionevent.MotionEvent.type_id` and not to all
|
|
107
|
+
child widgets.
|
|
108
|
+
|
|
109
|
+
.. versionadded:: 2.1.0
|
|
110
|
+
'''
|
|
111
|
+
|
|
112
|
+
MODE_DONT_DISPATCH = 'none'
|
|
113
|
+
'''Assign this mode to prevent event from dispatching to child widgets.
|
|
114
|
+
|
|
115
|
+
.. versionadded:: 2.1.0
|
|
116
|
+
'''
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
class EventManagerBase(object):
|
|
120
|
+
'''Abstract class with methods :meth:`start`, :meth:`stop` and
|
|
121
|
+
:meth:`dispatch` for specific class to implement.
|
|
122
|
+
|
|
123
|
+
Example of the manager receiving touch and hover events::
|
|
124
|
+
|
|
125
|
+
class TouchHoverManager(EventManagerBase):
|
|
126
|
+
|
|
127
|
+
type_ids = ('touch', 'hover')
|
|
128
|
+
|
|
129
|
+
def start(self):
|
|
130
|
+
# Create additional resources, bind callbacks to self.window
|
|
131
|
+
|
|
132
|
+
def dispatch(self, etype, me):
|
|
133
|
+
if me.type_id == 'touch':
|
|
134
|
+
# Handle touch event
|
|
135
|
+
elif me.type_id == 'hover'
|
|
136
|
+
# Handle hover event
|
|
137
|
+
|
|
138
|
+
def stop(self):
|
|
139
|
+
# Release resources
|
|
140
|
+
|
|
141
|
+
'''
|
|
142
|
+
|
|
143
|
+
type_ids = None
|
|
144
|
+
'''Override this attribute to declare the type ids of the events which
|
|
145
|
+
manager wants to receive. This attribute will be used by
|
|
146
|
+
:class:`~kivy.core.window.WindowBase` to know which events to pass to the
|
|
147
|
+
:meth:`dispatch` method.
|
|
148
|
+
|
|
149
|
+
.. versionadded:: 2.1.0
|
|
150
|
+
'''
|
|
151
|
+
|
|
152
|
+
window = None
|
|
153
|
+
'''Holds the instance of the :class:`~kivy.core.window.WindowBase`.
|
|
154
|
+
|
|
155
|
+
.. versionadded:: 2.1.0
|
|
156
|
+
'''
|
|
157
|
+
|
|
158
|
+
def start(self):
|
|
159
|
+
'''Start the manager, bind callbacks to the objects and create
|
|
160
|
+
additional resources. Attribute :attr:`window` is assigned when this
|
|
161
|
+
method is called.
|
|
162
|
+
|
|
163
|
+
.. versionadded:: 2.1.0
|
|
164
|
+
'''
|
|
165
|
+
|
|
166
|
+
def dispatch(self, etype, me):
|
|
167
|
+
'''Dispatch event `me` to the widgets in the :attr:`window`.
|
|
168
|
+
|
|
169
|
+
:Parameters:
|
|
170
|
+
`etype`: `str`
|
|
171
|
+
One of "begin", "update" or "end"
|
|
172
|
+
`me`: :class:`~kivy.input.motionevent.MotionEvent`
|
|
173
|
+
The Motion Event currently dispatched.
|
|
174
|
+
:Returns: `bool`
|
|
175
|
+
`True` to stop event dispatching
|
|
176
|
+
|
|
177
|
+
.. versionadded:: 2.1.0
|
|
178
|
+
'''
|
|
179
|
+
|
|
180
|
+
def stop(self):
|
|
181
|
+
'''Stop the manager, unbind from any objects and release any allocated
|
|
182
|
+
resources.
|
|
183
|
+
|
|
184
|
+
.. versionadded:: 2.1.0
|
|
185
|
+
'''
|
kivy/extras/__init__.py
ADDED
|
File without changes
|