Kivy-examples 2.3.1.dev0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/main.py +77 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/monkey.obj +7966 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/objloader.py +147 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/simple.glsl +47 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/RST_Editor/editor.kv +72 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/RST_Editor/main.py +64 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/compass.kv +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/main.py +77 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/needle.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/rose.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/main.py +80 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/shadow32.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/takepicture.kv +40 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/animation/animate.py +42 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_suite.py +152 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_suite_data/testkvdir.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_build.py +24 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_config.py +49 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_kv.py +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_kv_in_template1.py +27 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/template1/test.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/test.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/testkvfile.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/asyncio_advanced.py +90 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/asyncio_basic.py +59 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/trio_advanced.py +93 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/trio_basic.py +58 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12908_sweet_trip_mm_clap_hi.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12909_sweet_trip_mm_clap_lo.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12910_sweet_trip_mm_clap_mid.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12911_sweet_trip_mm_hat_cl.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12913_sweet_trip_mm_kick_hi.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12914_sweet_trip_mm_kick_lo.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12915_sweet_trip_mm_kick_mid.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12916_sweet_trip_mm_kwik_mod_01.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12917_sweet_trip_mm_kwik_mod_02.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12918_sweet_trip_mm_kwik_mod_03.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12919_sweet_trip_mm_kwik_mod_04.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12920_sweet_trip_mm_kwik_mod_05.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12921_sweet_trip_mm_kwik_mod_06.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12922_sweet_trip_mm_kwik_mod_07.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12923_sweet_trip_mm_metal_clave.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12925_sweet_trip_mm_sweep_x.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12926_sweet_trip_mm_sweep_y.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12927_sweet_trip_mm_sweep_z.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/audio.kv +59 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/main.py +81 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/pitch.py +42 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/camera/main.py +59 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/bezier.py +105 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/canvas_stress.py +72 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/circle.py +84 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/fbo_canvas.py +91 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/kiwi.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/lines.py +296 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/lines_extended.py +183 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mesh.py +57 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mesh_manipulation.py +101 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mtexture1.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mtexture2.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/multitexture.py +110 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/repeat_texture.py +65 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/rotation.py +35 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/rounded_rectangle.py +153 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/scale.py +37 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/stencil_canvas.py +85 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/tesselate.py +146 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/texture.py +143 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/texture_example_image.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/1.kv +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/2.kv +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/3.kv +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/root.kv +32 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/main.py +63 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/cover/cover_image.py +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/cover/cover_video.py +31 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/camera_puzzle.py +98 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/AnchorLayoutContainer.kv +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/BoxLayoutContainer.kv +14 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ButtonContainer.kv +27 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/CheckBoxContainer.kv +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/FileChooserContainer.kv +19 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/FloatLayoutContainer.kv +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/GridLayoutContainer.kv +20 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/LabelContainer.kv +62 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/MediaContainer.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/PlaygroundContainer.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/PopupContainer.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ProgressBarContainer.kv +17 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/RestContainer.kv +5 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ScatterContainer.kv +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/SelectorsContainer.kv +10 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/StackLayoutContainer.kv +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/TextContainer.kv +20 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/kivycatalog.kv +144 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/main.py +192 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/gesturedatabase.kv +117 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/gesturedatabase.py +180 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/helpers.py +30 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/historymanager.kv +164 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/historymanager.py +276 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/main.py +144 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/multistroke.kv +101 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/settings.kv +110 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/settings.py +97 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Bubbles.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Ill1.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Wall.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/faust_github.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/main.py +73 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/pictures.kv +57 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/shadow32.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/shadereditor/main.py +147 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/shadereditor/shadereditor.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/README.txt +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/background.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/faust_github.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/README +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/bug.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/chevron-left.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/chevron-right.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/accordions.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/bubbles.kv +33 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/buttons.kv +26 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/carousel.kv +51 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/checkboxes.kv +33 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/codeinput.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/dropdown.kv +40 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/filechoosers.kv +24 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/popups.kv +17 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/progressbar.kv +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/rstdocument.kv +24 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/scatter.kv +14 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/screenmanager.kv +46 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/sliders.kv +55 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/spinner.kv +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/splitter.kv +13 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/switches.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/tabbedpanel + layouts.kv +69 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/textinputs.kv +48 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/togglebutton.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/main.py +243 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/showcase.kv +100 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/README.txt +12 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/icon.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/main.py +170 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/particle.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/touchtracer.kv +29 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/echo_client_app.py +82 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/echo_server_app.py +49 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/twistd_app.py +66 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/gestures/gesture_board.py +95 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/gestures/my_gestures.py +90 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/designwithkv/controller.kv +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/designwithkv/main.py +29 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/1_skeleton.py +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/2_print_touch.py +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/3_draw_ellipse.py +22 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/4_draw_line.py +26 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/5_random_colors.py +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/6_button.py +38 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/quickstart/main.py +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/button.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/layout.kv +6 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/main.py +19 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/test.kv +5 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/main.py +226 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/numeric.json +38 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kinect/README.txt +13 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kinect/kinectviewer.py +283 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_button.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_camera.kv +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_fbo.kv +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_layout.kv +23 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_logo.kv +36 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_scatter.kv +6 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_stencil.kv +27 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_video.kv +42 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/builder_template.py +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/id_in_kv/id_in_kv.py +20 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/id_in_kv/test.kv +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/kv_and_py/kv_and_py.py +34 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/kv_and_py/test.kv +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/kivy.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/kvrun.py +38 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/clipboard.py +63 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/custom_titlebar.py +56 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/imagesave.py +14 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/joystick.py +83 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/multiple_dropfile.py +51 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/on_textedit_event.py +104 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/opacitywindow.py +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/shapecollisions.py +397 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/shapedwindow.py +98 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/two_panes.py +47 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/urlrequest.py +128 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/settings/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/settings/main.py +122 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/plasma.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/plasma.py +86 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/rotated.kv +91 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/rotated.py +102 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/shadertree.kv +29 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/shadertree.py +193 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/tex3.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/benchmark.py +19 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/cloud.svg +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/main-smaa.py +155 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/main.py +50 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/music.svg +68 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/rotated.svg +23 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/ship.svg +181 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/sun.svg +35 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/tiger.svg +813 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/text/pango_demo.py +296 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/data/icon.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/main.py +163 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/note.kv +154 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/main.py +82 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/pong.kv +53 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step1/main.py +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step1/pong.kv +2 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step2/main.py +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step2/pong.kv +21 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step3/main.py +26 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step3/pong.kv +31 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step4/main.py +48 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step4/pong.kv +34 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step5/main.py +75 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step5/pong.kv +53 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/accordion_1.py +17 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/actionbar.py +32 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/asyncimage.py +35 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/boxlayout_poshint.py +54 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/bubble_test.py +63 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/camera.py +33 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/carousel_buttons.py +50 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/cityCC0.mpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/cityCC0.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/codeinput.py +225 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/codeinputtest.kv +53 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/colorpicker.py +234 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/colorusage.py +62 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/compound_selection.py +83 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/customcollide.py +82 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget.py +193 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget2.py +47 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget3_advanced.py +62 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/fbowidget.py +111 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/focus_behavior.py +98 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/image_mipmap.py +31 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/keyboardlistener.py +42 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_mipmap.py +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_sizing.py +193 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_text_size.py +49 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_with_markup.py +21 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/lang_dynamic_classes.py +18 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/pagelayout.py +64 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/popup_with_kv.py +35 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/basic_data.py +124 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/infinite_scrolling.py +143 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/key_viewclass.py +149 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/messenger.py +196 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/pull_to_refresh.py +95 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/rv_animate_items.py +109 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/rstexample.py +128 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scatter.kv +53 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scatter.py +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/screenmanager.py +106 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scrollview.kv +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scrollview.py +40 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/bird.zip +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/button_white.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/button_white_animated.zip +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/cube.zip +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/info.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/info.zip +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/simple_cv_joint_animated.gif +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/main.kv +63 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/main.py +150 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/uix/__init__.py +7 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/uix/custom_button.py +98 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/settings.py +93 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/shorten_text.py +80 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/spinner.py +17 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/splitter.py +74 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/tabbed_panel_showcase.py +316 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/tabbedpanel.py +50 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textalign.kv +49 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textalign.py +48 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textinput.py +59 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/unicode_textinput.py +244 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/videoplayer.py +26 -0
- Kivy_examples-2.3.1.dev0.dist-info/AUTHORS +66 -0
- Kivy_examples-2.3.1.dev0.dist-info/LICENSE +21 -0
- Kivy_examples-2.3.1.dev0.dist-info/METADATA +382 -0
- Kivy_examples-2.3.1.dev0.dist-info/RECORD +624 -0
- Kivy_examples-2.3.1.dev0.dist-info/WHEEL +5 -0
- Kivy_examples-2.3.1.dev0.dist-info/dependency_links.txt +1 -0
- Kivy_examples-2.3.1.dev0.dist-info/top_level.txt +1 -0
- kivy/__init__.py +519 -0
- kivy/_version.py +18 -0
- kivy/animation.py +831 -0
- kivy/app.py +1213 -0
- kivy/atlas.py +456 -0
- kivy/base.py +617 -0
- kivy/cache.py +262 -0
- kivy/clock.py +1172 -0
- kivy/compat.py +82 -0
- kivy/config.py +1004 -0
- kivy/context.py +102 -0
- kivy/core/__init__.py +247 -0
- kivy/core/audio/__init__.py +223 -0
- kivy/core/audio/audio_android.py +104 -0
- kivy/core/audio/audio_avplayer.py +82 -0
- kivy/core/audio/audio_ffpyplayer.py +185 -0
- kivy/core/audio/audio_gstplayer.py +101 -0
- kivy/core/audio/audio_pygame.py +127 -0
- kivy/core/camera/__init__.py +151 -0
- kivy/core/camera/camera_android.py +206 -0
- kivy/core/camera/camera_gi.py +170 -0
- kivy/core/camera/camera_opencv.py +163 -0
- kivy/core/camera/camera_picamera.py +96 -0
- kivy/core/clipboard/__init__.py +157 -0
- kivy/core/clipboard/_clipboard_ext.py +36 -0
- kivy/core/clipboard/clipboard_android.py +91 -0
- kivy/core/clipboard/clipboard_dbusklipper.py +41 -0
- kivy/core/clipboard/clipboard_dummy.py +26 -0
- kivy/core/clipboard/clipboard_gtk3.py +47 -0
- kivy/core/clipboard/clipboard_nspaste.py +44 -0
- kivy/core/clipboard/clipboard_pygame.py +67 -0
- kivy/core/clipboard/clipboard_sdl2.py +36 -0
- kivy/core/clipboard/clipboard_winctypes.py +107 -0
- kivy/core/clipboard/clipboard_xclip.py +29 -0
- kivy/core/clipboard/clipboard_xsel.py +26 -0
- kivy/core/gl/__init__.py +90 -0
- kivy/core/image/__init__.py +996 -0
- kivy/core/image/img_dds.py +40 -0
- kivy/core/image/img_ffpyplayer.py +87 -0
- kivy/core/image/img_pil.py +123 -0
- kivy/core/image/img_pygame.py +119 -0
- kivy/core/image/img_sdl2.py +66 -0
- kivy/core/image/img_tex.py +58 -0
- kivy/core/spelling/__init__.py +135 -0
- kivy/core/spelling/spelling_enchant.py +50 -0
- kivy/core/spelling/spelling_osxappkit.py +64 -0
- kivy/core/text/__init__.py +1090 -0
- kivy/core/text/markup.py +893 -0
- kivy/core/text/text_pango.py +145 -0
- kivy/core/text/text_pil.py +84 -0
- kivy/core/text/text_pygame.py +117 -0
- kivy/core/text/text_sdl2.py +50 -0
- kivy/core/video/__init__.py +219 -0
- kivy/core/video/video_ffmpeg.py +106 -0
- kivy/core/video/video_ffpyplayer.py +449 -0
- kivy/core/video/video_gstplayer.py +140 -0
- kivy/core/video/video_null.py +12 -0
- kivy/core/window/__init__.py +2515 -0
- kivy/core/window/window_egl_rpi.py +86 -0
- kivy/core/window/window_pygame.py +441 -0
- kivy/core/window/window_sdl2.py +999 -0
- kivy/deps/__init__.py +6 -0
- kivy/effects/__init__.py +23 -0
- kivy/effects/dampedscroll.py +114 -0
- kivy/effects/kinetic.py +193 -0
- kivy/effects/opacityscroll.py +27 -0
- kivy/effects/scroll.py +126 -0
- kivy/event.py +12 -0
- kivy/eventmanager/__init__.py +185 -0
- kivy/extras/__init__.py +0 -0
- kivy/extras/highlight.py +52 -0
- kivy/factory.py +190 -0
- kivy/factory_registers.py +201 -0
- kivy/garden/__init__.py +186 -0
- kivy/geometry.py +121 -0
- kivy/gesture.py +424 -0
- kivy/graphics/__init__.py +126 -0
- kivy/graphics/cgl_backend/__init__.py +0 -0
- kivy/input/__init__.py +39 -0
- kivy/input/factory.py +35 -0
- kivy/input/motionevent.py +587 -0
- kivy/input/postproc/__init__.py +27 -0
- kivy/input/postproc/calibration.py +200 -0
- kivy/input/postproc/dejitter.py +74 -0
- kivy/input/postproc/doubletap.py +101 -0
- kivy/input/postproc/ignorelist.py +47 -0
- kivy/input/postproc/retaintouch.py +93 -0
- kivy/input/postproc/tripletap.py +106 -0
- kivy/input/provider.py +40 -0
- kivy/input/providers/__init__.py +68 -0
- kivy/input/providers/androidjoystick.py +117 -0
- kivy/input/providers/hidinput.py +778 -0
- kivy/input/providers/leapfinger.py +113 -0
- kivy/input/providers/linuxwacom.py +396 -0
- kivy/input/providers/mactouch.py +220 -0
- kivy/input/providers/mouse.py +424 -0
- kivy/input/providers/mtdev.py +380 -0
- kivy/input/providers/probesysfs.py +254 -0
- kivy/input/providers/tuio.py +326 -0
- kivy/input/providers/wm_common.py +162 -0
- kivy/input/providers/wm_pen.py +121 -0
- kivy/input/providers/wm_touch.py +157 -0
- kivy/input/recorder.py +335 -0
- kivy/input/shape.py +27 -0
- kivy/interactive.py +335 -0
- kivy/lang/__init__.py +883 -0
- kivy/lang/builder.py +1004 -0
- kivy/lang/parser.py +822 -0
- kivy/lib/__init__.py +21 -0
- kivy/lib/ddsfile.py +419 -0
- kivy/lib/gstplayer/__init__.py +27 -0
- kivy/lib/mtdev.py +254 -0
- kivy/lib/vidcore_lite/__init__.py +0 -0
- kivy/loader.py +579 -0
- kivy/logger.py +646 -0
- kivy/metrics.py +421 -0
- kivy/modules/__init__.py +300 -0
- kivy/modules/_webdebugger.py +200 -0
- kivy/modules/console.py +1059 -0
- kivy/modules/cursor.py +75 -0
- kivy/modules/inspector.py +755 -0
- kivy/modules/joycursor.py +299 -0
- kivy/modules/keybinding.py +64 -0
- kivy/modules/monitor.py +90 -0
- kivy/modules/recorder.py +94 -0
- kivy/modules/screen.py +183 -0
- kivy/modules/showborder.py +33 -0
- kivy/modules/touchring.py +97 -0
- kivy/modules/webdebugger.py +30 -0
- kivy/multistroke.py +1477 -0
- kivy/network/__init__.py +7 -0
- kivy/network/urlrequest.py +794 -0
- kivy/parser.py +154 -0
- kivy/resources.py +102 -0
- kivy/storage/__init__.py +405 -0
- kivy/storage/dictstore.py +98 -0
- kivy/storage/jsonstore.py +92 -0
- kivy/storage/redisstore.py +103 -0
- kivy/support.py +267 -0
- kivy/tests/__init__.py +11 -0
- kivy/tests/async_common.py +568 -0
- kivy/tests/common.py +524 -0
- kivy/tests/conftest.py +33 -0
- kivy/tests/fixtures.py +169 -0
- kivy/tests/perf_test_textinput.py +195 -0
- kivy/tests/pyinstaller/simple_widget/main.py +12 -0
- kivy/tests/pyinstaller/simple_widget/project/__init__.py +0 -0
- kivy/tests/pyinstaller/simple_widget/project/widget.py +12 -0
- kivy/tests/pyinstaller/test_pyinstaller.py +115 -0
- kivy/tests/pyinstaller/video_widget/main.py +6 -0
- kivy/tests/pyinstaller/video_widget/project/__init__.py +38 -0
- kivy/tests/test_animations.py +415 -0
- kivy/tests/test_app.py +216 -0
- kivy/tests/test_audio.py +69 -0
- kivy/tests/test_benchmark.py +292 -0
- kivy/tests/test_clipboard.py +48 -0
- kivy/tests/test_clock.py +292 -0
- kivy/tests/test_compat.py +6 -0
- kivy/tests/test_config.py +35 -0
- kivy/tests/test_coverage.py +83 -0
- kivy/tests/test_doc_gallery.py +38 -0
- kivy/tests/test_environ_cli.py +50 -0
- kivy/tests/test_fbo_py2py3.py +74 -0
- kivy/tests/test_filechooser.py +11 -0
- kivy/tests/test_filechooser_unicode.py +82 -0
- kivy/tests/test_fonts.py +42 -0
- kivy/tests/test_garden.py +23 -0
- kivy/tests/test_graphics.py +1149 -0
- kivy/tests/test_graphics_svg.py +84 -0
- kivy/tests/test_image.py +74 -0
- kivy/tests/test_imageloader.py +485 -0
- kivy/tests/test_invalid_lang.py +42 -0
- kivy/tests/test_issues/test_6315.py +55 -0
- kivy/tests/test_issues/test_issue_1084.py +47 -0
- kivy/tests/test_issues/test_issue_1091.py +19 -0
- kivy/tests/test_issues/test_issue_599.py +21 -0
- kivy/tests/test_issues/test_issue_609.py +19 -0
- kivy/tests/test_issues/test_issue_6909.py +28 -0
- kivy/tests/test_issues/test_issue_883.py +12 -0
- kivy/tests/test_kivy_init.py +30 -0
- kivy/tests/test_knspace.py +247 -0
- kivy/tests/test_lang.py +431 -0
- kivy/tests/test_lang_complex.py +87 -0
- kivy/tests/test_lang_pre_process_and_post_process.py +394 -0
- kivy/tests/test_logger.py +516 -0
- kivy/tests/test_metrics.py +30 -0
- kivy/tests/test_module_inspector.py +382 -0
- kivy/tests/test_motion_event.py +44 -0
- kivy/tests/test_mouse_hover_event.py +249 -0
- kivy/tests/test_mouse_multitouchsim.py +554 -0
- kivy/tests/test_multistroke.py +389 -0
- kivy/tests/test_properties.py +1332 -0
- kivy/tests/test_resources.py +79 -0
- kivy/tests/test_rst_replace.py +63 -0
- kivy/tests/test_screen.py +38 -0
- kivy/tests/test_storage.py +135 -0
- kivy/tests/test_uix_actionbar.py +363 -0
- kivy/tests/test_uix_anchorlayout.py +79 -0
- kivy/tests/test_uix_asyncimage.py +133 -0
- kivy/tests/test_uix_boxlayout.py +94 -0
- kivy/tests/test_uix_bubble.py +425 -0
- kivy/tests/test_uix_carousel.py +93 -0
- kivy/tests/test_uix_colorpicker.py +77 -0
- kivy/tests/test_uix_dropdown.py +91 -0
- kivy/tests/test_uix_gridlayout.py +244 -0
- kivy/tests/test_uix_layout.py +16 -0
- kivy/tests/test_uix_modal.py +101 -0
- kivy/tests/test_uix_recyclegridlayout.py +383 -0
- kivy/tests/test_uix_relativelayout.py +30 -0
- kivy/tests/test_uix_scrollview.py +358 -0
- kivy/tests/test_uix_settings.py +33 -0
- kivy/tests/test_uix_slider.py +156 -0
- kivy/tests/test_uix_stacklayout.py +120 -0
- kivy/tests/test_uix_textinput.py +577 -0
- kivy/tests/test_uix_translate_coordinates.py +72 -0
- kivy/tests/test_uix_videoplayer.py +112 -0
- kivy/tests/test_uix_widget.py +137 -0
- kivy/tests/test_urlrequest/test_urlrequest_requests.py +378 -0
- kivy/tests/test_urlrequest/test_urlrequest_urllib.py +155 -0
- kivy/tests/test_utils.py +237 -0
- kivy/tests/test_vector.py +256 -0
- kivy/tests/test_video.py +25 -0
- kivy/tests/test_weakmethod.py +44 -0
- kivy/tests/test_widget.py +127 -0
- kivy/tests/test_widget_walk.py +70 -0
- kivy/tests/test_window_base.py +60 -0
- kivy/tests/test_window_info.py +29 -0
- kivy/tests/visual_test_label.py +291 -0
- kivy/tools/__init__.py +44 -0
- kivy/tools/benchmark.py +286 -0
- kivy/tools/changelog_parser.py +120 -0
- kivy/tools/coverage.py +135 -0
- kivy/tools/gallery.py +323 -0
- kivy/tools/generate-icons.py +117 -0
- kivy/tools/gles_compat/subset_gles.py +125 -0
- kivy/tools/highlight/__init__.py +9 -0
- kivy/tools/kviewer.py +80 -0
- kivy/tools/packaging/__init__.py +12 -0
- kivy/tools/packaging/cython_cfg.py +82 -0
- kivy/tools/packaging/factory.py +105 -0
- kivy/tools/packaging/pyinstaller_hooks/__init__.py +381 -0
- kivy/tools/packaging/pyinstaller_hooks/__main__.py +29 -0
- kivy/tools/packaging/pyinstaller_hooks/hook-kivy.py +9 -0
- kivy/tools/packaging/pyinstaller_hooks/pyi_rth_kivy.py +17 -0
- kivy/tools/pep8checker/pep8.py +2316 -0
- kivy/tools/pep8checker/pep8kivy.py +109 -0
- kivy/tools/report.py +223 -0
- kivy/tools/stub-gl-debug.py +201 -0
- kivy/tools/texturecompress.py +233 -0
- kivy/uix/__init__.py +56 -0
- kivy/uix/accordion.py +484 -0
- kivy/uix/actionbar.py +934 -0
- kivy/uix/anchorlayout.py +122 -0
- kivy/uix/behaviors/__init__.py +95 -0
- kivy/uix/behaviors/button.py +212 -0
- kivy/uix/behaviors/codenavigation.py +167 -0
- kivy/uix/behaviors/compoundselection.py +688 -0
- kivy/uix/behaviors/cover.py +160 -0
- kivy/uix/behaviors/drag.py +234 -0
- kivy/uix/behaviors/emacs.py +140 -0
- kivy/uix/behaviors/focus.py +595 -0
- kivy/uix/behaviors/knspace.py +590 -0
- kivy/uix/behaviors/togglebutton.py +156 -0
- kivy/uix/behaviors/touchripple.py +318 -0
- kivy/uix/boxlayout.py +331 -0
- kivy/uix/bubble.py +576 -0
- kivy/uix/button.py +137 -0
- kivy/uix/camera.py +118 -0
- kivy/uix/carousel.py +695 -0
- kivy/uix/checkbox.py +197 -0
- kivy/uix/codeinput.py +238 -0
- kivy/uix/colorpicker.py +486 -0
- kivy/uix/dropdown.py +391 -0
- kivy/uix/effectwidget.py +772 -0
- kivy/uix/filechooser.py +1134 -0
- kivy/uix/floatlayout.py +148 -0
- kivy/uix/gesturesurface.py +625 -0
- kivy/uix/gridlayout.py +629 -0
- kivy/uix/image.py +528 -0
- kivy/uix/label.py +1200 -0
- kivy/uix/layout.py +322 -0
- kivy/uix/modalview.py +339 -0
- kivy/uix/pagelayout.py +233 -0
- kivy/uix/popup.py +266 -0
- kivy/uix/progressbar.py +95 -0
- kivy/uix/recycleboxlayout.py +183 -0
- kivy/uix/recyclegridlayout.py +255 -0
- kivy/uix/recyclelayout.py +446 -0
- kivy/uix/recycleview/__init__.py +624 -0
- kivy/uix/recycleview/datamodel.py +194 -0
- kivy/uix/recycleview/layout.py +253 -0
- kivy/uix/recycleview/views.py +423 -0
- kivy/uix/relativelayout.py +324 -0
- kivy/uix/rst.py +1492 -0
- kivy/uix/sandbox.py +198 -0
- kivy/uix/scatter.py +645 -0
- kivy/uix/scatterlayout.py +93 -0
- kivy/uix/screenmanager.py +1275 -0
- kivy/uix/scrollview.py +1288 -0
- kivy/uix/settings.py +1343 -0
- kivy/uix/slider.py +421 -0
- kivy/uix/spinner.py +221 -0
- kivy/uix/splitter.py +430 -0
- kivy/uix/stacklayout.py +331 -0
- kivy/uix/stencilview.py +40 -0
- kivy/uix/switch.py +122 -0
- kivy/uix/tabbedpanel.py +880 -0
- kivy/uix/textinput.py +4049 -0
- kivy/uix/togglebutton.py +37 -0
- kivy/uix/treeview.py +665 -0
- kivy/uix/video.py +302 -0
- kivy/uix/videoplayer.py +697 -0
- kivy/uix/vkeyboard.py +879 -0
- kivy/uix/widget.py +1629 -0
- kivy/utils.py +550 -0
- kivy/vector.py +412 -0
- kivy/weakmethod.py +72 -0
kivy/uix/actionbar.py
ADDED
|
@@ -0,0 +1,934 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Action Bar
|
|
3
|
+
==========
|
|
4
|
+
|
|
5
|
+
.. versionadded:: 1.8.0
|
|
6
|
+
|
|
7
|
+
.. image:: images/actionbar.png
|
|
8
|
+
:align: right
|
|
9
|
+
|
|
10
|
+
The ActionBar widget is like Android's `ActionBar
|
|
11
|
+
<http://developer.android.com/guide/topics/ui/actionbar.html>`_, where items
|
|
12
|
+
are stacked horizontally. When the area becomes to small, widgets are moved
|
|
13
|
+
into the :class:`ActionOverflow` area.
|
|
14
|
+
|
|
15
|
+
An :class:`ActionBar` must contain an :class:`ActionView` with various
|
|
16
|
+
:class:`ContextualActionViews <kivy.uix.actionbar.ContextualActionView>`.
|
|
17
|
+
An :class:`ActionView` must contain a child :class:`ActionPrevious` which may
|
|
18
|
+
have title, app_icon and previous_icon properties. :class:`ActionView` children
|
|
19
|
+
must be
|
|
20
|
+
subclasses of :class:`ActionItems <ActionItem>`. Some predefined ones include
|
|
21
|
+
an :class:`ActionButton`, an :class:`ActionToggleButton`, an
|
|
22
|
+
:class:`ActionCheck`, an :class:`ActionSeparator` and an :class:`ActionGroup`.
|
|
23
|
+
|
|
24
|
+
An :class:`ActionGroup` is used to display :class:`ActionItems <ActionItem>`
|
|
25
|
+
in a group. An :class:`ActionView` will always display an :class:`ActionGroup`
|
|
26
|
+
after other :class:`ActionItems <ActionItem>`. An :class:`ActionView` contains
|
|
27
|
+
an :class:`ActionOverflow`, but this is only made visible when required i.e.
|
|
28
|
+
the available area is too small to fit all the widgets. A
|
|
29
|
+
:class:`ContextualActionView` is a subclass of an:class:`ActionView`.
|
|
30
|
+
|
|
31
|
+
.. versionchanged:: 1.10.1
|
|
32
|
+
:class:`ActionGroup` core rewritten from :class:`Spinner` to pure
|
|
33
|
+
:class:`DropDown`
|
|
34
|
+
'''
|
|
35
|
+
|
|
36
|
+
__all__ = ('ActionBarException', 'ActionItem', 'ActionButton',
|
|
37
|
+
'ActionToggleButton', 'ActionCheck', 'ActionSeparator',
|
|
38
|
+
'ActionDropDown', 'ActionGroup', 'ActionOverflow',
|
|
39
|
+
'ActionView', 'ContextualActionView', 'ActionPrevious',
|
|
40
|
+
'ActionBar')
|
|
41
|
+
|
|
42
|
+
from kivy.uix.boxlayout import BoxLayout
|
|
43
|
+
from kivy.uix.dropdown import DropDown
|
|
44
|
+
from kivy.uix.widget import Widget
|
|
45
|
+
from kivy.uix.button import Button
|
|
46
|
+
from kivy.uix.togglebutton import ToggleButton
|
|
47
|
+
from kivy.uix.checkbox import CheckBox
|
|
48
|
+
from kivy.uix.spinner import Spinner
|
|
49
|
+
from kivy.uix.label import Label
|
|
50
|
+
from kivy.config import Config
|
|
51
|
+
from kivy.properties import ObjectProperty, NumericProperty, BooleanProperty, \
|
|
52
|
+
StringProperty, ListProperty, OptionProperty, AliasProperty, ColorProperty
|
|
53
|
+
from kivy.metrics import sp
|
|
54
|
+
from kivy.lang import Builder
|
|
55
|
+
from functools import partial
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
window_icon = ''
|
|
59
|
+
if Config:
|
|
60
|
+
window_icon = Config.get('kivy', 'window_icon')
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class ActionBarException(Exception):
|
|
64
|
+
'''
|
|
65
|
+
ActionBarException class
|
|
66
|
+
'''
|
|
67
|
+
pass
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class ActionItem(object):
|
|
71
|
+
'''
|
|
72
|
+
ActionItem class, an abstract class for all ActionBar widgets. To create a
|
|
73
|
+
custom widget for an ActionBar, inherit from this class. See module
|
|
74
|
+
documentation for more information.
|
|
75
|
+
'''
|
|
76
|
+
|
|
77
|
+
minimum_width = NumericProperty('90sp')
|
|
78
|
+
'''
|
|
79
|
+
Minimum Width required by an ActionItem.
|
|
80
|
+
|
|
81
|
+
:attr:`minimum_width` is a :class:`~kivy.properties.NumericProperty` and
|
|
82
|
+
defaults to '90sp'.
|
|
83
|
+
'''
|
|
84
|
+
|
|
85
|
+
def get_pack_width(self):
|
|
86
|
+
return max(self.minimum_width, self.width)
|
|
87
|
+
|
|
88
|
+
pack_width = AliasProperty(get_pack_width,
|
|
89
|
+
bind=('minimum_width', 'width'),
|
|
90
|
+
cache=True)
|
|
91
|
+
'''
|
|
92
|
+
(read-only) The actual width to use when packing the items. Equal to the
|
|
93
|
+
greater of minimum_width and width.
|
|
94
|
+
|
|
95
|
+
:attr:`pack_width` is an :class:`~kivy.properties.AliasProperty`.
|
|
96
|
+
'''
|
|
97
|
+
|
|
98
|
+
important = BooleanProperty(False)
|
|
99
|
+
'''
|
|
100
|
+
Determines if an ActionItem is important or not. If an item is important
|
|
101
|
+
and space is limited, this item will be displayed in preference to others.
|
|
102
|
+
|
|
103
|
+
:attr:`important` is a :class:`~kivy.properties.BooleanProperty` and
|
|
104
|
+
defaults to False.
|
|
105
|
+
'''
|
|
106
|
+
|
|
107
|
+
inside_group = BooleanProperty(False)
|
|
108
|
+
'''
|
|
109
|
+
(internal) Determines if an ActionItem is displayed inside an
|
|
110
|
+
ActionGroup or not.
|
|
111
|
+
|
|
112
|
+
:attr:`inside_group` is a :class:`~kivy.properties.BooleanProperty` and
|
|
113
|
+
defaults to False.
|
|
114
|
+
'''
|
|
115
|
+
|
|
116
|
+
background_normal = StringProperty(
|
|
117
|
+
'atlas://data/images/defaulttheme/action_item')
|
|
118
|
+
'''
|
|
119
|
+
Background image of the ActionItem used for the default graphical
|
|
120
|
+
representation when the ActionItem is not pressed.
|
|
121
|
+
|
|
122
|
+
:attr:`background_normal` is a :class:`~kivy.properties.StringProperty`
|
|
123
|
+
and defaults to 'atlas://data/images/defaulttheme/action_item'.
|
|
124
|
+
'''
|
|
125
|
+
|
|
126
|
+
background_down = StringProperty(
|
|
127
|
+
'atlas://data/images/defaulttheme/action_item_down')
|
|
128
|
+
'''
|
|
129
|
+
Background image of the ActionItem used for the default graphical
|
|
130
|
+
representation when an ActionItem is pressed.
|
|
131
|
+
|
|
132
|
+
:attr:`background_down` is a :class:`~kivy.properties.StringProperty`
|
|
133
|
+
and defaults to 'atlas://data/images/defaulttheme/action_item_down'.
|
|
134
|
+
'''
|
|
135
|
+
|
|
136
|
+
mipmap = BooleanProperty(True)
|
|
137
|
+
'''
|
|
138
|
+
Defines whether the image/icon dispayed on top of the button uses a
|
|
139
|
+
mipmap or not.
|
|
140
|
+
|
|
141
|
+
:attr:`mipmap` is a :class:`~kivy.properties.BooleanProperty` and
|
|
142
|
+
defaults to `True`.
|
|
143
|
+
'''
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
class ActionButton(Button, ActionItem):
|
|
147
|
+
'''
|
|
148
|
+
ActionButton class, see module documentation for more information.
|
|
149
|
+
|
|
150
|
+
The text color, width and size_hint_x are set manually via the Kv language
|
|
151
|
+
file. It covers a lot of cases: with/without an icon, with/without a group
|
|
152
|
+
and takes care of the padding between elements.
|
|
153
|
+
|
|
154
|
+
You don't have much control over these properties, so if you want to
|
|
155
|
+
customize its appearance, we suggest you create you own button
|
|
156
|
+
representation. You can do this by creating a class that subclasses an
|
|
157
|
+
existing widget and an :class:`ActionItem`::
|
|
158
|
+
|
|
159
|
+
class MyOwnActionButton(Button, ActionItem):
|
|
160
|
+
pass
|
|
161
|
+
|
|
162
|
+
You can then create your own style using the Kv language.
|
|
163
|
+
'''
|
|
164
|
+
|
|
165
|
+
icon = StringProperty(None, allownone=True)
|
|
166
|
+
'''
|
|
167
|
+
Source image to use when the Button is part of the ActionBar. If the
|
|
168
|
+
Button is in a group, the text will be preferred.
|
|
169
|
+
|
|
170
|
+
:attr:`icon` is a :class:`~kivy.properties.StringProperty` and defaults
|
|
171
|
+
to None.
|
|
172
|
+
'''
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
class ActionPrevious(BoxLayout, ActionItem):
|
|
176
|
+
'''
|
|
177
|
+
ActionPrevious class, see module documentation for more information.
|
|
178
|
+
'''
|
|
179
|
+
|
|
180
|
+
with_previous = BooleanProperty(True)
|
|
181
|
+
'''
|
|
182
|
+
Specifies whether the previous_icon will be shown or not. Note that it is
|
|
183
|
+
up to the user to implement the desired behavior using the *on_press* or
|
|
184
|
+
similar events.
|
|
185
|
+
|
|
186
|
+
:attr:`with_previous` is a :class:`~kivy.properties.BooleanProperty` and
|
|
187
|
+
defaults to True.
|
|
188
|
+
'''
|
|
189
|
+
|
|
190
|
+
app_icon = StringProperty(window_icon)
|
|
191
|
+
'''
|
|
192
|
+
Application icon for the ActionView.
|
|
193
|
+
|
|
194
|
+
:attr:`app_icon` is a :class:`~kivy.properties.StringProperty`
|
|
195
|
+
and defaults to the window icon if set, otherwise
|
|
196
|
+
'data/logo/kivy-icon-32.png'.
|
|
197
|
+
'''
|
|
198
|
+
|
|
199
|
+
app_icon_width = NumericProperty(0)
|
|
200
|
+
'''
|
|
201
|
+
Width of app_icon image.
|
|
202
|
+
|
|
203
|
+
:attr:`app_icon_width` is a :class:`~kivy.properties.NumericProperty` and
|
|
204
|
+
defaults to 0.
|
|
205
|
+
'''
|
|
206
|
+
|
|
207
|
+
app_icon_height = NumericProperty(0)
|
|
208
|
+
'''
|
|
209
|
+
Height of app_icon image.
|
|
210
|
+
|
|
211
|
+
:attr:`app_icon_height` is a :class:`~kivy.properties.NumericProperty`
|
|
212
|
+
and defaults to 0.
|
|
213
|
+
'''
|
|
214
|
+
|
|
215
|
+
color = ColorProperty([1, 1, 1, 1])
|
|
216
|
+
'''
|
|
217
|
+
Text color, in the format (r, g, b, a)
|
|
218
|
+
|
|
219
|
+
:attr:`color` is a :class:`~kivy.properties.ColorProperty` and defaults
|
|
220
|
+
to [1, 1, 1, 1].
|
|
221
|
+
|
|
222
|
+
.. versionchanged:: 2.0.0
|
|
223
|
+
Changed from :class:`~kivy.properties.ListProperty` to
|
|
224
|
+
:class:`~kivy.properties.ColorProperty`.
|
|
225
|
+
'''
|
|
226
|
+
|
|
227
|
+
previous_image = StringProperty(
|
|
228
|
+
'atlas://data/images/defaulttheme/previous_normal')
|
|
229
|
+
'''
|
|
230
|
+
Image for the 'previous' ActionButtons default graphical representation.
|
|
231
|
+
|
|
232
|
+
:attr:`previous_image` is a :class:`~kivy.properties.StringProperty` and
|
|
233
|
+
defaults to 'atlas://data/images/defaulttheme/previous_normal'.
|
|
234
|
+
'''
|
|
235
|
+
|
|
236
|
+
previous_image_width = NumericProperty(0)
|
|
237
|
+
'''
|
|
238
|
+
Width of previous_image image.
|
|
239
|
+
|
|
240
|
+
:attr:`width` is a :class:`~kivy.properties.NumericProperty` and
|
|
241
|
+
defaults to 0.
|
|
242
|
+
'''
|
|
243
|
+
|
|
244
|
+
previous_image_height = NumericProperty(0)
|
|
245
|
+
'''
|
|
246
|
+
Height of previous_image image.
|
|
247
|
+
|
|
248
|
+
:attr:`app_icon_width` is a :class:`~kivy.properties.NumericProperty` and
|
|
249
|
+
defaults to 0.
|
|
250
|
+
'''
|
|
251
|
+
|
|
252
|
+
title = StringProperty('')
|
|
253
|
+
'''
|
|
254
|
+
Title for ActionView.
|
|
255
|
+
|
|
256
|
+
:attr:`title` is a :class:`~kivy.properties.StringProperty` and
|
|
257
|
+
defaults to ''.
|
|
258
|
+
'''
|
|
259
|
+
|
|
260
|
+
markup = BooleanProperty(False)
|
|
261
|
+
'''
|
|
262
|
+
If True, the text will be rendered using the
|
|
263
|
+
:class:`~kivy.core.text.markup.MarkupLabel`: you can change the style of
|
|
264
|
+
the text using tags. Check the :doc:`api-kivy.core.text.markup`
|
|
265
|
+
documentation for more information.
|
|
266
|
+
|
|
267
|
+
:attr:`markup` is a :class:`~kivy.properties.BooleanProperty` and
|
|
268
|
+
defaults to False.
|
|
269
|
+
'''
|
|
270
|
+
|
|
271
|
+
def __init__(self, **kwargs):
|
|
272
|
+
self.register_event_type('on_press')
|
|
273
|
+
self.register_event_type('on_release')
|
|
274
|
+
super(ActionPrevious, self).__init__(**kwargs)
|
|
275
|
+
if not self.app_icon:
|
|
276
|
+
self.app_icon = 'data/logo/kivy-icon-32.png'
|
|
277
|
+
|
|
278
|
+
def on_press(self):
|
|
279
|
+
pass
|
|
280
|
+
|
|
281
|
+
def on_release(self):
|
|
282
|
+
pass
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
class ActionToggleButton(ActionItem, ToggleButton):
|
|
286
|
+
'''
|
|
287
|
+
ActionToggleButton class, see module documentation for more information.
|
|
288
|
+
'''
|
|
289
|
+
|
|
290
|
+
icon = StringProperty(None, allownone=True)
|
|
291
|
+
'''
|
|
292
|
+
Source image to use when the Button is part of the ActionBar. If the
|
|
293
|
+
Button is in a group, the text will be preferred.
|
|
294
|
+
'''
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
class ActionLabel(ActionItem, Label):
|
|
298
|
+
'''
|
|
299
|
+
ActionLabel class, see module documentation for more information.
|
|
300
|
+
'''
|
|
301
|
+
pass
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
class ActionCheck(ActionItem, CheckBox):
|
|
305
|
+
'''
|
|
306
|
+
ActionCheck class, see module documentation for more information.
|
|
307
|
+
'''
|
|
308
|
+
pass
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
class ActionSeparator(ActionItem, Widget):
|
|
312
|
+
'''
|
|
313
|
+
ActionSeparator class, see module documentation for more information.
|
|
314
|
+
'''
|
|
315
|
+
|
|
316
|
+
background_image = StringProperty(
|
|
317
|
+
'atlas://data/images/defaulttheme/separator')
|
|
318
|
+
'''
|
|
319
|
+
Background image for the separators default graphical representation.
|
|
320
|
+
|
|
321
|
+
:attr:`background_image` is a :class:`~kivy.properties.StringProperty`
|
|
322
|
+
and defaults to 'atlas://data/images/defaulttheme/separator'.
|
|
323
|
+
'''
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
class ActionDropDown(DropDown):
|
|
327
|
+
'''
|
|
328
|
+
ActionDropDown class, see module documentation for more information.
|
|
329
|
+
'''
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
class ActionGroup(ActionItem, Button):
|
|
333
|
+
'''
|
|
334
|
+
ActionGroup class, see module documentation for more information.
|
|
335
|
+
'''
|
|
336
|
+
|
|
337
|
+
use_separator = BooleanProperty(False)
|
|
338
|
+
'''
|
|
339
|
+
Specifies whether to use a separator after/before this group or not.
|
|
340
|
+
|
|
341
|
+
:attr:`use_separator` is a :class:`~kivy.properties.BooleanProperty` and
|
|
342
|
+
defaults to False.
|
|
343
|
+
'''
|
|
344
|
+
|
|
345
|
+
separator_image = StringProperty(
|
|
346
|
+
'atlas://data/images/defaulttheme/separator')
|
|
347
|
+
'''
|
|
348
|
+
Background Image for an ActionSeparator in an ActionView.
|
|
349
|
+
|
|
350
|
+
:attr:`separator_image` is a :class:`~kivy.properties.StringProperty`
|
|
351
|
+
and defaults to 'atlas://data/images/defaulttheme/separator'.
|
|
352
|
+
'''
|
|
353
|
+
|
|
354
|
+
separator_width = NumericProperty(0)
|
|
355
|
+
'''
|
|
356
|
+
Width of the ActionSeparator in an ActionView.
|
|
357
|
+
|
|
358
|
+
:attr:`separator_width` is a :class:`~kivy.properties.NumericProperty`
|
|
359
|
+
and defaults to 0.
|
|
360
|
+
'''
|
|
361
|
+
|
|
362
|
+
mode = OptionProperty('normal', options=('normal', 'spinner'))
|
|
363
|
+
'''
|
|
364
|
+
Sets the current mode of an ActionGroup. If mode is 'normal', the
|
|
365
|
+
ActionGroups children will be displayed normally if there is enough
|
|
366
|
+
space, otherwise they will be displayed in a spinner. If mode is
|
|
367
|
+
'spinner', then the children will always be displayed in a spinner.
|
|
368
|
+
|
|
369
|
+
:attr:`mode` is an :class:`~kivy.properties.OptionProperty` and defaults
|
|
370
|
+
to 'normal'.
|
|
371
|
+
'''
|
|
372
|
+
|
|
373
|
+
dropdown_width = NumericProperty(0)
|
|
374
|
+
'''
|
|
375
|
+
If non zero, provides the width for the associated DropDown. This is
|
|
376
|
+
useful when some items in the ActionGroup's DropDown are wider than usual
|
|
377
|
+
and you don't want to make the ActionGroup widget itself wider.
|
|
378
|
+
|
|
379
|
+
:attr:`dropdown_width` is a :class:`~kivy.properties.NumericProperty`
|
|
380
|
+
and defaults to 0.
|
|
381
|
+
|
|
382
|
+
.. versionadded:: 1.10.0
|
|
383
|
+
'''
|
|
384
|
+
|
|
385
|
+
is_open = BooleanProperty(False)
|
|
386
|
+
'''By default, the DropDown is not open. Set to True to open it.
|
|
387
|
+
|
|
388
|
+
:attr:`is_open` is a :class:`~kivy.properties.BooleanProperty` and
|
|
389
|
+
defaults to False.
|
|
390
|
+
'''
|
|
391
|
+
|
|
392
|
+
def __init__(self, **kwargs):
|
|
393
|
+
self.list_action_item = []
|
|
394
|
+
self._list_overflow_items = []
|
|
395
|
+
super(ActionGroup, self).__init__(**kwargs)
|
|
396
|
+
|
|
397
|
+
# real is_open independent on public event
|
|
398
|
+
self._is_open = False
|
|
399
|
+
|
|
400
|
+
# create DropDown for the group and save its state to _is_open
|
|
401
|
+
self._dropdown = ActionDropDown()
|
|
402
|
+
self._dropdown.bind(attach_to=lambda ins, value: setattr(
|
|
403
|
+
self, '_is_open', True if value else False
|
|
404
|
+
))
|
|
405
|
+
|
|
406
|
+
# put open/close responsibility to the event
|
|
407
|
+
# - trigger dropdown opening when clicked
|
|
408
|
+
self.bind(on_release=lambda *args: setattr(
|
|
409
|
+
self, 'is_open', True
|
|
410
|
+
))
|
|
411
|
+
|
|
412
|
+
# - trigger dropdown closing when an item
|
|
413
|
+
# in the dropdown is clicked
|
|
414
|
+
self._dropdown.bind(on_dismiss=lambda *args: setattr(
|
|
415
|
+
self, 'is_open', False
|
|
416
|
+
))
|
|
417
|
+
|
|
418
|
+
def on_is_open(self, instance, value):
|
|
419
|
+
# opening only if the DropDown is closed
|
|
420
|
+
if value and not self._is_open:
|
|
421
|
+
self._toggle_dropdown()
|
|
422
|
+
self._dropdown.open(self)
|
|
423
|
+
return
|
|
424
|
+
|
|
425
|
+
# closing is_open manually, dismiss manually
|
|
426
|
+
if not value and self._is_open:
|
|
427
|
+
self._dropdown.dismiss()
|
|
428
|
+
|
|
429
|
+
def _toggle_dropdown(self, *largs):
|
|
430
|
+
ddn = self._dropdown
|
|
431
|
+
ddn.size_hint_x = None
|
|
432
|
+
|
|
433
|
+
# if container was set incorrectly and/or is missing
|
|
434
|
+
if not ddn.container:
|
|
435
|
+
return
|
|
436
|
+
children = ddn.container.children
|
|
437
|
+
|
|
438
|
+
# set DropDown width manually or if not set, then widen
|
|
439
|
+
# the ActionGroup + DropDown until the widest child fits
|
|
440
|
+
if children:
|
|
441
|
+
ddn.width = self.dropdown_width or max(
|
|
442
|
+
self.width, max(c.pack_width for c in children)
|
|
443
|
+
)
|
|
444
|
+
else:
|
|
445
|
+
ddn.width = self.width
|
|
446
|
+
|
|
447
|
+
# set the DropDown children's height
|
|
448
|
+
for item in children:
|
|
449
|
+
item.size_hint_y = None
|
|
450
|
+
item.height = max([self.height, sp(48)])
|
|
451
|
+
|
|
452
|
+
# dismiss DropDown manually
|
|
453
|
+
# auto_dismiss applies to touching outside of the DropDown
|
|
454
|
+
item.bind(on_release=ddn.dismiss)
|
|
455
|
+
|
|
456
|
+
def add_widget(self, widget, *args, **kwargs):
|
|
457
|
+
'''
|
|
458
|
+
.. versionchanged:: 2.1.0
|
|
459
|
+
Renamed argument `item` to `widget`.
|
|
460
|
+
'''
|
|
461
|
+
# if adding ActionSeparator ('normal' mode,
|
|
462
|
+
# everything visible), add it to the parent
|
|
463
|
+
if isinstance(widget, ActionSeparator):
|
|
464
|
+
super(ActionGroup, self).add_widget(widget, *args, **kwargs)
|
|
465
|
+
return
|
|
466
|
+
|
|
467
|
+
if not isinstance(widget, ActionItem):
|
|
468
|
+
raise ActionBarException('ActionGroup only accepts ActionItem')
|
|
469
|
+
|
|
470
|
+
self.list_action_item.append(widget)
|
|
471
|
+
|
|
472
|
+
def show_group(self):
|
|
473
|
+
# 'normal' mode, items can fit to the view
|
|
474
|
+
self.clear_widgets()
|
|
475
|
+
for item in self._list_overflow_items + self.list_action_item:
|
|
476
|
+
item.inside_group = True
|
|
477
|
+
self._dropdown.add_widget(item)
|
|
478
|
+
|
|
479
|
+
def clear_widgets(self, *args, **kwargs):
|
|
480
|
+
self._dropdown.clear_widgets(*args, **kwargs)
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
class ActionOverflow(ActionGroup):
|
|
484
|
+
'''
|
|
485
|
+
ActionOverflow class, see module documentation for more information.
|
|
486
|
+
'''
|
|
487
|
+
|
|
488
|
+
overflow_image = StringProperty(
|
|
489
|
+
'atlas://data/images/defaulttheme/overflow')
|
|
490
|
+
'''
|
|
491
|
+
Image to be used as an Overflow Image.
|
|
492
|
+
|
|
493
|
+
:attr:`overflow_image` is a :class:`~kivy.properties.StringProperty`
|
|
494
|
+
and defaults to 'atlas://data/images/defaulttheme/overflow'.
|
|
495
|
+
'''
|
|
496
|
+
|
|
497
|
+
def add_widget(self, widget, index=0, *args, **kwargs):
|
|
498
|
+
'''
|
|
499
|
+
.. versionchanged:: 2.1.0
|
|
500
|
+
Renamed argument `action_item` to `widget`.
|
|
501
|
+
'''
|
|
502
|
+
if widget is None:
|
|
503
|
+
return
|
|
504
|
+
|
|
505
|
+
if isinstance(widget, ActionSeparator):
|
|
506
|
+
return
|
|
507
|
+
|
|
508
|
+
if not isinstance(widget, ActionItem):
|
|
509
|
+
raise ActionBarException('ActionView only accepts ActionItem'
|
|
510
|
+
' (got {!r}'.format(widget))
|
|
511
|
+
|
|
512
|
+
else:
|
|
513
|
+
if index == 0:
|
|
514
|
+
index = len(self._list_overflow_items)
|
|
515
|
+
self._list_overflow_items.insert(index, widget)
|
|
516
|
+
|
|
517
|
+
def show_default_items(self, parent):
|
|
518
|
+
# display overflow and its items if widget's directly added to it
|
|
519
|
+
if self._list_overflow_items == []:
|
|
520
|
+
return
|
|
521
|
+
self.show_group()
|
|
522
|
+
super(ActionView, parent).add_widget(self)
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
class ActionView(BoxLayout):
|
|
526
|
+
'''
|
|
527
|
+
ActionView class, see module documentation for more information.
|
|
528
|
+
'''
|
|
529
|
+
|
|
530
|
+
action_previous = ObjectProperty(None)
|
|
531
|
+
'''
|
|
532
|
+
Previous button for an ActionView.
|
|
533
|
+
|
|
534
|
+
:attr:`action_previous` is an :class:`~kivy.properties.ObjectProperty`
|
|
535
|
+
and defaults to None.
|
|
536
|
+
'''
|
|
537
|
+
|
|
538
|
+
background_color = ColorProperty([1, 1, 1, 1])
|
|
539
|
+
'''
|
|
540
|
+
Background color in the format (r, g, b, a).
|
|
541
|
+
|
|
542
|
+
:attr:`background_color` is a :class:`~kivy.properties.ColorProperty` and
|
|
543
|
+
defaults to [1, 1, 1, 1].
|
|
544
|
+
|
|
545
|
+
.. versionchanged:: 2.0.0
|
|
546
|
+
Changed from :class:`~kivy.properties.ListProperty` to
|
|
547
|
+
:class:`~kivy.properties.ColorProperty`.
|
|
548
|
+
'''
|
|
549
|
+
|
|
550
|
+
background_image = StringProperty(
|
|
551
|
+
'atlas://data/images/defaulttheme/action_view')
|
|
552
|
+
'''
|
|
553
|
+
Background image of an ActionViews default graphical representation.
|
|
554
|
+
|
|
555
|
+
:attr:`background_image` is a :class:`~kivy.properties.StringProperty`
|
|
556
|
+
and defaults to 'atlas://data/images/defaulttheme/action_view'.
|
|
557
|
+
'''
|
|
558
|
+
|
|
559
|
+
use_separator = BooleanProperty(False)
|
|
560
|
+
'''
|
|
561
|
+
Specify whether to use a separator before every ActionGroup or not.
|
|
562
|
+
|
|
563
|
+
:attr:`use_separator` is a :class:`~kivy.properties.BooleanProperty` and
|
|
564
|
+
defaults to False.
|
|
565
|
+
'''
|
|
566
|
+
|
|
567
|
+
overflow_group = ObjectProperty(None)
|
|
568
|
+
'''
|
|
569
|
+
Widget to be used for the overflow.
|
|
570
|
+
|
|
571
|
+
:attr:`overflow_group` is an :class:`~kivy.properties.ObjectProperty` and
|
|
572
|
+
defaults to an instance of :class:`ActionOverflow`.
|
|
573
|
+
'''
|
|
574
|
+
|
|
575
|
+
def __init__(self, **kwargs):
|
|
576
|
+
self._list_action_items = []
|
|
577
|
+
self._list_action_group = []
|
|
578
|
+
super(ActionView, self).__init__(**kwargs)
|
|
579
|
+
self._state = ''
|
|
580
|
+
if not self.overflow_group:
|
|
581
|
+
self.overflow_group = ActionOverflow(
|
|
582
|
+
use_separator=self.use_separator)
|
|
583
|
+
|
|
584
|
+
def on_action_previous(self, instance, value):
|
|
585
|
+
self._list_action_items.insert(0, value)
|
|
586
|
+
|
|
587
|
+
def add_widget(self, widget, index=0, *args, **kwargs):
|
|
588
|
+
'''
|
|
589
|
+
.. versionchanged:: 2.1.0
|
|
590
|
+
Renamed argument `action_item` to `widget`.
|
|
591
|
+
'''
|
|
592
|
+
if widget is None:
|
|
593
|
+
return
|
|
594
|
+
|
|
595
|
+
if not isinstance(widget, ActionItem):
|
|
596
|
+
raise ActionBarException('ActionView only accepts ActionItem'
|
|
597
|
+
' (got {!r}'.format(widget))
|
|
598
|
+
|
|
599
|
+
elif isinstance(widget, ActionOverflow):
|
|
600
|
+
self.overflow_group = widget
|
|
601
|
+
widget.use_separator = self.use_separator
|
|
602
|
+
|
|
603
|
+
elif isinstance(widget, ActionGroup):
|
|
604
|
+
self._list_action_group.append(widget)
|
|
605
|
+
widget.use_separator = self.use_separator
|
|
606
|
+
|
|
607
|
+
elif isinstance(widget, ActionPrevious):
|
|
608
|
+
self.action_previous = widget
|
|
609
|
+
|
|
610
|
+
else:
|
|
611
|
+
super(ActionView, self).add_widget(widget, index, *args, **kwargs)
|
|
612
|
+
if index == 0:
|
|
613
|
+
index = len(self._list_action_items)
|
|
614
|
+
self._list_action_items.insert(index, widget)
|
|
615
|
+
|
|
616
|
+
def on_use_separator(self, instance, value):
|
|
617
|
+
for group in self._list_action_group:
|
|
618
|
+
group.use_separator = value
|
|
619
|
+
if self.overflow_group:
|
|
620
|
+
self.overflow_group.use_separator = value
|
|
621
|
+
|
|
622
|
+
def remove_widget(self, widget, *args, **kwargs):
|
|
623
|
+
super(ActionView, self).remove_widget(widget, *args, **kwargs)
|
|
624
|
+
if isinstance(widget, ActionOverflow):
|
|
625
|
+
for item in widget.list_action_item:
|
|
626
|
+
if item in self._list_action_items:
|
|
627
|
+
self._list_action_items.remove(item)
|
|
628
|
+
|
|
629
|
+
if widget in self._list_action_items:
|
|
630
|
+
self._list_action_items.remove(widget)
|
|
631
|
+
|
|
632
|
+
def _clear_all(self):
|
|
633
|
+
lst = self._list_action_items[:]
|
|
634
|
+
self.clear_widgets()
|
|
635
|
+
for group in self._list_action_group:
|
|
636
|
+
group.clear_widgets()
|
|
637
|
+
|
|
638
|
+
self.overflow_group.clear_widgets()
|
|
639
|
+
self.overflow_group.list_action_item = []
|
|
640
|
+
self._list_action_items = lst
|
|
641
|
+
|
|
642
|
+
def _layout_all(self):
|
|
643
|
+
# all the items can fit to the view, so expand everything
|
|
644
|
+
super_add = super(ActionView, self).add_widget
|
|
645
|
+
self._state = 'all'
|
|
646
|
+
self._clear_all()
|
|
647
|
+
if not self.action_previous.parent:
|
|
648
|
+
super_add(self.action_previous)
|
|
649
|
+
if len(self._list_action_items) > 1:
|
|
650
|
+
for child in self._list_action_items[1:]:
|
|
651
|
+
child.inside_group = False
|
|
652
|
+
super_add(child)
|
|
653
|
+
|
|
654
|
+
for group in self._list_action_group:
|
|
655
|
+
if group.mode == 'spinner':
|
|
656
|
+
super_add(group)
|
|
657
|
+
group.show_group()
|
|
658
|
+
else:
|
|
659
|
+
if group.list_action_item != []:
|
|
660
|
+
super_add(ActionSeparator())
|
|
661
|
+
for child in group.list_action_item:
|
|
662
|
+
child.inside_group = False
|
|
663
|
+
super_add(child)
|
|
664
|
+
|
|
665
|
+
self.overflow_group.show_default_items(self)
|
|
666
|
+
|
|
667
|
+
def _layout_group(self):
|
|
668
|
+
# layout all the items in order to pack them per group
|
|
669
|
+
super_add = super(ActionView, self).add_widget
|
|
670
|
+
self._state = 'group'
|
|
671
|
+
self._clear_all()
|
|
672
|
+
if not self.action_previous.parent:
|
|
673
|
+
super_add(self.action_previous)
|
|
674
|
+
if len(self._list_action_items) > 1:
|
|
675
|
+
for child in self._list_action_items[1:]:
|
|
676
|
+
super_add(child)
|
|
677
|
+
child.inside_group = False
|
|
678
|
+
|
|
679
|
+
for group in self._list_action_group:
|
|
680
|
+
super_add(group)
|
|
681
|
+
group.show_group()
|
|
682
|
+
|
|
683
|
+
self.overflow_group.show_default_items(self)
|
|
684
|
+
|
|
685
|
+
def _layout_random(self):
|
|
686
|
+
# layout the items in order to pack all of them grouped, and display
|
|
687
|
+
# only the action items having 'important'
|
|
688
|
+
super_add = super(ActionView, self).add_widget
|
|
689
|
+
self._state = 'random'
|
|
690
|
+
self._clear_all()
|
|
691
|
+
hidden_items = []
|
|
692
|
+
hidden_groups = []
|
|
693
|
+
total_width = 0
|
|
694
|
+
if not self.action_previous.parent:
|
|
695
|
+
super_add(self.action_previous)
|
|
696
|
+
|
|
697
|
+
width = (self.width - self.overflow_group.pack_width -
|
|
698
|
+
self.action_previous.minimum_width)
|
|
699
|
+
|
|
700
|
+
if len(self._list_action_items):
|
|
701
|
+
for child in self._list_action_items[1:]:
|
|
702
|
+
if child.important:
|
|
703
|
+
if child.pack_width + total_width < width:
|
|
704
|
+
super_add(child)
|
|
705
|
+
child.inside_group = False
|
|
706
|
+
total_width += child.pack_width
|
|
707
|
+
else:
|
|
708
|
+
hidden_items.append(child)
|
|
709
|
+
else:
|
|
710
|
+
hidden_items.append(child)
|
|
711
|
+
|
|
712
|
+
# if space is left then display ActionItem inside their
|
|
713
|
+
# ActionGroup
|
|
714
|
+
if total_width < self.width:
|
|
715
|
+
for group in self._list_action_group:
|
|
716
|
+
if group.pack_width + total_width +\
|
|
717
|
+
group.separator_width < width:
|
|
718
|
+
super_add(group)
|
|
719
|
+
group.show_group()
|
|
720
|
+
total_width += (group.pack_width +
|
|
721
|
+
group.separator_width)
|
|
722
|
+
|
|
723
|
+
else:
|
|
724
|
+
hidden_groups.append(group)
|
|
725
|
+
group_index = len(self.children) - 1
|
|
726
|
+
# if space is left then display other ActionItems
|
|
727
|
+
if total_width < self.width:
|
|
728
|
+
for child in hidden_items[:]:
|
|
729
|
+
if child.pack_width + total_width < width:
|
|
730
|
+
super_add(child, group_index)
|
|
731
|
+
total_width += child.pack_width
|
|
732
|
+
child.inside_group = False
|
|
733
|
+
hidden_items.remove(child)
|
|
734
|
+
|
|
735
|
+
# for all the remaining ActionItems and ActionItems with in
|
|
736
|
+
# ActionGroups, Display them inside overflow_group
|
|
737
|
+
extend_hidden = hidden_items.extend
|
|
738
|
+
for group in hidden_groups:
|
|
739
|
+
extend_hidden(group.list_action_item)
|
|
740
|
+
|
|
741
|
+
overflow_group = self.overflow_group
|
|
742
|
+
|
|
743
|
+
if hidden_items != []:
|
|
744
|
+
over_add = super(overflow_group.__class__,
|
|
745
|
+
overflow_group).add_widget
|
|
746
|
+
for child in hidden_items:
|
|
747
|
+
over_add(child)
|
|
748
|
+
|
|
749
|
+
overflow_group.show_group()
|
|
750
|
+
if not self.overflow_group.parent:
|
|
751
|
+
super_add(overflow_group)
|
|
752
|
+
|
|
753
|
+
def on_width(self, width, *args):
|
|
754
|
+
# determine the layout to use
|
|
755
|
+
|
|
756
|
+
# can we display all of them?
|
|
757
|
+
total_width = 0
|
|
758
|
+
for child in self._list_action_items:
|
|
759
|
+
total_width += child.pack_width
|
|
760
|
+
for group in self._list_action_group:
|
|
761
|
+
for child in group.list_action_item:
|
|
762
|
+
total_width += child.pack_width
|
|
763
|
+
if total_width <= self.width:
|
|
764
|
+
if self._state != 'all':
|
|
765
|
+
self._layout_all()
|
|
766
|
+
return
|
|
767
|
+
|
|
768
|
+
# can we display them per group?
|
|
769
|
+
total_width = 0
|
|
770
|
+
for child in self._list_action_items:
|
|
771
|
+
total_width += child.pack_width
|
|
772
|
+
for group in self._list_action_group:
|
|
773
|
+
total_width += group.pack_width
|
|
774
|
+
if total_width < self.width:
|
|
775
|
+
# ok, we can display all the items grouped
|
|
776
|
+
if self._state != 'group':
|
|
777
|
+
self._layout_group()
|
|
778
|
+
return
|
|
779
|
+
|
|
780
|
+
# none of the solutions worked, display them in pack mode
|
|
781
|
+
self._layout_random()
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
class ContextualActionView(ActionView):
|
|
785
|
+
'''
|
|
786
|
+
ContextualActionView class, see the module documentation for more
|
|
787
|
+
information.
|
|
788
|
+
'''
|
|
789
|
+
pass
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
class ActionBar(BoxLayout):
|
|
793
|
+
'''
|
|
794
|
+
ActionBar class, which acts as the main container for an
|
|
795
|
+
:class:`ActionView` instance. The ActionBar determines the overall
|
|
796
|
+
styling aspects of the bar. :class:`ActionItem`\\s are not added to
|
|
797
|
+
this class directly, but to the contained :class:`ActionView` instance.
|
|
798
|
+
|
|
799
|
+
:Events:
|
|
800
|
+
`on_previous`
|
|
801
|
+
Fired when action_previous of action_view is pressed.
|
|
802
|
+
|
|
803
|
+
Please see the module documentation for more information.
|
|
804
|
+
'''
|
|
805
|
+
|
|
806
|
+
action_view = ObjectProperty(None)
|
|
807
|
+
'''
|
|
808
|
+
action_view of the ActionBar.
|
|
809
|
+
|
|
810
|
+
:attr:`action_view` is an :class:`~kivy.properties.ObjectProperty` and
|
|
811
|
+
defaults to None or the last ActionView instance added to the ActionBar.
|
|
812
|
+
'''
|
|
813
|
+
|
|
814
|
+
background_color = ColorProperty([1, 1, 1, 1])
|
|
815
|
+
'''
|
|
816
|
+
Background color, in the format (r, g, b, a).
|
|
817
|
+
|
|
818
|
+
:attr:`background_color` is a :class:`~kivy.properties.ColorProperty` and
|
|
819
|
+
defaults to [1, 1, 1, 1].
|
|
820
|
+
|
|
821
|
+
.. versionchanged:: 2.0.0
|
|
822
|
+
Changed from :class:`~kivy.properties.ListProperty` to
|
|
823
|
+
:class:`~kivy.properties.ColorProperty`.
|
|
824
|
+
'''
|
|
825
|
+
|
|
826
|
+
background_image = StringProperty(
|
|
827
|
+
'atlas://data/images/defaulttheme/action_bar')
|
|
828
|
+
|
|
829
|
+
'''
|
|
830
|
+
Background image of the ActionBars default graphical representation.
|
|
831
|
+
|
|
832
|
+
:attr:`background_image` is a :class:`~kivy.properties.StringProperty`
|
|
833
|
+
and defaults to 'atlas://data/images/defaulttheme/action_bar'.
|
|
834
|
+
'''
|
|
835
|
+
|
|
836
|
+
border = ListProperty([2, 2, 2, 2])
|
|
837
|
+
'''
|
|
838
|
+
The border to be applied to the :attr:`background_image`.
|
|
839
|
+
|
|
840
|
+
:attr:`border` is a :class:`~kivy.properties.ListProperty` and defaults to
|
|
841
|
+
[2, 2, 2, 2]
|
|
842
|
+
'''
|
|
843
|
+
|
|
844
|
+
__events__ = ('on_previous',)
|
|
845
|
+
|
|
846
|
+
def __init__(self, **kwargs):
|
|
847
|
+
super(ActionBar, self).__init__(**kwargs)
|
|
848
|
+
self._stack_cont_action_view = []
|
|
849
|
+
self._emit_previous = partial(self.dispatch, 'on_previous')
|
|
850
|
+
|
|
851
|
+
def add_widget(self, widget, *args, **kwargs):
|
|
852
|
+
'''
|
|
853
|
+
.. versionchanged:: 2.1.0
|
|
854
|
+
Renamed argument `view` to `widget`.
|
|
855
|
+
'''
|
|
856
|
+
if isinstance(widget, ContextualActionView):
|
|
857
|
+
self._stack_cont_action_view.append(widget)
|
|
858
|
+
if widget.action_previous is not None:
|
|
859
|
+
widget.action_previous.unbind(on_release=self._emit_previous)
|
|
860
|
+
widget.action_previous.bind(on_release=self._emit_previous)
|
|
861
|
+
self.clear_widgets()
|
|
862
|
+
super(ActionBar, self).add_widget(widget, *args, **kwargs)
|
|
863
|
+
|
|
864
|
+
elif isinstance(widget, ActionView):
|
|
865
|
+
self.action_view = widget
|
|
866
|
+
super(ActionBar, self).add_widget(widget, *args, **kwargs)
|
|
867
|
+
|
|
868
|
+
else:
|
|
869
|
+
raise ActionBarException(
|
|
870
|
+
'ActionBar can only add ContextualActionView or ActionView')
|
|
871
|
+
|
|
872
|
+
def on_previous(self, *args):
|
|
873
|
+
self._pop_contextual_action_view()
|
|
874
|
+
|
|
875
|
+
def _pop_contextual_action_view(self):
|
|
876
|
+
'''Remove the current ContextualActionView and display either the
|
|
877
|
+
previous one or the ActionView.
|
|
878
|
+
'''
|
|
879
|
+
self._stack_cont_action_view.pop()
|
|
880
|
+
self.clear_widgets()
|
|
881
|
+
if self._stack_cont_action_view == []:
|
|
882
|
+
super(ActionBar, self).add_widget(self.action_view)
|
|
883
|
+
else:
|
|
884
|
+
super(ActionBar, self).add_widget(self._stack_cont_action_view[-1])
|
|
885
|
+
|
|
886
|
+
|
|
887
|
+
if __name__ == "__main__":
|
|
888
|
+
from kivy.base import runTouchApp
|
|
889
|
+
from kivy.uix.floatlayout import FloatLayout
|
|
890
|
+
from kivy.factory import Factory
|
|
891
|
+
|
|
892
|
+
# XXX clean the first registration done from '__main__' here.
|
|
893
|
+
# otherwise kivy.uix.actionbar.ActionPrevious != __main__.ActionPrevious
|
|
894
|
+
Factory.unregister('ActionPrevious')
|
|
895
|
+
|
|
896
|
+
Builder.load_string('''
|
|
897
|
+
<MainWindow>:
|
|
898
|
+
ActionBar:
|
|
899
|
+
pos_hint: {'top':1}
|
|
900
|
+
ActionView:
|
|
901
|
+
use_separator: True
|
|
902
|
+
ActionPrevious:
|
|
903
|
+
title: 'Action Bar'
|
|
904
|
+
with_previous: False
|
|
905
|
+
ActionOverflow:
|
|
906
|
+
ActionButton:
|
|
907
|
+
text: 'Btn0'
|
|
908
|
+
icon: 'atlas://data/images/defaulttheme/audio-volume-high'
|
|
909
|
+
ActionButton:
|
|
910
|
+
text: 'Btn1'
|
|
911
|
+
ActionButton:
|
|
912
|
+
text: 'Btn2'
|
|
913
|
+
ActionGroup:
|
|
914
|
+
text: 'Group 1'
|
|
915
|
+
ActionButton:
|
|
916
|
+
text: 'Btn3'
|
|
917
|
+
ActionButton:
|
|
918
|
+
text: 'Btn4'
|
|
919
|
+
ActionGroup:
|
|
920
|
+
dropdown_width: 200
|
|
921
|
+
text: 'Group 2'
|
|
922
|
+
ActionButton:
|
|
923
|
+
text: 'Btn5'
|
|
924
|
+
ActionButton:
|
|
925
|
+
text: 'Btn6'
|
|
926
|
+
ActionButton:
|
|
927
|
+
text: 'Btn7'
|
|
928
|
+
''')
|
|
929
|
+
|
|
930
|
+
class MainWindow(FloatLayout):
|
|
931
|
+
pass
|
|
932
|
+
|
|
933
|
+
float_layout = MainWindow()
|
|
934
|
+
runTouchApp(float_layout)
|