Kivy-examples 2.3.1.dev0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (624) hide show
  1. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/main.py +77 -0
  2. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/monkey.obj +7966 -0
  3. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/objloader.py +147 -0
  4. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/simple.glsl +47 -0
  5. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/RST_Editor/editor.kv +72 -0
  6. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/RST_Editor/main.py +64 -0
  7. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/android.txt +3 -0
  8. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/compass.kv +25 -0
  9. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/main.py +77 -0
  10. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/needle.png +0 -0
  11. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/rose.png +0 -0
  12. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/android.txt +3 -0
  13. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/main.py +80 -0
  14. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/shadow32.png +0 -0
  15. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/takepicture.kv +40 -0
  16. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/animation/animate.py +42 -0
  17. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_suite.py +152 -0
  18. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_suite_data/testkvdir.kv +4 -0
  19. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_build.py +24 -0
  20. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_config.py +49 -0
  21. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_kv.py +25 -0
  22. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_kv_in_template1.py +27 -0
  23. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/template1/test.kv +4 -0
  24. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/test.kv +4 -0
  25. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/testkvfile.kv +4 -0
  26. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/asyncio_advanced.py +90 -0
  27. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/asyncio_basic.py +59 -0
  28. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/trio_advanced.py +93 -0
  29. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/trio_basic.py +58 -0
  30. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12908_sweet_trip_mm_clap_hi.wav +0 -0
  31. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12909_sweet_trip_mm_clap_lo.wav +0 -0
  32. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12910_sweet_trip_mm_clap_mid.wav +0 -0
  33. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12911_sweet_trip_mm_hat_cl.wav +0 -0
  34. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12913_sweet_trip_mm_kick_hi.wav +0 -0
  35. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12914_sweet_trip_mm_kick_lo.wav +0 -0
  36. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12915_sweet_trip_mm_kick_mid.wav +0 -0
  37. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12916_sweet_trip_mm_kwik_mod_01.wav +0 -0
  38. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12917_sweet_trip_mm_kwik_mod_02.wav +0 -0
  39. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12918_sweet_trip_mm_kwik_mod_03.wav +0 -0
  40. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12919_sweet_trip_mm_kwik_mod_04.wav +0 -0
  41. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12920_sweet_trip_mm_kwik_mod_05.wav +0 -0
  42. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12921_sweet_trip_mm_kwik_mod_06.wav +0 -0
  43. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12922_sweet_trip_mm_kwik_mod_07.wav +0 -0
  44. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12923_sweet_trip_mm_metal_clave.wav +0 -0
  45. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12925_sweet_trip_mm_sweep_x.wav +0 -0
  46. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12926_sweet_trip_mm_sweep_y.wav +0 -0
  47. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12927_sweet_trip_mm_sweep_z.wav +0 -0
  48. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/audio.kv +59 -0
  49. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/main.py +81 -0
  50. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/pitch.py +42 -0
  51. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/camera/main.py +59 -0
  52. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/bezier.py +105 -0
  53. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/canvas_stress.py +72 -0
  54. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/circle.py +84 -0
  55. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/fbo_canvas.py +91 -0
  56. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/kiwi.jpg +0 -0
  57. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/lines.py +296 -0
  58. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/lines_extended.py +183 -0
  59. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mesh.py +57 -0
  60. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mesh_manipulation.py +101 -0
  61. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mtexture1.png +0 -0
  62. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mtexture2.png +0 -0
  63. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/multitexture.py +110 -0
  64. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/repeat_texture.py +65 -0
  65. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/rotation.py +35 -0
  66. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/rounded_rectangle.py +153 -0
  67. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/scale.py +37 -0
  68. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/stencil_canvas.py +85 -0
  69. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/tesselate.py +146 -0
  70. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/texture.py +143 -0
  71. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/texture_example_image.png +0 -0
  72. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/1.kv +28 -0
  73. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/2.kv +28 -0
  74. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/3.kv +28 -0
  75. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/root.kv +32 -0
  76. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/main.py +63 -0
  77. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/cover/cover_image.py +25 -0
  78. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/cover/cover_video.py +31 -0
  79. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/camera_puzzle.py +98 -0
  80. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/AnchorLayoutContainer.kv +15 -0
  81. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/BoxLayoutContainer.kv +14 -0
  82. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ButtonContainer.kv +27 -0
  83. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/CheckBoxContainer.kv +28 -0
  84. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/FileChooserContainer.kv +19 -0
  85. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/FloatLayoutContainer.kv +16 -0
  86. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/GridLayoutContainer.kv +20 -0
  87. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/LabelContainer.kv +62 -0
  88. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/MediaContainer.kv +9 -0
  89. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/PlaygroundContainer.kv +4 -0
  90. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/PopupContainer.kv +39 -0
  91. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ProgressBarContainer.kv +17 -0
  92. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/RestContainer.kv +5 -0
  93. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ScatterContainer.kv +16 -0
  94. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/SelectorsContainer.kv +10 -0
  95. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/StackLayoutContainer.kv +25 -0
  96. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/TextContainer.kv +20 -0
  97. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/kivycatalog.kv +144 -0
  98. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/main.py +192 -0
  99. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/gesturedatabase.kv +117 -0
  100. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/gesturedatabase.py +180 -0
  101. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/helpers.py +30 -0
  102. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/historymanager.kv +164 -0
  103. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/historymanager.py +276 -0
  104. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/main.py +144 -0
  105. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/multistroke.kv +101 -0
  106. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/settings.kv +110 -0
  107. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/settings.py +97 -0
  108. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/android.txt +3 -0
  109. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Bubbles.jpg +0 -0
  110. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Ill1.jpg +0 -0
  111. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Wall.jpg +0 -0
  112. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/faust_github.jpg +0 -0
  113. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/main.py +73 -0
  114. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/pictures.kv +57 -0
  115. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/shadow32.png +0 -0
  116. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/shadereditor/main.py +147 -0
  117. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/shadereditor/shadereditor.kv +39 -0
  118. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/README.txt +11 -0
  119. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/android.txt +3 -0
  120. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/background.png +0 -0
  121. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/faust_github.jpg +0 -0
  122. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/README +4 -0
  123. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/bug.png +0 -0
  124. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/chevron-left.png +0 -0
  125. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/chevron-right.png +0 -0
  126. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/accordions.kv +39 -0
  127. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/bubbles.kv +33 -0
  128. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/buttons.kv +26 -0
  129. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/carousel.kv +51 -0
  130. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/checkboxes.kv +33 -0
  131. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/codeinput.kv +9 -0
  132. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/dropdown.kv +40 -0
  133. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/filechoosers.kv +24 -0
  134. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/popups.kv +17 -0
  135. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/progressbar.kv +15 -0
  136. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/rstdocument.kv +24 -0
  137. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/scatter.kv +14 -0
  138. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/screenmanager.kv +46 -0
  139. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/sliders.kv +55 -0
  140. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/spinner.kv +11 -0
  141. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/splitter.kv +13 -0
  142. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/switches.kv +39 -0
  143. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/tabbedpanel + layouts.kv +69 -0
  144. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/textinputs.kv +48 -0
  145. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/togglebutton.kv +39 -0
  146. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/main.py +243 -0
  147. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/showcase.kv +100 -0
  148. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/README.txt +12 -0
  149. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/android.txt +3 -0
  150. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/icon.png +0 -0
  151. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/main.py +170 -0
  152. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/particle.png +0 -0
  153. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/touchtracer.kv +29 -0
  154. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/echo_client_app.py +82 -0
  155. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/echo_server_app.py +49 -0
  156. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/twistd_app.py +66 -0
  157. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/gestures/gesture_board.py +95 -0
  158. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/gestures/my_gestures.py +90 -0
  159. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/designwithkv/controller.kv +16 -0
  160. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/designwithkv/main.py +29 -0
  161. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/1_skeleton.py +15 -0
  162. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/2_print_touch.py +16 -0
  163. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/3_draw_ellipse.py +22 -0
  164. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/4_draw_line.py +26 -0
  165. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/5_random_colors.py +28 -0
  166. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/6_button.py +38 -0
  167. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/quickstart/main.py +15 -0
  168. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/button.kv +9 -0
  169. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/layout.kv +6 -0
  170. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/main.py +19 -0
  171. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/test.kv +5 -0
  172. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/android.txt +3 -0
  173. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/main.py +226 -0
  174. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/numeric.json +38 -0
  175. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kinect/README.txt +13 -0
  176. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kinect/kinectviewer.py +283 -0
  177. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_button.kv +9 -0
  178. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_camera.kv +25 -0
  179. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_fbo.kv +11 -0
  180. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_layout.kv +23 -0
  181. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_logo.kv +36 -0
  182. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_scatter.kv +6 -0
  183. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_stencil.kv +27 -0
  184. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_video.kv +42 -0
  185. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/builder_template.py +28 -0
  186. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/id_in_kv/id_in_kv.py +20 -0
  187. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/id_in_kv/test.kv +11 -0
  188. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/kv_and_py/kv_and_py.py +34 -0
  189. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/kv_and_py/test.kv +11 -0
  190. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/kivy.jpg +0 -0
  191. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/kvrun.py +38 -0
  192. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/clipboard.py +63 -0
  193. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/custom_titlebar.py +56 -0
  194. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/imagesave.py +14 -0
  195. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/joystick.py +83 -0
  196. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/multiple_dropfile.py +51 -0
  197. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/on_textedit_event.py +104 -0
  198. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/opacitywindow.py +28 -0
  199. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/shapecollisions.py +397 -0
  200. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/shapedwindow.py +98 -0
  201. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/two_panes.py +47 -0
  202. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/urlrequest.py +128 -0
  203. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/settings/android.txt +3 -0
  204. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/settings/main.py +122 -0
  205. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/plasma.kv +9 -0
  206. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/plasma.py +86 -0
  207. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/rotated.kv +91 -0
  208. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/rotated.py +102 -0
  209. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/shadertree.kv +29 -0
  210. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/shadertree.py +193 -0
  211. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/tex3.jpg +0 -0
  212. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/benchmark.py +19 -0
  213. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/cloud.svg +25 -0
  214. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/main-smaa.py +155 -0
  215. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/main.py +50 -0
  216. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/music.svg +68 -0
  217. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/rotated.svg +23 -0
  218. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/ship.svg +181 -0
  219. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/sun.svg +35 -0
  220. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/tiger.svg +813 -0
  221. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/text/pango_demo.py +296 -0
  222. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/data/icon.png +0 -0
  223. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/main.py +163 -0
  224. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/note.kv +154 -0
  225. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/main.py +82 -0
  226. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/pong.kv +53 -0
  227. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step1/main.py +15 -0
  228. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step1/pong.kv +2 -0
  229. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step2/main.py +15 -0
  230. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step2/pong.kv +21 -0
  231. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step3/main.py +26 -0
  232. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step3/pong.kv +31 -0
  233. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step4/main.py +48 -0
  234. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step4/pong.kv +34 -0
  235. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step5/main.py +75 -0
  236. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step5/pong.kv +53 -0
  237. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/accordion_1.py +17 -0
  238. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/actionbar.py +32 -0
  239. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/asyncimage.py +35 -0
  240. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/boxlayout_poshint.py +54 -0
  241. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/bubble_test.py +63 -0
  242. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/camera.py +33 -0
  243. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/carousel_buttons.py +50 -0
  244. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/cityCC0.mpg +0 -0
  245. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/cityCC0.png +0 -0
  246. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/codeinput.py +225 -0
  247. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/codeinputtest.kv +53 -0
  248. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/colorpicker.py +234 -0
  249. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/colorusage.py +62 -0
  250. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/compound_selection.py +83 -0
  251. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/customcollide.py +82 -0
  252. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget.py +193 -0
  253. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget2.py +47 -0
  254. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget3_advanced.py +62 -0
  255. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/fbowidget.py +111 -0
  256. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/focus_behavior.py +98 -0
  257. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/image_mipmap.py +31 -0
  258. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/keyboardlistener.py +42 -0
  259. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_mipmap.py +28 -0
  260. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_sizing.py +193 -0
  261. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_text_size.py +49 -0
  262. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_with_markup.py +21 -0
  263. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/lang_dynamic_classes.py +18 -0
  264. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/pagelayout.py +64 -0
  265. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/popup_with_kv.py +35 -0
  266. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/basic_data.py +124 -0
  267. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/infinite_scrolling.py +143 -0
  268. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/key_viewclass.py +149 -0
  269. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/messenger.py +196 -0
  270. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/pull_to_refresh.py +95 -0
  271. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/rv_animate_items.py +109 -0
  272. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/rstexample.py +128 -0
  273. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scatter.kv +53 -0
  274. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scatter.py +16 -0
  275. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/screenmanager.py +106 -0
  276. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scrollview.kv +16 -0
  277. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scrollview.py +40 -0
  278. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/android.txt +3 -0
  279. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/bird.zip +0 -0
  280. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/button_white.png +0 -0
  281. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/button_white_animated.zip +0 -0
  282. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/cube.zip +0 -0
  283. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/info.png +0 -0
  284. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/info.zip +0 -0
  285. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/simple_cv_joint_animated.gif +0 -0
  286. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/main.kv +63 -0
  287. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/main.py +150 -0
  288. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/uix/__init__.py +7 -0
  289. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/uix/custom_button.py +98 -0
  290. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/settings.py +93 -0
  291. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/shorten_text.py +80 -0
  292. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/spinner.py +17 -0
  293. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/splitter.py +74 -0
  294. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/tabbed_panel_showcase.py +316 -0
  295. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/tabbedpanel.py +50 -0
  296. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textalign.kv +49 -0
  297. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textalign.py +48 -0
  298. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textinput.py +59 -0
  299. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/unicode_textinput.py +244 -0
  300. Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/videoplayer.py +26 -0
  301. Kivy_examples-2.3.1.dev0.dist-info/AUTHORS +66 -0
  302. Kivy_examples-2.3.1.dev0.dist-info/LICENSE +21 -0
  303. Kivy_examples-2.3.1.dev0.dist-info/METADATA +382 -0
  304. Kivy_examples-2.3.1.dev0.dist-info/RECORD +624 -0
  305. Kivy_examples-2.3.1.dev0.dist-info/WHEEL +5 -0
  306. Kivy_examples-2.3.1.dev0.dist-info/dependency_links.txt +1 -0
  307. Kivy_examples-2.3.1.dev0.dist-info/top_level.txt +1 -0
  308. kivy/__init__.py +519 -0
  309. kivy/_version.py +18 -0
  310. kivy/animation.py +831 -0
  311. kivy/app.py +1213 -0
  312. kivy/atlas.py +456 -0
  313. kivy/base.py +617 -0
  314. kivy/cache.py +262 -0
  315. kivy/clock.py +1172 -0
  316. kivy/compat.py +82 -0
  317. kivy/config.py +1004 -0
  318. kivy/context.py +102 -0
  319. kivy/core/__init__.py +247 -0
  320. kivy/core/audio/__init__.py +223 -0
  321. kivy/core/audio/audio_android.py +104 -0
  322. kivy/core/audio/audio_avplayer.py +82 -0
  323. kivy/core/audio/audio_ffpyplayer.py +185 -0
  324. kivy/core/audio/audio_gstplayer.py +101 -0
  325. kivy/core/audio/audio_pygame.py +127 -0
  326. kivy/core/camera/__init__.py +151 -0
  327. kivy/core/camera/camera_android.py +206 -0
  328. kivy/core/camera/camera_gi.py +170 -0
  329. kivy/core/camera/camera_opencv.py +163 -0
  330. kivy/core/camera/camera_picamera.py +96 -0
  331. kivy/core/clipboard/__init__.py +157 -0
  332. kivy/core/clipboard/_clipboard_ext.py +36 -0
  333. kivy/core/clipboard/clipboard_android.py +91 -0
  334. kivy/core/clipboard/clipboard_dbusklipper.py +41 -0
  335. kivy/core/clipboard/clipboard_dummy.py +26 -0
  336. kivy/core/clipboard/clipboard_gtk3.py +47 -0
  337. kivy/core/clipboard/clipboard_nspaste.py +44 -0
  338. kivy/core/clipboard/clipboard_pygame.py +67 -0
  339. kivy/core/clipboard/clipboard_sdl2.py +36 -0
  340. kivy/core/clipboard/clipboard_winctypes.py +107 -0
  341. kivy/core/clipboard/clipboard_xclip.py +29 -0
  342. kivy/core/clipboard/clipboard_xsel.py +26 -0
  343. kivy/core/gl/__init__.py +90 -0
  344. kivy/core/image/__init__.py +996 -0
  345. kivy/core/image/img_dds.py +40 -0
  346. kivy/core/image/img_ffpyplayer.py +87 -0
  347. kivy/core/image/img_pil.py +123 -0
  348. kivy/core/image/img_pygame.py +119 -0
  349. kivy/core/image/img_sdl2.py +66 -0
  350. kivy/core/image/img_tex.py +58 -0
  351. kivy/core/spelling/__init__.py +135 -0
  352. kivy/core/spelling/spelling_enchant.py +50 -0
  353. kivy/core/spelling/spelling_osxappkit.py +64 -0
  354. kivy/core/text/__init__.py +1090 -0
  355. kivy/core/text/markup.py +893 -0
  356. kivy/core/text/text_pango.py +145 -0
  357. kivy/core/text/text_pil.py +84 -0
  358. kivy/core/text/text_pygame.py +117 -0
  359. kivy/core/text/text_sdl2.py +50 -0
  360. kivy/core/video/__init__.py +219 -0
  361. kivy/core/video/video_ffmpeg.py +106 -0
  362. kivy/core/video/video_ffpyplayer.py +449 -0
  363. kivy/core/video/video_gstplayer.py +140 -0
  364. kivy/core/video/video_null.py +12 -0
  365. kivy/core/window/__init__.py +2515 -0
  366. kivy/core/window/window_egl_rpi.py +86 -0
  367. kivy/core/window/window_pygame.py +441 -0
  368. kivy/core/window/window_sdl2.py +999 -0
  369. kivy/deps/__init__.py +6 -0
  370. kivy/effects/__init__.py +23 -0
  371. kivy/effects/dampedscroll.py +114 -0
  372. kivy/effects/kinetic.py +193 -0
  373. kivy/effects/opacityscroll.py +27 -0
  374. kivy/effects/scroll.py +126 -0
  375. kivy/event.py +12 -0
  376. kivy/eventmanager/__init__.py +185 -0
  377. kivy/extras/__init__.py +0 -0
  378. kivy/extras/highlight.py +52 -0
  379. kivy/factory.py +190 -0
  380. kivy/factory_registers.py +201 -0
  381. kivy/garden/__init__.py +186 -0
  382. kivy/geometry.py +121 -0
  383. kivy/gesture.py +424 -0
  384. kivy/graphics/__init__.py +126 -0
  385. kivy/graphics/cgl_backend/__init__.py +0 -0
  386. kivy/input/__init__.py +39 -0
  387. kivy/input/factory.py +35 -0
  388. kivy/input/motionevent.py +587 -0
  389. kivy/input/postproc/__init__.py +27 -0
  390. kivy/input/postproc/calibration.py +200 -0
  391. kivy/input/postproc/dejitter.py +74 -0
  392. kivy/input/postproc/doubletap.py +101 -0
  393. kivy/input/postproc/ignorelist.py +47 -0
  394. kivy/input/postproc/retaintouch.py +93 -0
  395. kivy/input/postproc/tripletap.py +106 -0
  396. kivy/input/provider.py +40 -0
  397. kivy/input/providers/__init__.py +68 -0
  398. kivy/input/providers/androidjoystick.py +117 -0
  399. kivy/input/providers/hidinput.py +778 -0
  400. kivy/input/providers/leapfinger.py +113 -0
  401. kivy/input/providers/linuxwacom.py +396 -0
  402. kivy/input/providers/mactouch.py +220 -0
  403. kivy/input/providers/mouse.py +424 -0
  404. kivy/input/providers/mtdev.py +380 -0
  405. kivy/input/providers/probesysfs.py +254 -0
  406. kivy/input/providers/tuio.py +326 -0
  407. kivy/input/providers/wm_common.py +162 -0
  408. kivy/input/providers/wm_pen.py +121 -0
  409. kivy/input/providers/wm_touch.py +157 -0
  410. kivy/input/recorder.py +335 -0
  411. kivy/input/shape.py +27 -0
  412. kivy/interactive.py +335 -0
  413. kivy/lang/__init__.py +883 -0
  414. kivy/lang/builder.py +1004 -0
  415. kivy/lang/parser.py +822 -0
  416. kivy/lib/__init__.py +21 -0
  417. kivy/lib/ddsfile.py +419 -0
  418. kivy/lib/gstplayer/__init__.py +27 -0
  419. kivy/lib/mtdev.py +254 -0
  420. kivy/lib/vidcore_lite/__init__.py +0 -0
  421. kivy/loader.py +579 -0
  422. kivy/logger.py +646 -0
  423. kivy/metrics.py +421 -0
  424. kivy/modules/__init__.py +300 -0
  425. kivy/modules/_webdebugger.py +200 -0
  426. kivy/modules/console.py +1059 -0
  427. kivy/modules/cursor.py +75 -0
  428. kivy/modules/inspector.py +755 -0
  429. kivy/modules/joycursor.py +299 -0
  430. kivy/modules/keybinding.py +64 -0
  431. kivy/modules/monitor.py +90 -0
  432. kivy/modules/recorder.py +94 -0
  433. kivy/modules/screen.py +183 -0
  434. kivy/modules/showborder.py +33 -0
  435. kivy/modules/touchring.py +97 -0
  436. kivy/modules/webdebugger.py +30 -0
  437. kivy/multistroke.py +1477 -0
  438. kivy/network/__init__.py +7 -0
  439. kivy/network/urlrequest.py +794 -0
  440. kivy/parser.py +154 -0
  441. kivy/resources.py +102 -0
  442. kivy/storage/__init__.py +405 -0
  443. kivy/storage/dictstore.py +98 -0
  444. kivy/storage/jsonstore.py +92 -0
  445. kivy/storage/redisstore.py +103 -0
  446. kivy/support.py +267 -0
  447. kivy/tests/__init__.py +11 -0
  448. kivy/tests/async_common.py +568 -0
  449. kivy/tests/common.py +524 -0
  450. kivy/tests/conftest.py +33 -0
  451. kivy/tests/fixtures.py +169 -0
  452. kivy/tests/perf_test_textinput.py +195 -0
  453. kivy/tests/pyinstaller/simple_widget/main.py +12 -0
  454. kivy/tests/pyinstaller/simple_widget/project/__init__.py +0 -0
  455. kivy/tests/pyinstaller/simple_widget/project/widget.py +12 -0
  456. kivy/tests/pyinstaller/test_pyinstaller.py +115 -0
  457. kivy/tests/pyinstaller/video_widget/main.py +6 -0
  458. kivy/tests/pyinstaller/video_widget/project/__init__.py +38 -0
  459. kivy/tests/test_animations.py +415 -0
  460. kivy/tests/test_app.py +216 -0
  461. kivy/tests/test_audio.py +69 -0
  462. kivy/tests/test_benchmark.py +292 -0
  463. kivy/tests/test_clipboard.py +48 -0
  464. kivy/tests/test_clock.py +292 -0
  465. kivy/tests/test_compat.py +6 -0
  466. kivy/tests/test_config.py +35 -0
  467. kivy/tests/test_coverage.py +83 -0
  468. kivy/tests/test_doc_gallery.py +38 -0
  469. kivy/tests/test_environ_cli.py +50 -0
  470. kivy/tests/test_fbo_py2py3.py +74 -0
  471. kivy/tests/test_filechooser.py +11 -0
  472. kivy/tests/test_filechooser_unicode.py +82 -0
  473. kivy/tests/test_fonts.py +42 -0
  474. kivy/tests/test_garden.py +23 -0
  475. kivy/tests/test_graphics.py +1149 -0
  476. kivy/tests/test_graphics_svg.py +84 -0
  477. kivy/tests/test_image.py +74 -0
  478. kivy/tests/test_imageloader.py +485 -0
  479. kivy/tests/test_invalid_lang.py +42 -0
  480. kivy/tests/test_issues/test_6315.py +55 -0
  481. kivy/tests/test_issues/test_issue_1084.py +47 -0
  482. kivy/tests/test_issues/test_issue_1091.py +19 -0
  483. kivy/tests/test_issues/test_issue_599.py +21 -0
  484. kivy/tests/test_issues/test_issue_609.py +19 -0
  485. kivy/tests/test_issues/test_issue_6909.py +28 -0
  486. kivy/tests/test_issues/test_issue_883.py +12 -0
  487. kivy/tests/test_kivy_init.py +30 -0
  488. kivy/tests/test_knspace.py +247 -0
  489. kivy/tests/test_lang.py +431 -0
  490. kivy/tests/test_lang_complex.py +87 -0
  491. kivy/tests/test_lang_pre_process_and_post_process.py +394 -0
  492. kivy/tests/test_logger.py +516 -0
  493. kivy/tests/test_metrics.py +30 -0
  494. kivy/tests/test_module_inspector.py +382 -0
  495. kivy/tests/test_motion_event.py +44 -0
  496. kivy/tests/test_mouse_hover_event.py +249 -0
  497. kivy/tests/test_mouse_multitouchsim.py +554 -0
  498. kivy/tests/test_multistroke.py +389 -0
  499. kivy/tests/test_properties.py +1332 -0
  500. kivy/tests/test_resources.py +79 -0
  501. kivy/tests/test_rst_replace.py +63 -0
  502. kivy/tests/test_screen.py +38 -0
  503. kivy/tests/test_storage.py +135 -0
  504. kivy/tests/test_uix_actionbar.py +363 -0
  505. kivy/tests/test_uix_anchorlayout.py +79 -0
  506. kivy/tests/test_uix_asyncimage.py +133 -0
  507. kivy/tests/test_uix_boxlayout.py +94 -0
  508. kivy/tests/test_uix_bubble.py +425 -0
  509. kivy/tests/test_uix_carousel.py +93 -0
  510. kivy/tests/test_uix_colorpicker.py +77 -0
  511. kivy/tests/test_uix_dropdown.py +91 -0
  512. kivy/tests/test_uix_gridlayout.py +244 -0
  513. kivy/tests/test_uix_layout.py +16 -0
  514. kivy/tests/test_uix_modal.py +101 -0
  515. kivy/tests/test_uix_recyclegridlayout.py +383 -0
  516. kivy/tests/test_uix_relativelayout.py +30 -0
  517. kivy/tests/test_uix_scrollview.py +358 -0
  518. kivy/tests/test_uix_settings.py +33 -0
  519. kivy/tests/test_uix_slider.py +156 -0
  520. kivy/tests/test_uix_stacklayout.py +120 -0
  521. kivy/tests/test_uix_textinput.py +577 -0
  522. kivy/tests/test_uix_translate_coordinates.py +72 -0
  523. kivy/tests/test_uix_videoplayer.py +112 -0
  524. kivy/tests/test_uix_widget.py +137 -0
  525. kivy/tests/test_urlrequest/test_urlrequest_requests.py +378 -0
  526. kivy/tests/test_urlrequest/test_urlrequest_urllib.py +155 -0
  527. kivy/tests/test_utils.py +237 -0
  528. kivy/tests/test_vector.py +256 -0
  529. kivy/tests/test_video.py +25 -0
  530. kivy/tests/test_weakmethod.py +44 -0
  531. kivy/tests/test_widget.py +127 -0
  532. kivy/tests/test_widget_walk.py +70 -0
  533. kivy/tests/test_window_base.py +60 -0
  534. kivy/tests/test_window_info.py +29 -0
  535. kivy/tests/visual_test_label.py +291 -0
  536. kivy/tools/__init__.py +44 -0
  537. kivy/tools/benchmark.py +286 -0
  538. kivy/tools/changelog_parser.py +120 -0
  539. kivy/tools/coverage.py +135 -0
  540. kivy/tools/gallery.py +323 -0
  541. kivy/tools/generate-icons.py +117 -0
  542. kivy/tools/gles_compat/subset_gles.py +125 -0
  543. kivy/tools/highlight/__init__.py +9 -0
  544. kivy/tools/kviewer.py +80 -0
  545. kivy/tools/packaging/__init__.py +12 -0
  546. kivy/tools/packaging/cython_cfg.py +82 -0
  547. kivy/tools/packaging/factory.py +105 -0
  548. kivy/tools/packaging/pyinstaller_hooks/__init__.py +381 -0
  549. kivy/tools/packaging/pyinstaller_hooks/__main__.py +29 -0
  550. kivy/tools/packaging/pyinstaller_hooks/hook-kivy.py +9 -0
  551. kivy/tools/packaging/pyinstaller_hooks/pyi_rth_kivy.py +17 -0
  552. kivy/tools/pep8checker/pep8.py +2316 -0
  553. kivy/tools/pep8checker/pep8kivy.py +109 -0
  554. kivy/tools/report.py +223 -0
  555. kivy/tools/stub-gl-debug.py +201 -0
  556. kivy/tools/texturecompress.py +233 -0
  557. kivy/uix/__init__.py +56 -0
  558. kivy/uix/accordion.py +484 -0
  559. kivy/uix/actionbar.py +934 -0
  560. kivy/uix/anchorlayout.py +122 -0
  561. kivy/uix/behaviors/__init__.py +95 -0
  562. kivy/uix/behaviors/button.py +212 -0
  563. kivy/uix/behaviors/codenavigation.py +167 -0
  564. kivy/uix/behaviors/compoundselection.py +688 -0
  565. kivy/uix/behaviors/cover.py +160 -0
  566. kivy/uix/behaviors/drag.py +234 -0
  567. kivy/uix/behaviors/emacs.py +140 -0
  568. kivy/uix/behaviors/focus.py +595 -0
  569. kivy/uix/behaviors/knspace.py +590 -0
  570. kivy/uix/behaviors/togglebutton.py +156 -0
  571. kivy/uix/behaviors/touchripple.py +318 -0
  572. kivy/uix/boxlayout.py +331 -0
  573. kivy/uix/bubble.py +576 -0
  574. kivy/uix/button.py +137 -0
  575. kivy/uix/camera.py +118 -0
  576. kivy/uix/carousel.py +695 -0
  577. kivy/uix/checkbox.py +197 -0
  578. kivy/uix/codeinput.py +238 -0
  579. kivy/uix/colorpicker.py +486 -0
  580. kivy/uix/dropdown.py +391 -0
  581. kivy/uix/effectwidget.py +772 -0
  582. kivy/uix/filechooser.py +1134 -0
  583. kivy/uix/floatlayout.py +148 -0
  584. kivy/uix/gesturesurface.py +625 -0
  585. kivy/uix/gridlayout.py +629 -0
  586. kivy/uix/image.py +528 -0
  587. kivy/uix/label.py +1200 -0
  588. kivy/uix/layout.py +322 -0
  589. kivy/uix/modalview.py +339 -0
  590. kivy/uix/pagelayout.py +233 -0
  591. kivy/uix/popup.py +266 -0
  592. kivy/uix/progressbar.py +95 -0
  593. kivy/uix/recycleboxlayout.py +183 -0
  594. kivy/uix/recyclegridlayout.py +255 -0
  595. kivy/uix/recyclelayout.py +446 -0
  596. kivy/uix/recycleview/__init__.py +624 -0
  597. kivy/uix/recycleview/datamodel.py +194 -0
  598. kivy/uix/recycleview/layout.py +253 -0
  599. kivy/uix/recycleview/views.py +423 -0
  600. kivy/uix/relativelayout.py +324 -0
  601. kivy/uix/rst.py +1492 -0
  602. kivy/uix/sandbox.py +198 -0
  603. kivy/uix/scatter.py +645 -0
  604. kivy/uix/scatterlayout.py +93 -0
  605. kivy/uix/screenmanager.py +1275 -0
  606. kivy/uix/scrollview.py +1288 -0
  607. kivy/uix/settings.py +1343 -0
  608. kivy/uix/slider.py +421 -0
  609. kivy/uix/spinner.py +221 -0
  610. kivy/uix/splitter.py +430 -0
  611. kivy/uix/stacklayout.py +331 -0
  612. kivy/uix/stencilview.py +40 -0
  613. kivy/uix/switch.py +122 -0
  614. kivy/uix/tabbedpanel.py +880 -0
  615. kivy/uix/textinput.py +4049 -0
  616. kivy/uix/togglebutton.py +37 -0
  617. kivy/uix/treeview.py +665 -0
  618. kivy/uix/video.py +302 -0
  619. kivy/uix/videoplayer.py +697 -0
  620. kivy/uix/vkeyboard.py +879 -0
  621. kivy/uix/widget.py +1629 -0
  622. kivy/utils.py +550 -0
  623. kivy/vector.py +412 -0
  624. kivy/weakmethod.py +72 -0
