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/animation.py ADDED
@@ -0,0 +1,831 @@
1
+ '''
2
+ Animation
3
+ =========
4
+
5
+ :class:`Animation` and :class:`AnimationTransition` are used to animate
6
+ :class:`~kivy.uix.widget.Widget` properties. You must specify at least a
7
+ property name and target value. To use an Animation, follow these steps:
8
+
9
+ * Setup an Animation object
10
+ * Use the Animation object on a Widget
11
+
12
+ Simple animation
13
+ ----------------
14
+
15
+ To animate a Widget's x or y position, simply specify the target x/y values
16
+ where you want the widget positioned at the end of the animation::
17
+
18
+ anim = Animation(x=100, y=100)
19
+ anim.start(widget)
20
+
21
+ The animation will last for 1 second unless :attr:`duration` is specified.
22
+ When anim.start() is called, the Widget will move smoothly from the current
23
+ x/y position to (100, 100).
24
+
25
+ Multiple properties and transitions
26
+ -----------------------------------
27
+
28
+ You can animate multiple properties and use built-in or custom transition
29
+ functions using :attr:`transition` (or the `t=` shortcut). For example,
30
+ to animate the position and size using the 'in_quad' transition::
31
+
32
+ anim = Animation(x=50, size=(80, 80), t='in_quad')
33
+ anim.start(widget)
34
+
35
+ Note that the `t=` parameter can be the string name of a method in the
36
+ :class:`AnimationTransition` class or your own animation function.
37
+
38
+ Sequential animation
39
+ --------------------
40
+
41
+ To join animations sequentially, use the '+' operator. The following example
42
+ will animate to x=50 over 1 second, then animate the size to (80, 80) over the
43
+ next two seconds::
44
+
45
+ anim = Animation(x=50) + Animation(size=(80, 80), duration=2.)
46
+ anim.start(widget)
47
+
48
+ Parallel animation
49
+ ------------------
50
+
51
+ To join animations in parallel, use the '&' operator. The following example
52
+ will animate the position to (80, 10) over 1 second, whilst in parallel
53
+ animating the size to (800, 800)::
54
+
55
+ anim = Animation(pos=(80, 10))
56
+ anim &= Animation(size=(800, 800), duration=2.)
57
+ anim.start(widget)
58
+
59
+ Keep in mind that creating overlapping animations on the same property may have
60
+ unexpected results. If you want to apply multiple animations to the same
61
+ property, you should either schedule them sequentially (via the '+' operator or
62
+ using the *on_complete* callback) or cancel previous animations using the
63
+ :attr:`~Animation.cancel_all` method.
64
+
65
+ Repeating animation
66
+ -------------------
67
+
68
+ .. versionadded:: 1.8.0
69
+
70
+ .. note::
71
+ This is currently only implemented for 'Sequence' animations.
72
+
73
+ To set an animation to repeat, simply set the :attr:`Sequence.repeat`
74
+ property to `True`::
75
+
76
+ anim = Animation(...) + Animation(...)
77
+ anim.repeat = True
78
+ anim.start(widget)
79
+
80
+ For flow control of animations such as stopping and cancelling, use the methods
81
+ already in place in the animation module.
82
+ '''
83
+
84
+ __all__ = ('Animation', 'AnimationTransition')
85
+
86
+ from math import sqrt, cos, sin, pi
87
+ from collections import ChainMap
88
+ from kivy.event import EventDispatcher
89
+ from kivy.clock import Clock
90
+ from kivy.compat import string_types, iterkeys
91
+ from kivy.weakproxy import WeakProxy
92
+
93
+
94
+ class Animation(EventDispatcher):
95
+ '''Create an animation definition that can be used to animate a Widget.
96
+
97
+ :Parameters:
98
+ `duration` or `d`: float, defaults to 1.
99
+ Duration of the animation, in seconds.
100
+ `transition` or `t`: str or func
101
+ Transition function for animate properties. It can be the name of a
102
+ method from :class:`AnimationTransition`.
103
+ `step` or `s`: float
104
+ Step in milliseconds of the animation. Defaults to 0, which means
105
+ the animation is updated for every frame.
106
+
107
+ To update the animation less often, set the step value to a float.
108
+ For example, if you want to animate at 30 FPS, use s=1/30.
109
+
110
+ :Events:
111
+ `on_start`: animation, widget
112
+ Fired when the animation is started on a widget.
113
+ `on_complete`: animation, widget
114
+ Fired when the animation is completed or stopped on a widget.
115
+ `on_progress`: animation, widget, progression
116
+ Fired when the progression of the animation is changing.
117
+
118
+ .. versionchanged:: 1.4.0
119
+ Added s/step parameter.
120
+
121
+ .. versionchanged:: 1.10.0
122
+ The default value of the step parameter was changed from 1/60. to 0.
123
+ '''
124
+
125
+ _update_ev = None
126
+
127
+ _instances = set()
128
+
129
+ __events__ = ('on_start', 'on_progress', 'on_complete')
130
+
131
+ def __init__(self, **kw):
132
+ super().__init__()
133
+ # Initialize
134
+ self._clock_installed = False
135
+ self._duration = kw.pop('d', kw.pop('duration', 1.))
136
+ self._transition = kw.pop('t', kw.pop('transition', 'linear'))
137
+ self._step = kw.pop('s', kw.pop('step', 0))
138
+ if isinstance(self._transition, string_types):
139
+ self._transition = getattr(AnimationTransition, self._transition)
140
+ self._animated_properties = kw
141
+ self._widgets = {}
142
+
143
+ @property
144
+ def duration(self):
145
+ '''Return the duration of the animation.
146
+ '''
147
+ return self._duration
148
+
149
+ @property
150
+ def transition(self):
151
+ '''Return the transition of the animation.
152
+ '''
153
+ return self._transition
154
+
155
+ @property
156
+ def animated_properties(self):
157
+ '''Return the properties used to animate.
158
+ '''
159
+ return self._animated_properties
160
+
161
+ @staticmethod
162
+ def stop_all(widget, *largs):
163
+ '''Stop all animations that concern a specific widget / list of
164
+ properties.
165
+
166
+ Example::
167
+
168
+ anim = Animation(x=50)
169
+ anim.start(widget)
170
+
171
+ # and later
172
+ Animation.stop_all(widget, 'x')
173
+ '''
174
+ if len(largs):
175
+ for animation in list(Animation._instances):
176
+ for x in largs:
177
+ animation.stop_property(widget, x)
178
+ else:
179
+ for animation in set(Animation._instances):
180
+ animation.stop(widget)
181
+
182
+ @staticmethod
183
+ def cancel_all(widget, *largs):
184
+ '''Cancel all animations that concern a specific widget / list of
185
+ properties. See :attr:`cancel`.
186
+
187
+ Example::
188
+
189
+ anim = Animation(x=50)
190
+ anim.start(widget)
191
+
192
+ # and later
193
+ Animation.cancel_all(widget, 'x')
194
+
195
+ .. versionadded:: 1.4.0
196
+
197
+ .. versionchanged:: 2.1.0
198
+ If the parameter ``widget`` is None, all animated widgets will be
199
+ the target and cancelled. If ``largs`` is also given, animation of
200
+ these properties will be canceled for all animated widgets.
201
+ '''
202
+ if widget is None:
203
+ if largs:
204
+ for animation in Animation._instances.copy():
205
+ for info in tuple(animation._widgets.values()):
206
+ widget = info['widget']
207
+ for x in largs:
208
+ animation.cancel_property(widget, x)
209
+ else:
210
+ for animation in Animation._instances:
211
+ animation._widgets.clear()
212
+ animation._clock_uninstall()
213
+ Animation._instances.clear()
214
+ return
215
+ if len(largs):
216
+ for animation in list(Animation._instances):
217
+ for x in largs:
218
+ animation.cancel_property(widget, x)
219
+ else:
220
+ for animation in set(Animation._instances):
221
+ animation.cancel(widget)
222
+
223
+ def start(self, widget):
224
+ '''Start the animation on a widget.
225
+ '''
226
+ self.stop(widget)
227
+ self._initialize(widget)
228
+ self._register()
229
+ self.dispatch('on_start', widget)
230
+
231
+ def stop(self, widget):
232
+ '''Stop the animation previously applied to a widget, triggering the
233
+ `on_complete` event.'''
234
+ props = self._widgets.pop(widget.uid, None)
235
+ if props:
236
+ self.dispatch('on_complete', widget)
237
+ self.cancel(widget)
238
+
239
+ def cancel(self, widget):
240
+ '''Cancel the animation previously applied to a widget. Same
241
+ effect as :attr:`stop`, except the `on_complete` event will
242
+ *not* be triggered!
243
+
244
+ .. versionadded:: 1.4.0
245
+ '''
246
+ self._widgets.pop(widget.uid, None)
247
+ self._clock_uninstall()
248
+ if not self._widgets:
249
+ self._unregister()
250
+
251
+ def stop_property(self, widget, prop):
252
+ '''Even if an animation is running, remove a property. It will not be
253
+ animated further. If it was the only/last property being animated,
254
+ the animation will be stopped (see :attr:`stop`).
255
+ '''
256
+ props = self._widgets.get(widget.uid, None)
257
+ if not props:
258
+ return
259
+ props['properties'].pop(prop, None)
260
+
261
+ # no more properties to animation ? kill the animation.
262
+ if not props['properties']:
263
+ self.stop(widget)
264
+
265
+ def cancel_property(self, widget, prop):
266
+ '''Even if an animation is running, remove a property. It will not be
267
+ animated further. If it was the only/last property being animated,
268
+ the animation will be canceled (see :attr:`cancel`)
269
+
270
+ .. versionadded:: 1.4.0
271
+ '''
272
+ props = self._widgets.get(widget.uid, None)
273
+ if not props:
274
+ return
275
+ props['properties'].pop(prop, None)
276
+
277
+ # no more properties to animation ? kill the animation.
278
+ if not props['properties']:
279
+ self.cancel(widget)
280
+
281
+ def have_properties_to_animate(self, widget):
282
+ '''Return True if a widget still has properties to animate.
283
+
284
+ .. versionadded:: 1.8.0
285
+ '''
286
+ props = self._widgets.get(widget.uid, None)
287
+ if props and props['properties']:
288
+ return True
289
+
290
+ #
291
+ # Private
292
+ #
293
+ def _register(self):
294
+ Animation._instances.add(self)
295
+
296
+ def _unregister(self):
297
+ Animation._instances.discard(self)
298
+
299
+ def _initialize(self, widget):
300
+ d = self._widgets[widget.uid] = {
301
+ 'widget': widget,
302
+ 'properties': {},
303
+ 'time': None}
304
+
305
+ # get current values
306
+ p = d['properties']
307
+ for key, value in self._animated_properties.items():
308
+ original_value = getattr(widget, key)
309
+ if isinstance(original_value, (tuple, list)):
310
+ original_value = original_value[:]
311
+ elif isinstance(original_value, dict):
312
+ original_value = original_value.copy()
313
+ p[key] = (original_value, value)
314
+
315
+ # install clock
316
+ self._clock_install()
317
+
318
+ def _clock_install(self):
319
+ if self._clock_installed:
320
+ return
321
+ self._update_ev = Clock.schedule_interval(self._update, self._step)
322
+ self._clock_installed = True
323
+
324
+ def _clock_uninstall(self):
325
+ if self._widgets or not self._clock_installed:
326
+ return
327
+ self._clock_installed = False
328
+ if self._update_ev is not None:
329
+ self._update_ev.cancel()
330
+ self._update_ev = None
331
+
332
+ def _update(self, dt):
333
+ widgets = self._widgets
334
+ transition = self._transition
335
+ calculate = self._calculate
336
+ for uid in list(widgets.keys()):
337
+ anim = widgets[uid]
338
+ widget = anim['widget']
339
+
340
+ if isinstance(widget, WeakProxy) and not len(dir(widget)):
341
+ # empty proxy, widget is gone. ref: #2458
342
+ self._widgets.pop(uid, None)
343
+ self._clock_uninstall()
344
+ if not self._widgets:
345
+ self._unregister()
346
+ continue
347
+
348
+ if anim['time'] is None:
349
+ anim['time'] = 0.
350
+ else:
351
+ anim['time'] += dt
352
+
353
+ # calculate progression
354
+ if self._duration:
355
+ progress = min(1., anim['time'] / self._duration)
356
+ else:
357
+ progress = 1
358
+ t = transition(progress)
359
+
360
+ # apply progression on widget
361
+ for key, values in anim['properties'].items():
362
+ a, b = values
363
+ value = calculate(a, b, t)
364
+ setattr(widget, key, value)
365
+
366
+ self.dispatch('on_progress', widget, progress)
367
+
368
+ # time to stop ?
369
+ if progress >= 1.:
370
+ self.stop(widget)
371
+
372
+ def _calculate(self, a, b, t):
373
+ _calculate = self._calculate
374
+ if isinstance(a, list) or isinstance(a, tuple):
375
+ if isinstance(a, list):
376
+ tp = list
377
+ else:
378
+ tp = tuple
379
+ return tp([_calculate(a[x], b[x], t) for x in range(len(a))])
380
+ elif isinstance(a, dict):
381
+ d = {}
382
+ for x in iterkeys(a):
383
+ if x not in b:
384
+ # User requested to animate only part of the dict.
385
+ # Copy the rest
386
+ d[x] = a[x]
387
+ else:
388
+ d[x] = _calculate(a[x], b[x], t)
389
+ return d
390
+ else:
391
+ return (a * (1. - t)) + (b * t)
392
+
393
+ #
394
+ # Default handlers
395
+ #
396
+ def on_start(self, widget):
397
+ pass
398
+
399
+ def on_progress(self, widget, progress):
400
+ pass
401
+
402
+ def on_complete(self, widget):
403
+ pass
404
+
405
+ def __add__(self, animation):
406
+ return Sequence(self, animation)
407
+
408
+ def __and__(self, animation):
409
+ return Parallel(self, animation)
410
+
411
+
412
+ class CompoundAnimation(Animation):
413
+
414
+ def stop_property(self, widget, prop):
415
+ self.anim1.stop_property(widget, prop)
416
+ self.anim2.stop_property(widget, prop)
417
+ if (not self.anim1.have_properties_to_animate(widget) and
418
+ not self.anim2.have_properties_to_animate(widget)):
419
+ self.stop(widget)
420
+
421
+ def cancel(self, widget):
422
+ self.anim1.cancel(widget)
423
+ self.anim2.cancel(widget)
424
+ super().cancel(widget)
425
+
426
+ def cancel_property(self, widget, prop):
427
+ '''Even if an animation is running, remove a property. It will not be
428
+ animated further. If it was the only/last property being animated,
429
+ the animation will be canceled (see :attr:`cancel`)
430
+
431
+ This method overrides `:class:kivy.animation.Animation`'s
432
+ version, to cancel it on all animations of the Sequence.
433
+
434
+ .. versionadded:: 1.10.0
435
+ '''
436
+ self.anim1.cancel_property(widget, prop)
437
+ self.anim2.cancel_property(widget, prop)
438
+ if (not self.anim1.have_properties_to_animate(widget) and
439
+ not self.anim2.have_properties_to_animate(widget)):
440
+ self.cancel(widget)
441
+
442
+ def have_properties_to_animate(self, widget):
443
+ return (self.anim1.have_properties_to_animate(widget) or
444
+ self.anim2.have_properties_to_animate(widget))
445
+
446
+ @property
447
+ def animated_properties(self):
448
+ return ChainMap({},
449
+ self.anim2.animated_properties,
450
+ self.anim1.animated_properties)
451
+
452
+ @property
453
+ def transition(self):
454
+ # This property is impossible to implement
455
+ raise AttributeError(
456
+ "Can't lookup transition attribute of a CompoundAnimation")
457
+
458
+
459
+ class Sequence(CompoundAnimation):
460
+
461
+ def __init__(self, anim1, anim2):
462
+ super().__init__()
463
+
464
+ #: Repeat the sequence. See 'Repeating animation' in the header
465
+ #: documentation.
466
+ self.repeat = False
467
+
468
+ self.anim1 = anim1
469
+ self.anim2 = anim2
470
+
471
+ self.anim1.bind(on_complete=self.on_anim1_complete,
472
+ on_progress=self.on_anim1_progress)
473
+ self.anim2.bind(on_complete=self.on_anim2_complete,
474
+ on_progress=self.on_anim2_progress)
475
+
476
+ @property
477
+ def duration(self):
478
+ return self.anim1.duration + self.anim2.duration
479
+
480
+ def stop(self, widget):
481
+ props = self._widgets.pop(widget.uid, None)
482
+ self.anim1.stop(widget)
483
+ self.anim2.stop(widget)
484
+ if props:
485
+ self.dispatch('on_complete', widget)
486
+ super().cancel(widget)
487
+
488
+ def start(self, widget):
489
+ self.stop(widget)
490
+ self._widgets[widget.uid] = True
491
+ self._register()
492
+ self.dispatch('on_start', widget)
493
+ self.anim1.start(widget)
494
+
495
+ def on_anim1_complete(self, instance, widget):
496
+ if widget.uid not in self._widgets:
497
+ return
498
+ self.anim2.start(widget)
499
+
500
+ def on_anim1_progress(self, instance, widget, progress):
501
+ self.dispatch('on_progress', widget, progress / 2.)
502
+
503
+ def on_anim2_complete(self, instance, widget):
504
+ '''Repeating logic used with boolean variable "repeat".
505
+
506
+ .. versionadded:: 1.7.1
507
+ '''
508
+ if widget.uid not in self._widgets:
509
+ return
510
+ if self.repeat:
511
+ self.anim1.start(widget)
512
+ else:
513
+ self.dispatch('on_complete', widget)
514
+ self.cancel(widget)
515
+
516
+ def on_anim2_progress(self, instance, widget, progress):
517
+ self.dispatch('on_progress', widget, .5 + progress / 2.)
518
+
519
+
520
+ class Parallel(CompoundAnimation):
521
+
522
+ def __init__(self, anim1, anim2):
523
+ super().__init__()
524
+ self.anim1 = anim1
525
+ self.anim2 = anim2
526
+
527
+ self.anim1.bind(on_complete=self.on_anim_complete)
528
+ self.anim2.bind(on_complete=self.on_anim_complete)
529
+
530
+ @property
531
+ def duration(self):
532
+ return max(self.anim1.duration, self.anim2.duration)
533
+
534
+ def stop(self, widget):
535
+ self.anim1.stop(widget)
536
+ self.anim2.stop(widget)
537
+ if self._widgets.pop(widget.uid, None):
538
+ self.dispatch('on_complete', widget)
539
+ super().cancel(widget)
540
+
541
+ def start(self, widget):
542
+ self.stop(widget)
543
+ self.anim1.start(widget)
544
+ self.anim2.start(widget)
545
+ self._widgets[widget.uid] = {'complete': 0}
546
+ self._register()
547
+ self.dispatch('on_start', widget)
548
+
549
+ def on_anim_complete(self, instance, widget):
550
+ self._widgets[widget.uid]['complete'] += 1
551
+ if self._widgets[widget.uid]['complete'] == 2:
552
+ self.stop(widget)
553
+
554
+
555
+ class AnimationTransition:
556
+ '''Collection of animation functions to be used with the Animation object.
557
+ Easing Functions ported to Kivy from the Clutter Project
558
+ https://developer.gnome.org/clutter/stable/ClutterAlpha.html
559
+
560
+ The `progress` parameter in each animation function is in the range 0-1.
561
+ '''
562
+
563
+ @staticmethod
564
+ def linear(progress):
565
+ '''.. image:: images/anim_linear.png'''
566
+ return progress
567
+
568
+ @staticmethod
569
+ def in_quad(progress):
570
+ '''.. image:: images/anim_in_quad.png
571
+ '''
572
+ return progress * progress
573
+
574
+ @staticmethod
575
+ def out_quad(progress):
576
+ '''.. image:: images/anim_out_quad.png
577
+ '''
578
+ return -1.0 * progress * (progress - 2.0)
579
+
580
+ @staticmethod
581
+ def in_out_quad(progress):
582
+ '''.. image:: images/anim_in_out_quad.png
583
+ '''
584
+ p = progress * 2
585
+ if p < 1:
586
+ return 0.5 * p * p
587
+ p -= 1.0
588
+ return -0.5 * (p * (p - 2.0) - 1.0)
589
+
590
+ @staticmethod
591
+ def in_cubic(progress):
592
+ '''.. image:: images/anim_in_cubic.png
593
+ '''
594
+ return progress * progress * progress
595
+
596
+ @staticmethod
597
+ def out_cubic(progress):
598
+ '''.. image:: images/anim_out_cubic.png
599
+ '''
600
+ p = progress - 1.0
601
+ return p * p * p + 1.0
602
+
603
+ @staticmethod
604
+ def in_out_cubic(progress):
605
+ '''.. image:: images/anim_in_out_cubic.png
606
+ '''
607
+ p = progress * 2
608
+ if p < 1:
609
+ return 0.5 * p * p * p
610
+ p -= 2
611
+ return 0.5 * (p * p * p + 2.0)
612
+
613
+ @staticmethod
614
+ def in_quart(progress):
615
+ '''.. image:: images/anim_in_quart.png
616
+ '''
617
+ return progress * progress * progress * progress
618
+
619
+ @staticmethod
620
+ def out_quart(progress):
621
+ '''.. image:: images/anim_out_quart.png
622
+ '''
623
+ p = progress - 1.0
624
+ return -1.0 * (p * p * p * p - 1.0)
625
+
626
+ @staticmethod
627
+ def in_out_quart(progress):
628
+ '''.. image:: images/anim_in_out_quart.png
629
+ '''
630
+ p = progress * 2
631
+ if p < 1:
632
+ return 0.5 * p * p * p * p
633
+ p -= 2
634
+ return -0.5 * (p * p * p * p - 2.0)
635
+
636
+ @staticmethod
637
+ def in_quint(progress):
638
+ '''.. image:: images/anim_in_quint.png
639
+ '''
640
+ return progress * progress * progress * progress * progress
641
+
642
+ @staticmethod
643
+ def out_quint(progress):
644
+ '''.. image:: images/anim_out_quint.png
645
+ '''
646
+ p = progress - 1.0
647
+ return p * p * p * p * p + 1.0
648
+
649
+ @staticmethod
650
+ def in_out_quint(progress):
651
+ '''.. image:: images/anim_in_out_quint.png
652
+ '''
653
+ p = progress * 2
654
+ if p < 1:
655
+ return 0.5 * p * p * p * p * p
656
+ p -= 2.0
657
+ return 0.5 * (p * p * p * p * p + 2.0)
658
+
659
+ @staticmethod
660
+ def in_sine(progress):
661
+ '''.. image:: images/anim_in_sine.png
662
+ '''
663
+ return -1.0 * cos(progress * (pi / 2.0)) + 1.0
664
+
665
+ @staticmethod
666
+ def out_sine(progress):
667
+ '''.. image:: images/anim_out_sine.png
668
+ '''
669
+ return sin(progress * (pi / 2.0))
670
+
671
+ @staticmethod
672
+ def in_out_sine(progress):
673
+ '''.. image:: images/anim_in_out_sine.png
674
+ '''
675
+ return -0.5 * (cos(pi * progress) - 1.0)
676
+
677
+ @staticmethod
678
+ def in_expo(progress):
679
+ '''.. image:: images/anim_in_expo.png
680
+ '''
681
+ if progress == 0:
682
+ return 0.0
683
+ return pow(2, 10 * (progress - 1.0))
684
+
685
+ @staticmethod
686
+ def out_expo(progress):
687
+ '''.. image:: images/anim_out_expo.png
688
+ '''
689
+ if progress == 1.0:
690
+ return 1.0
691
+ return -pow(2, -10 * progress) + 1.0
692
+
693
+ @staticmethod
694
+ def in_out_expo(progress):
695
+ '''.. image:: images/anim_in_out_expo.png
696
+ '''
697
+ if progress == 0:
698
+ return 0.0
699
+ if progress == 1.:
700
+ return 1.0
701
+ p = progress * 2
702
+ if p < 1:
703
+ return 0.5 * pow(2, 10 * (p - 1.0))
704
+ p -= 1.0
705
+ return 0.5 * (-pow(2, -10 * p) + 2.0)
706
+
707
+ @staticmethod
708
+ def in_circ(progress):
709
+ '''.. image:: images/anim_in_circ.png
710
+ '''
711
+ return -1.0 * (sqrt(1.0 - progress * progress) - 1.0)
712
+
713
+ @staticmethod
714
+ def out_circ(progress):
715
+ '''.. image:: images/anim_out_circ.png
716
+ '''
717
+ p = progress - 1.0
718
+ return sqrt(1.0 - p * p)
719
+
720
+ @staticmethod
721
+ def in_out_circ(progress):
722
+ '''.. image:: images/anim_in_out_circ.png
723
+ '''
724
+ p = progress * 2
725
+ if p < 1:
726
+ return -0.5 * (sqrt(1.0 - p * p) - 1.0)
727
+ p -= 2.0
728
+ return 0.5 * (sqrt(1.0 - p * p) + 1.0)
729
+
730
+ @staticmethod
731
+ def in_elastic(progress):
732
+ '''.. image:: images/anim_in_elastic.png
733
+ '''
734
+ p = .3
735
+ s = p / 4.0
736
+ q = progress
737
+ if q == 1:
738
+ return 1.0
739
+ q -= 1.0
740
+ return -(pow(2, 10 * q) * sin((q - s) * (2 * pi) / p))
741
+
742
+ @staticmethod
743
+ def out_elastic(progress):
744
+ '''.. image:: images/anim_out_elastic.png
745
+ '''
746
+ p = .3
747
+ s = p / 4.0
748
+ q = progress
749
+ if q == 1:
750
+ return 1.0
751
+ return pow(2, -10 * q) * sin((q - s) * (2 * pi) / p) + 1.0
752
+
753
+ @staticmethod
754
+ def in_out_elastic(progress):
755
+ '''.. image:: images/anim_in_out_elastic.png
756
+ '''
757
+ p = .3 * 1.5
758
+ s = p / 4.0
759
+ q = progress * 2
760
+ if q == 2:
761
+ return 1.0
762
+ if q < 1:
763
+ q -= 1.0
764
+ return -.5 * (pow(2, 10 * q) * sin((q - s) * (2.0 * pi) / p))
765
+ else:
766
+ q -= 1.0
767
+ return pow(2, -10 * q) * sin((q - s) * (2.0 * pi) / p) * .5 + 1.0
768
+
769
+ @staticmethod
770
+ def in_back(progress):
771
+ '''.. image:: images/anim_in_back.png
772
+ '''
773
+ return progress * progress * ((1.70158 + 1.0) * progress - 1.70158)
774
+
775
+ @staticmethod
776
+ def out_back(progress):
777
+ '''.. image:: images/anim_out_back.png
778
+ '''
779
+ p = progress - 1.0
780
+ return p * p * ((1.70158 + 1) * p + 1.70158) + 1.0
781
+
782
+ @staticmethod
783
+ def in_out_back(progress):
784
+ '''.. image:: images/anim_in_out_back.png
785
+ '''
786
+ p = progress * 2.
787
+ s = 1.70158 * 1.525
788
+ if p < 1:
789
+ return 0.5 * (p * p * ((s + 1.0) * p - s))
790
+ p -= 2.0
791
+ return 0.5 * (p * p * ((s + 1.0) * p + s) + 2.0)
792
+
793
+ @staticmethod
794
+ def _out_bounce_internal(t, d):
795
+ p = t / d
796
+ if p < (1.0 / 2.75):
797
+ return 7.5625 * p * p
798
+ elif p < (2.0 / 2.75):
799
+ p -= (1.5 / 2.75)
800
+ return 7.5625 * p * p + .75
801
+ elif p < (2.5 / 2.75):
802
+ p -= (2.25 / 2.75)
803
+ return 7.5625 * p * p + .9375
804
+ else:
805
+ p -= (2.625 / 2.75)
806
+ return 7.5625 * p * p + .984375
807
+
808
+ @staticmethod
809
+ def _in_bounce_internal(t, d):
810
+ return 1.0 - AnimationTransition._out_bounce_internal(d - t, d)
811
+
812
+ @staticmethod
813
+ def in_bounce(progress):
814
+ '''.. image:: images/anim_in_bounce.png
815
+ '''
816
+ return AnimationTransition._in_bounce_internal(progress, 1.)
817
+
818
+ @staticmethod
819
+ def out_bounce(progress):
820
+ '''.. image:: images/anim_out_bounce.png
821
+ '''
822
+ return AnimationTransition._out_bounce_internal(progress, 1.)
823
+
824
+ @staticmethod
825
+ def in_out_bounce(progress):
826
+ '''.. image:: images/anim_in_out_bounce.png
827
+ '''
828
+ p = progress * 2.
829
+ if p < 1.:
830
+ return AnimationTransition._in_bounce_internal(p, 1.) * .5
831
+ return AnimationTransition._out_bounce_internal(p - 1., 1.) * .5 + .5