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/lang/__init__.py ADDED
@@ -0,0 +1,883 @@
1
+ '''Kivy Language
2
+ =============
3
+
4
+ The Kivy language is a language dedicated to describing user interface and
5
+ interactions. You could compare this language to Qt's QML
6
+ (http://qt.nokia.com), but we included new concepts such as rule definitions
7
+ (which are somewhat akin to what you may know from CSS), templating and so on.
8
+
9
+ .. versionchanged:: 1.7.0
10
+
11
+ The Builder doesn't execute canvas expressions in realtime anymore. It will
12
+ pack all the expressions that need to be executed first and execute them
13
+ after dispatching input, just before drawing the frame. If you want to
14
+ force the execution of canvas drawing, just call
15
+ :meth:`Builder.sync <BuilderBase.sync>`.
16
+
17
+ An experimental profiling tool for the kv lang is also included. You can
18
+ activate it by setting the environment variable `KIVY_PROFILE_LANG=1`.
19
+ It will then generate an html file named `builder_stats.html`.
20
+
21
+ Overview
22
+ --------
23
+
24
+ The language consists of several constructs that you can use:
25
+
26
+ Rules
27
+ A rule is similar to a CSS rule. A rule applies to specific widgets (or
28
+ classes thereof) in your widget tree and modifies them in a
29
+ certain way.
30
+ You can use rules to specify interactive behavior or use them to add
31
+ graphical representations of the widgets they apply to.
32
+ You can target a specific class of widgets (similar to the CSS
33
+ concept of a *class*) by using the ``cls`` attribute (e.g.
34
+ ``cls=MyTestWidget``).
35
+
36
+ A Root Widget
37
+ You can use the language to create your entire user interface.
38
+ A kv file must contain only one root widget at most.
39
+
40
+ Dynamic Classes
41
+ *(introduced in version 1.7.0)*
42
+ Dynamic classes let you create new widgets and rules on-the-fly,
43
+ without any Python declaration.
44
+
45
+ Templates (deprecated)
46
+ *(introduced in version 1.0.5, deprecated from version 1.7.0)*
47
+ Templates were used to populate parts of an application, such as
48
+ styling the content of a list (e.g. icon on the left, text on the
49
+ right). They are now deprecated by dynamic classes.
50
+
51
+
52
+ Syntax of a kv File
53
+ -------------------
54
+
55
+ .. highlight:: kv
56
+
57
+ A Kivy language file must have ``.kv`` as filename extension.
58
+
59
+ The content of the file should always start with the Kivy header, where
60
+ `version` must be replaced with the Kivy language version you're using.
61
+ For now, use 1.0::
62
+
63
+ #:kivy `1.0`
64
+
65
+ # content here
66
+
67
+ The `content` can contain rule definitions, a root widget, dynamic class
68
+ definitions and templates::
69
+
70
+ # Syntax of a rule definition. Note that several Rules can share the same
71
+ # definition (as in CSS). Note the braces: they are part of the definition.
72
+ <Rule1,Rule2>:
73
+ # .. definitions ..
74
+
75
+ <Rule3>:
76
+ # .. definitions ..
77
+
78
+ # Syntax for creating a root widget
79
+ RootClassName:
80
+ # .. definitions ..
81
+
82
+ # Syntax for creating a dynamic class
83
+ <NewWidget@BaseClass>:
84
+ # .. definitions ..
85
+
86
+ # Syntax for creating a template
87
+ [TemplateName@BaseClass1,BaseClass2]:
88
+ # .. definitions ..
89
+
90
+ Regardless of whether it's a rule, root widget, dynamic class or
91
+ template you're defining, the definition should look like this::
92
+
93
+ # With the braces it's a rule. Without them, it's a root widget.
94
+ <ClassName>:
95
+ prop1: value1
96
+ prop2: value2
97
+
98
+ canvas:
99
+ CanvasInstruction1:
100
+ canvasprop1: value1
101
+ CanvasInstruction2:
102
+ canvasprop2: value2
103
+
104
+ AnotherClass:
105
+ prop3: value1
106
+
107
+ Here `prop1` and `prop2` are the properties of `ClassName` and `prop3` is the
108
+ property of `AnotherClass`. If the widget doesn't have a property with
109
+ the given name, an :class:`~kivy.properties.ObjectProperty` will be
110
+ automatically created and added to the widget.
111
+
112
+ `AnotherClass` will be created and added as a child of the `ClassName`
113
+ instance.
114
+
115
+ - The indentation is important and must be consistent. The spacing must be a
116
+ multiple of the number of spaces used on the first indented line. Spaces
117
+ are encouraged: mixing tabs and spaces is not recommended.
118
+ - The value of a property must be given on a single line (for now at least).
119
+ - Keep class names capitalized to avoid syntax errors.
120
+ - The `canvas` property is special: you can put graphics instructions in it
121
+ to create a graphical representation of the current class.
122
+
123
+
124
+ Here is a simple example of a kv file that contains a root widget::
125
+
126
+ #:kivy 1.0
127
+
128
+ Button:
129
+ text: 'Hello world'
130
+
131
+
132
+ .. versionchanged:: 1.7.0
133
+
134
+ The indentation is not limited to 4 spaces anymore. The spacing must be a
135
+ multiple of the number of spaces used on the first indented line.
136
+
137
+ Both the :meth:`~BuilderBase.load_file` and the
138
+ :meth:`~BuilderBase.load_string` methods
139
+ return the root widget defined in your kv file/string. They will also add any
140
+ class and template definitions to the :class:`~kivy.factory.Factory` for later
141
+ usage.
142
+
143
+ Value Expressions, on_property Expressions, ids, and Reserved Keywords
144
+ ---------------------------------------------------------------------
145
+
146
+ When you specify a property's value, the value is evaluated as a Python
147
+ expression. This expression can be static or dynamic, which means that
148
+ the value can use the values of other properties using reserved keywords.
149
+
150
+ self
151
+ The keyword self references the "current widget instance"::
152
+
153
+ Button:
154
+ text: 'My state is %s' % self.state
155
+
156
+ root
157
+ This keyword is available only in rule definitions and represents the
158
+ root widget of the rule (the first instance of the rule)::
159
+
160
+ <MyWidget>:
161
+ custom: 'Hello world'
162
+ Button:
163
+ text: root.custom
164
+
165
+ app
166
+ This keyword always refers to your app instance. It's equivalent
167
+ to a call to :meth:`kivy.app.App.get_running_app` in Python. ::
168
+
169
+ Label:
170
+ text: app.name
171
+
172
+ args
173
+ This keyword is available in on_<action> callbacks. It refers to the
174
+ arguments passed to the callback. ::
175
+
176
+ TextInput:
177
+ on_focus: self.insert_text("Focus" if args[1] else "No focus")
178
+
179
+
180
+ .. versionchanged:: 2.1.0
181
+
182
+ f-strings are now parsed in value expressions, allowing to bind to the
183
+ properties that they contain.
184
+
185
+ .. kv-lang-ids:
186
+
187
+ ids
188
+ ~~~
189
+
190
+ Class definitions may contain ids which can be used as a keywords:::
191
+
192
+ <MyWidget>:
193
+ Button:
194
+ id: btn1
195
+ Button:
196
+ text: 'The state of the other button is %s' % btn1.state
197
+
198
+ Please note that the `id` will not be available in the widget instance:
199
+ it is used exclusively for external references. `id` is a weakref to the
200
+ widget, and not the widget itself. The widget itself can be accessed
201
+ with `<id>.__self__` (`btn1.__self__` in this case).
202
+
203
+ When the kv file is processed, weakrefs to all the widgets tagged with ids are
204
+ added to the root widget's `ids` dictionary. In other words, following on from
205
+ the example above, the buttons state could also be accessed as follows:
206
+
207
+ .. code-block:: python
208
+
209
+ widget = MyWidget()
210
+ state = widget.ids["btn1"].state
211
+
212
+ # Or, as an alternative syntax,
213
+ state = widget.ids.btn1.state
214
+
215
+ Note that the outermost widget applies the kv rules to all its inner widgets
216
+ before any other rules are applied. This means if an inner widget contains ids,
217
+ these ids may not be available during the inner widget's `__init__` function.
218
+
219
+ Valid expressions
220
+ ~~~~~~~~~~~~~~~~~
221
+
222
+ There are two places that accept python statements in a kv file:
223
+ after a property, which assigns to the property the result of the expression
224
+ (such as the text of a button as shown above) and after a on_property, which
225
+ executes the statement when the property is updated (such as on_state).
226
+
227
+ In the former case, the
228
+ `expression <http://docs.python.org/2/reference/expressions.html>`_ can only
229
+ span a single line, cannot be extended to multiple lines using newline
230
+ escaping, and must return a value. An example of a valid expression is
231
+ ``text: self.state and ('up' if self.state == 'normal' else 'down')``.
232
+
233
+ In the latter case, multiple single line statements are valid, including
234
+ those that escape their newline, as long as they don't add an indentation
235
+ level.
236
+
237
+ Examples of valid statements are:
238
+
239
+ .. code-block:: python
240
+
241
+ on_press: if self.state == 'normal': print('normal')
242
+ on_state:
243
+ if self.state == 'normal': print('normal')
244
+ else: print('down')
245
+ if self.state == 'normal': \\
246
+ print('multiline normal')
247
+ for i in range(10): print(i)
248
+ print([1,2,3,4,
249
+ 5,6,7])
250
+
251
+ An example of a invalid statement:
252
+
253
+ .. code-block:: python
254
+
255
+ on_state:
256
+ if self.state == 'normal':
257
+ print('normal')
258
+
259
+ Relation Between Values and Properties
260
+ --------------------------------------
261
+
262
+ When you use the Kivy language, you might notice that we do some work
263
+ behind the scenes to automatically make things work properly. You should
264
+ know that :doc:`api-kivy.properties` implement the
265
+ `Observer Design Pattern <http://en.wikipedia.org/wiki/Observer_pattern>`_.
266
+ That means that you can bind your own function to be
267
+ called when the value of a property changes (i.e. you passively
268
+ `observe` the property for potential changes).
269
+
270
+ The Kivy language detects properties in your `value` expression and will create
271
+ callbacks to automatically update the property via your expression when changes
272
+ occur.
273
+
274
+ Here's a simple example that demonstrates this behavior::
275
+
276
+ Button:
277
+ text: str(self.state)
278
+
279
+ In this example, the parser detects that `self.state` is a dynamic value (a
280
+ property). The :attr:`~kivy.uix.button.Button.state` property of the button
281
+ can change at any moment (when the user touches it).
282
+ We now want this button to display its own state as text, even as the state
283
+ changes. To do this, we use the state property of the Button and use it in the
284
+ value expression for the button's `text` property, which controls what text is
285
+ displayed on the button (We also convert the state to a string representation).
286
+ Now, whenever the button state changes, the text property will be updated
287
+ automatically.
288
+
289
+ Remember: The value is a python expression! That means that you can do
290
+ something more interesting like::
291
+
292
+ Button:
293
+ text: 'Plop world' if self.state == 'normal' else 'Release me!'
294
+
295
+ The Button text changes with the state of the button. By default, the button
296
+ text will be 'Plop world', but when the button is being pressed, the text will
297
+ change to 'Release me!'.
298
+
299
+ More precisely, the kivy language parser detects all substrings of the form
300
+ `X.a.b` where `X` is `self` or `root` or `app` or a known id, and `a` and `b`
301
+ are properties: it then adds the appropriate dependencies to cause the
302
+ constraint to be reevaluated whenever something changes. For example,
303
+ this works exactly as expected::
304
+
305
+ <IndexedExample>:
306
+ beta: self.a.b[self.c.d]
307
+
308
+ However, due to limitations in the parser which hopefully may be lifted in the
309
+ future, the following doesn't work::
310
+
311
+ <BadExample>:
312
+ beta: self.a.b[self.c.d].e.f
313
+
314
+ indeed the `.e.f` part is not recognized because it doesn't follow the expected
315
+ pattern, and so, does not result in an appropriate dependency being setup.
316
+ Instead, an intermediate property should be introduced to allow the following
317
+ constraint::
318
+
319
+ <GoodExample>:
320
+ alpha: self.a.b[self.c.d]
321
+ beta: self.alpha.e.f
322
+
323
+ In addition, properties in python f-strings are also not yet supported::
324
+
325
+ <FStringExample>:
326
+ text: f"I want to use {self.a} in property"
327
+
328
+ Instead, the ``format()`` method should be used::
329
+
330
+ <FormatStringExample>:
331
+ text: "I want to use {} in property".format(self.a)
332
+
333
+
334
+ Graphical Instructions
335
+ ----------------------
336
+
337
+ The graphical instructions are a special part of the Kivy language. They are
338
+ handled by the 'canvas' property definition::
339
+
340
+ Widget:
341
+ canvas:
342
+ Color:
343
+ rgb: (1, 1, 1)
344
+ Rectangle:
345
+ size: self.size
346
+ pos: self.pos
347
+
348
+ All the classes added inside the canvas property must be derived from the
349
+ :class:`~kivy.graphics.Instruction` class. You cannot put any Widget class
350
+ inside the canvas property (as that would not make sense because a
351
+ widget is not a graphics instruction).
352
+
353
+ If you want to do theming, you'll have the same question as in CSS: which rules
354
+ have been executed first? In our case, the rules are executed
355
+ in processing order (i.e. top-down).
356
+
357
+ If you want to change how Buttons are rendered, you can create your own kv file
358
+ and add something like this::
359
+
360
+ <Button>:
361
+ canvas:
362
+ Color:
363
+ rgb: (1, 0, 0)
364
+ Rectangle:
365
+ pos: self.pos
366
+ size: self.size
367
+ Rectangle:
368
+ pos: self.pos
369
+ size: self.texture_size
370
+ texture: self.texture
371
+
372
+ This will result in buttons having a red background with the label in the
373
+ bottom left, in addition to all the preceding rules.
374
+ You can clear all the previous instructions by using the `Clear` command::
375
+
376
+ <Button>:
377
+ canvas:
378
+ Clear
379
+ Color:
380
+ rgb: (1, 0, 0)
381
+ Rectangle:
382
+ pos: self.pos
383
+ size: self.size
384
+ Rectangle:
385
+ pos: self.pos
386
+ size: self.texture_size
387
+ texture: self.texture
388
+
389
+ Then, only your rules that follow the `Clear` command will be taken into
390
+ consideration.
391
+
392
+ .. _dynamic_classes:
393
+
394
+ Dynamic classes
395
+ ---------------
396
+
397
+ Dynamic classes allow you to create new widgets on-the-fly, without any python
398
+ declaration in the first place. The syntax of the dynamic classes is similar to
399
+ the Rules, but you need to specify the base classes you want to
400
+ subclass.
401
+
402
+ The syntax looks like:
403
+
404
+ .. code-block:: kv
405
+
406
+ # Simple inheritance
407
+ <NewWidget@Button>:
408
+ # kv code here ...
409
+
410
+ # Multiple inheritance
411
+ <NewWidget@ButtonBehavior+Label>:
412
+ # kv code here ...
413
+
414
+ The `@` character is used to separate your class name from the classes you want
415
+ to subclass. The Python equivalent would have been:
416
+
417
+ .. code-block:: python
418
+
419
+ # Simple inheritance
420
+ class NewWidget(Button):
421
+ pass
422
+
423
+ # Multiple inheritance
424
+ class NewWidget(ButtonBehavior, Label):
425
+ pass
426
+
427
+ Any new properties, usually added in python code, should be declared
428
+ first. If the property doesn't exist in the dynamic class, it will be
429
+ automatically created as an :class:`~kivy.properties.ObjectProperty`
430
+ (pre 1.8.0) or as an appropriate typed property (from version
431
+ 1.8.0).
432
+
433
+ .. versionchanged:: 1.8.0
434
+
435
+ If the property value is an expression that can be evaluated right away (no
436
+ external binding), then the value will be used as default value of the
437
+ property, and the type of the value will be used for the specialization of
438
+ the Property class. In other terms: if you declare `hello: "world"`, a new
439
+ :class:`~kivy.properties.StringProperty` will be instantiated, with the
440
+ default value `"world"`. Lists, tuples, dictionaries and strings are
441
+ supported.
442
+
443
+ Let's illustrate the usage of these dynamic classes with an
444
+ implementation of a basic Image button. We could derive our classes from
445
+ the Button and just add a property for the image filename:
446
+
447
+ .. code-block:: kv
448
+
449
+ <ImageButton@Button>:
450
+ source: None
451
+
452
+ Image:
453
+ source: root.source
454
+ pos: root.pos
455
+ size: root.size
456
+
457
+ # let's use the new classes in another rule:
458
+ <MainUI>:
459
+ BoxLayout:
460
+ ImageButton:
461
+ source: 'hello.png'
462
+ on_press: root.do_something()
463
+ ImageButton:
464
+ source: 'world.png'
465
+ on_press: root.do_something_else()
466
+
467
+ In Python, you can create an instance of the dynamic class as follows:
468
+
469
+ .. code-block:: python
470
+
471
+ from kivy.factory import Factory
472
+ button_inst = Factory.ImageButton()
473
+
474
+ .. note::
475
+
476
+ Using dynamic classes, a child class can be declared before its parent.
477
+ This however, leads to the unintuitive situation where the parent
478
+ properties/methods override those of the child. Be careful if you choose
479
+ to do this.
480
+
481
+ .. _template_usage:
482
+
483
+ Templates
484
+ ---------
485
+
486
+ .. versionchanged:: 1.7.0
487
+
488
+ Template usage is now deprecated. Please use Dynamic classes instead.
489
+
490
+ Syntax of templates
491
+ ~~~~~~~~~~~~~~~~~~~
492
+
493
+ Using a template in Kivy requires 2 things :
494
+
495
+ #. a context to pass for the context (will be ctx inside template).
496
+ #. a kv definition of the template.
497
+
498
+ Syntax of a template:
499
+
500
+ .. code-block:: kv
501
+
502
+ # With only one base class
503
+ [ClassName@BaseClass]:
504
+ # .. definitions ..
505
+
506
+ # With more than one base class
507
+ [ClassName@BaseClass1,BaseClass2]:
508
+ # .. definitions ..
509
+
510
+ For example, for a list, you'll need to create a entry with a image on
511
+ the left, and a label on the right. You can create a template for making
512
+ that definition easier to use.
513
+ So, we'll create a template that uses 2 entries in the context: an image
514
+ filename and a title:
515
+
516
+ .. code-block:: kv
517
+
518
+ [IconItem@BoxLayout]:
519
+ Image:
520
+ source: ctx.image
521
+ Label:
522
+ text: ctx.title
523
+
524
+ Then in Python, you can instantiate the template using:
525
+
526
+ .. code-block:: python
527
+
528
+ from kivy.lang import Builder
529
+
530
+ # create a template with hello world + an image
531
+ # the context values should be passed as kwargs to the Builder.template
532
+ # function
533
+ icon1 = Builder.template('IconItem', title='Hello world',
534
+ image='myimage.png')
535
+
536
+ # create a second template with other information
537
+ ctx = {'title': 'Another hello world',
538
+ 'image': 'myimage2.png'}
539
+ icon2 = Builder.template('IconItem', **ctx)
540
+ # and use icon1 and icon2 as other widget.
541
+
542
+
543
+ Template example
544
+ ~~~~~~~~~~~~~~~~
545
+
546
+ Most of time, when you are creating a screen in the kv lang, you use a lot of
547
+ redefinitions. In our example, we'll create a Toolbar, based on a
548
+ BoxLayout, and put in a few :class:`~kivy.uix.image.Image` widgets that
549
+ will react to the *on_touch_down* event.
550
+
551
+ .. code-block:: kv
552
+
553
+ <MyToolbar>:
554
+ BoxLayout:
555
+ Image:
556
+ source: 'data/text.png'
557
+ size: self.texture_size
558
+ size_hint: None, None
559
+ on_touch_down: self.collide_point(*args[1].pos) and\
560
+ root.create_text()
561
+
562
+ Image:
563
+ source: 'data/image.png'
564
+ size: self.texture_size
565
+ size_hint: None, None
566
+ on_touch_down: self.collide_point(*args[1].pos) and\
567
+ root.create_image()
568
+
569
+ Image:
570
+ source: 'data/video.png'
571
+ size: self.texture_size
572
+ size_hint: None, None
573
+ on_touch_down: self.collide_point(*args[1].pos) and\
574
+ root.create_video()
575
+
576
+ We can see that the size and size_hint attribute are exactly the same.
577
+ More than that, the callback in on_touch_down and the image are changing.
578
+ These can be the variable part of the template that we can put into a context.
579
+ Let's try to create a template for the Image:
580
+
581
+ .. code-block:: kv
582
+
583
+ [ToolbarButton@Image]:
584
+
585
+ # This is the same as before
586
+ size: self.texture_size
587
+ size_hint: None, None
588
+
589
+ # Now, we are using the ctx for the variable part of the template
590
+ source: 'data/%s.png' % ctx.image
591
+ on_touch_down: self.collide_point(*args[1].pos) and ctx.callback()
592
+
593
+ The template can be used directly in the MyToolbar rule:
594
+
595
+ .. code-block:: kv
596
+
597
+ <MyToolbar>:
598
+ BoxLayout:
599
+ ToolbarButton:
600
+ image: 'text'
601
+ callback: root.create_text
602
+ ToolbarButton:
603
+ image: 'image'
604
+ callback: root.create_image
605
+ ToolbarButton:
606
+ image: 'video'
607
+ callback: root.create_video
608
+
609
+ That's all :)
610
+
611
+
612
+ Template limitations
613
+ ~~~~~~~~~~~~~~~~~~~~
614
+
615
+ When you are creating a context:
616
+
617
+ #. you cannot use references other than "root":
618
+
619
+ .. code-block:: kv
620
+
621
+ <MyRule>:
622
+ Widget:
623
+ id: mywidget
624
+ value: 'bleh'
625
+ Template:
626
+ ctxkey: mywidget.value # << fail, this references the id
627
+ # mywidget
628
+
629
+ #. not all of the dynamic parts will be understood:
630
+
631
+ .. code-block:: kv
632
+
633
+ <MyRule>:
634
+ Template:
635
+ ctxkey: 'value 1' if root.prop1 else 'value2' # << even if
636
+ # root.prop1 is a property, if it changes value, ctxkey
637
+ # will not be updated
638
+
639
+ Template definitions also replace any similarly named definitions in their
640
+ entirety and thus do not support inheritance.
641
+
642
+ .. _redefining-style:
643
+
644
+ Redefining a widget's style
645
+ ---------------------------
646
+
647
+ Sometimes we would like to inherit from a widget in order to use its Python
648
+ properties without also using its .kv defined style. For example, we would
649
+ like to inherit from a Label, but we would also like to define our own
650
+ canvas instructions instead of automatically using the canvas instructions
651
+ inherited from the Label. We can achieve this by prepending a dash (-) before
652
+ the class name in the .kv style definition.
653
+
654
+ In myapp.py:
655
+
656
+ .. code-block:: python
657
+
658
+ class MyWidget(Label):
659
+ pass
660
+
661
+ and in my.kv:
662
+
663
+ .. code-block:: kv
664
+
665
+ <-MyWidget>:
666
+ canvas:
667
+ Color:
668
+ rgb: 1, 1, 1
669
+ Rectangle:
670
+ size: (32, 32)
671
+
672
+ MyWidget will now have a Color and Rectangle instruction in its canvas
673
+ without any of the instructions inherited from the Label.
674
+
675
+ Redefining a widget's property style
676
+ ------------------------------------
677
+
678
+ Similar to :ref:`redefining style <redefining-style>`, sometimes we
679
+ would like to inherit from a widget, keep all its KV defined styles, except for
680
+ the style applied to a specific property. For example, we would
681
+ like to inherit from a :class:`~kivy.uix.button.Button`, but we would also
682
+ like to set our own `state_image`, rather then relying on the
683
+ `background_normal` and `background_down` values. We can achieve this by
684
+ prepending a dash (-) before the `state_image` property name in the .kv style
685
+ definition.
686
+
687
+ In myapp.py:
688
+
689
+ .. code-block:: python
690
+
691
+ class MyWidget(Button):
692
+ new_background = StringProperty('my_background.png')
693
+
694
+ and in my.kv:
695
+
696
+ .. code-block:: kv
697
+
698
+ <MyWidget>:
699
+ -state_image: self.new_background
700
+
701
+ MyWidget will now have a `state_image` background set only by `new_background`,
702
+ and not by any previous styles that may have set `state_image`.
703
+
704
+ .. note::
705
+
706
+ Although the previous rules are cleared, they are still applied during
707
+ widget construction and are only removed when the new rule with the dash
708
+ is reached. This means that initially, previous rules could be used to set
709
+ the property.
710
+
711
+ Order of kwargs and KV rule application
712
+ ---------------------------------------
713
+
714
+ Properties can be initialized in KV as well as in python. For example, in KV:
715
+
716
+ .. code-block:: kv
717
+
718
+ <MyRule@Widget>:
719
+ text: 'Hello'
720
+ ramp: 45.
721
+ order: self.x + 10
722
+
723
+ Then `MyRule()` would initialize all three kivy properties to
724
+ the given KV values. Separately in python, if the properties already exist as
725
+ kivy properties one can do for example `MyRule(line='Bye', side=55)`.
726
+
727
+ However, what will be the final values of the properties when
728
+ `MyRule(text='Bye', order=55)` is executed? The quick rule is that python
729
+ initialization is stronger than KV initialization only for constant rules.
730
+
731
+ Specifically, the `kwargs` provided to the python initializer are always
732
+ applied first. So in the above example, `text` is set to
733
+ `'Bye'` and `order` is set to `55`. Then, all the KV rules are applied, except
734
+ those constant rules that overwrite a python initializer provided value.
735
+
736
+ That is, the KV rules that do not creates bindings such as `text: 'Hello'`
737
+ and `ramp: 45.`, if a value for that property has been provided in python, then
738
+ that rule will not be applied.
739
+
740
+ So in the `MyRule(text='Bye', order=55)` example, `text` will be `'Bye'`,
741
+ `ramp` will be `45.`, and `order`, which creates a binding, will first be set
742
+ to `55`, but then when KV rules are applied will end up being whatever
743
+ `self.x + 10` is.
744
+
745
+ .. versionchanged:: 1.9.1
746
+
747
+ Before, KV rules always overwrote the python values, now, python values
748
+ are not overwritten by constant rules.
749
+
750
+
751
+ Lang Directives
752
+ ---------------
753
+
754
+ You can use directives to add declarative commands, such as imports or constant
755
+ definitions, to the lang files. Directives are added as comments in the
756
+ following format:
757
+
758
+ .. code-block:: kv
759
+
760
+ #:<directivename> <options>
761
+
762
+ import <package>
763
+ ~~~~~~~~~~~~~~~~
764
+
765
+ .. versionadded:: 1.0.5
766
+
767
+ Syntax:
768
+
769
+ .. code-block:: kv
770
+
771
+ #:import <alias> <package>
772
+
773
+ You can import a package by writing:
774
+
775
+ .. code-block:: kv
776
+
777
+ #:import os os
778
+
779
+ <Rule>:
780
+ Button:
781
+ text: os.getcwd()
782
+
783
+ Or more complex:
784
+
785
+ .. code-block:: kv
786
+
787
+ #:import ut kivy.utils
788
+
789
+ <Rule>:
790
+ canvas:
791
+ Color:
792
+ rgba: ut.get_random_color()
793
+
794
+ .. versionadded:: 1.0.7
795
+
796
+ You can directly import classes from a module:
797
+
798
+ .. code-block:: kv
799
+
800
+ #: import Animation kivy.animation.Animation
801
+ <Rule>:
802
+ on_prop: Animation(x=.5).start(self)
803
+
804
+ set <key> <expr>
805
+ ~~~~~~~~~~~~~~~~
806
+
807
+ .. versionadded:: 1.0.6
808
+
809
+ Syntax:
810
+
811
+ .. code-block:: kv
812
+
813
+ #:set <key> <expr>
814
+
815
+ Set a key that will be available anywhere in the kv. For example:
816
+
817
+ .. code-block:: kv
818
+
819
+ #:set my_color (.4, .3, .4)
820
+ #:set my_color_hl (.5, .4, .5)
821
+
822
+ <Rule>:
823
+ state: 'normal'
824
+ canvas:
825
+ Color:
826
+ rgb: my_color if self.state == 'normal' else my_color_hl
827
+
828
+ include <file>
829
+ ~~~~~~~~~~~~~~~~
830
+
831
+ .. versionadded:: 1.9.0
832
+
833
+ Syntax:
834
+
835
+ .. code-block:: kv
836
+
837
+ #:include [force] <file>
838
+
839
+ Includes an external kivy file. This allows you to split complex
840
+ widgets into their own files. If the include is forced, the file
841
+ will first be unloaded and then reloaded again. For example:
842
+
843
+ .. code-block:: kv
844
+
845
+ # Test.kv
846
+ #:include mycomponent.kv
847
+ #:include force mybutton.kv
848
+
849
+ <Rule>:
850
+ state: 'normal'
851
+ MyButton:
852
+ MyComponent:
853
+
854
+
855
+ .. code-block:: kv
856
+
857
+ # mycomponent.kv
858
+ #:include mybutton.kv
859
+
860
+ <MyComponent>:
861
+ MyButton:
862
+
863
+ .. code-block:: kv
864
+
865
+ # mybutton.kv
866
+
867
+ <MyButton>:
868
+ canvas:
869
+ Color:
870
+ rgb: (1.0, 0.0, 0.0)
871
+ Rectangle:
872
+ pos: self.pos
873
+ size: (self.size[0]/4, self.size[1]/4)
874
+
875
+ '''
876
+
877
+
878
+ from kivy.lang.builder import (Observable, Builder, BuilderBase,
879
+ BuilderException)
880
+ from kivy.lang.parser import Parser, ParserException, global_idmap
881
+
882
+ __all__ = ('Observable', 'Builder', 'BuilderBase', 'BuilderException',
883
+ 'Parser', 'ParserException', 'global_idmap')