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,40 @@
|
|
|
1
|
+
'''
|
|
2
|
+
DDS: DDS image loader
|
|
3
|
+
'''
|
|
4
|
+
|
|
5
|
+
__all__ = ('ImageLoaderDDS', )
|
|
6
|
+
|
|
7
|
+
from kivy.lib.ddsfile import DDSFile
|
|
8
|
+
from kivy.logger import Logger
|
|
9
|
+
from kivy.core.image import ImageLoaderBase, ImageData, ImageLoader
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ImageLoaderDDS(ImageLoaderBase):
|
|
13
|
+
|
|
14
|
+
@staticmethod
|
|
15
|
+
def extensions():
|
|
16
|
+
return ('dds', )
|
|
17
|
+
|
|
18
|
+
def load(self, filename):
|
|
19
|
+
try:
|
|
20
|
+
dds = DDSFile(filename=filename)
|
|
21
|
+
except:
|
|
22
|
+
Logger.warning('Image: Unable to load image <%s>' % filename)
|
|
23
|
+
raise
|
|
24
|
+
|
|
25
|
+
self.filename = filename
|
|
26
|
+
width, height = dds.size
|
|
27
|
+
im = ImageData(width, height, dds.dxt, dds.images[0], source=filename,
|
|
28
|
+
flip_vertical=False)
|
|
29
|
+
if len(dds.images) > 1:
|
|
30
|
+
images = dds.images
|
|
31
|
+
images_size = dds.images_size
|
|
32
|
+
for index in range(1, len(dds.images)):
|
|
33
|
+
w, h = images_size[index]
|
|
34
|
+
data = images[index]
|
|
35
|
+
im.add_mipmap(index, w, h, data)
|
|
36
|
+
return [im]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# register
|
|
40
|
+
ImageLoader.register(ImageLoaderDDS)
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
'''
|
|
2
|
+
FFPyPlayer: FFmpeg based image loader
|
|
3
|
+
'''
|
|
4
|
+
|
|
5
|
+
__all__ = ('ImageLoaderFFPy', )
|
|
6
|
+
|
|
7
|
+
import ffpyplayer
|
|
8
|
+
from ffpyplayer.pic import ImageLoader as ffImageLoader, SWScale
|
|
9
|
+
from ffpyplayer.tools import set_log_callback, get_log_callback
|
|
10
|
+
|
|
11
|
+
from kivy.logger import Logger
|
|
12
|
+
from kivy.core.image import ImageLoaderBase, ImageData, ImageLoader
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
Logger.info('ImageLoaderFFPy: Using ffpyplayer {}'.format(ffpyplayer.version))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
logger_func = {'quiet': Logger.critical, 'panic': Logger.critical,
|
|
19
|
+
'fatal': Logger.critical, 'error': Logger.error,
|
|
20
|
+
'warning': Logger.warning, 'info': Logger.info,
|
|
21
|
+
'verbose': Logger.debug, 'debug': Logger.debug}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _log_callback(message, level):
|
|
25
|
+
message = message.strip()
|
|
26
|
+
if message:
|
|
27
|
+
logger_func[level]('ffpyplayer: {}'.format(message))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
if not get_log_callback():
|
|
31
|
+
set_log_callback(_log_callback)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class ImageLoaderFFPy(ImageLoaderBase):
|
|
35
|
+
'''Image loader based on the ffpyplayer library.
|
|
36
|
+
|
|
37
|
+
.. versionadded:: 1.9.0
|
|
38
|
+
|
|
39
|
+
.. note:
|
|
40
|
+
This provider may support more formats than what is listed in
|
|
41
|
+
:meth:`extensions`.
|
|
42
|
+
'''
|
|
43
|
+
|
|
44
|
+
@staticmethod
|
|
45
|
+
def extensions():
|
|
46
|
+
'''Return accepted extensions for this loader'''
|
|
47
|
+
# See https://www.ffmpeg.org/general.html#Image-Formats
|
|
48
|
+
return ('bmp', 'dpx', 'exr', 'gif', 'ico', 'jpeg', 'jpg2000', 'jpg',
|
|
49
|
+
'jls', 'pam', 'pbm', 'pcx', 'pgm', 'pgmyuv', 'pic', 'png',
|
|
50
|
+
'ppm', 'ptx', 'sgi', 'ras', 'tga', 'tiff', 'webp', 'xbm',
|
|
51
|
+
'xface', 'xwd')
|
|
52
|
+
|
|
53
|
+
def load(self, filename):
|
|
54
|
+
try:
|
|
55
|
+
loader = ffImageLoader(filename)
|
|
56
|
+
except:
|
|
57
|
+
Logger.warning('Image: Unable to load image <%s>' % filename)
|
|
58
|
+
raise
|
|
59
|
+
|
|
60
|
+
# update internals
|
|
61
|
+
self.filename = filename
|
|
62
|
+
images = []
|
|
63
|
+
|
|
64
|
+
while True:
|
|
65
|
+
frame, t = loader.next_frame()
|
|
66
|
+
if frame is None:
|
|
67
|
+
break
|
|
68
|
+
images.append(frame)
|
|
69
|
+
if not len(images):
|
|
70
|
+
raise Exception('No image found in {}'.format(filename))
|
|
71
|
+
|
|
72
|
+
w, h = images[0].get_size()
|
|
73
|
+
ifmt = images[0].get_pixel_format()
|
|
74
|
+
if ifmt != 'rgba' and ifmt != 'rgb24':
|
|
75
|
+
fmt = 'rgba'
|
|
76
|
+
sws = SWScale(w, h, ifmt, ofmt=fmt)
|
|
77
|
+
for i, image in enumerate(images):
|
|
78
|
+
images[i] = sws.scale(image)
|
|
79
|
+
else:
|
|
80
|
+
fmt = ifmt if ifmt == 'rgba' else 'rgb'
|
|
81
|
+
|
|
82
|
+
return [ImageData(w, h, fmt, img.to_memoryview()[0], source_image=img)
|
|
83
|
+
for img in images]
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
# register
|
|
87
|
+
ImageLoader.register(ImageLoaderFFPy)
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
'''
|
|
2
|
+
PIL: PIL image loader
|
|
3
|
+
'''
|
|
4
|
+
|
|
5
|
+
__all__ = ('ImageLoaderPIL', )
|
|
6
|
+
|
|
7
|
+
try:
|
|
8
|
+
import Image as PILImage
|
|
9
|
+
except ImportError:
|
|
10
|
+
# for python3
|
|
11
|
+
from PIL import Image as PILImage
|
|
12
|
+
|
|
13
|
+
from kivy.logger import Logger
|
|
14
|
+
from kivy.core.image import ImageLoaderBase, ImageData, ImageLoader
|
|
15
|
+
|
|
16
|
+
try:
|
|
17
|
+
# Pillow
|
|
18
|
+
PILImage.frombytes
|
|
19
|
+
PILImage.Image.tobytes
|
|
20
|
+
except AttributeError:
|
|
21
|
+
# PIL
|
|
22
|
+
# monkey patch frombytes and tobytes methods, refs:
|
|
23
|
+
# https://github.com/kivy/kivy/issues/5460
|
|
24
|
+
PILImage.frombytes = PILImage.frombuffer
|
|
25
|
+
PILImage.Image.tobytes = PILImage.Image.tostring
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class ImageLoaderPIL(ImageLoaderBase):
|
|
29
|
+
'''Image loader based on the PIL library.
|
|
30
|
+
|
|
31
|
+
.. versionadded:: 1.0.8
|
|
32
|
+
|
|
33
|
+
Support for GIF animation added.
|
|
34
|
+
|
|
35
|
+
Gif animation has a lot of issues(transparency/color depths... etc).
|
|
36
|
+
In order to keep it simple, what is implemented here is what is
|
|
37
|
+
natively supported by the PIL library.
|
|
38
|
+
|
|
39
|
+
As a general rule, try to use gifs that have no transparency.
|
|
40
|
+
Gif's with transparency will work but be prepared for some
|
|
41
|
+
artifacts until transparency support is improved.
|
|
42
|
+
|
|
43
|
+
'''
|
|
44
|
+
|
|
45
|
+
@staticmethod
|
|
46
|
+
def can_save(fmt, is_bytesio):
|
|
47
|
+
if is_bytesio:
|
|
48
|
+
return False
|
|
49
|
+
return fmt in ImageLoaderPIL.extensions()
|
|
50
|
+
|
|
51
|
+
@staticmethod
|
|
52
|
+
def can_load_memory():
|
|
53
|
+
return True
|
|
54
|
+
|
|
55
|
+
@staticmethod
|
|
56
|
+
def extensions():
|
|
57
|
+
'''Return accepted extensions for this loader'''
|
|
58
|
+
PILImage.init()
|
|
59
|
+
return tuple((ext_with_dot[1:] for ext_with_dot in PILImage.EXTENSION))
|
|
60
|
+
|
|
61
|
+
def _img_correct(self, _img_tmp):
|
|
62
|
+
'''Convert image to the correct format and orientation.
|
|
63
|
+
'''
|
|
64
|
+
# image loader work only with rgb/rgba image
|
|
65
|
+
if _img_tmp.mode.lower() not in ('rgb', 'rgba'):
|
|
66
|
+
try:
|
|
67
|
+
imc = _img_tmp.convert('RGBA')
|
|
68
|
+
except:
|
|
69
|
+
Logger.warning(
|
|
70
|
+
'Image: Unable to convert image to rgba (was %s)' %
|
|
71
|
+
(_img_tmp.mode.lower()))
|
|
72
|
+
raise
|
|
73
|
+
_img_tmp = imc
|
|
74
|
+
|
|
75
|
+
return _img_tmp
|
|
76
|
+
|
|
77
|
+
def _img_read(self, im):
|
|
78
|
+
'''Read images from an animated file.
|
|
79
|
+
'''
|
|
80
|
+
im.seek(0)
|
|
81
|
+
|
|
82
|
+
# Read all images inside
|
|
83
|
+
try:
|
|
84
|
+
img_ol = None
|
|
85
|
+
while True:
|
|
86
|
+
img_tmp = im
|
|
87
|
+
img_tmp = self._img_correct(img_tmp)
|
|
88
|
+
if img_ol and (hasattr(im, 'dispose') and not im.dispose):
|
|
89
|
+
# paste new frame over old so as to handle
|
|
90
|
+
# transparency properly
|
|
91
|
+
img_ol.paste(img_tmp, (0, 0), img_tmp)
|
|
92
|
+
img_tmp = img_ol
|
|
93
|
+
img_ol = img_tmp
|
|
94
|
+
yield ImageData(img_tmp.size[0], img_tmp.size[1],
|
|
95
|
+
img_tmp.mode.lower(), img_tmp.tobytes())
|
|
96
|
+
im.seek(im.tell() + 1)
|
|
97
|
+
except EOFError:
|
|
98
|
+
pass
|
|
99
|
+
|
|
100
|
+
def load(self, filename):
|
|
101
|
+
try:
|
|
102
|
+
im = PILImage.open(filename)
|
|
103
|
+
except:
|
|
104
|
+
Logger.warning('Image: Unable to load image <%s>' % filename)
|
|
105
|
+
raise
|
|
106
|
+
# update internals
|
|
107
|
+
if not self._inline:
|
|
108
|
+
self.filename = filename
|
|
109
|
+
# returns an array of type ImageData len 1 if not a sequence image
|
|
110
|
+
return list(self._img_read(im))
|
|
111
|
+
|
|
112
|
+
@staticmethod
|
|
113
|
+
def save(filename, width, height, pixelfmt, pixels, flipped=False,
|
|
114
|
+
imagefmt=None):
|
|
115
|
+
image = PILImage.frombytes(pixelfmt.upper(), (width, height), pixels)
|
|
116
|
+
if flipped:
|
|
117
|
+
image = image.transpose(PILImage.FLIP_TOP_BOTTOM)
|
|
118
|
+
image.save(filename)
|
|
119
|
+
return True
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
# register
|
|
123
|
+
ImageLoader.register(ImageLoaderPIL)
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Pygame: Pygame image loader
|
|
3
|
+
|
|
4
|
+
.. warning::
|
|
5
|
+
|
|
6
|
+
Pygame has been deprecated and will be removed in the release after Kivy
|
|
7
|
+
1.11.0.
|
|
8
|
+
'''
|
|
9
|
+
|
|
10
|
+
__all__ = ('ImageLoaderPygame', )
|
|
11
|
+
|
|
12
|
+
from kivy.logger import Logger
|
|
13
|
+
from kivy.core.image import ImageLoaderBase, ImageData, ImageLoader
|
|
14
|
+
from os.path import isfile
|
|
15
|
+
from kivy.utils import deprecated
|
|
16
|
+
|
|
17
|
+
try:
|
|
18
|
+
import pygame
|
|
19
|
+
except:
|
|
20
|
+
raise
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class ImageLoaderPygame(ImageLoaderBase):
|
|
24
|
+
'''Image loader based on the PIL library'''
|
|
25
|
+
|
|
26
|
+
@deprecated(
|
|
27
|
+
msg='Pygame has been deprecated and will be removed after 1.11.0')
|
|
28
|
+
def __init__(self, *largs, **kwargs):
|
|
29
|
+
super(ImageLoaderPygame, self).__init__(*largs, **kwargs)
|
|
30
|
+
|
|
31
|
+
@staticmethod
|
|
32
|
+
def extensions():
|
|
33
|
+
'''Return accepted extensions for this loader'''
|
|
34
|
+
# under OS X, i got with "pygame.error: File is not a Windows BMP
|
|
35
|
+
# file". documentation said: The image module is a required dependency
|
|
36
|
+
# of Pygame, but it only optionally supports any extended file formats.
|
|
37
|
+
# By default it can only load uncompressed BMP image
|
|
38
|
+
if pygame.image.get_extended() == 0:
|
|
39
|
+
return ('bmp', )
|
|
40
|
+
return ('jpg', 'jpeg', 'jpe', 'png', 'bmp', 'pcx', 'tga', 'tiff',
|
|
41
|
+
'tif', 'lbm', 'pbm', 'ppm', 'xpm')
|
|
42
|
+
|
|
43
|
+
@staticmethod
|
|
44
|
+
def can_save(fmt, is_bytesio):
|
|
45
|
+
if is_bytesio:
|
|
46
|
+
return False
|
|
47
|
+
return fmt in ('png', 'jpg')
|
|
48
|
+
|
|
49
|
+
@staticmethod
|
|
50
|
+
def can_load_memory():
|
|
51
|
+
return True
|
|
52
|
+
|
|
53
|
+
def load(self, filename):
|
|
54
|
+
if not filename:
|
|
55
|
+
import traceback
|
|
56
|
+
traceback.print_stack()
|
|
57
|
+
return
|
|
58
|
+
try:
|
|
59
|
+
im = None
|
|
60
|
+
if self._inline:
|
|
61
|
+
im = pygame.image.load(filename, 'x.{}'.format(self._ext))
|
|
62
|
+
elif isfile(filename):
|
|
63
|
+
with open(filename, 'rb') as fd:
|
|
64
|
+
im = pygame.image.load(fd)
|
|
65
|
+
elif isinstance(filename, bytes):
|
|
66
|
+
try:
|
|
67
|
+
fname = filename.decode()
|
|
68
|
+
if isfile(fname):
|
|
69
|
+
with open(fname, 'rb') as fd:
|
|
70
|
+
im = pygame.image.load(fd)
|
|
71
|
+
except UnicodeDecodeError:
|
|
72
|
+
pass
|
|
73
|
+
if im is None:
|
|
74
|
+
im = pygame.image.load(filename)
|
|
75
|
+
except:
|
|
76
|
+
# Logger.warning(type(filename)('Image: Unable to load image <%s>')
|
|
77
|
+
# % filename)
|
|
78
|
+
raise
|
|
79
|
+
|
|
80
|
+
fmt = ''
|
|
81
|
+
if im.get_bytesize() == 3 and not im.get_colorkey():
|
|
82
|
+
fmt = 'rgb'
|
|
83
|
+
elif im.get_bytesize() == 4:
|
|
84
|
+
fmt = 'rgba'
|
|
85
|
+
|
|
86
|
+
# image loader work only with rgb/rgba image
|
|
87
|
+
if fmt not in ('rgb', 'rgba'):
|
|
88
|
+
try:
|
|
89
|
+
imc = im.convert(32)
|
|
90
|
+
fmt = 'rgba'
|
|
91
|
+
except:
|
|
92
|
+
try:
|
|
93
|
+
imc = im.convert_alpha()
|
|
94
|
+
fmt = 'rgba'
|
|
95
|
+
except:
|
|
96
|
+
Logger.warning(
|
|
97
|
+
'Image: Unable to convert image %r to rgba (was %r)' %
|
|
98
|
+
(filename, im.fmt))
|
|
99
|
+
raise
|
|
100
|
+
im = imc
|
|
101
|
+
|
|
102
|
+
# update internals
|
|
103
|
+
if not self._inline:
|
|
104
|
+
self.filename = filename
|
|
105
|
+
data = pygame.image.tostring(im, fmt.upper())
|
|
106
|
+
return [ImageData(im.get_width(), im.get_height(),
|
|
107
|
+
fmt, data, source=filename)]
|
|
108
|
+
|
|
109
|
+
@staticmethod
|
|
110
|
+
def save(filename, width, height, pixelfmt, pixels, flipped,
|
|
111
|
+
imagefmt=None):
|
|
112
|
+
surface = pygame.image.fromstring(
|
|
113
|
+
pixels, (width, height), pixelfmt.upper(), flipped)
|
|
114
|
+
pygame.image.save(surface, filename)
|
|
115
|
+
return True
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
# register
|
|
119
|
+
ImageLoader.register(ImageLoaderPygame)
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
'''
|
|
2
|
+
SDL2 image loader
|
|
3
|
+
=================
|
|
4
|
+
'''
|
|
5
|
+
|
|
6
|
+
__all__ = ('ImageLoaderSDL2', )
|
|
7
|
+
|
|
8
|
+
from kivy.logger import Logger
|
|
9
|
+
from kivy.core.image import ImageLoaderBase, ImageData, ImageLoader
|
|
10
|
+
try:
|
|
11
|
+
from kivy.core.image import _img_sdl2
|
|
12
|
+
except ImportError:
|
|
13
|
+
from kivy.core import handle_win_lib_import_error
|
|
14
|
+
handle_win_lib_import_error(
|
|
15
|
+
'image', 'sdl2', 'kivy.core.image._img_sdl2')
|
|
16
|
+
raise
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class ImageLoaderSDL2(ImageLoaderBase):
|
|
20
|
+
'''Image loader based on SDL2_image'''
|
|
21
|
+
|
|
22
|
+
def _ensure_ext(self):
|
|
23
|
+
_img_sdl2.init()
|
|
24
|
+
|
|
25
|
+
@staticmethod
|
|
26
|
+
def extensions():
|
|
27
|
+
'''Return accepted extensions for this loader'''
|
|
28
|
+
return ('bmp', 'jpg', 'jpeg', 'jpe', 'lbm', 'pcx', 'png', 'pnm',
|
|
29
|
+
'tga', 'tiff', 'webp', 'xcf', 'xpm', 'xv')
|
|
30
|
+
|
|
31
|
+
@staticmethod
|
|
32
|
+
def can_save(fmt, is_bytesio):
|
|
33
|
+
return fmt in ('jpg', 'png')
|
|
34
|
+
|
|
35
|
+
@staticmethod
|
|
36
|
+
def can_load_memory():
|
|
37
|
+
return True
|
|
38
|
+
|
|
39
|
+
def load(self, filename):
|
|
40
|
+
if self._inline:
|
|
41
|
+
data = filename.read()
|
|
42
|
+
info = _img_sdl2.load_from_memory(data)
|
|
43
|
+
else:
|
|
44
|
+
info = _img_sdl2.load_from_filename(filename)
|
|
45
|
+
if not info:
|
|
46
|
+
Logger.warning('Image: Unable to load image <%s>' % filename)
|
|
47
|
+
raise Exception('SDL2: Unable to load image')
|
|
48
|
+
|
|
49
|
+
w, h, fmt, pixels, rowlength = info
|
|
50
|
+
|
|
51
|
+
# update internals
|
|
52
|
+
if not self._inline:
|
|
53
|
+
self.filename = filename
|
|
54
|
+
return [ImageData(
|
|
55
|
+
w, h, fmt, pixels, source=filename,
|
|
56
|
+
rowlength=rowlength)]
|
|
57
|
+
|
|
58
|
+
@staticmethod
|
|
59
|
+
def save(filename, width, height, pixelfmt, pixels, flipped, imagefmt):
|
|
60
|
+
_img_sdl2.save(filename, width, height, pixelfmt, pixels, flipped,
|
|
61
|
+
imagefmt)
|
|
62
|
+
return True
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
# register
|
|
66
|
+
ImageLoader.register(ImageLoaderSDL2)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Tex: Compressed texture
|
|
3
|
+
'''
|
|
4
|
+
|
|
5
|
+
__all__ = ('ImageLoaderTex', )
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
from struct import unpack
|
|
9
|
+
from kivy.logger import Logger
|
|
10
|
+
from kivy.core.image import ImageLoaderBase, ImageData, ImageLoader
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ImageLoaderTex(ImageLoaderBase):
|
|
14
|
+
|
|
15
|
+
@staticmethod
|
|
16
|
+
def extensions():
|
|
17
|
+
return ('tex', )
|
|
18
|
+
|
|
19
|
+
def load(self, filename):
|
|
20
|
+
try:
|
|
21
|
+
fd = open(filename, 'rb')
|
|
22
|
+
if fd.read(4) != 'KTEX':
|
|
23
|
+
raise Exception('Invalid tex identifier')
|
|
24
|
+
|
|
25
|
+
headersize = unpack('I', fd.read(4))[0]
|
|
26
|
+
header = fd.read(headersize)
|
|
27
|
+
if len(header) != headersize:
|
|
28
|
+
raise Exception('Truncated tex header')
|
|
29
|
+
|
|
30
|
+
info = json.loads(header)
|
|
31
|
+
data = fd.read()
|
|
32
|
+
if len(data) != info['datalen']:
|
|
33
|
+
raise Exception('Truncated tex data')
|
|
34
|
+
|
|
35
|
+
except:
|
|
36
|
+
Logger.warning('Image: Image <%s> is corrupted' % filename)
|
|
37
|
+
raise
|
|
38
|
+
|
|
39
|
+
width, height = info['image_size']
|
|
40
|
+
tw, th = info['texture_size']
|
|
41
|
+
|
|
42
|
+
images = [data]
|
|
43
|
+
im = ImageData(width, height, str(info['format']), images[0],
|
|
44
|
+
source=filename)
|
|
45
|
+
'''
|
|
46
|
+
if len(dds.images) > 1:
|
|
47
|
+
images = dds.images
|
|
48
|
+
images_size = dds.images_size
|
|
49
|
+
for index in range(1, len(dds.images)):
|
|
50
|
+
w, h = images_size[index]
|
|
51
|
+
data = images[index]
|
|
52
|
+
im.add_mipmap(index, w, h, data)
|
|
53
|
+
'''
|
|
54
|
+
return [im]
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
# register
|
|
58
|
+
ImageLoader.register(ImageLoaderTex)
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Spelling
|
|
3
|
+
========
|
|
4
|
+
|
|
5
|
+
Provides abstracted access to a range of spellchecking backends as well as
|
|
6
|
+
word suggestions. The API is inspired by enchant but other backends can be
|
|
7
|
+
added that implement the same API.
|
|
8
|
+
|
|
9
|
+
Spelling currently requires `python-enchant` for all platforms except
|
|
10
|
+
OSX, where a native implementation exists.
|
|
11
|
+
|
|
12
|
+
::
|
|
13
|
+
|
|
14
|
+
>>> from kivy.core.spelling import Spelling
|
|
15
|
+
>>> s = Spelling()
|
|
16
|
+
>>> s.list_languages()
|
|
17
|
+
['en', 'en_CA', 'en_GB', 'en_US']
|
|
18
|
+
>>> s.select_language('en_US')
|
|
19
|
+
>>> s.suggest('helo')
|
|
20
|
+
[u'hole', u'help', u'helot', u'hello', u'halo', u'hero', u'hell', u'held',
|
|
21
|
+
u'helm', u'he-lo']
|
|
22
|
+
|
|
23
|
+
'''
|
|
24
|
+
|
|
25
|
+
__all__ = ('Spelling', 'SpellingBase', 'NoSuchLangError',
|
|
26
|
+
'NoLanguageSelectedError')
|
|
27
|
+
|
|
28
|
+
import sys
|
|
29
|
+
from kivy.core import core_select_lib
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class NoSuchLangError(Exception):
|
|
33
|
+
'''
|
|
34
|
+
Exception to be raised when a specific language could not be found.
|
|
35
|
+
'''
|
|
36
|
+
pass
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class NoLanguageSelectedError(Exception):
|
|
40
|
+
'''
|
|
41
|
+
Exception to be raised when a language-using method is called but no
|
|
42
|
+
language was selected prior to the call.
|
|
43
|
+
'''
|
|
44
|
+
pass
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class SpellingBase(object):
|
|
48
|
+
'''
|
|
49
|
+
Base class for all spelling providers.
|
|
50
|
+
Supports some abstract methods for checking words and getting suggestions.
|
|
51
|
+
'''
|
|
52
|
+
|
|
53
|
+
def __init__(self, language=None):
|
|
54
|
+
'''
|
|
55
|
+
If a `language` identifier (such as 'en_US') is provided and a matching
|
|
56
|
+
language exists, it is selected. If an identifier is provided and no
|
|
57
|
+
matching language exists, a NoSuchLangError exception is raised by
|
|
58
|
+
self.select_language().
|
|
59
|
+
If no `language` identifier is provided, we just fall back to the first
|
|
60
|
+
one that is available.
|
|
61
|
+
|
|
62
|
+
:Parameters:
|
|
63
|
+
`language`: str, defaults to None
|
|
64
|
+
If provided, indicates the language to be used. This needs
|
|
65
|
+
to be a language identifier understood by select_language(),
|
|
66
|
+
i.e. one of the options returned by list_languages().
|
|
67
|
+
If nothing is provided, the first available language is used.
|
|
68
|
+
If no language is available, NoLanguageSelectedError is raised.
|
|
69
|
+
'''
|
|
70
|
+
langs = self.list_languages()
|
|
71
|
+
try:
|
|
72
|
+
# If no language was specified, we just use the first one
|
|
73
|
+
# that is available.
|
|
74
|
+
fallback_lang = langs[0]
|
|
75
|
+
except IndexError:
|
|
76
|
+
raise NoLanguageSelectedError("No languages available!")
|
|
77
|
+
self.select_language(language or fallback_lang)
|
|
78
|
+
|
|
79
|
+
def select_language(self, language):
|
|
80
|
+
'''
|
|
81
|
+
From the set of registered languages, select the first language
|
|
82
|
+
for `language`.
|
|
83
|
+
|
|
84
|
+
:Parameters:
|
|
85
|
+
`language`: str
|
|
86
|
+
Language identifier. Needs to be one of the options returned by
|
|
87
|
+
list_languages(). Sets the language used for spell checking and
|
|
88
|
+
word suggestions.
|
|
89
|
+
'''
|
|
90
|
+
raise NotImplementedError('select_language() method not implemented '
|
|
91
|
+
'by abstract spelling base class!')
|
|
92
|
+
|
|
93
|
+
def list_languages(self):
|
|
94
|
+
'''
|
|
95
|
+
Return a list of all supported languages.
|
|
96
|
+
E.g. ['en', 'en_GB', 'en_US', 'de', ...]
|
|
97
|
+
'''
|
|
98
|
+
raise NotImplementedError('list_languages() is not implemented '
|
|
99
|
+
'by abstract spelling base class!')
|
|
100
|
+
|
|
101
|
+
def check(self, word):
|
|
102
|
+
'''
|
|
103
|
+
If `word` is a valid word in `self._language` (the currently active
|
|
104
|
+
language), returns True. If the word shouldn't be checked, returns
|
|
105
|
+
None (e.g. for ''). If it is not a valid word in `self._language`,
|
|
106
|
+
return False.
|
|
107
|
+
|
|
108
|
+
:Parameters:
|
|
109
|
+
`word`: str
|
|
110
|
+
The word to check.
|
|
111
|
+
'''
|
|
112
|
+
raise NotImplementedError('check() not implemented by abstract ' +
|
|
113
|
+
'spelling base class!')
|
|
114
|
+
|
|
115
|
+
def suggest(self, fragment):
|
|
116
|
+
'''
|
|
117
|
+
For a given `fragment` (i.e. part of a word or a word by itself),
|
|
118
|
+
provide corrections (`fragment` may be misspelled) or completions
|
|
119
|
+
as a list of strings.
|
|
120
|
+
|
|
121
|
+
:Parameters:
|
|
122
|
+
`fragment`: str
|
|
123
|
+
The word fragment to get suggestions/corrections for.
|
|
124
|
+
E.g. 'foo' might become 'of', 'food' or 'foot'.
|
|
125
|
+
|
|
126
|
+
'''
|
|
127
|
+
raise NotImplementedError('suggest() not implemented by abstract ' +
|
|
128
|
+
'spelling base class!')
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
_libs = (('enchant', 'spelling_enchant', 'SpellingEnchant'), )
|
|
132
|
+
if sys.platform == 'darwin':
|
|
133
|
+
_libs += (('osxappkit', 'spelling_osxappkit', 'SpellingOSXAppKit'), )
|
|
134
|
+
|
|
135
|
+
Spelling = core_select_lib('spelling', _libs)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Enchant Spelling
|
|
3
|
+
================
|
|
4
|
+
|
|
5
|
+
Implementation spelling backend based on enchant.
|
|
6
|
+
|
|
7
|
+
.. warning:: pyenchant doesn't have dedicated build anymore for Windows/x64.
|
|
8
|
+
See https://github.com/kivy/kivy/issues/5816 for more information
|
|
9
|
+
'''
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
import enchant
|
|
13
|
+
|
|
14
|
+
from kivy.core.spelling import SpellingBase, NoSuchLangError
|
|
15
|
+
from kivy.compat import PY2
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class SpellingEnchant(SpellingBase):
|
|
19
|
+
'''
|
|
20
|
+
Spelling backend based on the enchant library.
|
|
21
|
+
'''
|
|
22
|
+
|
|
23
|
+
def __init__(self, language=None):
|
|
24
|
+
self._language = None
|
|
25
|
+
super(SpellingEnchant, self).__init__(language)
|
|
26
|
+
|
|
27
|
+
def select_language(self, language):
|
|
28
|
+
try:
|
|
29
|
+
self._language = enchant.Dict(language)
|
|
30
|
+
except enchant.DictNotFoundError:
|
|
31
|
+
err = 'Enchant Backend: No language for "%s"' % (language, )
|
|
32
|
+
raise NoSuchLangError(err)
|
|
33
|
+
|
|
34
|
+
def list_languages(self):
|
|
35
|
+
# Note: We do NOT return enchant.list_dicts because that also returns
|
|
36
|
+
# the enchant dict objects and not only the language identifiers.
|
|
37
|
+
return enchant.list_languages()
|
|
38
|
+
|
|
39
|
+
def check(self, word):
|
|
40
|
+
if not word:
|
|
41
|
+
return None
|
|
42
|
+
return self._language.check(word)
|
|
43
|
+
|
|
44
|
+
def suggest(self, fragment):
|
|
45
|
+
suggestions = self._language.suggest(fragment)
|
|
46
|
+
# Don't show suggestions that are invalid
|
|
47
|
+
suggestions = [s for s in suggestions if self.check(s)]
|
|
48
|
+
if PY2:
|
|
49
|
+
suggestions = [s.decode('utf-8') for s in suggestions]
|
|
50
|
+
return suggestions
|