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.
Files changed (624) hide show
  1. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/main.py +77 -0
  2. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/monkey.obj +7966 -0
  3. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/objloader.py +147 -0
  4. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/simple.glsl +47 -0
  5. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/RST_Editor/editor.kv +72 -0
  6. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/RST_Editor/main.py +64 -0
  7. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/android.txt +3 -0
  8. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/compass.kv +25 -0
  9. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/main.py +77 -0
  10. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/needle.png +0 -0
  11. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/rose.png +0 -0
  12. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/android.txt +3 -0
  13. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/main.py +80 -0
  14. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/shadow32.png +0 -0
  15. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/takepicture.kv +40 -0
  16. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/animation/animate.py +42 -0
  17. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_suite.py +152 -0
  18. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_suite_data/testkvdir.kv +4 -0
  19. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_build.py +24 -0
  20. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_config.py +49 -0
  21. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_kv.py +25 -0
  22. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_kv_in_template1.py +27 -0
  23. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/template1/test.kv +4 -0
  24. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/test.kv +4 -0
  25. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/testkvfile.kv +4 -0
  26. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/asyncio_advanced.py +90 -0
  27. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/asyncio_basic.py +59 -0
  28. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/trio_advanced.py +93 -0
  29. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/trio_basic.py +58 -0
  30. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12908_sweet_trip_mm_clap_hi.wav +0 -0
  31. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12909_sweet_trip_mm_clap_lo.wav +0 -0
  32. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12910_sweet_trip_mm_clap_mid.wav +0 -0
  33. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12911_sweet_trip_mm_hat_cl.wav +0 -0
  34. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12913_sweet_trip_mm_kick_hi.wav +0 -0
  35. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12914_sweet_trip_mm_kick_lo.wav +0 -0
  36. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12915_sweet_trip_mm_kick_mid.wav +0 -0
  37. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12916_sweet_trip_mm_kwik_mod_01.wav +0 -0
  38. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12917_sweet_trip_mm_kwik_mod_02.wav +0 -0
  39. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12918_sweet_trip_mm_kwik_mod_03.wav +0 -0
  40. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12919_sweet_trip_mm_kwik_mod_04.wav +0 -0
  41. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12920_sweet_trip_mm_kwik_mod_05.wav +0 -0
  42. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12921_sweet_trip_mm_kwik_mod_06.wav +0 -0
  43. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12922_sweet_trip_mm_kwik_mod_07.wav +0 -0
  44. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12923_sweet_trip_mm_metal_clave.wav +0 -0
  45. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12925_sweet_trip_mm_sweep_x.wav +0 -0
  46. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12926_sweet_trip_mm_sweep_y.wav +0 -0
  47. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12927_sweet_trip_mm_sweep_z.wav +0 -0
  48. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/audio.kv +59 -0
  49. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/main.py +81 -0
  50. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/pitch.py +42 -0
  51. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/camera/main.py +59 -0
  52. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/bezier.py +105 -0
  53. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/canvas_stress.py +72 -0
  54. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/circle.py +84 -0
  55. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/fbo_canvas.py +91 -0
  56. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/kiwi.jpg +0 -0
  57. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/lines.py +296 -0
  58. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/lines_extended.py +183 -0
  59. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mesh.py +57 -0
  60. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mesh_manipulation.py +101 -0
  61. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mtexture1.png +0 -0
  62. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mtexture2.png +0 -0
  63. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/multitexture.py +110 -0
  64. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/repeat_texture.py +65 -0
  65. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/rotation.py +35 -0
  66. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/rounded_rectangle.py +153 -0
  67. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/scale.py +37 -0
  68. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/stencil_canvas.py +85 -0
  69. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/tesselate.py +146 -0
  70. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/texture.py +143 -0
  71. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/texture_example_image.png +0 -0
  72. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/1.kv +28 -0
  73. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/2.kv +28 -0
  74. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/3.kv +28 -0
  75. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/root.kv +32 -0
  76. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/main.py +63 -0
  77. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/cover/cover_image.py +25 -0
  78. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/cover/cover_video.py +31 -0
  79. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/camera_puzzle.py +98 -0
  80. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/AnchorLayoutContainer.kv +15 -0
  81. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/BoxLayoutContainer.kv +14 -0
  82. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ButtonContainer.kv +27 -0
  83. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/CheckBoxContainer.kv +28 -0
  84. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/FileChooserContainer.kv +19 -0
  85. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/FloatLayoutContainer.kv +16 -0
  86. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/GridLayoutContainer.kv +20 -0
  87. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/LabelContainer.kv +62 -0
  88. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/MediaContainer.kv +9 -0
  89. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/PlaygroundContainer.kv +4 -0
  90. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/PopupContainer.kv +39 -0
  91. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ProgressBarContainer.kv +17 -0
  92. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/RestContainer.kv +5 -0
  93. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ScatterContainer.kv +16 -0
  94. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/SelectorsContainer.kv +10 -0
  95. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/StackLayoutContainer.kv +25 -0
  96. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/TextContainer.kv +20 -0
  97. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/kivycatalog.kv +144 -0
  98. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/main.py +192 -0
  99. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/gesturedatabase.kv +117 -0
  100. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/gesturedatabase.py +180 -0
  101. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/helpers.py +30 -0
  102. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/historymanager.kv +164 -0
  103. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/historymanager.py +276 -0
  104. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/main.py +144 -0
  105. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/multistroke.kv +101 -0
  106. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/settings.kv +110 -0
  107. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/settings.py +97 -0
  108. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/android.txt +3 -0
  109. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Bubbles.jpg +0 -0
  110. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Ill1.jpg +0 -0
  111. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Wall.jpg +0 -0
  112. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/faust_github.jpg +0 -0
  113. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/main.py +73 -0
  114. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/pictures.kv +57 -0
  115. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/shadow32.png +0 -0
  116. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/shadereditor/main.py +147 -0
  117. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/shadereditor/shadereditor.kv +39 -0
  118. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/README.txt +11 -0
  119. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/android.txt +3 -0
  120. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/background.png +0 -0
  121. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/faust_github.jpg +0 -0
  122. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/README +4 -0
  123. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/bug.png +0 -0
  124. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/chevron-left.png +0 -0
  125. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/chevron-right.png +0 -0
  126. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/accordions.kv +39 -0
  127. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/bubbles.kv +33 -0
  128. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/buttons.kv +26 -0
  129. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/carousel.kv +51 -0
  130. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/checkboxes.kv +33 -0
  131. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/codeinput.kv +9 -0
  132. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/dropdown.kv +40 -0
  133. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/filechoosers.kv +24 -0
  134. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/popups.kv +17 -0
  135. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/progressbar.kv +15 -0
  136. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/rstdocument.kv +24 -0
  137. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/scatter.kv +14 -0
  138. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/screenmanager.kv +46 -0
  139. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/sliders.kv +55 -0
  140. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/spinner.kv +11 -0
  141. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/splitter.kv +13 -0
  142. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/switches.kv +39 -0
  143. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/tabbedpanel + layouts.kv +69 -0
  144. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/textinputs.kv +48 -0
  145. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/togglebutton.kv +39 -0
  146. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/main.py +243 -0
  147. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/showcase.kv +100 -0
  148. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/README.txt +12 -0
  149. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/android.txt +3 -0
  150. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/icon.png +0 -0
  151. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/main.py +170 -0
  152. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/particle.png +0 -0
  153. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/touchtracer.kv +29 -0
  154. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/echo_client_app.py +82 -0
  155. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/echo_server_app.py +49 -0
  156. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/twistd_app.py +66 -0
  157. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/gestures/gesture_board.py +95 -0
  158. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/gestures/my_gestures.py +90 -0
  159. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/designwithkv/controller.kv +16 -0
  160. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/designwithkv/main.py +29 -0
  161. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/1_skeleton.py +15 -0
  162. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/2_print_touch.py +16 -0
  163. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/3_draw_ellipse.py +22 -0
  164. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/4_draw_line.py +26 -0
  165. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/5_random_colors.py +28 -0
  166. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/6_button.py +38 -0
  167. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/quickstart/main.py +15 -0
  168. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/button.kv +9 -0
  169. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/layout.kv +6 -0
  170. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/main.py +19 -0
  171. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/test.kv +5 -0
  172. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/android.txt +3 -0
  173. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/main.py +226 -0
  174. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/numeric.json +38 -0
  175. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kinect/README.txt +13 -0
  176. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kinect/kinectviewer.py +283 -0
  177. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_button.kv +9 -0
  178. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_camera.kv +25 -0
  179. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_fbo.kv +11 -0
  180. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_layout.kv +23 -0
  181. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_logo.kv +36 -0
  182. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_scatter.kv +6 -0
  183. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_stencil.kv +27 -0
  184. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_video.kv +42 -0
  185. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/builder_template.py +28 -0
  186. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/id_in_kv/id_in_kv.py +20 -0
  187. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/id_in_kv/test.kv +11 -0
  188. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/kv_and_py/kv_and_py.py +34 -0
  189. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/kv_and_py/test.kv +11 -0
  190. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/kivy.jpg +0 -0
  191. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/kvrun.py +38 -0
  192. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/clipboard.py +63 -0
  193. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/custom_titlebar.py +56 -0
  194. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/imagesave.py +14 -0
  195. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/joystick.py +83 -0
  196. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/multiple_dropfile.py +51 -0
  197. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/on_textedit_event.py +104 -0
  198. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/opacitywindow.py +28 -0
  199. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/shapecollisions.py +397 -0
  200. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/shapedwindow.py +98 -0
  201. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/two_panes.py +47 -0
  202. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/urlrequest.py +128 -0
  203. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/settings/android.txt +3 -0
  204. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/settings/main.py +122 -0
  205. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/plasma.kv +9 -0
  206. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/plasma.py +86 -0
  207. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/rotated.kv +91 -0
  208. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/rotated.py +102 -0
  209. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/shadertree.kv +29 -0
  210. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/shadertree.py +193 -0
  211. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/tex3.jpg +0 -0
  212. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/benchmark.py +19 -0
  213. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/cloud.svg +25 -0
  214. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/main-smaa.py +155 -0
  215. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/main.py +50 -0
  216. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/music.svg +68 -0
  217. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/rotated.svg +23 -0
  218. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/ship.svg +181 -0
  219. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/sun.svg +35 -0
  220. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/tiger.svg +813 -0
  221. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/text/pango_demo.py +296 -0
  222. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/data/icon.png +0 -0
  223. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/main.py +163 -0
  224. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/note.kv +154 -0
  225. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/main.py +82 -0
  226. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/pong.kv +53 -0
  227. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step1/main.py +15 -0
  228. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step1/pong.kv +2 -0
  229. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step2/main.py +15 -0
  230. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step2/pong.kv +21 -0
  231. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step3/main.py +26 -0
  232. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step3/pong.kv +31 -0
  233. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step4/main.py +48 -0
  234. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step4/pong.kv +34 -0
  235. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step5/main.py +75 -0
  236. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step5/pong.kv +53 -0
  237. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/accordion_1.py +17 -0
  238. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/actionbar.py +32 -0
  239. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/asyncimage.py +35 -0
  240. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/boxlayout_poshint.py +54 -0
  241. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/bubble_test.py +63 -0
  242. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/camera.py +33 -0
  243. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/carousel_buttons.py +50 -0
  244. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/cityCC0.mpg +0 -0
  245. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/cityCC0.png +0 -0
  246. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/codeinput.py +225 -0
  247. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/codeinputtest.kv +53 -0
  248. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/colorpicker.py +234 -0
  249. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/colorusage.py +62 -0
  250. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/compound_selection.py +83 -0
  251. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/customcollide.py +82 -0
  252. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget.py +193 -0
  253. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget2.py +47 -0
  254. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget3_advanced.py +62 -0
  255. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/fbowidget.py +111 -0
  256. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/focus_behavior.py +98 -0
  257. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/image_mipmap.py +31 -0
  258. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/keyboardlistener.py +42 -0
  259. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_mipmap.py +28 -0
  260. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_sizing.py +193 -0
  261. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_text_size.py +49 -0
  262. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_with_markup.py +21 -0
  263. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/lang_dynamic_classes.py +18 -0
  264. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/pagelayout.py +64 -0
  265. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/popup_with_kv.py +35 -0
  266. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/basic_data.py +124 -0
  267. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/infinite_scrolling.py +143 -0
  268. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/key_viewclass.py +149 -0
  269. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/messenger.py +196 -0
  270. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/pull_to_refresh.py +95 -0
  271. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/rv_animate_items.py +109 -0
  272. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/rstexample.py +128 -0
  273. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scatter.kv +53 -0
  274. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scatter.py +16 -0
  275. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/screenmanager.py +106 -0
  276. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scrollview.kv +16 -0
  277. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scrollview.py +40 -0
  278. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/android.txt +3 -0
  279. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/bird.zip +0 -0
  280. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/button_white.png +0 -0
  281. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/button_white_animated.zip +0 -0
  282. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/cube.zip +0 -0
  283. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/info.png +0 -0
  284. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/info.zip +0 -0
  285. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/simple_cv_joint_animated.gif +0 -0
  286. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/main.kv +63 -0
  287. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/main.py +150 -0
  288. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/uix/__init__.py +7 -0
  289. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/uix/custom_button.py +98 -0
  290. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/settings.py +93 -0
  291. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/shorten_text.py +80 -0
  292. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/spinner.py +17 -0
  293. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/splitter.py +74 -0
  294. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/tabbed_panel_showcase.py +316 -0
  295. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/tabbedpanel.py +50 -0
  296. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textalign.kv +49 -0
  297. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textalign.py +48 -0
  298. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textinput.py +59 -0
  299. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/unicode_textinput.py +244 -0
  300. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/videoplayer.py +26 -0
  301. Kivy_examples-2.3.1.dev0.dist-info/AUTHORS +66 -0
  302. Kivy_examples-2.3.1.dev0.dist-info/LICENSE +21 -0
  303. Kivy_examples-2.3.1.dev0.dist-info/METADATA +382 -0
  304. Kivy_examples-2.3.1.dev0.dist-info/RECORD +624 -0
  305. Kivy_examples-2.3.1.dev0.dist-info/WHEEL +5 -0
  306. Kivy_examples-2.3.1.dev0.dist-info/dependency_links.txt +1 -0
  307. Kivy_examples-2.3.1.dev0.dist-info/top_level.txt +1 -0
  308. kivy/__init__.py +519 -0
  309. kivy/_version.py +18 -0
  310. kivy/animation.py +831 -0
  311. kivy/app.py +1213 -0
  312. kivy/atlas.py +456 -0
  313. kivy/base.py +617 -0
  314. kivy/cache.py +262 -0
  315. kivy/clock.py +1172 -0
  316. kivy/compat.py +82 -0
  317. kivy/config.py +1004 -0
  318. kivy/context.py +102 -0
  319. kivy/core/__init__.py +247 -0
  320. kivy/core/audio/__init__.py +223 -0
  321. kivy/core/audio/audio_android.py +104 -0
  322. kivy/core/audio/audio_avplayer.py +82 -0
  323. kivy/core/audio/audio_ffpyplayer.py +185 -0
  324. kivy/core/audio/audio_gstplayer.py +101 -0
  325. kivy/core/audio/audio_pygame.py +127 -0
  326. kivy/core/camera/__init__.py +151 -0
  327. kivy/core/camera/camera_android.py +206 -0
  328. kivy/core/camera/camera_gi.py +170 -0
  329. kivy/core/camera/camera_opencv.py +163 -0
  330. kivy/core/camera/camera_picamera.py +96 -0
  331. kivy/core/clipboard/__init__.py +157 -0
  332. kivy/core/clipboard/_clipboard_ext.py +36 -0
  333. kivy/core/clipboard/clipboard_android.py +91 -0
  334. kivy/core/clipboard/clipboard_dbusklipper.py +41 -0
  335. kivy/core/clipboard/clipboard_dummy.py +26 -0
  336. kivy/core/clipboard/clipboard_gtk3.py +47 -0
  337. kivy/core/clipboard/clipboard_nspaste.py +44 -0
  338. kivy/core/clipboard/clipboard_pygame.py +67 -0
  339. kivy/core/clipboard/clipboard_sdl2.py +36 -0
  340. kivy/core/clipboard/clipboard_winctypes.py +107 -0
  341. kivy/core/clipboard/clipboard_xclip.py +29 -0
  342. kivy/core/clipboard/clipboard_xsel.py +26 -0
  343. kivy/core/gl/__init__.py +90 -0
  344. kivy/core/image/__init__.py +996 -0
  345. kivy/core/image/img_dds.py +40 -0
  346. kivy/core/image/img_ffpyplayer.py +87 -0
  347. kivy/core/image/img_pil.py +123 -0
  348. kivy/core/image/img_pygame.py +119 -0
  349. kivy/core/image/img_sdl2.py +66 -0
  350. kivy/core/image/img_tex.py +58 -0
  351. kivy/core/spelling/__init__.py +135 -0
  352. kivy/core/spelling/spelling_enchant.py +50 -0
  353. kivy/core/spelling/spelling_osxappkit.py +64 -0
  354. kivy/core/text/__init__.py +1090 -0
  355. kivy/core/text/markup.py +893 -0
  356. kivy/core/text/text_pango.py +145 -0
  357. kivy/core/text/text_pil.py +84 -0
  358. kivy/core/text/text_pygame.py +117 -0
  359. kivy/core/text/text_sdl2.py +50 -0
  360. kivy/core/video/__init__.py +219 -0
  361. kivy/core/video/video_ffmpeg.py +106 -0
  362. kivy/core/video/video_ffpyplayer.py +449 -0
  363. kivy/core/video/video_gstplayer.py +140 -0
  364. kivy/core/video/video_null.py +12 -0
  365. kivy/core/window/__init__.py +2515 -0
  366. kivy/core/window/window_egl_rpi.py +86 -0
  367. kivy/core/window/window_pygame.py +441 -0
  368. kivy/core/window/window_sdl2.py +999 -0
  369. kivy/deps/__init__.py +6 -0
  370. kivy/effects/__init__.py +23 -0
  371. kivy/effects/dampedscroll.py +114 -0
  372. kivy/effects/kinetic.py +193 -0
  373. kivy/effects/opacityscroll.py +27 -0
  374. kivy/effects/scroll.py +126 -0
  375. kivy/event.py +12 -0
  376. kivy/eventmanager/__init__.py +185 -0
  377. kivy/extras/__init__.py +0 -0
  378. kivy/extras/highlight.py +52 -0
  379. kivy/factory.py +190 -0
  380. kivy/factory_registers.py +201 -0
  381. kivy/garden/__init__.py +186 -0
  382. kivy/geometry.py +121 -0
  383. kivy/gesture.py +424 -0
  384. kivy/graphics/__init__.py +126 -0
  385. kivy/graphics/cgl_backend/__init__.py +0 -0
  386. kivy/input/__init__.py +39 -0
  387. kivy/input/factory.py +35 -0
  388. kivy/input/motionevent.py +587 -0
  389. kivy/input/postproc/__init__.py +27 -0
  390. kivy/input/postproc/calibration.py +200 -0
  391. kivy/input/postproc/dejitter.py +74 -0
  392. kivy/input/postproc/doubletap.py +101 -0
  393. kivy/input/postproc/ignorelist.py +47 -0
  394. kivy/input/postproc/retaintouch.py +93 -0
  395. kivy/input/postproc/tripletap.py +106 -0
  396. kivy/input/provider.py +40 -0
  397. kivy/input/providers/__init__.py +68 -0
  398. kivy/input/providers/androidjoystick.py +117 -0
  399. kivy/input/providers/hidinput.py +778 -0
  400. kivy/input/providers/leapfinger.py +113 -0
  401. kivy/input/providers/linuxwacom.py +396 -0
  402. kivy/input/providers/mactouch.py +220 -0
  403. kivy/input/providers/mouse.py +424 -0
  404. kivy/input/providers/mtdev.py +380 -0
  405. kivy/input/providers/probesysfs.py +254 -0
  406. kivy/input/providers/tuio.py +326 -0
  407. kivy/input/providers/wm_common.py +162 -0
  408. kivy/input/providers/wm_pen.py +121 -0
  409. kivy/input/providers/wm_touch.py +157 -0
  410. kivy/input/recorder.py +335 -0
  411. kivy/input/shape.py +27 -0
  412. kivy/interactive.py +335 -0
  413. kivy/lang/__init__.py +883 -0
  414. kivy/lang/builder.py +1004 -0
  415. kivy/lang/parser.py +822 -0
  416. kivy/lib/__init__.py +21 -0
  417. kivy/lib/ddsfile.py +419 -0
  418. kivy/lib/gstplayer/__init__.py +27 -0
  419. kivy/lib/mtdev.py +254 -0
  420. kivy/lib/vidcore_lite/__init__.py +0 -0
  421. kivy/loader.py +579 -0
  422. kivy/logger.py +646 -0
  423. kivy/metrics.py +421 -0
  424. kivy/modules/__init__.py +300 -0
  425. kivy/modules/_webdebugger.py +200 -0
  426. kivy/modules/console.py +1059 -0
  427. kivy/modules/cursor.py +75 -0
  428. kivy/modules/inspector.py +755 -0
  429. kivy/modules/joycursor.py +299 -0
  430. kivy/modules/keybinding.py +64 -0
  431. kivy/modules/monitor.py +90 -0
  432. kivy/modules/recorder.py +94 -0
  433. kivy/modules/screen.py +183 -0
  434. kivy/modules/showborder.py +33 -0
  435. kivy/modules/touchring.py +97 -0
  436. kivy/modules/webdebugger.py +30 -0
  437. kivy/multistroke.py +1477 -0
  438. kivy/network/__init__.py +7 -0
  439. kivy/network/urlrequest.py +794 -0
  440. kivy/parser.py +154 -0
  441. kivy/resources.py +102 -0
  442. kivy/storage/__init__.py +405 -0
  443. kivy/storage/dictstore.py +98 -0
  444. kivy/storage/jsonstore.py +92 -0
  445. kivy/storage/redisstore.py +103 -0
  446. kivy/support.py +267 -0
  447. kivy/tests/__init__.py +11 -0
  448. kivy/tests/async_common.py +568 -0
  449. kivy/tests/common.py +524 -0
  450. kivy/tests/conftest.py +33 -0
  451. kivy/tests/fixtures.py +169 -0
  452. kivy/tests/perf_test_textinput.py +195 -0
  453. kivy/tests/pyinstaller/simple_widget/main.py +12 -0
  454. kivy/tests/pyinstaller/simple_widget/project/__init__.py +0 -0
  455. kivy/tests/pyinstaller/simple_widget/project/widget.py +12 -0
  456. kivy/tests/pyinstaller/test_pyinstaller.py +115 -0
  457. kivy/tests/pyinstaller/video_widget/main.py +6 -0
  458. kivy/tests/pyinstaller/video_widget/project/__init__.py +38 -0
  459. kivy/tests/test_animations.py +415 -0
  460. kivy/tests/test_app.py +216 -0
  461. kivy/tests/test_audio.py +69 -0
  462. kivy/tests/test_benchmark.py +292 -0
  463. kivy/tests/test_clipboard.py +48 -0
  464. kivy/tests/test_clock.py +292 -0
  465. kivy/tests/test_compat.py +6 -0
  466. kivy/tests/test_config.py +35 -0
  467. kivy/tests/test_coverage.py +83 -0
  468. kivy/tests/test_doc_gallery.py +38 -0
  469. kivy/tests/test_environ_cli.py +50 -0
  470. kivy/tests/test_fbo_py2py3.py +74 -0
  471. kivy/tests/test_filechooser.py +11 -0
  472. kivy/tests/test_filechooser_unicode.py +82 -0
  473. kivy/tests/test_fonts.py +42 -0
  474. kivy/tests/test_garden.py +23 -0
  475. kivy/tests/test_graphics.py +1149 -0
  476. kivy/tests/test_graphics_svg.py +84 -0
  477. kivy/tests/test_image.py +74 -0
  478. kivy/tests/test_imageloader.py +485 -0
  479. kivy/tests/test_invalid_lang.py +42 -0
  480. kivy/tests/test_issues/test_6315.py +55 -0
  481. kivy/tests/test_issues/test_issue_1084.py +47 -0
  482. kivy/tests/test_issues/test_issue_1091.py +19 -0
  483. kivy/tests/test_issues/test_issue_599.py +21 -0
  484. kivy/tests/test_issues/test_issue_609.py +19 -0
  485. kivy/tests/test_issues/test_issue_6909.py +28 -0
  486. kivy/tests/test_issues/test_issue_883.py +12 -0
  487. kivy/tests/test_kivy_init.py +30 -0
  488. kivy/tests/test_knspace.py +247 -0
  489. kivy/tests/test_lang.py +431 -0
  490. kivy/tests/test_lang_complex.py +87 -0
  491. kivy/tests/test_lang_pre_process_and_post_process.py +394 -0
  492. kivy/tests/test_logger.py +516 -0
  493. kivy/tests/test_metrics.py +30 -0
  494. kivy/tests/test_module_inspector.py +382 -0
  495. kivy/tests/test_motion_event.py +44 -0
  496. kivy/tests/test_mouse_hover_event.py +249 -0
  497. kivy/tests/test_mouse_multitouchsim.py +554 -0
  498. kivy/tests/test_multistroke.py +389 -0
  499. kivy/tests/test_properties.py +1332 -0
  500. kivy/tests/test_resources.py +79 -0
  501. kivy/tests/test_rst_replace.py +63 -0
  502. kivy/tests/test_screen.py +38 -0
  503. kivy/tests/test_storage.py +135 -0
  504. kivy/tests/test_uix_actionbar.py +363 -0
  505. kivy/tests/test_uix_anchorlayout.py +79 -0
  506. kivy/tests/test_uix_asyncimage.py +133 -0
  507. kivy/tests/test_uix_boxlayout.py +94 -0
  508. kivy/tests/test_uix_bubble.py +425 -0
  509. kivy/tests/test_uix_carousel.py +93 -0
  510. kivy/tests/test_uix_colorpicker.py +77 -0
  511. kivy/tests/test_uix_dropdown.py +91 -0
  512. kivy/tests/test_uix_gridlayout.py +244 -0
  513. kivy/tests/test_uix_layout.py +16 -0
  514. kivy/tests/test_uix_modal.py +101 -0
  515. kivy/tests/test_uix_recyclegridlayout.py +383 -0
  516. kivy/tests/test_uix_relativelayout.py +30 -0
  517. kivy/tests/test_uix_scrollview.py +358 -0
  518. kivy/tests/test_uix_settings.py +33 -0
  519. kivy/tests/test_uix_slider.py +156 -0
  520. kivy/tests/test_uix_stacklayout.py +120 -0
  521. kivy/tests/test_uix_textinput.py +577 -0
  522. kivy/tests/test_uix_translate_coordinates.py +72 -0
  523. kivy/tests/test_uix_videoplayer.py +112 -0
  524. kivy/tests/test_uix_widget.py +137 -0
  525. kivy/tests/test_urlrequest/test_urlrequest_requests.py +378 -0
  526. kivy/tests/test_urlrequest/test_urlrequest_urllib.py +155 -0
  527. kivy/tests/test_utils.py +237 -0
  528. kivy/tests/test_vector.py +256 -0
  529. kivy/tests/test_video.py +25 -0
  530. kivy/tests/test_weakmethod.py +44 -0
  531. kivy/tests/test_widget.py +127 -0
  532. kivy/tests/test_widget_walk.py +70 -0
  533. kivy/tests/test_window_base.py +60 -0
  534. kivy/tests/test_window_info.py +29 -0
  535. kivy/tests/visual_test_label.py +291 -0
  536. kivy/tools/__init__.py +44 -0
  537. kivy/tools/benchmark.py +286 -0
  538. kivy/tools/changelog_parser.py +120 -0
  539. kivy/tools/coverage.py +135 -0
  540. kivy/tools/gallery.py +323 -0
  541. kivy/tools/generate-icons.py +117 -0
  542. kivy/tools/gles_compat/subset_gles.py +125 -0
  543. kivy/tools/highlight/__init__.py +9 -0
  544. kivy/tools/kviewer.py +80 -0
  545. kivy/tools/packaging/__init__.py +12 -0
  546. kivy/tools/packaging/cython_cfg.py +82 -0
  547. kivy/tools/packaging/factory.py +105 -0
  548. kivy/tools/packaging/pyinstaller_hooks/__init__.py +381 -0
  549. kivy/tools/packaging/pyinstaller_hooks/__main__.py +29 -0
  550. kivy/tools/packaging/pyinstaller_hooks/hook-kivy.py +9 -0
  551. kivy/tools/packaging/pyinstaller_hooks/pyi_rth_kivy.py +17 -0
  552. kivy/tools/pep8checker/pep8.py +2316 -0
  553. kivy/tools/pep8checker/pep8kivy.py +109 -0
  554. kivy/tools/report.py +223 -0
  555. kivy/tools/stub-gl-debug.py +201 -0
  556. kivy/tools/texturecompress.py +233 -0
  557. kivy/uix/__init__.py +56 -0
  558. kivy/uix/accordion.py +484 -0
  559. kivy/uix/actionbar.py +934 -0
  560. kivy/uix/anchorlayout.py +122 -0
  561. kivy/uix/behaviors/__init__.py +95 -0
  562. kivy/uix/behaviors/button.py +212 -0
  563. kivy/uix/behaviors/codenavigation.py +167 -0
  564. kivy/uix/behaviors/compoundselection.py +688 -0
  565. kivy/uix/behaviors/cover.py +160 -0
  566. kivy/uix/behaviors/drag.py +234 -0
  567. kivy/uix/behaviors/emacs.py +140 -0
  568. kivy/uix/behaviors/focus.py +595 -0
  569. kivy/uix/behaviors/knspace.py +590 -0
  570. kivy/uix/behaviors/togglebutton.py +156 -0
  571. kivy/uix/behaviors/touchripple.py +318 -0
  572. kivy/uix/boxlayout.py +331 -0
  573. kivy/uix/bubble.py +576 -0
  574. kivy/uix/button.py +137 -0
  575. kivy/uix/camera.py +118 -0
  576. kivy/uix/carousel.py +695 -0
  577. kivy/uix/checkbox.py +197 -0
  578. kivy/uix/codeinput.py +238 -0
  579. kivy/uix/colorpicker.py +486 -0
  580. kivy/uix/dropdown.py +391 -0
  581. kivy/uix/effectwidget.py +772 -0
  582. kivy/uix/filechooser.py +1134 -0
  583. kivy/uix/floatlayout.py +148 -0
  584. kivy/uix/gesturesurface.py +625 -0
  585. kivy/uix/gridlayout.py +629 -0
  586. kivy/uix/image.py +528 -0
  587. kivy/uix/label.py +1200 -0
  588. kivy/uix/layout.py +322 -0
  589. kivy/uix/modalview.py +339 -0
  590. kivy/uix/pagelayout.py +233 -0
  591. kivy/uix/popup.py +266 -0
  592. kivy/uix/progressbar.py +95 -0
  593. kivy/uix/recycleboxlayout.py +183 -0
  594. kivy/uix/recyclegridlayout.py +255 -0
  595. kivy/uix/recyclelayout.py +446 -0
  596. kivy/uix/recycleview/__init__.py +624 -0
  597. kivy/uix/recycleview/datamodel.py +194 -0
  598. kivy/uix/recycleview/layout.py +253 -0
  599. kivy/uix/recycleview/views.py +423 -0
  600. kivy/uix/relativelayout.py +324 -0
  601. kivy/uix/rst.py +1492 -0
  602. kivy/uix/sandbox.py +198 -0
  603. kivy/uix/scatter.py +645 -0
  604. kivy/uix/scatterlayout.py +93 -0
  605. kivy/uix/screenmanager.py +1275 -0
  606. kivy/uix/scrollview.py +1288 -0
  607. kivy/uix/settings.py +1343 -0
  608. kivy/uix/slider.py +421 -0
  609. kivy/uix/spinner.py +221 -0
  610. kivy/uix/splitter.py +430 -0
  611. kivy/uix/stacklayout.py +331 -0
  612. kivy/uix/stencilview.py +40 -0
  613. kivy/uix/switch.py +122 -0
  614. kivy/uix/tabbedpanel.py +880 -0
  615. kivy/uix/textinput.py +4049 -0
  616. kivy/uix/togglebutton.py +37 -0
  617. kivy/uix/treeview.py +665 -0
  618. kivy/uix/video.py +302 -0
  619. kivy/uix/videoplayer.py +697 -0
  620. kivy/uix/vkeyboard.py +879 -0
  621. kivy/uix/widget.py +1629 -0
  622. kivy/utils.py +550 -0
  623. kivy/vector.py +412 -0
  624. 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)