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/input/__init__.py ADDED
@@ -0,0 +1,39 @@
1
+ # pylint: disable=W0611
2
+ '''
3
+ Input management
4
+ ================
5
+
6
+ Our input system is wide and simple at the same time. We are currently able to
7
+ natively support :
8
+
9
+ * Windows multitouch events (pencil and finger)
10
+ * OS X touchpads
11
+ * Linux multitouch events (kernel and mtdev)
12
+ * Linux wacom drivers (pencil and finger)
13
+ * TUIO
14
+
15
+ All the input management is configurable in the Kivy :mod:`~kivy.config`. You
16
+ can easily use many multitouch devices in one Kivy application.
17
+
18
+ When the events have been read from the devices, they are dispatched through
19
+ a post processing module before being sent to your application. We also have
20
+ several default modules for :
21
+
22
+ * Double tap detection
23
+ * Decreasing jittering
24
+ * Decreasing the inaccuracy of touch on "bad" DIY hardware
25
+ * Ignoring regions
26
+ '''
27
+
28
+
29
+ from kivy.input.motionevent import MotionEvent
30
+ from kivy.input.postproc import kivy_postproc_modules
31
+ from kivy.input.provider import MotionEventProvider
32
+ from kivy.input.factory import MotionEventFactory
33
+ import kivy.input.providers
34
+
35
+ __all__ = (
36
+ MotionEvent.__name__,
37
+ MotionEventProvider.__name__,
38
+ MotionEventFactory.__name__,
39
+ 'kivy_postproc_modules')
kivy/input/factory.py ADDED
@@ -0,0 +1,35 @@
1
+ '''
2
+ Motion Event Factory
3
+ ====================
4
+
5
+ Factory of :class:`~kivy.input.motionevent.MotionEvent` providers.
6
+ '''
7
+
8
+ __all__ = ('MotionEventFactory', )
9
+
10
+
11
+ class MotionEventFactory:
12
+ '''MotionEvent factory is a class that registers all availables input
13
+ factories. If you create a new input factory, you need to register
14
+ it here::
15
+
16
+ MotionEventFactory.register('myproviderid', MyInputProvider)
17
+
18
+ '''
19
+ __providers__ = {}
20
+
21
+ @staticmethod
22
+ def register(name, classname):
23
+ '''Register a input provider in the database'''
24
+ MotionEventFactory.__providers__[name] = classname
25
+
26
+ @staticmethod
27
+ def list():
28
+ '''Get a list of all available providers'''
29
+ return MotionEventFactory.__providers__
30
+
31
+ @staticmethod
32
+ def get(name):
33
+ '''Get a provider class from the provider id'''
34
+ if name in MotionEventFactory.__providers__:
35
+ return MotionEventFactory.__providers__[name]
@@ -0,0 +1,587 @@
1
+ '''
2
+ .. _motionevent:
3
+
4
+ Motion Event
5
+ ============
6
+
7
+ The :class:`MotionEvent` is the base class used for events provided by
8
+ pointing devices (touch and non-touch). This class defines all the properties
9
+ and methods needed to handle 2D and 3D movements but has many more
10
+ capabilities.
11
+
12
+ Usually you would never need to create the :class:`MotionEvent` yourself as
13
+ this is the role of the :mod:`~kivy.input.providers`.
14
+
15
+ Flow of the motion events
16
+ -------------------------
17
+
18
+ 1. The :class:`MotionEvent` 's are gathered from input providers by
19
+ :class:`~kivy.base.EventLoopBase`.
20
+ 2. Post processing is performed by registered processors
21
+ :mod:`~kivy.input.postproc`.
22
+ 3. :class:`~kivy.base.EventLoopBase` dispatches all motion events using
23
+ `on_motion` event to all registered listeners including the
24
+ :class:`~kivy.core.window.WindowBase`.
25
+ 4. Once received in :meth:`~kivy.core.window.WindowBase.on_motion` events
26
+ (touch or non-touch) are all registered managers. If a touch event is not
27
+ handled by at least one manager, then it is dispatched through
28
+ :meth:`~kivy.core.window.WindowBase.on_touch_down`,
29
+ :meth:`~kivy.core.window.WindowBase.on_touch_move` and
30
+ :meth:`~kivy.core.window.WindowBase.on_touch_up`.
31
+ 5. Widgets receive events in :meth:`~kivy.uix.widget.Widget.on_motion` method
32
+ (if passed by a manager) or on `on_touch_xxx` methods.
33
+
34
+ Motion events and event managers
35
+ --------------------------------
36
+
37
+ A motion event is a touch event if its :attr:`MotionEvent.is_touch` is set to
38
+ `True`. Beside `is_touch` attribute, :attr:`MotionEvent.type_id` can be used to
39
+ check for event's general type. Currently two types are dispatched by
40
+ input providers: "touch" and "hover".
41
+
42
+ Event managers can be used to dispatch any motion event throughout the widget
43
+ tree and a manager uses `type_id` to specify which event types it want to
44
+ receive. See :mod:`~kivy.eventmanager` to learn how to define and register
45
+ an event manager.
46
+
47
+ A manager can also assign a new `type_id` to
48
+ :attr:`MotionEvent.type_id` before dispatching it to the widgets. This useful
49
+ when dispatching a specific event::
50
+
51
+ class MouseTouchManager(EventManagerBase):
52
+
53
+ type_ids = ('touch',)
54
+
55
+ def dispatch(self, etype, me):
56
+ accepted = False
57
+ if me.device == 'mouse':
58
+ me.push() # Save current type_id and other values
59
+ me.type_id = 'mouse_touch'
60
+ self.window.transform_motion_event_2d(me)
61
+ # Dispatch mouse touch event to widgets which registered
62
+ # to receive 'mouse_touch'
63
+ for widget in self.window.children[:]:
64
+ if widget.dispatch('on_motion', etype, me):
65
+ accepted = True
66
+ break
67
+ me.pop() # Restore
68
+ return accepted
69
+
70
+ Listening to a motion event
71
+ ---------------------------
72
+
73
+ If you want to receive all motion events, touch or not, you can bind the
74
+ MotionEvent from the :class:`~kivy.core.window.Window` to your own callback::
75
+
76
+ def on_motion(self, etype, me):
77
+ # will receive all motion events.
78
+ pass
79
+
80
+ Window.bind(on_motion=on_motion)
81
+
82
+ You can also listen to changes of the mouse position by watching
83
+ :attr:`~kivy.core.window.WindowBase.mouse_pos`.
84
+
85
+ Profiles
86
+ --------
87
+
88
+ The :class:`MotionEvent` stores device specific information in various
89
+ properties listed in the :attr:`~MotionEvent.profile`.
90
+ For example, you can receive a MotionEvent that has an angle, a fiducial
91
+ ID, or even a shape. You can check the :attr:`~MotionEvent.profile`
92
+ attribute to see what is currently supported by the MotionEvent provider.
93
+
94
+ This is a short list of the profile values supported by default. Please check
95
+ the :attr:`MotionEvent.profile` property to see what profile values are
96
+ available.
97
+
98
+ ============== ================================================================
99
+ Profile value Description
100
+ -------------- ----------------------------------------------------------------
101
+ angle 2D angle. Accessed via the `a` property.
102
+ button Mouse button ('left', 'right', 'middle', 'scrollup' or
103
+ 'scrolldown'). Accessed via the `button` property.
104
+ markerid Marker or Fiducial ID. Accessed via the `fid` property.
105
+ pos 2D position. Accessed via the `x`, `y` or `pos` properties.
106
+ pos3d 3D position. Accessed via the `x`, `y` or `z` properties.
107
+ pressure Pressure of the contact. Accessed via the `pressure` property.
108
+ shape Contact shape. Accessed via the `shape` property .
109
+ ============== ================================================================
110
+
111
+ If you want to know whether the current :class:`MotionEvent` has an angle::
112
+
113
+ def on_touch_move(self, touch):
114
+ if 'angle' in touch.profile:
115
+ print('The touch angle is', touch.a)
116
+
117
+ If you want to select only the fiducials::
118
+
119
+ def on_touch_move(self, touch):
120
+ if 'markerid' not in touch.profile:
121
+ return
122
+
123
+ '''
124
+
125
+ __all__ = ('MotionEvent', )
126
+
127
+ import weakref
128
+ from inspect import isroutine
129
+ from copy import copy
130
+ from time import time
131
+
132
+ from kivy.eventmanager import MODE_DEFAULT_DISPATCH
133
+ from kivy.vector import Vector
134
+
135
+
136
+ class EnhancedDictionary(dict):
137
+
138
+ def __getattr__(self, attr):
139
+ try:
140
+ return self.__getitem__(attr)
141
+ except KeyError:
142
+ return super(EnhancedDictionary, self).__getattr__(attr)
143
+
144
+ def __setattr__(self, attr, value):
145
+ self.__setitem__(attr, value)
146
+
147
+
148
+ class MotionEventMetaclass(type):
149
+
150
+ def __new__(mcs, name, bases, attrs):
151
+ __attrs__ = []
152
+ for base in bases:
153
+ if hasattr(base, '__attrs__'):
154
+ __attrs__.extend(base.__attrs__)
155
+ if '__attrs__' in attrs:
156
+ __attrs__.extend(attrs['__attrs__'])
157
+ attrs['__attrs__'] = tuple(__attrs__)
158
+ return super(MotionEventMetaclass, mcs).__new__(mcs, name,
159
+ bases, attrs)
160
+
161
+
162
+ MotionEventBase = MotionEventMetaclass('MotionEvent', (object, ), {})
163
+
164
+
165
+ class MotionEvent(MotionEventBase):
166
+ '''Abstract class that represents an input event.
167
+
168
+ :Parameters:
169
+ `id`: str
170
+ unique ID of the MotionEvent
171
+ `args`: list
172
+ list of parameters, passed to the depack() function
173
+ '''
174
+
175
+ __uniq_id = 0
176
+ __attrs__ = \
177
+ ('device', 'push_attrs', 'push_attrs_stack',
178
+ 'is_touch', 'type_id', 'id', 'dispatch_mode', 'shape', 'profile',
179
+ # current position, in 0-1 range
180
+ 'sx', 'sy', 'sz',
181
+ # first position set, in 0-1 range
182
+ 'osx', 'osy', 'osz',
183
+ # last position set, in 0-1 range
184
+ 'psx', 'psy', 'psz',
185
+ # delta from the last position and current one, in 0-1 range
186
+ 'dsx', 'dsy', 'dsz',
187
+ # current position, in screen range
188
+ 'x', 'y', 'z',
189
+ # first position set, in screen range
190
+ 'ox', 'oy', 'oz',
191
+ # last position set, in 0-1 range
192
+ 'px', 'py', 'pz',
193
+ # delta from the last position and current one, in screen range
194
+ 'dx', 'dy', 'dz',
195
+ 'time_start',
196
+ 'is_double_tap', 'double_tap_time',
197
+ 'is_triple_tap', 'triple_tap_time',
198
+ 'ud')
199
+
200
+ def __init__(self, device, id, args, is_touch=False, type_id=None):
201
+ if self.__class__ == MotionEvent:
202
+ raise NotImplementedError('class MotionEvent is abstract')
203
+ MotionEvent.__uniq_id += 1
204
+
205
+ #: True if the MotionEvent is a touch.
206
+ self.is_touch = is_touch
207
+
208
+ #: (Experimental) String to identify event type.
209
+ #:
210
+ #: .. versionadded:: 2.1.0
211
+ self.type_id = type_id
212
+
213
+ #: (Experimental) Used by a event manager or a widget to assign
214
+ #: the dispatching mode. Defaults to
215
+ #: :const:`~kivy.eventmanager.MODE_DEFAULT_DISPATCH`. See
216
+ #: :mod:`~kivy.eventmanager` for available modes.
217
+ #:
218
+ #: .. versionadded:: 2.1.0
219
+ self.dispatch_mode = MODE_DEFAULT_DISPATCH
220
+
221
+ #: Attributes to push by default, when we use :meth:`push` : x, y, z,
222
+ #: dx, dy, dz, ox, oy, oz, px, py, pz.
223
+ self.push_attrs_stack = []
224
+ self.push_attrs = ('x', 'y', 'z', 'dx', 'dy', 'dz', 'ox', 'oy', 'oz',
225
+ 'px', 'py', 'pz', 'pos', 'type_id', 'dispatch_mode')
226
+
227
+ #: Uniq ID of the event. You can safely use this property, it will be
228
+ #: never the same across all existing events.
229
+ self.uid = MotionEvent.__uniq_id
230
+
231
+ #: Device used for creating this event.
232
+ self.device = device
233
+
234
+ # For grab
235
+ self.grab_list = []
236
+ self.grab_exclusive_class = None
237
+ self.grab_state = False
238
+
239
+ #: Used to determine which widget the event is being dispatched to.
240
+ #: Check the :meth:`grab` function for more information.
241
+ self.grab_current = None
242
+
243
+ #: Currently pressed button.
244
+ self.button = None
245
+
246
+ #: Profiles currently used in the event.
247
+ self.profile = []
248
+
249
+ #: Id of the event, not unique. This is generally the Id set by the
250
+ #: input provider, like ID in TUIO. If you have multiple TUIO sources,
251
+ #: then same id can be used. Prefer to use :attr:`uid` attribute
252
+ #: instead.
253
+ self.id = id
254
+
255
+ #: Shape of the touch event, subclass of
256
+ #: :class:`~kivy.input.shape.Shape`.
257
+ #: By default, the property is set to None.
258
+ self.shape = None
259
+
260
+ #: X position, in 0-1 range.
261
+ self.sx = 0.0
262
+ #: Y position, in 0-1 range.
263
+ self.sy = 0.0
264
+ #: Z position, in 0-1 range.
265
+ self.sz = 0.0
266
+ #: Origin X position, in 0-1 range.
267
+ self.osx = None
268
+ #: Origin Y position, in 0-1 range.
269
+ self.osy = None
270
+ #: Origin Z position, in 0-1 range.
271
+ self.osz = None
272
+ #: Previous X position, in 0-1 range.
273
+ self.psx = None
274
+ #: Previous Y position, in 0-1 range.
275
+ self.psy = None
276
+ #: Previous Z position, in 0-1 range.
277
+ self.psz = None
278
+ #: Delta between self.sx and self.psx, in 0-1 range.
279
+ self.dsx = None
280
+ #: Delta between self.sy and self.psy, in 0-1 range.
281
+ self.dsy = None
282
+ #: Delta between self.sz and self.psz, in 0-1 range.
283
+ self.dsz = None
284
+ #: X position, in window range.
285
+ self.x = 0.0
286
+ #: Y position, in window range.
287
+ self.y = 0.0
288
+ #: Z position, in window range.
289
+ self.z = 0.0
290
+ #: Origin X position, in window range.
291
+ self.ox = None
292
+ #: Origin Y position, in window range.
293
+ self.oy = None
294
+ #: Origin Z position, in window range.
295
+ self.oz = None
296
+ #: Previous X position, in window range.
297
+ self.px = None
298
+ #: Previous Y position, in window range.
299
+ self.py = None
300
+ #: Previous Z position, in window range.
301
+ self.pz = None
302
+ #: Delta between self.x and self.px, in window range.
303
+ self.dx = None
304
+ #: Delta between self.y and self.py, in window range.
305
+ self.dy = None
306
+ #: Delta between self.z and self.pz, in window range.
307
+ self.dz = None
308
+ #: Position (X, Y), in window range.
309
+ self.pos = (0.0, 0.0)
310
+
311
+ #: Initial time of the event creation.
312
+ self.time_start = time()
313
+
314
+ #: Time of the last update.
315
+ self.time_update = self.time_start
316
+
317
+ #: Time of the end event (last event usage).
318
+ self.time_end = -1
319
+
320
+ #: Indicate if the touch event is a double tap or not.
321
+ self.is_double_tap = False
322
+
323
+ #: Indicate if the touch event is a triple tap or not.
324
+ #:
325
+ #: .. versionadded:: 1.7.0
326
+ self.is_triple_tap = False
327
+
328
+ #: If the touch is a :attr:`is_double_tap`, this is the time
329
+ #: between the previous tap and the current touch.
330
+ self.double_tap_time = 0
331
+
332
+ #: If the touch is a :attr:`is_triple_tap`, this is the time
333
+ #: between the first tap and the current touch.
334
+ #:
335
+ #: .. versionadded:: 1.7.0
336
+ self.triple_tap_time = 0
337
+
338
+ #: User data dictionary. Use this dictionary to save your own data on
339
+ #: the event.
340
+ self.ud = EnhancedDictionary()
341
+
342
+ #: If set to `True` (default) keeps first previous position
343
+ #: (X, Y, Z in 0-1 range) and ignore all other until
344
+ #: :meth:`MotionEvent.dispatch_done` is called from the `EventLoop`.
345
+ #:
346
+ #: This attribute is needed because event provider can make many calls
347
+ #: to :meth:`MotionEvent.move`, but for all those calls event is
348
+ #: dispatched to the listeners only once. Assigning `False` will keep
349
+ #: latest previous position. See :meth:`MotionEvent.move`.
350
+ #:
351
+ #: .. versionadded:: 2.1.0
352
+ self.sync_with_dispatch = True
353
+
354
+ #: Keep first previous position if :attr:`sync_with_dispatch` is
355
+ #: `True`.
356
+ self._keep_prev_pos = True
357
+
358
+ #: Flag that first dispatch of this event is done.
359
+ self._first_dispatch_done = False
360
+
361
+ self.depack(args)
362
+
363
+ def depack(self, args):
364
+ '''Depack `args` into attributes of the class'''
365
+ if self.osx is None \
366
+ or self.sync_with_dispatch and not self._first_dispatch_done:
367
+ # Sync origin/previous/current positions until the first
368
+ # dispatch (etype == 'begin') is done.
369
+ self.osx = self.psx = self.sx
370
+ self.osy = self.psy = self.sy
371
+ self.osz = self.psz = self.sz
372
+ # update the delta
373
+ self.dsx = self.sx - self.psx
374
+ self.dsy = self.sy - self.psy
375
+ self.dsz = self.sz - self.psz
376
+
377
+ def grab(self, class_instance, exclusive=False):
378
+ '''Grab this motion event.
379
+
380
+ If this event is a touch you can grab it if you want to receive
381
+ subsequent :meth:`~kivy.uix.widget.Widget.on_touch_move` and
382
+ :meth:`~kivy.uix.widget.Widget.on_touch_up` events, even if the touch
383
+ is not dispatched by the parent:
384
+
385
+ .. code-block:: python
386
+
387
+ def on_touch_down(self, touch):
388
+ touch.grab(self)
389
+
390
+ def on_touch_move(self, touch):
391
+ if touch.grab_current is self:
392
+ # I received my grabbed touch
393
+ else:
394
+ # it's a normal touch
395
+
396
+ def on_touch_up(self, touch):
397
+ if touch.grab_current is self:
398
+ # I receive my grabbed touch, I must ungrab it!
399
+ touch.ungrab(self)
400
+ else:
401
+ # it's a normal touch
402
+ pass
403
+
404
+ .. versionchanged:: 2.1.0
405
+ Allowed grab for non-touch events.
406
+ '''
407
+ if self.grab_exclusive_class is not None:
408
+ raise Exception('Event is exclusive and cannot be grabbed')
409
+ class_instance = weakref.ref(class_instance.__self__)
410
+ if exclusive:
411
+ self.grab_exclusive_class = class_instance
412
+ self.grab_list.append(class_instance)
413
+
414
+ def ungrab(self, class_instance):
415
+ '''Ungrab a previously grabbed motion event.
416
+ '''
417
+ class_instance = weakref.ref(class_instance.__self__)
418
+ if self.grab_exclusive_class == class_instance:
419
+ self.grab_exclusive_class = None
420
+ if class_instance in self.grab_list:
421
+ self.grab_list.remove(class_instance)
422
+
423
+ def dispatch_done(self):
424
+ '''Notify that dispatch to the listeners is done.
425
+
426
+ Called by the :meth:`EventLoopBase.post_dispatch_input`.
427
+
428
+ .. versionadded:: 2.1.0
429
+ '''
430
+ self._keep_prev_pos = True
431
+ self._first_dispatch_done = True
432
+
433
+ def move(self, args):
434
+ '''Move to another position.
435
+ '''
436
+ if self.sync_with_dispatch:
437
+ if self._keep_prev_pos:
438
+ self.psx, self.psy, self.psz = self.sx, self.sy, self.sz
439
+ self._keep_prev_pos = False
440
+ else:
441
+ self.psx, self.psy, self.psz = self.sx, self.sy, self.sz
442
+ self.time_update = time()
443
+ self.depack(args)
444
+
445
+ def scale_for_screen(self, w, h, p=None, rotation=0,
446
+ smode='None', kheight=0):
447
+ '''Scale position for the screen.
448
+
449
+ .. versionchanged:: 2.1.0
450
+ Max value for `x`, `y` and `z` is changed respectively to `w` - 1,
451
+ `h` - 1 and `p` - 1.
452
+ '''
453
+ x_max, y_max = max(0, w - 1), max(0, h - 1)
454
+ absolute = self.to_absolute_pos
455
+ self.x, self.y = absolute(self.sx, self.sy, x_max, y_max, rotation)
456
+ self.ox, self.oy = absolute(self.osx, self.osy, x_max, y_max, rotation)
457
+ self.px, self.py = absolute(self.psx, self.psy, x_max, y_max, rotation)
458
+ z_max = 0 if p is None else max(0, p - 1)
459
+ self.z = self.sz * z_max
460
+ self.oz = self.osz * z_max
461
+ self.pz = self.psz * z_max
462
+ if smode:
463
+ # Adjust y for keyboard height
464
+ if smode == 'pan' or smode == 'below_target':
465
+ self.y -= kheight
466
+ self.oy -= kheight
467
+ self.py -= kheight
468
+ elif smode == 'scale':
469
+ offset = kheight * (self.y - h) / (h - kheight)
470
+ self.y += offset
471
+ self.oy += offset
472
+ self.py += offset
473
+ # Update delta values
474
+ self.dx = self.x - self.px
475
+ self.dy = self.y - self.py
476
+ self.dz = self.z - self.pz
477
+ # Cache position
478
+ self.pos = self.x, self.y
479
+
480
+ def to_absolute_pos(self, nx, ny, x_max, y_max, rotation):
481
+ '''Transforms normalized (0-1) coordinates `nx` and `ny` to absolute
482
+ coordinates using `x_max`, `y_max` and `rotation`.
483
+
484
+ :raises:
485
+ `ValueError`: If `rotation` is not one of: 0, 90, 180 or 270
486
+
487
+ .. versionadded:: 2.1.0
488
+ '''
489
+ if rotation == 0:
490
+ return nx * x_max, ny * y_max
491
+ elif rotation == 90:
492
+ return ny * y_max, (1 - nx) * x_max
493
+ elif rotation == 180:
494
+ return (1 - nx) * x_max, (1 - ny) * y_max
495
+ elif rotation == 270:
496
+ return (1 - ny) * y_max, nx * x_max
497
+ raise ValueError('Invalid rotation %s, '
498
+ 'valid values are 0, 90, 180 or 270' % rotation)
499
+
500
+ def push(self, attrs=None):
501
+ '''Push attribute values in `attrs` onto the stack.
502
+ '''
503
+ if attrs is None:
504
+ attrs = self.push_attrs
505
+ values = [getattr(self, x) for x in attrs]
506
+ self.push_attrs_stack.append((attrs, values))
507
+
508
+ def pop(self):
509
+ '''Pop attributes values from the stack.
510
+ '''
511
+ attrs, values = self.push_attrs_stack.pop()
512
+ for i in range(len(attrs)):
513
+ setattr(self, attrs[i], values[i])
514
+
515
+ def apply_transform_2d(self, transform):
516
+ '''Apply a transformation on x, y, z, px, py, pz,
517
+ ox, oy, oz, dx, dy, dz.
518
+ '''
519
+ self.x, self.y = self.pos = transform(self.x, self.y)
520
+ self.px, self.py = transform(self.px, self.py)
521
+ self.ox, self.oy = transform(self.ox, self.oy)
522
+ self.dx = self.x - self.px
523
+ self.dy = self.y - self.py
524
+
525
+ def copy_to(self, to):
526
+ '''Copy some attribute to another motion event object.'''
527
+ for attr in self.__attrs__:
528
+ to.__setattr__(attr, copy(self.__getattribute__(attr)))
529
+
530
+ def distance(self, other_touch):
531
+ '''Return the distance between the two events.
532
+ '''
533
+ return Vector(self.pos).distance(other_touch.pos)
534
+
535
+ def update_time_end(self):
536
+ self.time_end = time()
537
+
538
+ # facilities
539
+ @property
540
+ def dpos(self):
541
+ '''Return delta between last position and current position, in the
542
+ screen coordinate system (self.dx, self.dy).'''
543
+ return self.dx, self.dy
544
+
545
+ @property
546
+ def opos(self):
547
+ '''Return the initial position of the motion event in the screen
548
+ coordinate system (self.ox, self.oy).'''
549
+ return self.ox, self.oy
550
+
551
+ @property
552
+ def ppos(self):
553
+ '''Return the previous position of the motion event in the screen
554
+ coordinate system (self.px, self.py).'''
555
+ return self.px, self.py
556
+
557
+ @property
558
+ def spos(self):
559
+ '''Return the position in the 0-1 coordinate system (self.sx, self.sy).
560
+ '''
561
+ return self.sx, self.sy
562
+
563
+ def __str__(self):
564
+ basename = str(self.__class__)
565
+ classname = basename.split('.')[-1].replace('>', '').replace('\'', '')
566
+ return '<%s spos=%s pos=%s>' % (classname, self.spos, self.pos)
567
+
568
+ def __repr__(self):
569
+ out = []
570
+ for x in dir(self):
571
+ v = getattr(self, x)
572
+ if x[0] == '_':
573
+ continue
574
+ if isroutine(v):
575
+ continue
576
+ out.append('%s="%s"' % (x, v))
577
+ return '<%s %s>' % (
578
+ self.__class__.__name__,
579
+ ' '.join(out))
580
+
581
+ @property
582
+ def is_mouse_scrolling(self, *args):
583
+ '''Returns True if the touch event is a mousewheel scrolling
584
+
585
+ .. versionadded:: 1.6.0
586
+ '''
587
+ return 'button' in self.profile and 'scroll' in self.button
@@ -0,0 +1,27 @@
1
+ '''
2
+ Input Postprocessing
3
+ ====================
4
+
5
+ '''
6
+
7
+ __all__ = ('kivy_postproc_modules', )
8
+
9
+ import os
10
+ from kivy.input.postproc.doubletap import InputPostprocDoubleTap
11
+ from kivy.input.postproc.tripletap import InputPostprocTripleTap
12
+ from kivy.input.postproc.ignorelist import InputPostprocIgnoreList
13
+ from kivy.input.postproc.retaintouch import InputPostprocRetainTouch
14
+ from kivy.input.postproc.dejitter import InputPostprocDejitter
15
+ from kivy.input.postproc.calibration import InputPostprocCalibration
16
+
17
+ # Mapping of ID to module
18
+ kivy_postproc_modules = {}
19
+
20
+ # Don't go further if we generate documentation
21
+ if 'KIVY_DOC' not in os.environ:
22
+ kivy_postproc_modules['calibration'] = InputPostprocCalibration()
23
+ kivy_postproc_modules['retaintouch'] = InputPostprocRetainTouch()
24
+ kivy_postproc_modules['ignorelist'] = InputPostprocIgnoreList()
25
+ kivy_postproc_modules['doubletap'] = InputPostprocDoubleTap()
26
+ kivy_postproc_modules['tripletap'] = InputPostprocTripleTap()
27
+ kivy_postproc_modules['dejitter'] = InputPostprocDejitter()