kivy/uix/label.py ADDED
@@ -0,0 +1,1200 @@
1
+ '''Label
2
+ =====
3
+
4
+ .. image:: images/label.png
5
+ :align: right
6
+
7
+ The :class:`Label` widget is for rendering text::
8
+
9
+ # hello world text
10
+ l = Label(text='Hello world')
11
+
12
+ # unicode text; can only display glyphs that are available in the font
13
+ l = Label(text='Hello world ' + chr(2764))
14
+
15
+ # multiline text
16
+ l = Label(text='Multi\\nLine')
17
+
18
+ # size
19
+ l = Label(text='Hello world', font_size='20sp')
20
+
21
+ .. _kivy-uix-label-sizing-and-text-content:
22
+
23
+ Sizing and text content
24
+ ---------------------------
25
+
26
+ By default, the size of :class:`Label` is not affected by :attr:`~Label.text`
27
+ content and the text is not affected by the size. In order to control
28
+ sizing, you must specify :attr:`~Label.text_size` to constrain the text
29
+ and/or bind :attr:`~Label.size` to :attr:`~Label.texture_size` to grow with
30
+ the text.
31
+
32
+ For example, this label's size will be set to the text content
33
+ (plus :attr:`~Label.padding`):
34
+
35
+ .. code-block:: kv
36
+
37
+ Label:
38
+ size: self.texture_size
39
+
40
+ This label's text will wrap at the specified width and be clipped to the
41
+ height:
42
+
43
+ .. code-block:: kv
44
+
45
+ Label:
46
+ text_size: cm(6), cm(4)
47
+
48
+ .. note:: The :attr:`~Label.shorten` and :attr:`~Label.max_lines` attributes
49
+ control how overflowing text behaves.
50
+
51
+ Combine these concepts to create a Label that can grow vertically but wraps the
52
+ text at a certain width:
53
+
54
+ .. code-block:: kv
55
+
56
+ Label:
57
+ text_size: root.width, None
58
+ size: self.texture_size
59
+
60
+ How to have a custom background color in the label:
61
+
62
+ .. code-block:: kv
63
+
64
+ # Define your background color Template
65
+ <BackgroundColor@Widget>
66
+ background_color: 1, 1, 1, 1
67
+ canvas.before:
68
+ Color:
69
+ rgba: root.background_color
70
+ Rectangle:
71
+ size: self.size
72
+ pos: self.pos
73
+ # Now you can simply Mix the `BackgroundColor` class with almost
74
+ # any other widget... to give it a background.
75
+ <BackgroundLabel@Label+BackgroundColor>
76
+ background_color: 0, 0, 0, 0
77
+ # Default the background color for this label
78
+ # to r 0, g 0, b 0, a 0
79
+ # Use the BackgroundLabel any where in your kv code like below
80
+ BackgroundLabel
81
+ text: 'Hello'
82
+ background_color: 1, 0, 0, 1
83
+
84
+ Text alignment and wrapping
85
+ ---------------------------
86
+
87
+ The :class:`Label` has :attr:`~Label.halign` and :attr:`~Label.valign`
88
+ properties to control the alignment of its text. However, by default the text
89
+ image (:attr:`~Label.texture`) is only just large enough to contain the
90
+ characters and is positioned in the center of the Label. The valign property
91
+ will have no effect and halign will only have an effect if your text has
92
+ newlines; a single line of text will appear to be centered even though halign
93
+ is set to left (by default).
94
+
95
+ In order for the alignment properties to take effect, set the
96
+ :attr:`~Label.text_size`, which specifies the size of the bounding box within
97
+ which text is aligned. For instance, the following code binds this size to the
98
+ size of the Label, so text will be aligned within the widget bounds. This
99
+ will also automatically wrap the text of the Label to remain within this area.
100
+
101
+ .. code-block:: kv
102
+
103
+ Label:
104
+ text_size: self.size
105
+ halign: 'right'
106
+ valign: 'middle'
107
+
108
+ Markup text
109
+ -----------
110
+
111
+ .. versionadded:: 1.1.0
112
+
113
+ You can change the style of the text using :doc:`api-kivy.core.text.markup`.
114
+ The syntax is similar to the bbcode syntax but only the inline styling is
115
+ allowed::
116
+
117
+ # hello world with world in bold
118
+ l = Label(text='Hello [b]World[/b]', markup=True)
119
+
120
+ # hello in red, world in blue
121
+ l = Label(text='[color=ff3333]Hello[/color][color=3333ff]World[/color]',
122
+ markup = True)
123
+
124
+ If you need to escape the markup from the current text, use
125
+ :func:`kivy.utils.escape_markup`::
126
+
127
+ text = 'This is an important message [1]'
128
+ l = Label(text='[b]' + escape_markup(text) + '[/b]', markup=True)
129
+
130
+ The following tags are available:
131
+
132
+ ``[b][/b]``
133
+ Activate bold text
134
+ ``[i][/i]``
135
+ Activate italic text
136
+ ``[u][/u]``
137
+ Underlined text
138
+ ``[s][/s]``
139
+ Strikethrough text
140
+ ``[font=<str>][/font]``
141
+ Change the font (note: this refers to a TTF file or registered alias)
142
+ ``[font_context=<str>][/font_context]``
143
+ Change context for the font, use string value "none" for isolated context
144
+ (this is equivalent to `None`; if you created a font context named
145
+ `'none'`, it cannot be referred to using markup)
146
+ ``[font_family=<str>][/font_family]``
147
+ Font family to request for drawing. This is only valid when using a
148
+ font context, see :class:`kivy.uix.label.Label` for details.
149
+ ``[font_features=<str>][/font_features]``
150
+ OpenType font features, in CSS format, this is passed straight
151
+ through to Pango. The effects of requesting a feature depends on loaded
152
+ fonts, library versions, etc. Pango only, requires v1.38 or later.
153
+ ``[size=<integer>][/size]``
154
+ Change the font size
155
+ ``[color=#<color>][/color]``
156
+ Change the text color
157
+ ``[ref=<str>][/ref]``
158
+ Add an interactive zone. The reference + bounding box inside the
159
+ reference will be available in :attr:`Label.refs`
160
+ ``[anchor=<str>]``
161
+ Put an anchor in the text. You can get the position of your anchor within
162
+ the text with :attr:`Label.anchors`
163
+ ``[sub][/sub]``
164
+ Display the text at a subscript position relative to the text before it.
165
+ ``[sup][/sup]``
166
+ Display the text at a superscript position relative to the text before it.
167
+ ``[text_language=<str>][/text_language]``
168
+ Language of the text, this is an RFC-3066 format language tag (as string),
169
+ for example "en_US", "zh_CN", "fr" or "ja". This can impact font selection
170
+ and metrics. Use the string "None" to revert to locale detection.
171
+ Pango only.
172
+
173
+ If you want to render the markup text with a [ or ] or & character, you need to
174
+ escape them. We created a simple syntax::
175
+
176
+ [ -> &bl;
177
+ ] -> &br;
178
+ & -> &amp;
179
+
180
+ Then you can write::
181
+
182
+ "[size=24]Hello &bl;World&br;[/size]"
183
+
184
+ Interactive zone in text
185
+ ------------------------
186
+
187
+ .. versionadded:: 1.1.0
188
+
189
+ You can now have definable "links" using text markup. The idea is to be able
190
+ to detect when the user clicks on part of the text and to react.
191
+ The tag ``[ref=xxx]`` is used for that.
192
+
193
+ In this example, we are creating a reference on the word "World". When
194
+ this word is clicked, the function ``print_it`` will be called with the
195
+ name of the reference::
196
+
197
+ def print_it(instance, value):
198
+ print('User clicked on', value)
199
+ widget = Label(text='Hello [ref=world]World[/ref]', markup=True)
200
+ widget.bind(on_ref_press=print_it)
201
+
202
+ For prettier rendering, you could add a color for the reference. Replace the
203
+ ``text=`` in the previous example with::
204
+
205
+ 'Hello [ref=world][color=0000ff]World[/color][/ref]'
206
+
207
+ Catering for Unicode languages
208
+ ------------------------------
209
+
210
+ The font kivy uses does not contain all the characters required for displaying
211
+ all languages. When you use the built-in widgets, this results in a block being
212
+ drawn where you expect a character.
213
+
214
+ If you want to display such characters, you can chose a font that supports them
215
+ and deploy it universally via kv:
216
+
217
+ .. code-block:: kv
218
+
219
+ <Label>:
220
+ font_name: '/<path>/<to>/<font>'
221
+
222
+ Note that this needs to be done before your widgets are loaded as kv rules are
223
+ only applied at load time.
224
+
225
+ Usage example
226
+ -------------
227
+
228
+ The following example marks the anchors and references contained in a label::
229
+
230
+ from kivy.app import App
231
+ from kivy.uix.label import Label
232
+ from kivy.clock import Clock
233
+ from kivy.graphics import Color, Rectangle
234
+
235
+
236
+ class TestApp(App):
237
+
238
+ @staticmethod
239
+ def get_x(label, ref_x):
240
+ """ Return the x value of the ref/anchor relative to the canvas """
241
+ return label.center_x - label.texture_size[0] * 0.5 + ref_x
242
+
243
+ @staticmethod
244
+ def get_y(label, ref_y):
245
+ """ Return the y value of the ref/anchor relative to the canvas """
246
+ # Note the inversion of direction, as y values start at the top of
247
+ # the texture and increase downwards
248
+ return label.center_y + label.texture_size[1] * 0.5 - ref_y
249
+
250
+ def show_marks(self, label):
251
+
252
+ # Indicate the position of the anchors with a red top marker
253
+ for name, anc in label.anchors.items():
254
+ with label.canvas:
255
+ Color(1, 0, 0)
256
+ Rectangle(pos=(self.get_x(label, anc[0]),
257
+ self.get_y(label, anc[1])),
258
+ size=(3, 3))
259
+
260
+ # Draw a green surround around the refs. Note the sizes y inversion
261
+ for name, boxes in label.refs.items():
262
+ for box in boxes:
263
+ with label.canvas:
264
+ Color(0, 1, 0, 0.25)
265
+ Rectangle(pos=(self.get_x(label, box[0]),
266
+ self.get_y(label, box[1])),
267
+ size=(box[2] - box[0],
268
+ box[1] - box[3]))
269
+
270
+ def build(self):
271
+ label = Label(
272
+ text='[anchor=a]a\\nChars [anchor=b]b\\n[ref=myref]ref[/ref]',
273
+ markup=True)
274
+ Clock.schedule_once(lambda dt: self.show_marks(label), 1)
275
+ return label
276
+
277
+ TestApp().run()
278
+
279
+ '''
280
+
281
+ __all__ = ('Label', )
282
+
283
+ from kivy.clock import Clock
284
+ from kivy.uix.widget import Widget
285
+ from kivy.core.text import Label as CoreLabel, DEFAULT_FONT
286
+ from kivy.core.text.markup import MarkupLabel as CoreMarkupLabel
287
+ from kivy.properties import StringProperty, OptionProperty, \
288
+ NumericProperty, BooleanProperty, ListProperty, \
289
+ ObjectProperty, DictProperty, ColorProperty, VariableListProperty
290
+ from kivy.utils import get_hex_from_color
291
+
292
+
293
+ class Label(Widget):
294
+ '''Label class, see module documentation for more information.
295
+
296
+ :Events:
297
+ `on_ref_press`
298
+ Fired when the user clicks on a word referenced with a
299
+ ``[ref]`` tag in a text markup.
300
+ '''
301
+
302
+ __events__ = ['on_ref_press']
303
+
304
+ _font_properties = ('text', 'font_size', 'font_name', 'font_script_name',
305
+ 'font_direction', 'bold', 'italic',
306
+ 'underline', 'strikethrough', 'font_family', 'color',
307
+ 'disabled_color', 'halign', 'valign', 'padding',
308
+ 'outline_width', 'disabled_outline_color',
309
+ 'outline_color', 'text_size', 'shorten', 'mipmap',
310
+ 'line_height', 'max_lines', 'strip', 'shorten_from',
311
+ 'split_str', 'ellipsis_options', 'unicode_errors',
312
+ 'markup', 'font_hinting', 'font_kerning',
313
+ 'font_blended', 'font_context', 'font_features',
314
+ 'base_direction', 'text_language',
315
+ 'limit_render_to_text_bbox')
316
+
317
+ def __init__(self, **kwargs):
318
+ self._trigger_texture = Clock.create_trigger(self.texture_update, -1)
319
+ super(Label, self).__init__(**kwargs)
320
+
321
+ # bind all the property for recreating the texture
322
+ d = Label._font_properties
323
+ fbind = self.fbind
324
+ update = self._trigger_texture_update
325
+
326
+ # NOTE: Compatibility code due to deprecated properties.
327
+ fbind('padding_x', update, 'padding_x')
328
+ fbind('padding_y', update, 'padding_y')
329
+
330
+ fbind('disabled', update, 'disabled')
331
+ for x in d:
332
+ fbind(x, update, x)
333
+
334
+ self._label = None
335
+ self._create_label()
336
+
337
+ # force the texture creation
338
+ self._trigger_texture()
339
+
340
+ def _create_label(self):
341
+ # create the core label class according to markup value
342
+ if self._label is not None:
343
+ cls = self._label.__class__
344
+ else:
345
+ cls = None
346
+ markup = self.markup
347
+ if (markup and cls is not CoreMarkupLabel) or \
348
+ (not markup and cls is not CoreLabel):
349
+ # markup have change, we need to change our rendering method.
350
+ dkw = {x: getattr(self, x) for x in self._font_properties}
351
+ dkw['usersize'] = self.text_size
352
+ if self.disabled:
353
+ dkw['color'] = self.disabled_color
354
+ dkw['outline_color'] = self.disabled_outline_color
355
+
356
+ if markup:
357
+ self._label = CoreMarkupLabel(**dkw)
358
+ else:
359
+ self._label = CoreLabel(**dkw)
360
+
361
+ def _trigger_texture_update(self, name=None, source=None, value=None):
362
+ # check if the label core class need to be switch to a new one
363
+ if name == 'markup':
364
+ self._create_label()
365
+ if source:
366
+ if name == 'text':
367
+ self._label.text = value
368
+ elif name == 'text_size':
369
+ self._label.usersize = value
370
+ elif name == 'font_size':
371
+ self._label.options[name] = value
372
+ elif name == 'disabled_color' and self.disabled:
373
+ self._label.options['color'] = value
374
+ elif name == 'disabled_outline_color' and self.disabled:
375
+ self._label.options['outline_color'] = value
376
+ elif name == 'disabled':
377
+ self._label.options['color'] = self.disabled_color if value \
378
+ else self.color
379
+ self._label.options['outline_color'] = (
380
+ self.disabled_outline_color if value else
381
+ self.outline_color)
382
+ elif self.disabled and name in ('color', 'outline_color'):
383
+ # When disabled, color or outline_color changes should not get
384
+ # assigned or trigger updates.
385
+ return
386
+
387
+ # NOTE: Compatibility code due to deprecated properties
388
+ # Must be removed along with padding_x and padding_y
389
+ elif name == 'padding_x':
390
+ self._label.options['padding'][::2] = [value] * 2
391
+ elif name == 'padding_y':
392
+ self._label.options['padding'][1::2] = [value] * 2
393
+
394
+ else:
395
+ self._label.options[name] = value
396
+
397
+ self._trigger_texture()
398
+
399
+ def texture_update(self, *largs):
400
+ '''Force texture recreation with the current Label properties.
401
+
402
+ After this function call, the :attr:`texture` and :attr:`texture_size`
403
+ will be updated in this order.
404
+ '''
405
+ mrkup = self._label.__class__ is CoreMarkupLabel
406
+ self.texture = None
407
+
408
+ if (not self._label.text or
409
+ (self.halign == 'justify' or self.strip) and
410
+ not self._label.text.strip()):
411
+ self.texture_size = (0, 0)
412
+ self.is_shortened = False
413
+ if mrkup:
414
+ self.refs, self._label._refs = {}, {}
415
+ self.anchors, self._label._anchors = {}, {}
416
+ else:
417
+ if mrkup:
418
+ text = self.text
419
+ # we must strip here, otherwise, if the last line is empty,
420
+ # markup will retain the last empty line since it only strips
421
+ # line by line within markup
422
+ if self.halign == 'justify' or self.strip:
423
+ text = text.strip()
424
+ self._label.text = ''.join(('[color=',
425
+ get_hex_from_color(
426
+ self.disabled_color if
427
+ self.disabled else self.color),
428
+ ']', text, '[/color]'))
429
+ self._label.refresh()
430
+ # force the rendering to get the references
431
+ if self._label.texture:
432
+ self._label.texture.bind()
433
+ self.refs = self._label.refs
434
+ self.anchors = self._label.anchors
435
+ else:
436
+ self._label.refresh()
437
+ texture = self._label.texture
438
+ if texture is not None:
439
+ self.texture = self._label.texture
440
+ self.texture_size = list(self.texture.size)
441
+ self.is_shortened = self._label.is_shortened
442
+
443
+ def on_touch_down(self, touch):
444
+ if super(Label, self).on_touch_down(touch):
445
+ return True
446
+ if not len(self.refs):
447
+ return False
448
+ tx, ty = touch.pos
449
+ tx -= self.center_x - self.texture_size[0] / 2.
450
+ ty -= self.center_y - self.texture_size[1] / 2.
451
+ ty = self.texture_size[1] - ty
452
+ for uid, zones in self.refs.items():
453
+ for zone in zones:
454
+ x, y, w, h = zone
455
+ if x <= tx <= w and y <= ty <= h:
456
+ self.dispatch('on_ref_press', uid)
457
+ return True
458
+ return False
459
+
460
+ def on_ref_press(self, ref):
461
+ pass
462
+
463
+ #
464
+ # Properties
465
+ #
466
+
467
+ disabled_color = ColorProperty([1, 1, 1, .3])
468
+ '''The color of the text when the widget is disabled, in the (r, g, b, a)
469
+ format.
470
+
471
+ .. versionadded:: 1.8.0
472
+
473
+ :attr:`disabled_color` is a :class:`~kivy.properties.ColorProperty` and
474
+ defaults to [1, 1, 1, .3].
475
+
476
+ .. versionchanged:: 2.0.0
477
+ Changed from :class:`~kivy.properties.ListProperty` to
478
+ :class:`~kivy.properties.ColorProperty`.
479
+ '''
480
+
481
+ text = StringProperty('')
482
+ '''Text of the label.
483
+
484
+ Creation of a simple hello world::
485
+
486
+ widget = Label(text='Hello world')
487
+
488
+ :attr:`text` is a :class:`~kivy.properties.StringProperty` and defaults to
489
+ ''.
490
+ '''
491
+
492
+ text_size = ListProperty([None, None])
493
+ '''By default, the label is not constrained to any bounding box.
494
+ You can set the size constraint of the label with this property.
495
+ The text will autoflow into the constraints. So although the font size
496
+ will not be reduced, the text will be arranged to fit into the box as best
497
+ as possible, with any text still outside the box clipped.
498
+
499
+ This sets and clips :attr:`texture_size` to text_size if not None.
500
+
501
+ .. versionadded:: 1.0.4
502
+
503
+ For example, whatever your current widget size is, if you want the label to
504
+ be created in a box with width=200 and unlimited height::
505
+
506
+ Label(text='Very big big line', text_size=(200, None))
507
+
508
+ .. note::
509
+
510
+ This text_size property is the same as the
511
+ :attr:`~kivy.core.text.Label.usersize` property in the
512
+ :class:`~kivy.core.text.Label` class. (It is named size= in the
513
+ constructor.)
514
+
515
+ :attr:`text_size` is a :class:`~kivy.properties.ListProperty` and
516
+ defaults to (None, None), meaning no size restriction by default.
517
+ '''
518
+
519
+ base_direction = OptionProperty(None,
520
+ options=['ltr', 'rtl', 'weak_rtl', 'weak_ltr', None],
521
+ allownone=True)
522
+ '''Base direction of text, this impacts horizontal alignment when
523
+ :attr:`halign` is `auto` (the default). Available options are: None,
524
+ "ltr" (left to right), "rtl" (right to left) plus "weak_ltr" and
525
+ "weak_rtl".
526
+
527
+ .. note::
528
+ This feature requires the Pango text provider.
529
+
530
+ .. note::
531
+ Weak modes are currently not implemented in Kivy text layout, and
532
+ have the same effect as setting strong mode.
533
+
534
+ .. versionadded:: 1.11.0
535
+
536
+ :attr:`base_direction` is an :class:`~kivy.properties.OptionProperty` and
537
+ defaults to None (autodetect RTL if possible, otherwise LTR).
538
+ '''
539
+
540
+ text_language = StringProperty(None, allownone=True)
541
+ '''Language of the text, if None Pango will determine it from locale.
542
+ This is an RFC-3066 format language tag (as a string), for example
543
+ "en_US", "zh_CN", "fr" or "ja". This can impact font selection, metrics
544
+ and rendering. For example, the same bytes of text can look different
545
+ for `ur` and `ar` languages, though both use Arabic script.
546
+
547
+ .. note::
548
+ This feature requires the Pango text provider.
549
+
550
+ .. versionadded:: 1.11.0
551
+
552
+ :attr:`text_language` is a :class:`~kivy.properties.StringProperty` and
553
+ defaults to None.
554
+ '''
555
+
556
+ font_context = StringProperty(None, allownone=True)
557
+ '''Font context. `None` means the font is used in isolation, so you are
558
+ guaranteed to be drawing with the TTF file resolved by :attr:`font_name`.
559
+ Specifying a value here will load the font file into a named context,
560
+ enabling fallback between all fonts in the same context. If a font
561
+ context is set, you are not guaranteed that rendering will actually use
562
+ the specified TTF file for all glyphs (Pango will pick the one it
563
+ thinks is best).
564
+
565
+ If Kivy is linked against a system-wide installation of FontConfig,
566
+ you can load the system fonts by specifying a font context starting
567
+ with the special string `system://`. This will load the system
568
+ fontconfig configuration, and add your application-specific fonts on
569
+ top of it (this imposes a significant risk of family name collision,
570
+ Pango may not use your custom font file, but pick one from the system)
571
+
572
+ .. note::
573
+ This feature requires the Pango text provider.
574
+
575
+ .. versionadded:: 1.11.0
576
+
577
+ :attr:`font_context` is a :class:`~kivy.properties.StringProperty` and
578
+ defaults to None.
579
+ '''
580
+
581
+ font_family = StringProperty(None, allownone=True)
582
+ '''Font family, this is only applicable when using :attr:`font_context`
583
+ option. The specified font family will be requested, but note that it may
584
+ not be available, or there could be multiple fonts registered with the
585
+ same family. The value can be a family name (string) available in the
586
+ font context (for example a system font in a `system://` context, or a
587
+ custom font file added using :class:`kivy.core.text.FontContextManager`).
588
+ If set to `None`, font selection is controlled by the :attr:`font_name`
589
+ setting.
590
+
591
+ .. note::
592
+ If using :attr:`font_name` to reference a custom font file, you
593
+ should leave this as `None`. The family name is managed automatically
594
+ in this case.
595
+
596
+ .. note::
597
+ This feature requires the Pango text provider.
598
+
599
+ .. versionadded:: 1.11.0
600
+
601
+ :attr:`font_family` is a :class:`~kivy.properties.StringProperty` and
602
+ defaults to None.
603
+ '''
604
+
605
+ font_name = StringProperty(DEFAULT_FONT)
606
+ '''Filename of the font to use. The path can be absolute or relative.
607
+ Relative paths are resolved by the :func:`~kivy.resources.resource_find`
608
+ function.
609
+
610
+ .. warning::
611
+
612
+ Depending of your text provider, the font file can be ignored. However,
613
+ you can mostly use this without problems.
614
+
615
+ If the font used lacks the glyphs for the particular language/symbols
616
+ you are using, you will see '[]' blank box characters instead of the
617
+ actual glyphs. The solution is to use a font that has the glyphs you
618
+ need to display. For example, to display |unicodechar|, use a font such
619
+ as freesans.ttf that has the glyph.
620
+
621
+ .. |unicodechar| image:: images/unicode-char.png
622
+
623
+ :attr:`font_name` is a :class:`~kivy.properties.StringProperty` and
624
+ defaults to 'Roboto'. This value is taken
625
+ from :class:`~kivy.config.Config`.
626
+ '''
627
+
628
+ font_script_name = OptionProperty('Latn', options=['Zyyy', 'Latn', 'Hani',
629
+ 'Cyrl', 'Hira', 'Kana', 'Thai', 'Arab', 'Hang', 'Deva', 'Grek',
630
+ 'Hebr', 'Taml', 'Knda', 'Geor', 'Mlym', 'Telu', 'Mymr', 'Gujr',
631
+ 'Beng', 'Guru', 'Laoo', 'Zinh', 'Khmr', 'Tibt', 'Sinh', 'Ethi',
632
+ 'Thaa', 'Orya', 'Zzzz', 'Cans', 'Syrc', 'Bopo', 'Nkoo', 'Cher',
633
+ 'Yiii', 'Samr', 'Copt', 'Mong', 'Glag', 'Vaii', 'Bali', 'Tfng',
634
+ 'Bamu', 'Batk', 'Cham', 'Java', 'Kali', 'Lepc', 'Limb', 'Lisu',
635
+ 'Mand', 'Mtei', 'Talu', 'Olck', 'Saur', 'Sund', 'Sylo', 'Tale',
636
+ 'Lana', 'Avst', 'Brah', 'Bugi', 'Buhd', 'Cari', 'Xsux', 'Cprt',
637
+ 'Dsrt', 'Egyp', 'Goth', 'Hano', 'Armi', 'Phli', 'Prti', 'Kthi',
638
+ 'Khar', 'Linb', 'Lyci', 'Lydi', 'Ogam', 'Ital', 'Xpeo', 'Sarb',
639
+ 'Orkh', 'Osma', 'Phag', 'Phnx', 'Rjng', 'Runr', 'Shaw', 'Tglg',
640
+ 'Tagb', 'Ugar', 'Cakm', 'Merc', 'Mero', 'Plrd', 'Shrd', 'Sora',
641
+ 'Takr', 'Brai', 'Aghb', 'Bass', 'Dupl', 'Elba', 'Gran', 'Khoj',
642
+ 'Lina', 'Mahj', 'Mani', 'Modi', 'Mroo', 'Narb', 'Nbat', 'Palm',
643
+ 'Pauc', 'Perm', 'Phlp', 'Sidd', 'Sind', 'Tirh', 'Wara', 'Ahom',
644
+ 'Hluw', 'Hatr', 'Mult', 'Hung', 'Sgnw', 'Adlm', 'Bhks', 'Marc',
645
+ 'Osge', 'Tang', 'Newa', 'Gonm', 'Nshu', 'Soyo', 'Zanb', 'Dogr',
646
+ 'Gong', 'Rohg', 'Maka', 'Medf', 'Sogo', 'Sogd', 'Elym', 'Hmnp',
647
+ 'Nand', 'Wcho', 'Chrs', 'Diak', 'Kits', 'Yezi', 'Cpmn', 'Ougr',
648
+ 'Tnsa', 'Toto', 'Vith', 'Kawi', 'Nagm'])
649
+ '''`script_code` from https://bit.ly/TypeScriptCodes .
650
+
651
+ .. versionadded:: 2.2.0
652
+
653
+ .. warning::
654
+
655
+ font_script_name is only currently supported in SDL2 ttf providers.
656
+
657
+
658
+ :attr:`font_script_name` is a :class:`~kivy.properties.OptionProperty` and
659
+ defaults to 'Latn'.
660
+ '''
661
+
662
+ font_direction = OptionProperty('ltr', options=['rtl', 'ltr', 'ttb', 'btt'])
663
+ '''Direction for the specific font, can be one of `ltr`, `rtl`, `ttb`,`btt`.
664
+
665
+ font_direction currently only works with SDL2 ttf providers.
666
+
667
+ .. versionadded:: 2.2.0
668
+
669
+ :attr:`font_direction` is a :class:`~kivy.properties.OptionProperty` and
670
+ defults to 'ltr'. '''
671
+
672
+ font_size = NumericProperty('15sp')
673
+ '''Font size of the text, in pixels.
674
+
675
+ :attr:`font_size` is a :class:`~kivy.properties.NumericProperty` and
676
+ defaults to 15sp.
677
+ '''
678
+
679
+ font_features = StringProperty()
680
+ '''OpenType font features, in CSS format, this is passed straight
681
+ through to Pango. The effects of requesting a feature depends on loaded
682
+ fonts, library versions, etc. For a complete list of features, see:
683
+
684
+ https://en.wikipedia.org/wiki/List_of_typographic_features
685
+
686
+ .. note::
687
+ This feature requires the Pango text provider, and Pango library
688
+ v1.38 or later.
689
+
690
+ .. versionadded:: 1.11.0
691
+
692
+ :attr:`font_features` is a :class:`~kivy.properties.StringProperty` and
693
+ defaults to an empty string.
694
+ '''
695
+
696
+ line_height = NumericProperty(1.0)
697
+ '''Line Height for the text. e.g. line_height = 2 will cause the spacing
698
+ between lines to be twice the size.
699
+
700
+ :attr:`line_height` is a :class:`~kivy.properties.NumericProperty` and
701
+ defaults to 1.0.
702
+
703
+ .. versionadded:: 1.5.0
704
+ '''
705
+
706
+ bold = BooleanProperty(False)
707
+ '''Indicates use of the bold version of your font.
708
+
709
+ .. note::
710
+
711
+ Depending of your font, the bold attribute may have no impact on your
712
+ text rendering.
713
+
714
+ :attr:`bold` is a :class:`~kivy.properties.BooleanProperty` and defaults to
715
+ False.
716
+ '''
717
+
718
+ italic = BooleanProperty(False)
719
+ '''Indicates use of the italic version of your font.
720
+
721
+ .. note::
722
+
723
+ Depending of your font, the italic attribute may have no impact on your
724
+ text rendering.
725
+
726
+ :attr:`italic` is a :class:`~kivy.properties.BooleanProperty` and defaults
727
+ to False.
728
+ '''
729
+
730
+ underline = BooleanProperty(False)
731
+ '''Adds an underline to the text.
732
+
733
+ .. note::
734
+ This feature requires the SDL2 text provider.
735
+
736
+ .. versionadded:: 1.10.0
737
+
738
+ :attr:`underline` is a :class:`~kivy.properties.BooleanProperty` and
739
+ defaults to False.
740
+ '''
741
+
742
+ strikethrough = BooleanProperty(False)
743
+ '''Adds a strikethrough line to the text.
744
+
745
+ .. note::
746
+ This feature requires the SDL2 text provider.
747
+
748
+ .. versionadded:: 1.10.0
749
+
750
+ :attr:`strikethrough` is a :class:`~kivy.properties.BooleanProperty` and
751
+ defaults to False.
752
+ '''
753
+
754
+ padding_x = NumericProperty(0, deprecated=True)
755
+ '''Horizontal padding of the text inside the widget box.
756
+
757
+ :attr:`padding_x` is a :class:`~kivy.properties.NumericProperty` and
758
+ defaults to 0.
759
+
760
+ .. versionchanged:: 1.9.0
761
+ `padding_x` has been fixed to work as expected.
762
+ In the past, the text was padded by the negative of its values.
763
+
764
+ .. deprecated:: 2.2.0
765
+ Please use :attr:`padding` instead.
766
+ '''
767
+
768
+ padding_y = NumericProperty(0, deprecated=True)
769
+ '''Vertical padding of the text inside the widget box.
770
+
771
+ :attr:`padding_y` is a :class:`~kivy.properties.NumericProperty` and
772
+ defaults to 0.
773
+
774
+ .. versionchanged:: 1.9.0
775
+ `padding_y` has been fixed to work as expected.
776
+ In the past, the text was padded by the negative of its values.
777
+
778
+ .. deprecated:: 2.2.0
779
+ Please use :attr:`padding` instead.
780
+ '''
781
+
782
+ padding = VariableListProperty([0, 0, 0, 0], lenght=4)
783
+ '''Padding of the text in the format [padding_left, padding_top,
784
+ padding_right, padding_bottom]
785
+
786
+ ``padding`` also accepts a two argument form [padding_horizontal,
787
+ padding_vertical] and a one argument form [padding].
788
+
789
+ .. versionchanged:: 2.2.0
790
+ Replaced ReferenceListProperty with VariableListProperty.
791
+
792
+ :attr:`padding` is a :class:`~kivy.properties.VariableListProperty` and
793
+ defaults to [0, 0, 0, 0].
794
+ '''
795
+
796
+ halign = OptionProperty('auto', options=['left', 'center', 'right',
797
+ 'justify', 'auto'])
798
+ '''Horizontal alignment of the text.
799
+
800
+ :attr:`halign` is an :class:`~kivy.properties.OptionProperty` and
801
+ defaults to 'auto'. Available options are : auto, left, center, right and
802
+ justify. Auto will attempt to autodetect horizontal alignment for RTL text
803
+ (Pango only), otherwise it behaves like `left`.
804
+
805
+ .. warning::
806
+
807
+ This doesn't change the position of the text texture of the Label
808
+ (centered), only the position of the text in this texture. You probably
809
+ want to bind the size of the Label to the :attr:`texture_size` or set a
810
+ :attr:`text_size`.
811
+
812
+ .. versionchanged:: 1.10.1
813
+ Added `auto` option
814
+
815
+ .. versionchanged:: 1.6.0
816
+ A new option was added to :attr:`halign`, namely `justify`.
817
+ '''
818
+
819
+ valign = OptionProperty('bottom',
820
+ options=['bottom', 'middle', 'center', 'top'])
821
+ '''Vertical alignment of the text.
822
+
823
+ :attr:`valign` is an :class:`~kivy.properties.OptionProperty` and defaults
824
+ to 'bottom'. Available options are : `'bottom'`,
825
+ `'middle'` (or `'center'`) and `'top'`.
826
+
827
+ .. versionchanged:: 1.10.0
828
+ The `'center'` option has been added as an alias of `'middle'`.
829
+
830
+ .. warning::
831
+
832
+ This doesn't change the position of the text texture of the Label
833
+ (centered), only the position of the text within this texture. You
834
+ probably want to bind the size of the Label to the :attr:`texture_size`
835
+ or set a :attr:`text_size` to change this behavior.
836
+ '''
837
+
838
+ color = ColorProperty([1, 1, 1, 1])
839
+ '''Text color, in the format (r, g, b, a).
840
+
841
+ :attr:`color` is a :class:`~kivy.properties.ColorProperty` and defaults to
842
+ [1, 1, 1, 1].
843
+
844
+ .. versionchanged:: 2.0.0
845
+ Changed from :class:`~kivy.properties.ListProperty` to
846
+ :class:`~kivy.properties.ColorProperty`.
847
+ '''
848
+
849
+ outline_width = NumericProperty(None, allownone=True)
850
+ '''Width in pixels for the outline around the text. No outline will be
851
+ rendered if the value is None.
852
+
853
+ .. note::
854
+ This feature requires the SDL2 text provider.
855
+
856
+ .. versionadded:: 1.10.0
857
+
858
+ :attr:`outline_width` is a :class:`~kivy.properties.NumericProperty` and
859
+ defaults to None.
860
+ '''
861
+
862
+ outline_color = ColorProperty([0, 0, 0, 1])
863
+ '''The color of the text outline, in the (r, g, b) format.
864
+
865
+ .. note::
866
+ This feature requires the SDL2 text provider.
867
+
868
+ .. versionadded:: 1.10.0
869
+
870
+ :attr:`outline_color` is a :class:`~kivy.properties.ColorProperty` and
871
+ defaults to [0, 0, 0, 1].
872
+
873
+ .. versionchanged:: 2.0.0
874
+ Changed from :class:`~kivy.properties.ListProperty` to
875
+ :class:`~kivy.properties.ColorProperty`. Alpha component is ignored
876
+ and assigning value to it has no effect.
877
+ '''
878
+
879
+ disabled_outline_color = ColorProperty([0, 0, 0, 1])
880
+ '''The color of the text outline when the widget is disabled, in the
881
+ (r, g, b) format.
882
+
883
+ .. note::
884
+ This feature requires the SDL2 text provider.
885
+
886
+ .. versionadded:: 1.10.0
887
+
888
+ :attr:`disabled_outline_color` is a :class:`~kivy.properties.ColorProperty`
889
+ and defaults to [0, 0, 0].
890
+
891
+ .. versionchanged:: 2.0.0
892
+ Changed from :class:`~kivy.properties.ListProperty` to
893
+ :class:`~kivy.properties.ColorProperty`. Alpha component is ignored
894
+ and assigning value to it has no effect.
895
+ '''
896
+
897
+ texture = ObjectProperty(None, allownone=True)
898
+ '''Texture object of the text.
899
+ The text is rendered automatically when a property changes. The OpenGL
900
+ texture created in this operation is stored in this property. You can use
901
+ this :attr:`texture` for any graphics elements.
902
+
903
+ Depending on the texture creation, the value will be a
904
+ :class:`~kivy.graphics.texture.Texture` or
905
+ :class:`~kivy.graphics.texture.TextureRegion` object.
906
+
907
+ .. warning::
908
+
909
+ The :attr:`texture` update is scheduled for the next frame. If you need
910
+ the texture immediately after changing a property, you have to call
911
+ the :meth:`texture_update` method before accessing :attr:`texture`::
912
+
913
+ l = Label(text='Hello world')
914
+ # l.texture is good
915
+ l.font_size = '50sp'
916
+ # l.texture is not updated yet
917
+ l.texture_update()
918
+ # l.texture is good now.
919
+
920
+ :attr:`texture` is an :class:`~kivy.properties.ObjectProperty` and defaults
921
+ to None.
922
+ '''
923
+
924
+ texture_size = ListProperty([0, 0])
925
+ '''Texture size of the text. The size is determined by the font size and
926
+ text. If :attr:`text_size` is [None, None], the texture will be the size
927
+ required to fit the text, otherwise it's clipped to fit :attr:`text_size`.
928
+
929
+ When :attr:`text_size` is [None, None], one can bind to texture_size
930
+ and rescale it proportionally to fit the size of the label in order to
931
+ make the text fit maximally in the label.
932
+
933
+ .. warning::
934
+
935
+ The :attr:`texture_size` is set after the :attr:`texture`
936
+ property. If you listen for changes to :attr:`texture`,
937
+ :attr:`texture_size` will not be up-to-date in your callback.
938
+ Bind to :attr:`texture_size` instead.
939
+ '''
940
+
941
+ mipmap = BooleanProperty(False)
942
+ '''Indicates whether OpenGL mipmapping is applied to the texture or not.
943
+ Read :ref:`mipmap` for more information.
944
+
945
+ .. versionadded:: 1.0.7
946
+
947
+ :attr:`mipmap` is a :class:`~kivy.properties.BooleanProperty` and defaults
948
+ to False.
949
+ '''
950
+
951
+ shorten = BooleanProperty(False)
952
+ '''
953
+ Indicates whether the label should attempt to shorten its textual contents
954
+ as much as possible if a :attr:`text_size` is given. Setting this to True
955
+ without an appropriately set :attr:`text_size` will lead to unexpected
956
+ results.
957
+
958
+ :attr:`shorten_from` and :attr:`split_str` control the direction from
959
+ which the :attr:`text` is split, as well as where in the :attr:`text` we
960
+ are allowed to split.
961
+
962
+ :attr:`shorten` is a :class:`~kivy.properties.BooleanProperty` and defaults
963
+ to False.
964
+ '''
965
+
966
+ shorten_from = OptionProperty('center', options=['left', 'center',
967
+ 'right'])
968
+ '''The side from which we should shorten the text from, can be left,
969
+ right, or center.
970
+
971
+ For example, if left, the ellipsis will appear towards the left side and we
972
+ will display as much text starting from the right as possible. Similar to
973
+ :attr:`shorten`, this option only applies when :attr:`text_size` [0] is
974
+ not None, In this case, the string is shortened to fit within the specified
975
+ width.
976
+
977
+ .. versionadded:: 1.9.0
978
+
979
+ :attr:`shorten_from` is a :class:`~kivy.properties.OptionProperty` and
980
+ defaults to `center`.
981
+ '''
982
+
983
+ is_shortened = BooleanProperty(False)
984
+ '''This property indicates if :attr:`text` was rendered with or without
985
+ shortening when :attr:`shorten` is True.
986
+
987
+ .. versionadded:: 1.10.0
988
+
989
+ :attr:`is_shortened` is a :class:`~kivy.properties.BooleanProperty` and
990
+ defaults to False.
991
+ '''
992
+
993
+ split_str = StringProperty('')
994
+ '''The string used to split the :attr:`text` while shortening the string
995
+ when :attr:`shorten` is True.
996
+
997
+ For example, if it's a space, the string will be broken into words and as
998
+ many whole words that can fit into a single line will be displayed. If
999
+ :attr:`split_str` is the empty string, `''`, we split on every character
1000
+ fitting as much text as possible into the line.
1001
+
1002
+ .. versionadded:: 1.9.0
1003
+
1004
+ :attr:`split_str` is a :class:`~kivy.properties.StringProperty` and
1005
+ defaults to `''` (the empty string).
1006
+ '''
1007
+
1008
+ ellipsis_options = DictProperty({})
1009
+ '''Font options for the ellipsis string('...') used to split the text.
1010
+
1011
+ Accepts a dict as option name with the value. Only applied when
1012
+ :attr:`markup` is true and text is shortened. All font options which work
1013
+ for :class:`Label` will work for :attr:`ellipsis_options`. Defaults for
1014
+ the options not specified are taken from the surronding text.
1015
+
1016
+ .. code-block:: kv
1017
+
1018
+ Label:
1019
+ text: 'Some very long line which will be cut'
1020
+ markup: True
1021
+ shorten: True
1022
+ ellipsis_options: {'color':(1,0.5,0.5,1),'underline':True}
1023
+
1024
+ .. versionadded:: 2.0.0
1025
+
1026
+ :attr:`ellipsis_options` is a :class:`~kivy.properties.DictProperty` and
1027
+ defaults to `{}` (the empty dict).
1028
+ '''
1029
+
1030
+ unicode_errors = OptionProperty(
1031
+ 'replace', options=('strict', 'replace', 'ignore'))
1032
+ '''How to handle unicode decode errors. Can be `'strict'`, `'replace'` or
1033
+ `'ignore'`.
1034
+
1035
+ .. versionadded:: 1.9.0
1036
+
1037
+ :attr:`unicode_errors` is an :class:`~kivy.properties.OptionProperty` and
1038
+ defaults to `'replace'`.
1039
+ '''
1040
+
1041
+ markup = BooleanProperty(False)
1042
+ '''
1043
+ .. versionadded:: 1.1.0
1044
+
1045
+ If True, the text will be rendered using the
1046
+ :class:`~kivy.core.text.markup.MarkupLabel`: you can change the
1047
+ style of the text using tags. Check the
1048
+ :doc:`api-kivy.core.text.markup` documentation for more information.
1049
+
1050
+ :attr:`markup` is a :class:`~kivy.properties.BooleanProperty` and defaults
1051
+ to False.
1052
+ '''
1053
+
1054
+ refs = DictProperty({})
1055
+ '''
1056
+ .. versionadded:: 1.1.0
1057
+
1058
+ List of ``[ref=xxx]`` markup items in the text with the bounding box of
1059
+ all the words contained in a ref, available only after rendering.
1060
+
1061
+ For example, if you wrote::
1062
+
1063
+ Check out my [ref=hello]link[/ref]
1064
+
1065
+ The refs will be set with::
1066
+
1067
+ {'hello': ((64, 0, 78, 16), )}
1068
+
1069
+ The references marked "hello" have a bounding box at (x1, y1, x2, y2).
1070
+ These coordinates are relative to the top left corner of the text, with
1071
+ the y value increasing downwards. You can define multiple refs with the
1072
+ same name: each occurrence will be added as another (x1, y1, x2, y2) tuple
1073
+ to this list.
1074
+
1075
+ The current Label implementation uses these references if they exist in
1076
+ your markup text, automatically doing the collision with the touch and
1077
+ dispatching an `on_ref_press` event.
1078
+
1079
+ You can bind a ref event like this::
1080
+
1081
+ def print_it(instance, value):
1082
+ print('User click on', value)
1083
+ widget = Label(text='Hello [ref=world]World[/ref]', markup=True)
1084
+ widget.bind(on_ref_press=print_it)
1085
+
1086
+ .. note::
1087
+
1088
+ This works only with markup text. You need :attr:`markup` set to
1089
+ True.
1090
+ '''
1091
+
1092
+ anchors = DictProperty({})
1093
+ '''
1094
+ .. versionadded:: 1.1.0
1095
+
1096
+ Position of all the ``[anchor=xxx]`` markup in the text.
1097
+ These coordinates are relative to the top left corner of the text, with
1098
+ the y value increasing downwards. Anchors names should be unique and only
1099
+ the first occurrence of any duplicate anchors will be recorded.
1100
+
1101
+
1102
+ You can place anchors in your markup text as follows::
1103
+
1104
+ text = """
1105
+ [anchor=title1][size=24]This is my Big title.[/size]
1106
+ [anchor=content]Hello world
1107
+ """
1108
+
1109
+ Then, all the ``[anchor=]`` references will be removed and you'll get all
1110
+ the anchor positions in this property (only after rendering)::
1111
+
1112
+ >>> widget = Label(text=text, markup=True)
1113
+ >>> widget.texture_update()
1114
+ >>> widget.anchors
1115
+ {"content": (20, 32), "title1": (20, 16)}
1116
+
1117
+ .. note::
1118
+
1119
+ This works only with markup text. You need :attr:`markup` set to
1120
+ True.
1121
+
1122
+ '''
1123
+
1124
+ max_lines = NumericProperty(0)
1125
+ '''Maximum number of lines to use, defaults to 0, which means unlimited.
1126
+ Please note that :attr:`shorten` take over this property. (with
1127
+ shorten, the text is always one line.)
1128
+
1129
+ .. versionadded:: 1.8.0
1130
+
1131
+ :attr:`max_lines` is a :class:`~kivy.properties.NumericProperty` and
1132
+ defaults to 0.
1133
+ '''
1134
+
1135
+ strip = BooleanProperty(False)
1136
+ '''Whether leading and trailing spaces and newlines should be stripped from
1137
+ each displayed line. If True, every line will start at the right or left
1138
+ edge, depending on :attr:`halign`. If :attr:`halign` is `justify` it is
1139
+ implicitly True.
1140
+
1141
+ .. versionadded:: 1.9.0
1142
+
1143
+ :attr:`strip` is a :class:`~kivy.properties.BooleanProperty` and
1144
+ defaults to False.
1145
+ '''
1146
+
1147
+ font_hinting = OptionProperty(
1148
+ 'normal', options=[None, 'normal', 'light', 'mono'], allownone=True)
1149
+ '''What hinting option to use for font rendering.
1150
+ Can be one of `'normal'`, `'light'`, `'mono'` or None.
1151
+
1152
+ .. note::
1153
+ This feature requires SDL2 or Pango text provider.
1154
+
1155
+ .. versionadded:: 1.10.0
1156
+
1157
+ :attr:`font_hinting` is an :class:`~kivy.properties.OptionProperty` and
1158
+ defaults to `'normal'`.
1159
+ '''
1160
+
1161
+ font_kerning = BooleanProperty(True)
1162
+ '''Whether kerning is enabled for font rendering. You should normally
1163
+ only disable this if rendering is broken with a particular font file.
1164
+
1165
+ .. note::
1166
+ This feature requires the SDL2 text provider.
1167
+
1168
+ .. versionadded:: 1.10.0
1169
+
1170
+ :attr:`font_kerning` is a :class:`~kivy.properties.BooleanProperty` and
1171
+ defaults to True.
1172
+ '''
1173
+
1174
+ font_blended = BooleanProperty(True)
1175
+ '''Whether blended or solid font rendering should be used.
1176
+
1177
+ .. note::
1178
+ This feature requires the SDL2 text provider.
1179
+
1180
+ .. versionadded:: 1.10.0
1181
+
1182
+ :attr:`font_blended` is a :class:`~kivy.properties.BooleanProperty` and
1183
+ defaults to True.
1184
+ '''
1185
+
1186
+ limit_render_to_text_bbox = BooleanProperty(False)
1187
+ '''If set to ``True``, this parameter indicates that rendering should be
1188
+ limited to the bounding box of the text, excluding any additional white
1189
+ spaces designated for ascent and descent.
1190
+
1191
+ By limiting the rendering to the bounding box of the text, it ensures a
1192
+ more precise alignment with surrounding elements when utilizing properties
1193
+ such as `valign`, `y`, `pos`, `pos_hint`, etc.
1194
+
1195
+ .. note::
1196
+ This feature requires the PIL text provider.
1197
+
1198
+ :attr:`limit_render_to_text_bbox` is a
1199
+ :class:`~kivy.properties.BooleanProperty` and defaults to False.
1200
+ '''