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,82 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Custom shape & collide widget
|
|
3
|
+
=============================
|
|
4
|
+
|
|
5
|
+
This is a Triangle widget with a triangle shape based on 3 points (p1, p2, p3),
|
|
6
|
+
plus a custom collision function.
|
|
7
|
+
|
|
8
|
+
The p1, p2, p3 are automatically calculated from the position and the size of
|
|
9
|
+
the Widget bounding box. We are using them to draw the triangle shape.
|
|
10
|
+
(Please note in the kv the special case for Scatter.)
|
|
11
|
+
|
|
12
|
+
Then we need to setup a new collision function to collide only on the triangle.
|
|
13
|
+
We are using a external method that will check if a point is inside a polygon
|
|
14
|
+
(we consider our triangle as a polygon).
|
|
15
|
+
'''
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
import kivy
|
|
19
|
+
kivy.require('1.0.8')
|
|
20
|
+
|
|
21
|
+
from kivy.uix.scatter import Scatter
|
|
22
|
+
from kivy.properties import ListProperty
|
|
23
|
+
from kivy.lang import Builder
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
Builder.load_string('''
|
|
27
|
+
<Triangle>:
|
|
28
|
+
# example for doing a triangle
|
|
29
|
+
# this will automatically recalculate pX from pos/size
|
|
30
|
+
p1: 0, 0
|
|
31
|
+
p2: self.width, 0
|
|
32
|
+
p3: self.width / 2, self.height
|
|
33
|
+
|
|
34
|
+
# If you use a Widget instead of Scatter as base class, you need that:
|
|
35
|
+
#p1: self.pos
|
|
36
|
+
#p2: self.right, self.y
|
|
37
|
+
#p3: self.center_x, self.top
|
|
38
|
+
|
|
39
|
+
# draw something
|
|
40
|
+
canvas:
|
|
41
|
+
Color:
|
|
42
|
+
rgb: 1, 0, 0
|
|
43
|
+
Triangle:
|
|
44
|
+
points: self.p1 + self.p2 + self.p3
|
|
45
|
+
''')
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def point_inside_polygon(x, y, poly):
|
|
49
|
+
'''Taken from http://www.ariel.com.au/a/python-point-int-poly.html
|
|
50
|
+
'''
|
|
51
|
+
n = len(poly)
|
|
52
|
+
inside = False
|
|
53
|
+
p1x = poly[0]
|
|
54
|
+
p1y = poly[1]
|
|
55
|
+
for i in range(0, n + 2, 2):
|
|
56
|
+
p2x = poly[i % n]
|
|
57
|
+
p2y = poly[(i + 1) % n]
|
|
58
|
+
if y > min(p1y, p2y):
|
|
59
|
+
if y <= max(p1y, p2y):
|
|
60
|
+
if x <= max(p1x, p2x):
|
|
61
|
+
if p1y != p2y:
|
|
62
|
+
xinters = (y - p1y) * (p2x - p1x) / (p2y - p1y) + p1x
|
|
63
|
+
if p1x == p2x or x <= xinters:
|
|
64
|
+
inside = not inside
|
|
65
|
+
p1x, p1y = p2x, p2y
|
|
66
|
+
return inside
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class Triangle(Scatter):
|
|
70
|
+
p1 = ListProperty([0, 0])
|
|
71
|
+
p2 = ListProperty([0, 0])
|
|
72
|
+
p3 = ListProperty([0, 0])
|
|
73
|
+
|
|
74
|
+
def collide_point(self, x, y):
|
|
75
|
+
x, y = self.to_local(x, y)
|
|
76
|
+
return point_inside_polygon(x, y,
|
|
77
|
+
self.p1 + self.p2 + self.p3)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
if __name__ == '__main__':
|
|
81
|
+
from kivy.base import runTouchApp
|
|
82
|
+
runTouchApp(Triangle(size_hint=(None, None)))
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Example usage of the effectwidget.
|
|
3
|
+
|
|
4
|
+
Currently highly experimental.
|
|
5
|
+
'''
|
|
6
|
+
|
|
7
|
+
from kivy.app import App
|
|
8
|
+
from kivy.uix.effectwidget import EffectWidget
|
|
9
|
+
from kivy.uix.spinner import Spinner
|
|
10
|
+
from kivy.uix.boxlayout import BoxLayout
|
|
11
|
+
from kivy.lang import Builder
|
|
12
|
+
from kivy.properties import ObjectProperty
|
|
13
|
+
|
|
14
|
+
from kivy.uix.effectwidget import (MonochromeEffect,
|
|
15
|
+
InvertEffect,
|
|
16
|
+
ChannelMixEffect,
|
|
17
|
+
ScanlinesEffect,
|
|
18
|
+
FXAAEffect,
|
|
19
|
+
PixelateEffect,
|
|
20
|
+
HorizontalBlurEffect,
|
|
21
|
+
VerticalBlurEffect)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class ComparisonWidget(EffectWidget):
|
|
25
|
+
pass
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class EffectSpinner(Spinner):
|
|
29
|
+
pass
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class SpinnerRow(BoxLayout):
|
|
33
|
+
effectwidget = ObjectProperty()
|
|
34
|
+
|
|
35
|
+
def update_effectwidget(self, *args):
|
|
36
|
+
effects = []
|
|
37
|
+
for child in self.children[::-1]:
|
|
38
|
+
text = child.text
|
|
39
|
+
if text == 'none':
|
|
40
|
+
pass
|
|
41
|
+
if text == 'fxaa':
|
|
42
|
+
effects.append(FXAAEffect())
|
|
43
|
+
if text == 'monochrome':
|
|
44
|
+
effects.append(MonochromeEffect())
|
|
45
|
+
if text == 'invert':
|
|
46
|
+
effects.append(InvertEffect())
|
|
47
|
+
if text == 'mix':
|
|
48
|
+
effects.append(ChannelMixEffect())
|
|
49
|
+
if text == 'blur_h':
|
|
50
|
+
effects.append(HorizontalBlurEffect())
|
|
51
|
+
if text == 'blur_v':
|
|
52
|
+
effects.append(VerticalBlurEffect())
|
|
53
|
+
if text == 'postprocessing':
|
|
54
|
+
effects.append(ScanlinesEffect())
|
|
55
|
+
if text == 'pixelate':
|
|
56
|
+
effects.append(PixelateEffect())
|
|
57
|
+
|
|
58
|
+
if self.effectwidget:
|
|
59
|
+
self.effectwidget.effects = effects
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
example = Builder.load_string('''
|
|
63
|
+
#:import Vector kivy.vector.Vector
|
|
64
|
+
BoxLayout:
|
|
65
|
+
orientation: 'vertical'
|
|
66
|
+
FloatLayout:
|
|
67
|
+
ComparisonWidget:
|
|
68
|
+
pos_hint: {'x': 0, 'y': 0}
|
|
69
|
+
size_hint: 0.5, 1
|
|
70
|
+
id: effect1
|
|
71
|
+
ComparisonWidget:
|
|
72
|
+
pos_hint: {'x': pos_slider.value, 'y': 0}
|
|
73
|
+
size_hint: 0.5, 1
|
|
74
|
+
id: effect2
|
|
75
|
+
background_color: (rs.value, gs.value, bs.value, als.value)
|
|
76
|
+
SpinnerRow:
|
|
77
|
+
effectwidget: effect1
|
|
78
|
+
text: 'left effects'
|
|
79
|
+
SpinnerRow:
|
|
80
|
+
effectwidget: effect2
|
|
81
|
+
text: 'right effects'
|
|
82
|
+
BoxLayout:
|
|
83
|
+
size_hint_y: None
|
|
84
|
+
height: sp(40)
|
|
85
|
+
Label:
|
|
86
|
+
text: 'control overlap:'
|
|
87
|
+
Slider:
|
|
88
|
+
min: 0
|
|
89
|
+
max: 0.5
|
|
90
|
+
value: 0.5
|
|
91
|
+
id: pos_slider
|
|
92
|
+
BoxLayout:
|
|
93
|
+
size_hint_y: None
|
|
94
|
+
height: sp(40)
|
|
95
|
+
Label:
|
|
96
|
+
text: 'right bg r,g,b,a'
|
|
97
|
+
Slider:
|
|
98
|
+
min: 0
|
|
99
|
+
max: 1
|
|
100
|
+
value: 0
|
|
101
|
+
id: rs
|
|
102
|
+
Slider:
|
|
103
|
+
min: 0
|
|
104
|
+
max: 1
|
|
105
|
+
value: 0
|
|
106
|
+
id: gs
|
|
107
|
+
Slider:
|
|
108
|
+
min: 0
|
|
109
|
+
max: 1
|
|
110
|
+
value: 0
|
|
111
|
+
id: bs
|
|
112
|
+
Slider:
|
|
113
|
+
min: 0
|
|
114
|
+
max: 1
|
|
115
|
+
value: 0
|
|
116
|
+
id: als
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
<ComparisonWidget>:
|
|
120
|
+
Widget:
|
|
121
|
+
canvas:
|
|
122
|
+
Color:
|
|
123
|
+
rgba: 1, 0, 0, 1
|
|
124
|
+
Ellipse:
|
|
125
|
+
pos: Vector(self.pos) + 0.5*Vector(self.size)
|
|
126
|
+
size: 0.4*Vector(self.size)
|
|
127
|
+
Color:
|
|
128
|
+
rgba: 0, 1, 0.3, 1
|
|
129
|
+
Ellipse:
|
|
130
|
+
pos: Vector(self.pos) + 0.1*Vector(self.size)
|
|
131
|
+
size: 0.6*Vector(self.size)
|
|
132
|
+
Color:
|
|
133
|
+
rgba: 0.5, 0.3, 0.8, 1
|
|
134
|
+
Ellipse:
|
|
135
|
+
pos: Vector(self.pos) + Vector([0, 0.6])*Vector(self.size)
|
|
136
|
+
size: 0.4*Vector(self.size)
|
|
137
|
+
Color:
|
|
138
|
+
rgba: 1, 0.8, 0.1, 1
|
|
139
|
+
Ellipse:
|
|
140
|
+
pos: Vector(self.pos) + Vector([0.5, 0])*Vector(self.size)
|
|
141
|
+
size: 0.4*Vector(self.size)
|
|
142
|
+
Color:
|
|
143
|
+
rgba: 0, 0, 0.8, 1
|
|
144
|
+
Line:
|
|
145
|
+
points:
|
|
146
|
+
[self.x, self.y,
|
|
147
|
+
self.x + self.width, self.y + 0.3*self.height,
|
|
148
|
+
self.x + 0.2*self.width, self.y + 0.1*self.height,
|
|
149
|
+
self.x + 0.85*self.width, self.y + 0.72*self.height,
|
|
150
|
+
self.x + 0.31*self.width, self.y + 0.6*self.height,
|
|
151
|
+
self.x, self.top]
|
|
152
|
+
width: 1
|
|
153
|
+
Color:
|
|
154
|
+
rgba: 0, 0.9, 0.1, 1
|
|
155
|
+
Line:
|
|
156
|
+
points:
|
|
157
|
+
[self.x + self.width, self.y + self.height,
|
|
158
|
+
self.x + 0.35*self.width, self.y + 0.6*self.height,
|
|
159
|
+
self.x + 0.7*self.width, self.y + 0.15*self.height,
|
|
160
|
+
self.x + 0.2*self.width, self.y + 0.22*self.height,
|
|
161
|
+
self.x + 0.3*self.width, self.y + 0.92*self.height]
|
|
162
|
+
width: 2
|
|
163
|
+
|
|
164
|
+
<SpinnerRow>:
|
|
165
|
+
orientation: 'horizontal'
|
|
166
|
+
size_hint_y: None
|
|
167
|
+
height: dp(40)
|
|
168
|
+
text: ''
|
|
169
|
+
Label:
|
|
170
|
+
text: root.text
|
|
171
|
+
EffectSpinner:
|
|
172
|
+
on_text: root.update_effectwidget()
|
|
173
|
+
EffectSpinner:
|
|
174
|
+
on_text: root.update_effectwidget()
|
|
175
|
+
EffectSpinner:
|
|
176
|
+
on_text: root.update_effectwidget()
|
|
177
|
+
|
|
178
|
+
<EffectSpinner>:
|
|
179
|
+
text: 'none'
|
|
180
|
+
values:
|
|
181
|
+
['none', 'fxaa', 'monochrome',
|
|
182
|
+
'invert', 'mix',
|
|
183
|
+
'blur_h', 'blur_v',
|
|
184
|
+
'postprocessing', 'pixelate',]
|
|
185
|
+
''')
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
class EffectApp(App):
|
|
189
|
+
def build(self):
|
|
190
|
+
return example
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
EffectApp().run()
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'''
|
|
2
|
+
This is an example of creating your own effect by writing a glsl string.
|
|
3
|
+
'''
|
|
4
|
+
|
|
5
|
+
from kivy.base import runTouchApp
|
|
6
|
+
from kivy.lang import Builder
|
|
7
|
+
from kivy.uix.effectwidget import EffectWidget, EffectBase
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# The effect string is glsl code defining an effect function.
|
|
11
|
+
effect_string = '''
|
|
12
|
+
vec4 effect(vec4 color, sampler2D texture, vec2 tex_coords, vec2 coords)
|
|
13
|
+
{
|
|
14
|
+
// Note that time is a uniform variable that is automatically
|
|
15
|
+
// provided to all effects.
|
|
16
|
+
float red = color.x * abs(sin(time*2.0));
|
|
17
|
+
float green = color.y; // No change
|
|
18
|
+
float blue = color.z * (1.0 - abs(sin(time*2.0)));
|
|
19
|
+
return vec4(red, green, blue, color.w);
|
|
20
|
+
}
|
|
21
|
+
'''
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class DemoEffect(EffectWidget):
|
|
25
|
+
def __init__(self, *args, **kwargs):
|
|
26
|
+
self.effect_reference = EffectBase(glsl=effect_string)
|
|
27
|
+
super(DemoEffect, self).__init__(*args, **kwargs)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
widget = Builder.load_string('''
|
|
31
|
+
DemoEffect:
|
|
32
|
+
effects: [self.effect_reference] if checkbox.active else []
|
|
33
|
+
orientation: 'vertical'
|
|
34
|
+
Button:
|
|
35
|
+
text: 'Some text so you can see what happens.'
|
|
36
|
+
BoxLayout:
|
|
37
|
+
size_hint_y: None
|
|
38
|
+
height: dp(50)
|
|
39
|
+
Label:
|
|
40
|
+
text: 'Enable effect?'
|
|
41
|
+
CheckBox:
|
|
42
|
+
id: checkbox
|
|
43
|
+
active: True
|
|
44
|
+
''')
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
runTouchApp(widget)
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'''
|
|
2
|
+
This example demonstrates creating and using an AdvancedEffectBase. In
|
|
3
|
+
this case, we use it to efficiently pass the touch coordinates into the shader.
|
|
4
|
+
'''
|
|
5
|
+
|
|
6
|
+
from kivy.base import runTouchApp
|
|
7
|
+
from kivy.properties import ListProperty
|
|
8
|
+
from kivy.lang import Builder
|
|
9
|
+
from kivy.uix.effectwidget import EffectWidget, AdvancedEffectBase
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
effect_string = '''
|
|
13
|
+
uniform vec2 touch;
|
|
14
|
+
|
|
15
|
+
vec4 effect(vec4 color, sampler2D texture, vec2 tex_coords, vec2 coords)
|
|
16
|
+
{
|
|
17
|
+
vec2 distance = 0.025*(coords - touch);
|
|
18
|
+
float dist_mag = (distance.x*distance.x + distance.y*distance.y);
|
|
19
|
+
vec3 multiplier = vec3(abs(sin(dist_mag - time)));
|
|
20
|
+
return vec4(multiplier * color.xyz, 1.0);
|
|
21
|
+
}
|
|
22
|
+
'''
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class TouchEffect(AdvancedEffectBase):
|
|
26
|
+
touch = ListProperty([0.0, 0.0])
|
|
27
|
+
|
|
28
|
+
def __init__(self, *args, **kwargs):
|
|
29
|
+
super(TouchEffect, self).__init__(*args, **kwargs)
|
|
30
|
+
self.glsl = effect_string
|
|
31
|
+
|
|
32
|
+
self.uniforms = {'touch': [0.0, 0.0]}
|
|
33
|
+
|
|
34
|
+
def on_touch(self, *args, **kwargs):
|
|
35
|
+
self.uniforms['touch'] = [float(i) for i in self.touch]
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class TouchWidget(EffectWidget):
|
|
39
|
+
def __init__(self, *args, **kwargs):
|
|
40
|
+
super(TouchWidget, self).__init__(*args, **kwargs)
|
|
41
|
+
self.effect = TouchEffect()
|
|
42
|
+
self.effects = [self.effect]
|
|
43
|
+
|
|
44
|
+
def on_touch_down(self, touch):
|
|
45
|
+
super(TouchWidget, self).on_touch_down(touch)
|
|
46
|
+
self.on_touch_move(touch)
|
|
47
|
+
|
|
48
|
+
def on_touch_move(self, touch):
|
|
49
|
+
self.effect.touch = touch.pos
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
root = Builder.load_string('''
|
|
53
|
+
TouchWidget:
|
|
54
|
+
Button:
|
|
55
|
+
text: 'Some text!'
|
|
56
|
+
Image:
|
|
57
|
+
source: 'data/logo/kivy-icon-512.png'
|
|
58
|
+
fit_mode: "fill"
|
|
59
|
+
''')
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
runTouchApp(root)
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
'''
|
|
2
|
+
FBO example
|
|
3
|
+
===========
|
|
4
|
+
|
|
5
|
+
This is an example of how to use FBO (Frame Buffer Object) to speedup graphics.
|
|
6
|
+
An Fbo is like a texture that you can draw on it.
|
|
7
|
+
|
|
8
|
+
By default, all the children are added in the canvas of the parent.
|
|
9
|
+
When you are displaying thousand of widget, you'll do thousands of graphics
|
|
10
|
+
instructions each frame.
|
|
11
|
+
The idea is to do this drawing only one time in a Fbo, and then, draw the Fbo
|
|
12
|
+
every frame instead of all children's graphics instructions.
|
|
13
|
+
|
|
14
|
+
We created a FboFloatLayout that create his canvas, and a Fbo.
|
|
15
|
+
After the Fbo is created, we are adding Color and Rectangle instruction to
|
|
16
|
+
display the texture of the Fbo itself.
|
|
17
|
+
The overload of on_pos/on_size are here to update size of Fbo if needed, and
|
|
18
|
+
adapt the position/size of the rectangle too.
|
|
19
|
+
|
|
20
|
+
Then, when a child is added or removed, we are redirecting addition/removal of
|
|
21
|
+
graphics instruction to our Fbo. This is why add_widget/remove_widget are
|
|
22
|
+
overloaded too.
|
|
23
|
+
|
|
24
|
+
.. note::
|
|
25
|
+
|
|
26
|
+
This solution can be helpful but not ideal. Multisampling are not available
|
|
27
|
+
in Framebuffer. We will work to add the support of it if the hardware is
|
|
28
|
+
capable of, but it could be not the same.
|
|
29
|
+
|
|
30
|
+
'''
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# needed to create Fbo, must be resolved in future kivy version
|
|
34
|
+
from kivy.core.window import Window
|
|
35
|
+
|
|
36
|
+
from kivy.graphics import Color, Rectangle, Canvas
|
|
37
|
+
from kivy.graphics.fbo import Fbo
|
|
38
|
+
from kivy.uix.floatlayout import FloatLayout
|
|
39
|
+
from kivy.properties import ObjectProperty
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class FboFloatLayout(FloatLayout):
|
|
43
|
+
|
|
44
|
+
texture = ObjectProperty(None, allownone=True)
|
|
45
|
+
|
|
46
|
+
def __init__(self, **kwargs):
|
|
47
|
+
self.canvas = Canvas()
|
|
48
|
+
with self.canvas:
|
|
49
|
+
self.fbo = Fbo(size=self.size)
|
|
50
|
+
Color(1, 1, 1)
|
|
51
|
+
self.fbo_rect = Rectangle()
|
|
52
|
+
|
|
53
|
+
# wait that all the instructions are in the canvas to set texture
|
|
54
|
+
self.texture = self.fbo.texture
|
|
55
|
+
super(FboFloatLayout, self).__init__(**kwargs)
|
|
56
|
+
|
|
57
|
+
def add_widget(self, *args, **kwargs):
|
|
58
|
+
# trick to attach graphics instruction to fbo instead of canvas
|
|
59
|
+
canvas = self.canvas
|
|
60
|
+
self.canvas = self.fbo
|
|
61
|
+
ret = super(FboFloatLayout, self).add_widget(*args, **kwargs)
|
|
62
|
+
self.canvas = canvas
|
|
63
|
+
return ret
|
|
64
|
+
|
|
65
|
+
def remove_widget(self, *args, **kwargs):
|
|
66
|
+
canvas = self.canvas
|
|
67
|
+
self.canvas = self.fbo
|
|
68
|
+
super(FboFloatLayout, self).remove_widget(*args, **kwargs)
|
|
69
|
+
self.canvas = canvas
|
|
70
|
+
|
|
71
|
+
def on_size(self, instance, value):
|
|
72
|
+
self.fbo.size = value
|
|
73
|
+
self.texture = self.fbo.texture
|
|
74
|
+
self.fbo_rect.size = value
|
|
75
|
+
|
|
76
|
+
def on_pos(self, instance, value):
|
|
77
|
+
self.fbo_rect.pos = value
|
|
78
|
+
|
|
79
|
+
def on_texture(self, instance, value):
|
|
80
|
+
self.fbo_rect.texture = value
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
if __name__ == '__main__':
|
|
84
|
+
from kivy.uix.button import Button
|
|
85
|
+
from kivy.app import App
|
|
86
|
+
|
|
87
|
+
class TestFboApp(App):
|
|
88
|
+
def build(self):
|
|
89
|
+
|
|
90
|
+
# test with FboFloatLayout or FloatLayout
|
|
91
|
+
# comment/uncomment to test it
|
|
92
|
+
root = FboFloatLayout()
|
|
93
|
+
# root = FloatLayout()
|
|
94
|
+
|
|
95
|
+
# this part of creation can be slow. try to optimize the loop a
|
|
96
|
+
# little bit.
|
|
97
|
+
s = 30
|
|
98
|
+
size = (s, s)
|
|
99
|
+
sh = (None, None)
|
|
100
|
+
add = root.add_widget
|
|
101
|
+
print('Creating 5000 widgets...')
|
|
102
|
+
for i in range(5000):
|
|
103
|
+
x = (i % 40) * s
|
|
104
|
+
y = int(i / 40) * s
|
|
105
|
+
add(Button(text=str(i), pos=(x, y), size_hint=sh, size=size))
|
|
106
|
+
if i % 1000 == 1000 - 1:
|
|
107
|
+
print(5000 - i - 1, 'left...')
|
|
108
|
+
|
|
109
|
+
return root
|
|
110
|
+
|
|
111
|
+
TestFboApp().run()
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
from kivy.app import App
|
|
2
|
+
from kivy.uix.gridlayout import GridLayout
|
|
3
|
+
from kivy.uix.boxlayout import BoxLayout
|
|
4
|
+
from kivy.uix.label import Label
|
|
5
|
+
from kivy.uix.behaviors import FocusBehavior
|
|
6
|
+
from kivy.graphics import Color, Rectangle
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class FocusWithColor(FocusBehavior):
|
|
10
|
+
''' Class that when focused, changes its background color to red.
|
|
11
|
+
'''
|
|
12
|
+
|
|
13
|
+
_color = None
|
|
14
|
+
_rect = None
|
|
15
|
+
|
|
16
|
+
def __init__(self, **kwargs):
|
|
17
|
+
super(FocusWithColor, self).__init__(**kwargs)
|
|
18
|
+
with self.canvas:
|
|
19
|
+
self._color = Color(1, 1, 1, .2)
|
|
20
|
+
self._rect = Rectangle(size=self.size, pos=self.pos)
|
|
21
|
+
self.bind(size=self._update_rect, pos=self._update_rect)
|
|
22
|
+
|
|
23
|
+
def _update_rect(self, instance, value):
|
|
24
|
+
self._rect.pos = instance.pos
|
|
25
|
+
self._rect.size = instance.size
|
|
26
|
+
|
|
27
|
+
def on_focused(self, instance, value, *largs):
|
|
28
|
+
self._color.rgba = [1, 0, 0, .2] if value else [1, 1, 1, .2]
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class FocusLabel(FocusWithColor, Label):
|
|
32
|
+
'''A label, which in addition to turn red when focused, it also sets the
|
|
33
|
+
keyboard input to the text of the label.
|
|
34
|
+
'''
|
|
35
|
+
|
|
36
|
+
def keyboard_on_key_down(self, window, keycode, text, modifiers):
|
|
37
|
+
'''We call super before doing anything else to enable tab cycling
|
|
38
|
+
by FocusBehavior. If we wanted to use tab for ourselves, we could just
|
|
39
|
+
not call it, or call it if we didn't need tab.
|
|
40
|
+
'''
|
|
41
|
+
if super(FocusLabel, self).keyboard_on_key_down(window, keycode,
|
|
42
|
+
text, modifiers):
|
|
43
|
+
return True
|
|
44
|
+
self.text = keycode[1]
|
|
45
|
+
return True
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class FocusGridLayout(FocusWithColor, GridLayout):
|
|
49
|
+
pass
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class FocusBoxLayout(FocusWithColor, BoxLayout):
|
|
53
|
+
pass
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class FocusApp(App):
|
|
57
|
+
|
|
58
|
+
def build(self):
|
|
59
|
+
root = FocusBoxLayout(padding=[10, 10], spacing=10)
|
|
60
|
+
self.grid1 = grid1 = FocusGridLayout(cols=4, padding=[10, 10],
|
|
61
|
+
spacing=10)
|
|
62
|
+
self.grid2 = grid2 = FocusGridLayout(cols=4, padding=[10, 10],
|
|
63
|
+
spacing=10)
|
|
64
|
+
root.add_widget(FocusLabel(text='Left', size_hint_x=0.4))
|
|
65
|
+
root.add_widget(grid1)
|
|
66
|
+
root.add_widget(grid2)
|
|
67
|
+
root.add_widget(FocusLabel(text='Right', size_hint_x=0.4))
|
|
68
|
+
|
|
69
|
+
for i in range(40):
|
|
70
|
+
grid1.add_widget(FocusLabel(text='l' + str(i)))
|
|
71
|
+
for i in range(40):
|
|
72
|
+
grid2.add_widget(FocusLabel(text='r' + str(i)))
|
|
73
|
+
|
|
74
|
+
# make elements 29, 9 un-focusable. The widgets are displayed in
|
|
75
|
+
# reverse order, so 9 = 39 - 10
|
|
76
|
+
grid2.children[30].text = grid1.children[14].text =\
|
|
77
|
+
grid2.children[15].text = grid1.children[34].text = 'Skip me'
|
|
78
|
+
grid2.children[15].is_focusable = False
|
|
79
|
+
grid2.children[30].is_focusable = False
|
|
80
|
+
# similarly, make 39 - 14 = 25, and 5 un-focusable
|
|
81
|
+
grid1.children[14].is_focusable = False
|
|
82
|
+
grid1.children[34].is_focusable = False
|
|
83
|
+
# don't move focus passed this element
|
|
84
|
+
grid2.children[35].focus_next = StopIteration
|
|
85
|
+
grid2.children[35].text = 'Stop forward'
|
|
86
|
+
|
|
87
|
+
# exchange the links between the sides so that it'll skip to the other
|
|
88
|
+
# side in the middle. Remember that children are displayed reversed
|
|
89
|
+
# in layouts.
|
|
90
|
+
grid1.children[10].focus_next = grid2.children[9]
|
|
91
|
+
grid2.children[10].focus_next = grid1.children[9]
|
|
92
|
+
grid1.children[10].text = '-->'
|
|
93
|
+
grid2.children[10].text = '<--'
|
|
94
|
+
return root
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
if __name__ == '__main__':
|
|
98
|
+
FocusApp().run()
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Image mipmap
|
|
3
|
+
============
|
|
4
|
+
|
|
5
|
+
Difference between a mipmapped image and no mipmap image.
|
|
6
|
+
The lower image is normal, and the top image is mipmapped.
|
|
7
|
+
'''
|
|
8
|
+
|
|
9
|
+
import kivy
|
|
10
|
+
kivy.require('1.0.7')
|
|
11
|
+
|
|
12
|
+
from kivy.app import App
|
|
13
|
+
from kivy.uix.scatter import ScatterPlane
|
|
14
|
+
from kivy.uix.image import Image
|
|
15
|
+
from os.path import join
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class LabelMipmapTest(App):
|
|
19
|
+
def build(self):
|
|
20
|
+
s = ScatterPlane(scale=.5)
|
|
21
|
+
filename = join(kivy.kivy_data_dir, 'logo', 'kivy-icon-256.png')
|
|
22
|
+
l1 = Image(source=filename, pos=(400, 100), size=(256, 256))
|
|
23
|
+
l2 = Image(source=filename, pos=(400, 356), size=(256, 256),
|
|
24
|
+
mipmap=True)
|
|
25
|
+
s.add_widget(l1)
|
|
26
|
+
s.add_widget(l2)
|
|
27
|
+
return s
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
if __name__ == '__main__':
|
|
31
|
+
LabelMipmapTest().run()
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import kivy
|
|
2
|
+
kivy.require('1.0.8')
|
|
3
|
+
|
|
4
|
+
from kivy.core.window import Window
|
|
5
|
+
from kivy.uix.widget import Widget
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class MyKeyboardListener(Widget):
|
|
9
|
+
|
|
10
|
+
def __init__(self, **kwargs):
|
|
11
|
+
super(MyKeyboardListener, self).__init__(**kwargs)
|
|
12
|
+
self._keyboard = Window.request_keyboard(
|
|
13
|
+
self._keyboard_closed, self, 'text')
|
|
14
|
+
if self._keyboard.widget:
|
|
15
|
+
# If it exists, this widget is a VKeyboard object which you can use
|
|
16
|
+
# to change the keyboard layout.
|
|
17
|
+
pass
|
|
18
|
+
self._keyboard.bind(on_key_down=self._on_keyboard_down)
|
|
19
|
+
|
|
20
|
+
def _keyboard_closed(self):
|
|
21
|
+
print('My keyboard have been closed!')
|
|
22
|
+
self._keyboard.unbind(on_key_down=self._on_keyboard_down)
|
|
23
|
+
self._keyboard = None
|
|
24
|
+
|
|
25
|
+
def _on_keyboard_down(self, keyboard, keycode, text, modifiers):
|
|
26
|
+
print('The key', keycode, 'have been pressed')
|
|
27
|
+
print(' - text is %r' % text)
|
|
28
|
+
print(' - modifiers are %r' % modifiers)
|
|
29
|
+
|
|
30
|
+
# Keycode is composed of an integer + a string
|
|
31
|
+
# If we hit escape, release the keyboard
|
|
32
|
+
if keycode[1] == 'escape':
|
|
33
|
+
keyboard.release()
|
|
34
|
+
|
|
35
|
+
# Return True to accept the key. Otherwise, it will be used by
|
|
36
|
+
# the system.
|
|
37
|
+
return True
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
if __name__ == '__main__':
|
|
41
|
+
from kivy.base import runTouchApp
|
|
42
|
+
runTouchApp(MyKeyboardListener())
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Label mipmap
|
|
3
|
+
============
|
|
4
|
+
|
|
5
|
+
This show how to create a mipmapped label, and the visual difference between a
|
|
6
|
+
non mipmapped and mipmapped label.
|
|
7
|
+
'''
|
|
8
|
+
|
|
9
|
+
import kivy
|
|
10
|
+
kivy.require('1.0.7')
|
|
11
|
+
|
|
12
|
+
from kivy.app import App
|
|
13
|
+
from kivy.uix.scatter import ScatterPlane
|
|
14
|
+
from kivy.uix.label import Label
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class LabelMipmapTest(App):
|
|
18
|
+
def build(self):
|
|
19
|
+
s = ScatterPlane(scale=.5)
|
|
20
|
+
l1 = Label(text='Kivy rulz', font_size=98, pos=(400, 100), mipmap=True)
|
|
21
|
+
l2 = Label(text='Kivy rulz', font_size=98, pos=(400, 328))
|
|
22
|
+
s.add_widget(l1)
|
|
23
|
+
s.add_widget(l2)
|
|
24
|
+
return s
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
if __name__ == '__main__':
|
|
28
|
+
LabelMipmapTest().run()
|