├── .gitignore ├── .travis.yml ├── Artwork ├── README.txt ├── adapters.odg ├── adapters_simple.odg ├── kivy_metal.png ├── kivy_wallpaper.png ├── kivy_wallpaper_textured.png ├── official_kivy_wallpaper.png ├── official_kivy_wallpaper_echo.png └── py_con_za_2013_render.mp4 ├── BTP ├── TimeSheet.ods └── btp_sa │ └── initial proposals.odt ├── Examples ├── 1 │ ├── android.txt │ ├── main.py │ └── numeric.json ├── 2 │ ├── main.py │ └── readme.txt ├── 3 │ └── main.py ├── 4 │ └── main.py ├── 5 │ └── main.py ├── 6 │ └── main.py ├── Binding │ └── main.py ├── ColorPickerPopup │ └── main.py ├── Config │ └── main.py ├── DynamicUI │ ├── kivy1.png │ ├── kivy2.png │ └── main.py ├── Event Bubbling │ └── main.py ├── InputType │ └── main.py ├── Invaders │ ├── SI │ │ ├── .kivy │ │ │ ├── config.ini │ │ │ ├── icon │ │ │ │ ├── kivy-icon-128.png │ │ │ │ ├── kivy-icon-16.png │ │ │ │ ├── kivy-icon-24.png │ │ │ │ ├── kivy-icon-256.png │ │ │ │ ├── kivy-icon-32.png │ │ │ │ ├── kivy-icon-512.png │ │ │ │ └── kivy-icon-64.png │ │ │ └── logs │ │ │ │ ├── kivy_13-03-01_0.txt │ │ │ │ ├── kivy_13-03-01_1.txt │ │ │ │ ├── kivy_13-03-01_10.txt │ │ │ │ ├── kivy_13-03-01_11.txt │ │ │ │ ├── kivy_13-03-01_12.txt │ │ │ │ ├── kivy_13-03-01_13.txt │ │ │ │ ├── kivy_13-03-01_14.txt │ │ │ │ ├── kivy_13-03-01_15.txt │ │ │ │ ├── kivy_13-03-01_16.txt │ │ │ │ ├── kivy_13-03-01_17.txt │ │ │ │ ├── kivy_13-03-01_18.txt │ │ │ │ ├── kivy_13-03-01_19.txt │ │ │ │ ├── kivy_13-03-01_2.txt │ │ │ │ ├── kivy_13-03-01_20.txt │ │ │ │ ├── kivy_13-03-01_3.txt │ │ │ │ ├── kivy_13-03-01_4.txt │ │ │ │ ├── kivy_13-03-01_5.txt │ │ │ │ ├── kivy_13-03-01_6.txt │ │ │ │ ├── kivy_13-03-01_7.txt │ │ │ │ ├── kivy_13-03-01_8.txt │ │ │ │ ├── kivy_13-03-01_9.txt │ │ │ │ ├── kivy_13-03-04_0.txt │ │ │ │ ├── kivy_13-03-04_1.txt │ │ │ │ ├── kivy_13-03-04_2.txt │ │ │ │ ├── kivy_13-03-04_3.txt │ │ │ │ ├── kivy_13-03-04_4.txt │ │ │ │ ├── kivy_13-03-04_5.txt │ │ │ │ └── kivy_13-03-04_6.txt │ │ ├── .launch │ │ ├── android.txt │ │ ├── build-android.txt │ │ ├── fonts │ │ │ ├── ATARCC__.TTF │ │ │ ├── ATARCE__.TTF │ │ │ ├── ATARCS__.TTF │ │ │ ├── LCD_Solid.ttf │ │ │ └── pixelated.ttf │ │ ├── icon.png │ │ ├── images │ │ │ ├── icon.png │ │ │ ├── sisplash.jpg │ │ │ ├── vaders-0.png │ │ │ └── vaders.atlas │ │ ├── main.py │ │ ├── main.pyo │ │ ├── makeInvaders │ │ ├── si.ini │ │ ├── si.kv │ │ └── sounds │ │ │ ├── explosion.wav │ │ │ ├── fastinvader1.wav │ │ │ ├── fastinvader2.wav │ │ │ ├── fastinvader3.wav │ │ │ ├── fastinvader4.wav │ │ │ ├── invaderkilled.wav │ │ │ ├── shoot.wav │ │ │ ├── ufo_highpitch.wav │ │ │ ├── ufo_highpitch_long.wav │ │ │ ├── ufo_lowpitch.wav │ │ │ └── ufo_lowpitch_long.wav │ ├── SpaceInvaders-1.0-debug.apk │ └── readme.txt ├── Keyboard │ ├── android.txt │ ├── main.py │ ├── main.pyo │ └── numeric.json ├── Properties │ └── main.py ├── Recycleview │ ├── camimenu.kv │ ├── camimenu.py │ ├── graphics │ │ ├── blank.png │ │ ├── group.png │ │ ├── menuicon0.png │ │ ├── menuicon1.png │ │ ├── menuicon2.png │ │ ├── menuicon3.png │ │ ├── menuicon4.png │ │ ├── menuicon5.png │ │ └── trophy.png │ └── main.py ├── Scatter │ ├── cover.jpg │ └── main.py ├── Services │ ├── buildozer.spec │ ├── helpers.py │ ├── main.py │ └── service_one │ │ ├── main.py │ │ └── main.zip ├── Stencil │ └── test.py ├── SvgWidget │ ├── fox.svg │ ├── main.py │ └── refresh.svg └── contents.txt ├── IDE ├── PyCharm_kv_completion.jar └── README.md ├── KivyCompleteVM └── ReadMe.MD ├── LICENSE ├── Notes ├── kivy_tips.txt ├── webphoto.jpg └── zencode.png ├── PUG ├── Demo 1 │ ├── 1.png │ └── main.py ├── Kivy_Flask_2017.odp └── kivy3dgui │ ├── audio_icon.png │ ├── main.py │ └── meshes │ └── 2dbox.obj ├── PyCon ├── ZA 2013 │ ├── Outline.txt │ ├── PyCon.odp │ ├── PyCon.pdf │ ├── code │ │ ├── from touch to gestures.py │ │ ├── grabbing a touch.py │ │ ├── properties_decorators.py │ │ ├── properties_kivy.py │ │ ├── properties_property.py │ │ └── recoding gestures.py │ └── images │ │ ├── Apps_1.png │ │ ├── Apps_2.png │ │ ├── CodeInput.png │ │ ├── GTK. Wx, Qt.png │ │ ├── Interactive Launcher.png │ │ ├── Kivy Logo (Reduced).png │ │ ├── Kivy Logo 2 (Reduced).png │ │ ├── Kivy Logo 3 (Reduced).png │ │ ├── Kivy Logo.png │ │ ├── Kivy_Growth.png │ │ ├── Kivy_crossplatform.png │ │ ├── Kivy_web.png │ │ ├── Popup.png │ │ ├── PyMT.png │ │ ├── factory.png │ │ ├── final_PyCon_background.png │ │ ├── from touch to gestures.png │ │ ├── garden.png │ │ ├── gesture recognition.png │ │ ├── grabbing_a_touch.png │ │ ├── inspector.png │ │ ├── kivy_designer.png │ │ ├── metrics.png │ │ ├── properties_decorator.png │ │ ├── properties_event_dispatching.png │ │ ├── properties_kivy.png │ │ ├── properties_kivy_listen.png │ │ ├── properties_kivy_restricted.png │ │ ├── properties_normal_restricted.png │ │ ├── properties_property.png │ │ ├── scatter.png │ │ ├── screen_metrics.png │ │ └── webdebugger.png └── ZA 2015 │ ├── Proposal │ ├── PyCon.odp │ └── Videos.odt ├── README.rst └── Talks ├── 2019 ├── DotModus Kivy Talk.ipynb ├── DotModus Kivy Talk.slides.html ├── devs and bevs .jpg └── media │ ├── architecture.png │ ├── axestar.jpg │ ├── cami_desktop.jpg │ ├── inspector.png │ ├── kivy.svg │ ├── stu_with_cube.jpg │ ├── webdebugger.png │ ├── website.png │ └── zen-code.jpg └── 2020 ├── Command Line Computing.ipynb ├── Command Line Computing.slides.html ├── Kivy_3D_Input ├── Kivy_3D_Input.md ├── leap-device.png └── logo-kivy.png └── terminal.png /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | Personal/Journal/build/ 3 | __pycache__ 4 | Examples/Services/.buildozer/ 5 | Examples/Services/.buildozer_python2 6 | venv/ 7 | .vscode/ 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | - "2.6" 4 | - "2.7" 5 | - "3.2" 6 | - "3.3" 7 | # command to install dependencies 8 | script: python tests/test_all_of_the_units.py 9 | branches: 10 | only: 11 | - master -------------------------------------------------------------------------------- /Artwork/README.txt: -------------------------------------------------------------------------------- 1 | Credits 2 | ======= 3 | Thanks to the Kivy team for: 4 | official_kivy_wallpaper.png 5 | official_kivy_wallpaper_echo.png 6 | 7 | Thanks to Xuoton (http://xuton.deviantart.com/) for: 8 | kivy_metal.png 9 | kivy_wallpaper.png 10 | kivy_wallpaper_textured.png 11 | py_con_za_2013_render.mp4 -------------------------------------------------------------------------------- /Artwork/adapters.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Artwork/adapters.odg -------------------------------------------------------------------------------- /Artwork/adapters_simple.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Artwork/adapters_simple.odg -------------------------------------------------------------------------------- /Artwork/kivy_metal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Artwork/kivy_metal.png -------------------------------------------------------------------------------- /Artwork/kivy_wallpaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Artwork/kivy_wallpaper.png -------------------------------------------------------------------------------- /Artwork/kivy_wallpaper_textured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Artwork/kivy_wallpaper_textured.png -------------------------------------------------------------------------------- /Artwork/official_kivy_wallpaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Artwork/official_kivy_wallpaper.png -------------------------------------------------------------------------------- /Artwork/official_kivy_wallpaper_echo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Artwork/official_kivy_wallpaper_echo.png -------------------------------------------------------------------------------- /Artwork/py_con_za_2013_render.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Artwork/py_con_za_2013_render.mp4 -------------------------------------------------------------------------------- /BTP/TimeSheet.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/BTP/TimeSheet.ods -------------------------------------------------------------------------------- /BTP/btp_sa/initial proposals.odt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/BTP/btp_sa/initial proposals.odt -------------------------------------------------------------------------------- /Examples/1/android.txt: -------------------------------------------------------------------------------- 1 | title=Keyboard 2 | author=Zen-CODE 3 | orientation=landscape -------------------------------------------------------------------------------- /Examples/1/main.py: -------------------------------------------------------------------------------- 1 | from kivy.app import App 2 | from kivy.lang import Builder 3 | from kivy.uix.boxlayout import BoxLayout 4 | from kivy.uix.vkeyboard import VKeyboard 5 | from kivy.core.window import Window 6 | from kivy.properties import ObjectProperty 7 | from functools import partial 8 | from kivy.uix.button import Button 9 | from kivy.config import Config 10 | from kivy.logger import Logger 11 | 12 | Config.set('kivy', 'keyboard_mode', 'dock') 13 | 14 | 15 | class KeyboardListener(object): 16 | """ 17 | This class handles the management of keyboard bindings and callbacks. 18 | It also exposes a list of available keyboard layouts. 19 | """ 20 | layouts = [] # List of available keyboard layouts 21 | _keyboard = None # Current keyboard layout 22 | _callback = None # Current callback 23 | 24 | def __init__(self): 25 | """ Build a list of available keyboard layouts.""" 26 | super(KeyboardListener, self).__init__() 27 | self.layouts = [key for key in VKeyboard().available_layouts.keys()] 28 | #self.layouts.append('numeric.json') 29 | 30 | def set_callback(self, callback, layout): 31 | """ 32 | Set the function to be called when key presses occur. 33 | """ 34 | Window.release_all_keyboards() 35 | self._keyboard = Window.request_keyboard( 36 | self._keyboard_close, 37 | self) 38 | 39 | #if self._keyboard.widget: 40 | Logger.info("main.py: self._keyboard.widget=" + 41 | str(self._keyboard.widget)) 42 | #if self._keyboard.widget: 43 | #vkeyboard = self._keyboard.widget 44 | #vkeyboard.layout = layout 45 | #vkeyboard.bind(on_key_down=callback) 46 | if self._keyboard: 47 | self._keyboard.layout = layout 48 | self._keyboard.bind(on_key_down=callback) 49 | self._callback = callback 50 | 51 | def _keyboard_close(self): 52 | """The keyboard has been closed. Clean up""" 53 | if self._callback: 54 | Logger.info("main.py: Keyboard closed...") 55 | self._keyboard.unbind(on_key_down=self._callback) 56 | self._keyboard = None 57 | self._callback = None 58 | 59 | # In your config.ini, in the "kivy" section, add "keyboard_mode = dock" 60 | Builder.load_string( 61 | ''' 62 | : 63 | #TODO: Remove 64 | display_label: display_label 65 | kb_container: kb_container 66 | 67 | orientation: 'vertical' 68 | Label: 69 | size_hint_y: 0.125 70 | text: "Please select the keyboard layout." 71 | BoxLayout: 72 | id: kb_container 73 | size_hint_y: 0.125 74 | orientation: "horizontal" 75 | padding: 10 76 | 77 | Label: 78 | id: display_label 79 | size_hint_y: 0.25 80 | markup: True 81 | text: "[b]System info[/b]" 82 | halign: "center" 83 | Widget: 84 | size_hint_y: 0.5 85 | ''') 86 | 87 | 88 | class KeyboardTest(BoxLayout): 89 | display_label = ObjectProperty() 90 | kb_container = ObjectProperty() 91 | kb_listener = None 92 | 93 | def __init__(self, **kwargs): 94 | super(KeyboardTest, self).__init__(**kwargs) 95 | self._kb_listener = KeyboardListener() 96 | self._add_keyboards() 97 | 98 | def _add_keyboards(self): 99 | """ 100 | Add buttons for each available keyboard layout 101 | """ 102 | for key in self._kb_listener.layouts: 103 | button = Button(text=key, 104 | on_release=partial(self.on_button_release, 105 | layout=key)) 106 | self.kb_container.add_widget(button) 107 | 108 | def on_button_release(self, instance, layout): 109 | """ The button has been pressed """ 110 | Logger.info("main.py: Setting keyboard listed to " + layout) 111 | self._kb_listener.set_callback(self.on_key_press, layout) 112 | 113 | def on_key_press(self, *largs): 114 | """ A key has been pressed. Display it.""" 115 | self.display_label.text = '[b]Key pressed[/b]\n' + largs[2] 116 | 117 | 118 | class test(App): 119 | def build(self): 120 | return KeyboardTest() 121 | 122 | if __name__ == "__main__": 123 | test().run() 124 | -------------------------------------------------------------------------------- /Examples/1/numeric.json: -------------------------------------------------------------------------------- 1 | { 2 | "title" : "Numeric", 3 | "description" : "A numeric keypad", 4 | "cols" : 15, 5 | "rows": 5, 6 | "normal_1": [ 7 | ["�", "�", "�", 1], 8 | ["1", "1", "1", 1], 9 | ["2", "2", "2", 1], 10 | ["3", "3", "3", 1], 11 | ["4", "4", "4", 1], 12 | ["5", "5", "5", 1], 13 | ["6", "6", "6", 1], 14 | ["7", "7", "7", 1], 15 | ["8", "8", "8", 1], 16 | ["9", "9", "9", 1], 17 | ["0", "0", "0", 1], 18 | ["+", "+", "+", 1], 19 | ["=", "=", "=", 1], 20 | ["\u232b", null, "backspace", 2] 21 | ], 22 | "shift_1": [ 23 | ["�", "�", "�", 1], 24 | ["1", "1", "1", 1], 25 | ["2", "2", "2", 1], 26 | ["3", "3", "3", 1], 27 | ["4", "4", "4", 1], 28 | ["5", "5", "5", 1], 29 | ["6", "6", "6", 1], 30 | ["7", "7", "7", 1], 31 | ["8", "8", "8", 1], 32 | ["9", "9", "9", 1], 33 | ["0", "0", "0", 1], 34 | ["+", "+", "+", 1], 35 | ["=", "=", "=", 1], 36 | ["\u232b", null, "backspace", 2] 37 | ], 38 | "normal_2": [ 39 | ["�", "�", "�", 1], 40 | ["1", "1", "1", 1], 41 | ["2", "2", "2", 1], 42 | ["3", "3", "3", 1], 43 | ["4", "4", "4", 1], 44 | ["5", "5", "5", 1], 45 | ["6", "6", "6", 1], 46 | ["7", "7", "7", 1], 47 | ["8", "8", "8", 1], 48 | ["9", "9", "9", 1], 49 | ["0", "0", "0", 1], 50 | ["+", "+", "+", 1], 51 | ["=", "=", "=", 1], 52 | ["\u232b", null, "backspace", 2] 53 | ], 54 | "normal_3" : [ 55 | ["\u21ea", null, "capslock", 1.8], ["q", "q", "q", 1], ["s", "s", "s", 1], 56 | ["d", "d", "d", 1], ["f", "f", "f", 1], ["g", "g", "g", 1], 57 | ["h", "h", "h", 1], ["j", "j", "j", 1], ["k", "k", "k", 1], 58 | ["l", "l", "l", 1], ["m", "m", "m", 1], ["\u00f9", "\u00f9", "%", 1], 59 | ["*", "*", "*", 1], ["\u23ce", null, "enter", 1.2] 60 | ], 61 | "normal_4" : [ 62 | ["\u21e7", null, "shift", 1.5], ["<", "<", null, 1], ["w", "w", null, 1], 63 | ["x", "x", null, 1], 64 | ["c", "c", null, 1], ["v", "v", null, 1], ["b", "b", null, 1], 65 | ["n", "n", null, 1], [",", ",", null, 1], [";", ";", null, 1], 66 | [":", ":", null, 1], ["!", "!", null, 1], ["\u21e7", null, "shift", 2.5] 67 | ], 68 | "normal_5" : [ 69 | [" ", " ", "spacebar", 12], ["\u2b12", null, "layout", 1.5], ["\u2a2f", null, "escape", 1.5] 70 | ], 71 | "shift_1" : [ 72 | ["|", "|", "|", 1], ["1", "1", "1", 1], ["2", "2", "2", 1], 73 | ["3", "3", "3", 1], ["4", "4", "4", 1], ["5", "5", "5", 1], 74 | ["6", "6", "6", 1], ["7", "7", "7", 1], ["8", "8", "8", 1], 75 | ["9", "9", "9", 1], ["0", "0", "0", 1], ["#", "#", "#", 1], 76 | ["+", "+", "+", 1], ["\u232b", null, "backspace", 2] 77 | ], 78 | "shift_2" : [ 79 | ["\u21B9", "\t", "tab", 1.5], ["A", "A", "a", 1], ["Z", "Z", null, 1], 80 | ["E", "E", "e", 1], ["R", "R", "r", 1], ["T", "T", "t", 1], 81 | ["Y", "Y", "y", 1], ["U", "U", "u", 1], ["I", "I", "i", 1], 82 | ["O", "O", "o", 1], ["P", "P", "p", 1], ["[", "[", "[", 1], 83 | ["]", "]", "]", 1], ["\u23ce", null, "enter", 1.5] 84 | ], 85 | "shift_3" : [ 86 | ["\u21ea", null, "capslock", 1.8], ["Q", "Q", "q", 1], ["S", "S", "s", 1], 87 | ["D", "D", "d", 1], ["F", "F", "f", 1], ["G", "G", "g", 1], 88 | ["H", "H", "h", 1], ["J", "J", "j", 1], ["K", "K", "k", 1], 89 | ["L", "L", "l", 1], ["M", "M", "m", 1], ["%", "%", "%", 1], 90 | ["\u00b5", "\u00b5", "*", 1], ["\u23ce", null, "enter", 1.2] 91 | ], 92 | "shift_4" : [ 93 | ["\u21e7", null, "shift", 1.5], [">", ">", ">", 1], ["W", "W", "w", 1], 94 | ["X", "X", "x", 1], ["C", "C", "c", 1], ["V", "V", "v", 1], 95 | ["B", "B", "b", 1], ["N", "N", "n", 1], ["?", "?", "?", 1], 96 | [".", ".", ".", 1], ["/", "/", "/", 1], ["\u00a7", "\u00a7", "!", 1], 97 | ["\u21e7", null, "shift", 2.5] 98 | ], 99 | "shift_5" : [ 100 | [" ", " ", "spacebar", 12], ["\u2b12", null, "layout", 1.5], ["\u2a2f", null, "escape", 1.5] 101 | ] 102 | } -------------------------------------------------------------------------------- /Examples/2/main.py: -------------------------------------------------------------------------------- 1 | """ 2 | A experiment exploring how to broadcast property change to all instances of a 3 | widget. 4 | """ 5 | from kivy.app import App 6 | from kivy.uix.boxlayout import BoxLayout 7 | from kivy.uix.button import Button 8 | from kivy.properties import StringProperty 9 | 10 | 11 | class CustomButton(Button): 12 | common_text = StringProperty() 13 | _index = 0 # Just used to store an arb value 14 | _instances = [] 15 | 16 | def __init__(self, **kwargs): 17 | super(CustomButton, self).__init__(**kwargs) 18 | CustomButton._instances.append(self) 19 | 20 | @staticmethod 21 | def on_common_text(instance, value): 22 | """ For each instance of this class, change it's text """ 23 | for button in CustomButton._instances: 24 | button.text = value 25 | button.common_text = value 26 | 27 | def on_release(self): 28 | """ The button has been clicked. Set the common_text.""" 29 | self.common_text = "Click me! " + str(self._index) 30 | 31 | 32 | class TestApp(App): 33 | def build(self): 34 | layout = BoxLayout(orientation="vertical") 35 | for i in range(0, 6): 36 | but = CustomButton(text="Click me!") 37 | but._index = i 38 | layout.add_widget(but) 39 | return layout 40 | 41 | if __name__ == "__main__": 42 | TestApp().run() -------------------------------------------------------------------------------- /Examples/2/readme.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/2/readme.txt -------------------------------------------------------------------------------- /Examples/3/main.py: -------------------------------------------------------------------------------- 1 | # File name: mycharts.py 2 | import random 3 | 4 | import kivy 5 | kivy.require('1.7.0') 6 | from kivy.app import App 7 | from kivy.uix.anchorlayout import AnchorLayout 8 | from kivy.clock import Clock 9 | from kivy.properties import StringProperty 10 | from kivy.graphics import Color, Ellipse 11 | from kivy.uix.image import Image 12 | 13 | #from widgetshot import widgetshot 14 | 15 | # This is Mathieu Virbel's answer to a question on kivy-users forum 16 | # about how to save a widget's canvas contents as a .png file 17 | import pygame 18 | from kivy.graphics.fbo import Fbo 19 | from kivy.core.gl import glReadPixels, GL_RGBA, GL_UNSIGNED_BYTE 20 | from kivy.graphics.texture import Texture 21 | 22 | def widgetshot(widget, filename='output.png'): 23 | # detach the widget from the parent 24 | parent = widget.parent 25 | if parent: 26 | parent.remove_widget(widget) 27 | 28 | # put the widget canvas on a Fbo 29 | texture = Texture.create(size=widget.size, colorfmt='rgb') 30 | fbo = Fbo(size=widget.size, texture=texture) 31 | fbo.add(widget.canvas) 32 | 33 | # clear the fbo background 34 | fbo.bind() 35 | fbo.clear_buffer() 36 | fbo.release() 37 | 38 | # draw! 39 | fbo.draw() 40 | 41 | # get the fbo data 42 | fbo.bind() 43 | data = glReadPixels(0, 0, widget.size[0], widget.size[1], GL_RGBA, GL_UNSIGNED_BYTE) 44 | fbo.release() 45 | 46 | # save to a file 47 | surf = pygame.image.fromstring(data, widget.size, 'RGBA', True) 48 | pygame.image.save(surf, filename) 49 | 50 | # reattach to the parent 51 | if parent: 52 | parent.add_widget(widget) 53 | 54 | return True 55 | 56 | 57 | from juts_utils import * 58 | 59 | #juts_deb() 60 | 61 | Builder.load_string(''' 62 | : 63 | #timer_label: time_label.text 64 | BoxLayout: 65 | id: box1 66 | #rows: 1 67 | #cols: 2 68 | orientation: 'horizontal' 69 | XAnchorLayout: 70 | width: 100 71 | size_hint: None,1 72 | anchor_x: 'left' 73 | anchor_y: 'top' 74 | GridLayout: 75 | id: gr2 76 | rows: 3 77 | cols: 1 78 | #padding: (self.width - self.cols*draw.width)/2, (self.height - self.rows*draw.height)/2 79 | Button: 80 | id: draw 81 | text: 'Draw' 82 | size_hint: None,None 83 | on_press: root.draw() 84 | Button: 85 | text: 'Save' 86 | size_hint: None,None 87 | on_press: root.save() 88 | Button: 89 | text: 'Load' 90 | size_hint: None,None 91 | on_press: root.load() 92 | Label: 93 | #width: int(0.9*root.width) 94 | #size_hint: 0.9,None 95 | id: chart 96 | ''') 97 | 98 | class MyCharts(AnchorLayout): 99 | def draw(self): 100 | with self.canvas: 101 | d = random.randrange(1., 100.) 102 | #Color(random.randrange(0,2), random.randrange(0,2), random.randrange(0,2)) 103 | Color(0,1,0) 104 | Ellipse(pos=(random.randrange(0,self.width), random.randrange(0,self.height)), size=(d, d)) 105 | def save(self): 106 | widgetshot(self, filename = juts_gsd() + 'mycharts.png') 107 | #self.ids.score_all.text = '%d/%d' % (self.succ_count,self.try_count) 108 | 109 | def load(self): 110 | with self.canvas: 111 | Image(source='mycharts.png') 112 | 113 | 114 | class MyChartsApp(App): 115 | def build(self): 116 | return MyCharts() 117 | 118 | if __name__=="__main__": 119 | MyChartsApp().run() -------------------------------------------------------------------------------- /Examples/4/main.py: -------------------------------------------------------------------------------- 1 | from kivy.app import App 2 | from kivy.uix.label import Label 3 | from kivy.clock import Clock 4 | from kivy.config import Config 5 | 6 | Config.set("graphics", "fullscreen", 'auto') 7 | 8 | class TestApp(App): 9 | counter = 0 10 | label = None 11 | 12 | def build(self): 13 | self.label = Label(text="Hello") 14 | Clock.schedule_interval(self.increment, 1) 15 | return self.label 16 | 17 | def increment(self, dt): 18 | print "fired", Config.get("graphics", "fullscreen"), "type=", type(Config.get("graphics", "fullscreen")) 19 | #print "Desktop=", Config.get("kivy", "Desktop"), "type=", type(Config.get("kivy", "Desktop")) 20 | self.counter += 1 21 | if self.counter > 5: 22 | return False 23 | 24 | 25 | if __name__ == "__main__": 26 | TestApp().run() 27 | -------------------------------------------------------------------------------- /Examples/5/main.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | Test 4 | 5 | """ 6 | 7 | 8 | import kivy 9 | kivy.require('1.0.7') 10 | 11 | from kivy.app import App 12 | from kivy.clock import Clock 13 | from kivy.uix.floatlayout import FloatLayout 14 | from kivy.uix.image import AsyncImage 15 | 16 | 17 | from kivy.uix.widget import Widget 18 | from kivy.uix.scatter import ScatterPlane 19 | from kivy.uix.stencilview import StencilView 20 | 21 | 22 | from kivy.config import Config 23 | Config.set('graphics', 'width', '1024') 24 | Config.set('graphics', 'height', '768') 25 | 26 | 27 | 28 | class MyScatter(ScatterPlane): 29 | def load_images(self, *args): 30 | with self.canvas: 31 | for x in range(0, 2): 32 | for y in range(0, 2): 33 | source="http://b.tile.openstreetmap.org/1/%s/%s.png" % (x, y) 34 | r = 256 / self.scale 35 | AsyncImage(source=source, mipmap=False, allow_stretch=True, pos=(x*256 , (1-y)*256), size=(r, r)) 36 | 37 | 38 | class MyStencil(StencilView): 39 | def __init__(self, **kwargs): 40 | super(MyStencil, self).__init__(**kwargs) 41 | self.map = MyScatter(**kwargs) 42 | self.add_widget(self.map) 43 | 44 | 45 | 46 | class MyApp(App): 47 | 48 | 49 | def build(self): 50 | layout = FloatLayout() 51 | self.mv = MyStencil() 52 | layout.add_widget(self.mv) 53 | return layout 54 | 55 | def appInit(self, dt): 56 | self.mv.map.load_images() 57 | 58 | def on_start(self): 59 | Clock.schedule_once(self.appInit) 60 | 61 | 62 | if __name__ in ('__android__','__main__'): 63 | MyApp().run() 64 | -------------------------------------------------------------------------------- /Examples/6/main.py: -------------------------------------------------------------------------------- 1 | from kivy.app import App 2 | from kivy.lang import Builder 3 | from kivy.uix.floatlayout import FloatLayout 4 | import webbrowser 5 | 6 | Builder.load_string(''' 7 | : 8 | Label: 9 | markup: True 10 | text: "Made with [ref=http://kivy.org]Kivy[/ref]" 11 | on_ref_press: root.openurl(*args) 12 | ''') 13 | 14 | 15 | class ActiveLabel(FloatLayout): 16 | def openurl(self, *args): 17 | print "openurl fired" 18 | webbrowser.open(args[1]) 19 | 20 | 21 | class LabelDemo(App): 22 | def build(self): 23 | return ActiveLabel() 24 | 25 | if __name__=="__main__": 26 | LabelDemo().run() 27 | 28 | -------------------------------------------------------------------------------- /Examples/Binding/main.py: -------------------------------------------------------------------------------- 1 | from kivy.uix.boxlayout import BoxLayout 2 | from kivy.app import App 3 | from kivy.uix.button import Button 4 | from functools import partial 5 | 6 | 7 | class DemoBox(BoxLayout): 8 | """ 9 | This class demonstrates various techniques that can be used for binding to 10 | events. Although parts could me made more optimal, advanced Python concepts 11 | are avoided for the sake of readability and clarity. 12 | """ 13 | def __init__(self, **kwargs): 14 | super(DemoBox, self).__init__(**kwargs) 15 | self.orientation = "vertical" 16 | 17 | # We start with standard binding to a standard event. The only argument 18 | # passed to the callback is the object on which the event has occurred. 19 | btn = Button(text="Normal binding to event") 20 | btn.bind(on_press=self.on_event) 21 | 22 | # Next, we bind to a standard property change event. These typically 23 | # pass 2 arguments: the object and the value 24 | btn2 = Button(text="Normal binding to a property change") 25 | btn2.bind(state=self.on_property) 26 | 27 | # Here we use anonymous functions (a.k.a lambda's) to perform binding. 28 | # Their advantage is that you can avoid declaring new functions i.e. 29 | # they offer a concise way to "redirect" callbacks. 30 | btn3 = Button(text="Using anonymous functions.") 31 | btn3.bind(on_press=lambda x: self.on_event(None)) 32 | 33 | # You can also declare a function that accepts a variable number of 34 | # positional and keyword arguments and use introspection to determine 35 | # what is being passed in. This is very handy for debugging as well 36 | # as function re-use. Here, we use standard event binding to a function 37 | # that accepts optional positional and keyword arguments. 38 | btn4 = Button(text="Use a flexible function") 39 | btn4.bind(on_press=self.on_anything) 40 | 41 | # Lastly, we show how to use partial functions. They are sometimes 42 | # difficult to grasp, but provide a very flexible and powerful way to 43 | # re-use functions. 44 | btn5 = Button(text="Using partial functions. For hardcore's.") 45 | btn5.bind(on_press=partial(self.on_anything, "1", "2", monthy="python")) 46 | 47 | for but in [btn, btn2, btn3, btn4, btn5]: 48 | self.add_widget(but) 49 | 50 | def on_event(self, obj): 51 | print("Typical event from", obj) 52 | 53 | def on_property(self, obj, value): 54 | print("Typical property change from", obj, "to", value) 55 | 56 | def on_anything(self, *args, **kwargs): 57 | print('The flexible function has *args of', str(args), 58 | "and **kwargs of", str(kwargs)) 59 | 60 | 61 | class DemoApp(App): 62 | def build(self): 63 | return DemoBox() 64 | 65 | if __name__ == "__main__": 66 | DemoApp().run() -------------------------------------------------------------------------------- /Examples/ColorPickerPopup/main.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Demo Popup with a ColorPicker 3 | ''' 4 | from kivy.app import App 5 | from kivy.uix.boxlayout import BoxLayout 6 | from kivy.uix.button import Button 7 | from kivy.uix.colorpicker import ColorPicker 8 | from kivy.uix.popup import Popup 9 | from kivy.uix.label import Label 10 | 11 | 12 | class ColorPopup(App): 13 | ''' 14 | This class represent you application. There should be only one per app. 15 | ''' 16 | def build(self): 17 | ''' 18 | This method is called automatically and should return your "root" 19 | widget. 20 | ''' 21 | self.label = Label(text="Colour not selected.") 22 | 23 | layout = BoxLayout( 24 | orientation="vertical", 25 | padding=[50, 50, 50, 50]) 26 | layout.add_widget(self.label) 27 | layout.add_widget( 28 | Button( 29 | text="Select colour", 30 | on_release=self.select_color)) 31 | layout.add_widget( 32 | Button( 33 | text="OK and Cancel", 34 | on_release=lambda inst: self.select_color(inst, False))) 35 | return layout 36 | 37 | def select_color(self, instance, no_buts=True): 38 | ''' 39 | The button click has fired the event, so show the popup. 40 | no_buts is boolean and specifies whether to include buttons 41 | in the popup or not. 42 | ''' 43 | popup = Popup( 44 | title="Select your colour", 45 | size_hint=(0.75, 0.75)) 46 | 47 | # NOTE: the below properties can also be passed in to the Popup 48 | # constructor but we do them separately for clarity. 49 | if no_buts: 50 | colorPicker = ColorPicker() 51 | popup.bind( 52 | on_dismiss=lambda popup: \ 53 | self.popup_dismissed(popup, colorPicker.hex_color)) 54 | popup.content = colorPicker 55 | else: 56 | # We prevent the default dismiss behaviour and roll our own in 57 | # the content. 58 | popup.auto_dismiss = False 59 | popup.content = self.get_ok_cancel_content(popup) 60 | popup.open() 61 | 62 | def popup_dismissed(self, popup, color): 63 | ''' The popup has been dismissed''' 64 | self.label.text = "Colour in hex = " + color 65 | 66 | def get_ok_cancel_content(self, popup): 67 | '''Return content with OK and cancel buttons for validating''' 68 | colorPicker = ColorPicker() 69 | buttonLayout = BoxLayout(orientation="horizontal", 70 | padding="5sp", 71 | size_hint_y=0.2) 72 | okButton = Button( 73 | text="Okay", 74 | on_release=lambda but: \ 75 | popup.dismiss() and \ 76 | self.popup_dismissed(popup, colorPicker.hex_color)) 77 | cancelButton = Button( 78 | text="Cancel", 79 | on_release=lambda but: popup.dismiss()) 80 | buttonLayout.add_widget(okButton) 81 | buttonLayout.add_widget(cancelButton) 82 | 83 | mainLayout = BoxLayout(orientation="vertical") 84 | mainLayout.add_widget(colorPicker) 85 | mainLayout.add_widget(buttonLayout) 86 | return mainLayout 87 | 88 | 89 | if __name__ == '__main__': 90 | ColorPopup().run() 91 | -------------------------------------------------------------------------------- /Examples/Config/main.py: -------------------------------------------------------------------------------- 1 | """ 2 | Config Example 3 | ============== 4 | 5 | This file contains a simple example of how the use the Kivy settings classes in 6 | a real app. It allows the user to change the caption and font_size of the label 7 | and stores these changes. 8 | 9 | When the user next runs the programs, their changes are restored. 10 | 11 | """ 12 | 13 | from kivy.app import App 14 | from kivy.uix.settings import SettingsWithTabbedPanel 15 | from kivy.logger import Logger 16 | from kivy.lang import Builder 17 | 18 | # We first define our GUI 19 | kv = ''' 20 | BoxLayout: 21 | orientation: 'vertical' 22 | Button: 23 | text: 'Configure app (or press F1)' 24 | on_release: app.open_settings() 25 | Label: 26 | id: label 27 | text: 'Hello' 28 | ''' 29 | 30 | # This JSON defines entries we want to appear in our App configuration screen 31 | json = ''' 32 | [ 33 | { 34 | "type": "string", 35 | "title": "Label caption", 36 | "desc": "Choose the text that appears in the label", 37 | "section": "My Label", 38 | "key": "text" 39 | }, 40 | { 41 | "type": "numeric", 42 | "title": "Label font size", 43 | "desc": "Choose the font size the label", 44 | "section": "My Label", 45 | "key": "font_size" 46 | } 47 | ] 48 | ''' 49 | 50 | 51 | class MyApp(App): 52 | def build(self): 53 | """ 54 | Build and return the root widget. 55 | """ 56 | # The line below is optional. You could leave it out or use one of the 57 | # standard options, such as SettingsWithSidebar, SettingsWithSpinner 58 | # etc. 59 | self.settings_cls = MySettingsWithTabbedPanel 60 | 61 | # We apply the saved configuration settings or the defaults 62 | root = Builder.load_string(kv) 63 | label = root.ids.label 64 | label.text = self.config.get('My Label', 'text') 65 | label.font_size = float(self.config.get('My Label', 'font_size')) 66 | return root 67 | 68 | def build_config(self, config): 69 | """ 70 | Set the default values for the configs sections. 71 | """ 72 | config.setdefaults('My Label', {'text': 'Hello', 'font_size': 20}) 73 | 74 | def build_settings(self, settings): 75 | """ 76 | Add our custom section to the default configuration object. 77 | """ 78 | # We use the string defined above for our JSON, but it could also be 79 | # loaded from a file as follows: 80 | # settings.add_json_panel('My Label', self.config, 'settings.json') 81 | settings.add_json_panel('My Label', self.config, data=json) 82 | 83 | def on_config_change(self, config, section, key, value): 84 | """ 85 | Respond to changes in the configuration. 86 | """ 87 | Logger.info("main.py: App.on_config_change: {0}, {1}, {2}, {3}".format( 88 | config, section, key, value)) 89 | 90 | if section == "My Label": 91 | if key == "text": 92 | self.root.ids.label.text = value 93 | elif key == 'font_size': 94 | self.root.ids.label.font_size = float(value) 95 | 96 | def close_settings(self, settings): 97 | """ 98 | The settings panel has been closed. 99 | """ 100 | Logger.info("main.py: App.close_settings: {0}".format(settings)) 101 | super(MyApp, self).close_settings(settings) 102 | 103 | 104 | class MySettingsWithTabbedPanel(SettingsWithTabbedPanel): 105 | """ 106 | It is not usually necessary to create subclass of a settings panel. There 107 | are many built-in types that you can use out of the box 108 | (SettingsWithSidebar, SettingsWithSpinner etc.). 109 | 110 | You would only want to create a Settings subclass like this if you want to 111 | change the behavior or appearance of an existing Settings class. 112 | """ 113 | def on_close(self): 114 | Logger.info("main.py: MySettingsWithTabbedPanel.on_close") 115 | 116 | def on_config_change(self, config, section, key, value): 117 | Logger.info( 118 | "main.py: MySettingsWithTabbedPanel.on_config_change: " 119 | "{0}, {1}, {2}, {3}".format(config, section, key, value)) 120 | 121 | MyApp().run() 122 | -------------------------------------------------------------------------------- /Examples/DynamicUI/kivy1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/DynamicUI/kivy1.png -------------------------------------------------------------------------------- /Examples/DynamicUI/kivy2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/DynamicUI/kivy2.png -------------------------------------------------------------------------------- /Examples/DynamicUI/main.py: -------------------------------------------------------------------------------- 1 | """ 2 | Small app demonstrating a dynamic UI 3 | 4 | Author: ZenCODE 5 | Date: 22/10/2013 6 | """ 7 | 8 | from kivy.lang import Builder 9 | from kivy.app import App 10 | from kivy.uix.boxlayout import BoxLayout 11 | from kivy.factory import Factory 12 | 13 | 14 | class DataSource(object): 15 | """ 16 | This class would be an abstraction of your data source: 17 | the MySQLdb in this case. 18 | """ 19 | def get_data(self): 20 | """Return the data. We use a list of dicts representing a list of rows 21 | """ 22 | return [{"image": "kivy1.png", 23 | "row_id": 1, 24 | "header": "Question 1", 25 | "type": "Label", 26 | "value_name": "text", 27 | "value": "My Text"}, 28 | {"image": "kivy2.png", 29 | "row_id": 2, 30 | "header": "Question 2", 31 | "type": "Button", 32 | "value_name": "text", 33 | "value": "Button"}, 34 | {"image": "kivy1.png", 35 | "row_id": 3, 36 | "header": "Question 3", 37 | "type": "CheckBox", 38 | "value_name": "active", 39 | "value": "True"}] 40 | 41 | 42 | Builder.load_string(''' 43 | : 44 | ques_image: ques_image # These do your mapping to the ObjectProperty 45 | header_label: header_label 46 | box_container: box_container 47 | 48 | orientation: "vertical" 49 | Image: 50 | id: ques_image 51 | Label: 52 | id: header_label 53 | BoxLayout: 54 | id: box_container 55 | ''') 56 | 57 | 58 | class QuestionWidget(BoxLayout): 59 | """ 60 | This widget would represent each Question 61 | """ 62 | def build(self, data_dict): 63 | """Build the widget based on the dictionary from the data source""" 64 | # The widgets are part of every instance 65 | self.ques_image.source = data_dict["image"] 66 | self.header_label.text = data_dict["header"] 67 | # But this content is generated dynamically 68 | self.box_container.add_widget(self.get_content(data_dict)) 69 | 70 | @staticmethod 71 | def get_content(data_dict): 72 | """Returns the instance specific widgets for the box_layout""" 73 | # We get class based on it's name as registered in the factory and instantiate 74 | content = Factory.get(data_dict["type"])() 75 | # We noe set any of it's properties and return it 76 | setattr(content, data_dict["value_name"], data_dict["value"]) 77 | return content 78 | 79 | 80 | class TestApp(App): 81 | def __init__(self, **kwargs): 82 | """ 83 | On initialization, register the classes we want to create dynamically 84 | via the Factory object 85 | """ 86 | super(TestApp, self).__init__(**kwargs) 87 | Factory.register('Label', module='kivy.uix.label') 88 | Factory.register('Button', module='kivy.uix.button') 89 | Factory.register('CheckBox', module='kivy.uix.checkbox') 90 | 91 | def build(self): 92 | container = BoxLayout() # or screen, carousel etc. 93 | for item in DataSource().get_data(): 94 | ques_widget = QuestionWidget() 95 | ques_widget.build(item) 96 | container.add_widget(ques_widget) 97 | return container 98 | 99 | if __name__ == "__main__": 100 | TestApp().run() 101 | 102 | -------------------------------------------------------------------------------- /Examples/Event Bubbling/main.py: -------------------------------------------------------------------------------- 1 | from kivy.app import App 2 | from kivy.lang import Builder 3 | from kivy.uix.boxlayout import BoxLayout 4 | 5 | use_kv = False 6 | 7 | if use_kv: 8 | Builder.load_string(''' 9 | : 10 | orientation: 'vertical' 11 | Label: 12 | text: '1' 13 | on_touch_down: root.printme("label 1 on_touch_up") 14 | Label: 15 | text: '2' 16 | on_touch_down: root.printme("label 2 on_touch_up") 17 | BoxLayout: 18 | orientation: 'horizontal' 19 | on_touch_down: root.printme("box on_touch_up") 20 | Label: 21 | text: '3' 22 | on_touch_down: root.printme("label 3 on_touch_up") 23 | Label: 24 | text: '4' 25 | on_touch_down: root.printme("label 4 on_touch_up") 26 | ''') 27 | 28 | 29 | class EventBubbler(BoxLayout): 30 | 31 | @staticmethod 32 | def printme(msg): 33 | print msg 34 | 35 | if not use_kv: 36 | def __init__(self, **kwargs): 37 | from kivy.uix.label import Label 38 | from kivy.uix.boxlayout import BoxLayout 39 | 40 | super(EventBubbler, self).__init__(**kwargs) 41 | self.orientation = 'vertical' 42 | self.add_widget( 43 | Label( 44 | text="1", 45 | on_touch_down=lambda btn, tch: self.printme("1abel 1"))) 46 | self.add_widget( 47 | Label( 48 | text="2", 49 | on_touch_down=lambda btn, tch: self.printme("1abel 2"))) 50 | box = BoxLayout( 51 | on_touch_down=lambda box, tch: self.printme("box")) 52 | box.add_widget( 53 | Label( 54 | text="3", 55 | on_touch_down=lambda btn, tch: self.printme("1abel 3"))) 56 | box.add_widget( 57 | Label( 58 | text="4", 59 | on_touch_down=lambda btn, tch: self.printme("1abel 4"))) 60 | self.add_widget(box) 61 | 62 | 63 | class BubbleApp(App): 64 | def build(self): 65 | return EventBubbler() 66 | 67 | BubbleApp().run() 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /Examples/InputType/main.py: -------------------------------------------------------------------------------- 1 | from kivy.app import App 2 | from kivy.lang import Builder 3 | from textwrap import dedent 4 | 5 | kv = dedent(''' 6 | BoxLayout: 7 | orientation: "vertical" 8 | padding: 20 9 | BoxLayout: 10 | orientation: "horizontal" 11 | spacing: 20 12 | Label: 13 | text: "Input Type for TextInput:" 14 | Spinner: 15 | id: spinner 16 | text: "text" 17 | values: ["text", "number", "url", "mail", "datetime", "tel", "address"] 18 | TextInput: 19 | id: ti 20 | input_type: spinner.text if spinner.text else "text" 21 | Label: 22 | text: "Input type : " + ti.input_type 23 | ''') 24 | 25 | class TestApp(App): 26 | def build(self): 27 | return Builder.load_string(kv) 28 | 29 | 30 | TestApp().run() 31 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/config.ini: -------------------------------------------------------------------------------- 1 | [kivy] 2 | keyboard_repeat_delay = 300 3 | keyboard_repeat_rate = 30 4 | log_dir = logs 5 | log_enable = 1 6 | log_level = info 7 | log_name = kivy_%y-%m-%d_%_.txt 8 | window_icon = 9 | keyboard_mode = 10 | keyboard_layout = qwerty 11 | config_version = 7 12 | 13 | [graphics] 14 | display = -1 15 | fullscreen = no 16 | height = 600 17 | left = 0 18 | maxfps = 60 19 | multisamples = 2 20 | position = auto 21 | rotation = 0 22 | show_cursor = 1 23 | top = 0 24 | width = 800 25 | resizable = 1 26 | 27 | [input] 28 | mouse = mouse 29 | 30 | [postproc] 31 | double_tap_distance = 20 32 | double_tap_time = 250 33 | ignore = [] 34 | jitter_distance = 0 35 | jitter_ignore_devices = mouse,mactouch, 36 | retain_distance = 50 37 | retain_time = 0 38 | 39 | [widgets] 40 | scroll_timeout = 55 41 | scroll_distance = 20 42 | scroll_friction = 1. 43 | scroll_stoptime = 300 44 | scroll_moves = 5 45 | 46 | [modules] 47 | 48 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/icon/kivy-icon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/.kivy/icon/kivy-icon-128.png -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/icon/kivy-icon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/.kivy/icon/kivy-icon-16.png -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/icon/kivy-icon-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/.kivy/icon/kivy-icon-24.png -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/icon/kivy-icon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/.kivy/icon/kivy-icon-256.png -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/icon/kivy-icon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/.kivy/icon/kivy-icon-32.png -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/icon/kivy-icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/.kivy/icon/kivy-icon-512.png -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/icon/kivy-icon-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/.kivy/icon/kivy-icon-64.png -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_0.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_0.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [ERROR ] Error when copying logo directory 4 | [WARNING] [Config ] Older configuration version detected (0 instead of 7) 5 | [WARNING] [Config ] Upgrading configuration in progress. 6 | [INFO ] Factory: 137 symbols loaded 7 | [DEBUG ] Cache: register with limit=None, timeout=Nones 8 | [DEBUG ] Cache: register with limit=None, timeout=60s 9 | [DEBUG ] Cache: register with limit=None, timeout=Nones 10 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 11 | [WARNING ] stderr: (ImportError: No module named cdrom) 12 | [DEBUG ] Cache: register with limit=1000, timeout=60s 13 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 14 | [WARNING ] Audio: Unable to use as loader! 15 | [DEBUG ] 16 | [WARNING ] Audio: Unable to use as loader! 17 | [DEBUG ] 18 | [DEBUG ] Audio: register SoundPygame 19 | [DEBUG ] App: Loading kv <./si.kv> 20 | [INFO ] Window: using as window provider 21 | [DEBUG ] WinPygame: Set window to fullscreen mode 22 | [DEBUG ] Window: Display driver android 23 | [DEBUG ] Window: Actual window size: %dx%d 24 | [INFO ] GL: OpenGL version 25 | [INFO ] GL: OpenGL vendor 26 | [INFO ] GL: OpenGL renderer 27 | [INFO ] GL: OpenGL parsed version: 2, 0 28 | [INFO ] GL: Shading version 29 | [INFO ] GL: Texture max size <2048> 30 | [INFO ] GL: Texture max units <16> 31 | [INFO ] Shader: fragment compiled successfully 32 | [INFO ] Shader: vertex compiled successfully 33 | [DEBUG ] ImagePygame: Load 34 | [INFO ] Support: Android install hooks 35 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 36 | [INFO ] Text: using as text provider 37 | [DEBUG ] Atlas: Load 38 | [DEBUG ] Atlas: Need to load 1 images 39 | [DEBUG ] Atlas: Load 40 | [DEBUG ] ImagePygame: Load 41 | [INFO ] OSC: using for socket 42 | [DEBUG ] Base: Create provider from android 43 | [INFO ] Base: Start application main loop 44 | [INFO ] Android: found 17 joystick 45 | [INFO ] Android: create joystick <0> 46 | [INFO ] Android: discard joystick <0> cause no button 47 | [INFO ] Android: create joystick <1> 48 | [INFO ] Android: create joystick <2> 49 | [INFO ] Android: create joystick <3> 50 | [INFO ] Android: create joystick <4> 51 | [INFO ] Android: create joystick <5> 52 | [INFO ] Android: create joystick <6> 53 | [INFO ] Android: create joystick <7> 54 | [INFO ] Android: create joystick <8> 55 | [INFO ] Android: create joystick <9> 56 | [INFO ] Android: create joystick <10> 57 | [INFO ] Android: create joystick <11> 58 | [INFO ] Android: create joystick <12> 59 | [INFO ] Android: create joystick <13> 60 | [INFO ] Android: create joystick <14> 61 | [INFO ] Android: create joystick <15> 62 | [INFO ] Android: create joystick <16> 63 | [INFO ] GL: NPOT texture support is available 64 | [INFO ] Base: Leaving application in progress... 65 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_1.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_1.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_12.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_12.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_13.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_13.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Android: Must to in sleep mode, check the app 62 | [INFO ] Android: App doesn't support pause mode, stop. 63 | [INFO ] Base: Leaving application in progress... 64 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_14.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_14.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_15.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_15.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_16.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_16.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_17.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_17.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_18.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_18.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_19.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_19.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_2.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_2.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_20.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/invaders/.kivy/logs/kivy_13-03-01_20.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_3.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_3.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_4.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_4.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_5.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_5.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_6.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_6.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_7.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_7.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_8.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_8.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Android: Must to in sleep mode, check the app 62 | [INFO ] Android: App doesn't support pause mode, stop. 63 | [INFO ] Base: Leaving application in progress... 64 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-01_9.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-01_9.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-04_0.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/invaders/.kivy/logs/kivy_13-03-04_0.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [WARNING ] stderr: Traceback (most recent call last): 17 | [WARNING ] stderr: File "main.py", line 26, in 18 | [WARNING ] stderr: ufo_highpitch = SoundLoader.load('sounds/ufo_highpitch_long.wav')) 19 | [WARNING ] stderr: File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/core/audio/__init__.py", line 58, in load 20 | [WARNING ] stderr: File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/core/audio/audio_pygame.py", line 40, in __init__ 21 | [WARNING ] stderr: File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/core/audio/__init__.py", line 125, in __init__ 22 | [WARNING ] stderr: File "_event.pyx", line 93, in kivy._event.EventDispatcher.__init__ (kivy/_event.c:1878) 23 | [WARNING ] stderr: File "properties.pyx", line 318, in kivy.properties.Property.__set__ (kivy/properties.c:3139) 24 | [WARNING ] stderr: File "properties.pyx", line 350, in kivy.properties.Property.set (kivy/properties.c:3583) 25 | [WARNING ] stderr: File "properties.pyx", line 404, in kivy.properties.Property.dispatch (kivy/properties.c:4151) 26 | [WARNING ] stderr: File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/core/audio/__init__.py", line 131, in on_source 27 | [WARNING ] stderr: File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/core/audio/audio_pygame.py", line 71, in load 28 | [WARNING ] stderr: File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/android_mixer.py", line 194, in __init__ 29 | [WARNING ] stderr: IOError: [Errno 2] No such file or directory: '/mnt/sdcard/kivy/invaders/sounds/ufo_highpitch_long.wav' 30 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-04_1.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/invaders/.kivy/logs/kivy_13-03-04_1.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [WARNING ] stderr: Traceback (most recent call last): 17 | [WARNING ] stderr: File "main.py", line 26, in 18 | [WARNING ] stderr: ufo_highpitch = SoundLoader.load('sounds/ufo_highpitch_long.wav')) 19 | [WARNING ] stderr: File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/core/audio/__init__.py", line 58, in load 20 | [WARNING ] stderr: File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/core/audio/audio_pygame.py", line 40, in __init__ 21 | [WARNING ] stderr: File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/core/audio/__init__.py", line 125, in __init__ 22 | [WARNING ] stderr: File "_event.pyx", line 93, in kivy._event.EventDispatcher.__init__ (kivy/_event.c:1878) 23 | [WARNING ] stderr: File "properties.pyx", line 318, in kivy.properties.Property.__set__ (kivy/properties.c:3139) 24 | [WARNING ] stderr: File "properties.pyx", line 350, in kivy.properties.Property.set (kivy/properties.c:3583) 25 | [WARNING ] stderr: File "properties.pyx", line 404, in kivy.properties.Property.dispatch (kivy/properties.c:4151) 26 | [WARNING ] stderr: File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/core/audio/__init__.py", line 131, in on_source 27 | [WARNING ] stderr: File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/core/audio/audio_pygame.py", line 71, in load 28 | [WARNING ] stderr: File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/android_mixer.py", line 194, in __init__ 29 | [WARNING ] stderr: IOError: [Errno 2] No such file or directory: '/mnt/sdcard/kivy/invaders/sounds/ufo_highpitch_long.wav' 30 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-04_2.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/invaders/.kivy/logs/kivy_13-03-04_2.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-04_3.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/invaders/.kivy/logs/kivy_13-03-04_3.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-04_4.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-04_4.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-04_5.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-04_5.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Android: Must to in sleep mode, check the app 62 | [INFO ] Android: App doesn't support pause mode, stop. 63 | [INFO ] Base: Leaving application in progress... 64 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.kivy/logs/kivy_13-03-04_6.txt: -------------------------------------------------------------------------------- 1 | [INFO ] Logger: Record log in /mnt/sdcard/kivy/SI/.kivy/logs/kivy_13-03-04_6.txt 2 | [INFO ] Kivy v1.5.2-dev 3 | [INFO ] Factory: 137 symbols loaded 4 | [DEBUG ] Cache: register with limit=None, timeout=Nones 5 | [DEBUG ] Cache: register with limit=None, timeout=60s 6 | [DEBUG ] Cache: register with limit=None, timeout=Nones 7 | [WARNING ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:11: RuntimeWarning: import cdrom: No module named cdrom 8 | [WARNING ] stderr: (ImportError: No module named cdrom) 9 | [DEBUG ] Cache: register with limit=1000, timeout=60s 10 | [DEBUG ] Cache: register with limit=1000, timeout=3600s 11 | [WARNING ] Audio: Unable to use as loader! 12 | [DEBUG ] 13 | [WARNING ] Audio: Unable to use as loader! 14 | [DEBUG ] 15 | [DEBUG ] Audio: register SoundPygame 16 | [DEBUG ] App: Loading kv <./si.kv> 17 | [INFO ] Window: using as window provider 18 | [DEBUG ] WinPygame: Set window to fullscreen mode 19 | [DEBUG ] Window: Display driver android 20 | [DEBUG ] Window: Actual window size: %dx%d 21 | [INFO ] GL: OpenGL version 22 | [INFO ] GL: OpenGL vendor 23 | [INFO ] GL: OpenGL renderer 24 | [INFO ] GL: OpenGL parsed version: 2, 0 25 | [INFO ] GL: Shading version 26 | [INFO ] GL: Texture max size <2048> 27 | [INFO ] GL: Texture max units <16> 28 | [INFO ] Shader: fragment compiled successfully 29 | [INFO ] Shader: vertex compiled successfully 30 | [DEBUG ] ImagePygame: Load 31 | [INFO ] Support: Android install hooks 32 | [INFO ] Window: virtual keyboard not allowed, single mode, not docked 33 | [INFO ] Text: using as text provider 34 | [DEBUG ] Atlas: Load 35 | [DEBUG ] Atlas: Need to load 1 images 36 | [DEBUG ] Atlas: Load 37 | [DEBUG ] ImagePygame: Load 38 | [INFO ] OSC: using for socket 39 | [DEBUG ] Base: Create provider from android 40 | [INFO ] Base: Start application main loop 41 | [INFO ] Android: found 17 joystick 42 | [INFO ] Android: create joystick <0> 43 | [INFO ] Android: discard joystick <0> cause no button 44 | [INFO ] Android: create joystick <1> 45 | [INFO ] Android: create joystick <2> 46 | [INFO ] Android: create joystick <3> 47 | [INFO ] Android: create joystick <4> 48 | [INFO ] Android: create joystick <5> 49 | [INFO ] Android: create joystick <6> 50 | [INFO ] Android: create joystick <7> 51 | [INFO ] Android: create joystick <8> 52 | [INFO ] Android: create joystick <9> 53 | [INFO ] Android: create joystick <10> 54 | [INFO ] Android: create joystick <11> 55 | [INFO ] Android: create joystick <12> 56 | [INFO ] Android: create joystick <13> 57 | [INFO ] Android: create joystick <14> 58 | [INFO ] Android: create joystick <15> 59 | [INFO ] Android: create joystick <16> 60 | [INFO ] GL: NPOT texture support is available 61 | [INFO ] Base: Leaving application in progress... 62 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/.launch: -------------------------------------------------------------------------------- 1 | started -------------------------------------------------------------------------------- /Examples/Invaders/SI/android.txt: -------------------------------------------------------------------------------- 1 | title=Invaders 2 | author=PRS 3 | orientation=landscape -------------------------------------------------------------------------------- /Examples/Invaders/SI/build-android.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/build-android.txt -------------------------------------------------------------------------------- /Examples/Invaders/SI/fonts/ATARCC__.TTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/fonts/ATARCC__.TTF -------------------------------------------------------------------------------- /Examples/Invaders/SI/fonts/ATARCE__.TTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/fonts/ATARCE__.TTF -------------------------------------------------------------------------------- /Examples/Invaders/SI/fonts/ATARCS__.TTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/fonts/ATARCS__.TTF -------------------------------------------------------------------------------- /Examples/Invaders/SI/fonts/LCD_Solid.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/fonts/LCD_Solid.ttf -------------------------------------------------------------------------------- /Examples/Invaders/SI/fonts/pixelated.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/fonts/pixelated.ttf -------------------------------------------------------------------------------- /Examples/Invaders/SI/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/icon.png -------------------------------------------------------------------------------- /Examples/Invaders/SI/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/images/icon.png -------------------------------------------------------------------------------- /Examples/Invaders/SI/images/sisplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/images/sisplash.jpg -------------------------------------------------------------------------------- /Examples/Invaders/SI/images/vaders-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/images/vaders-0.png -------------------------------------------------------------------------------- /Examples/Invaders/SI/images/vaders.atlas: -------------------------------------------------------------------------------- 1 | {"vaders-0.png": {"a20": [28, 52, 24, 18], "a21": [54, 52, 24, 18], "a31": [2, 72, 26, 18], "a30": [80, 108, 26, 18], "a11": [2, 52, 24, 18], "a10": [86, 72, 24, 18], "house": [2, 92, 46, 34], "a00": [108, 108, 18, 18], "a01": [80, 52, 18, 18], "lilshp": [50, 98, 17, 8], "gun": [50, 108, 28, 18], "b2": [120, 75, 6, 15], "b1": [112, 75, 6, 15], "a40": [30, 72, 26, 18], "a41": [58, 72, 26, 18], "bigshp": [100, 60, 23, 10]}} -------------------------------------------------------------------------------- /Examples/Invaders/SI/main.pyo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/main.pyo -------------------------------------------------------------------------------- /Examples/Invaders/SI/makeInvaders: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd ~/android/python-for-android/dist/default 3 | ./build.py --package com.aptrackers.invaders --name 'Space Invaders' --icon ~/mnt/SI/icon.png --presplash ~/mnt/SI/images/sisplash.jpg --version 1.0 --dir ~/mnt/SI debug 4 | ./build.py --package com.aptrackers.invaders --name 'Space Invaders' --icon ~/mnt/SI/icon.png --presplash ~/mnt/SI/images/sisplash.jpg --version 1.0 --dir ~/mnt/SI release 5 | cp bin/invaders-1.0-debug.apk ~/mnt 6 | cp bin/invaders-1.0-release-unsigned.apk ~/mnt 7 | cd - 8 | 9 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/si.ini: -------------------------------------------------------------------------------- 1 | [Invaders] 2 | singleplayer = 1 3 | hiscore = 13351 4 | restarting = False 5 | guncount = 4 6 | readydelay = 3.0 7 | restartdelay = 5.0 8 | 9 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/si.kv: -------------------------------------------------------------------------------- 1 | #:kivy 1.0.9 2 | 3 | : 4 | size: 50, 50 5 | canvas: 6 | Color: 7 | rgba: self.lumina,self.lumina,self.lumina,self.alpha 8 | Rectangle: 9 | pos: self.pos 10 | size: self.size 11 | source: self.sources[self.state] 12 | 13 | : 14 | size: 25,50 15 | spacing: 0 16 | padding: 0 17 | canvas: 18 | Color: 19 | rgba: 0.0,0.0,0.2,self.alpha 20 | Rectangle: 21 | pos: self.pos 22 | size: self.size 23 | 24 | : 25 | size: 100, 60 26 | 27 | : 28 | size: 50, 20 29 | 30 | : 31 | size: 32, 20 32 | 33 | : 34 | size: 8, 24 35 | delta: 25 * self.height / 2.0 36 | 37 | : 38 | size: 8, 24 39 | lumina: 0.7 40 | delta: -25 * self.height / 4.0 41 | 42 | : 43 | size: 60, 30 44 | 45 | : 46 | padding: 2*int((4-self.row)/2) 47 | 48 | : 49 | spacing:20 50 | orientation: 'horizontal' 51 | height: 40 52 | 53 | : 54 | padding:10 55 | spacing:10 56 | orientation:'vertical' 57 | size: self.width, self.height 58 | 59 | [MBox@BoxLayout]: 60 | padding: 0 61 | spacing: 0 62 | orientation: 'vertical' 63 | top: ctx.root.top 64 | center_x: ctx.root.width * ctx.frac 65 | 66 | Label: 67 | color: ctx.color1[0], ctx.color1[1], ctx.color1[2], 1 68 | font_name: 'fonts/LCD_Solid.ttf' 69 | font_size: 32 70 | text: ctx.text 71 | Label: 72 | color: ctx.color2[0], ctx.color2[1], ctx.color2[2], 1 73 | font_name: 'fonts/LCD_Solid.ttf' 74 | font_size: 32 75 | text: ctx.root.scores[ctx.itemIdx] 76 | 77 | 78 | # Text color label 1: 6ed8ce 79 | # hiscore: 295cdb 80 | # label 2: d5d855 81 | # Scores are white except hiscore=295cdb 82 | : 83 | height:80 84 | MBox: 85 | root: root 86 | color1: 0x6e/255.0,0xd8/255.0,0xce/255.0 87 | color2: 1.0,1.0,1.0 88 | text: 'SCORE<1>' 89 | frac: 1.0/5.0 90 | itemIdx: 0 91 | MBox: 92 | root: root 93 | color1: 0x29/255.0,0x5c/255.0,0xdb/255.0 94 | color2: 0x29/255.0,0x5c/255.0,0xdb/255.0 95 | text: 'HI-SCORE' 96 | frac: 1.0 / 2.0 97 | itemIdx: 1 98 | MBox: 99 | root: root 100 | color1: 0xd5/255.0,0xd8/255.0,0x55/255.0 101 | color2: 1.0,1.0,1.0 102 | text: 'SCORE<2>' 103 | frac: 4.0 / 5.0 104 | itemIdx: 2 105 | 106 | : 107 | anchor_x: 'center' 108 | anchor_y: 'center' 109 | Label: 110 | canvas: 111 | Color: 112 | rgba: 0.0,0.0,0.2,root.alpha 113 | Rectangle: 114 | pos: self.pos 115 | size: self.size 116 | font_color: 1.0,1.0,1.0,root.alpha 117 | font_name: 'fonts/ATARCC__.TTF' 118 | font_size: 34 119 | text: 'Game Over' 120 | 121 | : 122 | anchor_x: 'center' 123 | anchor_y: 'center' 124 | Label: 125 | canvas: 126 | Color: 127 | rgba: 0.0,0.0,0.2,1-root.alpha 128 | Rectangle: 129 | pos: self.pos 130 | size: self.size 131 | font_color: 1.0,1.0,1.0,root.alpha 132 | font_name: 'fonts/ATARCC__.TTF' 133 | font_size: 34 134 | text: 'Get Ready!' 135 | 136 | : 137 | gunLayout: gunLayout 138 | BoxLayout: 139 | id: gunLayout 140 | orientation: 'horizontal' 141 | # size: 10*self.parent.nShooters, self.parent.height/1.5 142 | pos: self.parent.x, self.parent.y 143 | padding:8 144 | spacing:4 145 | 146 | : 147 | scores: scores 148 | levelsBox: levelsBox 149 | housesBox: housesBox 150 | shooterBox: shooterBox 151 | footerBox: footerBox 152 | leftGunList: leftGunList 153 | rightGunList: rightGunList 154 | 155 | height: 600 156 | canvas: 157 | Color: 158 | rgb: 0.0,0.0,0.2 159 | Rectangle: 160 | pos: 0, 0 161 | size: self.width, self.height 162 | 163 | AnchorLayout: 164 | pos: 0, 0 165 | size: root.width, root.height 166 | anchor_x: 'center' 167 | anchor_y: 'bottom' 168 | 169 | BoxLayout: 170 | orientation: 'vertical' 171 | size: root.levelsBox.boxWidth+root.levelsBox.boxGap, 600 172 | Score: 173 | id: scores 174 | size_hint: 1, 80.0/600.0 175 | FloatLayout: 176 | size_hint: 1, 460.0/600.0 177 | HousesBox: 178 | id: housesBox 179 | pos: self.parent.x, self.parent.y 180 | size: self.parent.width, 80 181 | LevelsBox: 182 | id: levelsBox 183 | pos: self.parent.x, self.parent.y 184 | size: self.parent.width, self.parent.height 185 | ShooterBox: 186 | id: shooterBox 187 | size_hint: 1, 30.0/600.0 188 | FooterBox: 189 | id: footerBox 190 | size_hint: 1, 30.0/600.0 191 | GunList: 192 | id: leftGunList 193 | pos: self.parent.x, self.parent.y 194 | size: self.gunLayout.padding[0]*2+self.nShooters*30, self.parent.height 195 | GunList: 196 | id: rightGunList 197 | pos: self.parent.width-(self.gunLayout.padding[0]*2+self.nShooters*30), self.parent.y 198 | size: self.gunLayout.padding[0]*2+self.nShooters*30, self.parent.height 199 | -------------------------------------------------------------------------------- /Examples/Invaders/SI/sounds/explosion.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/sounds/explosion.wav -------------------------------------------------------------------------------- /Examples/Invaders/SI/sounds/fastinvader1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/sounds/fastinvader1.wav -------------------------------------------------------------------------------- /Examples/Invaders/SI/sounds/fastinvader2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/sounds/fastinvader2.wav -------------------------------------------------------------------------------- /Examples/Invaders/SI/sounds/fastinvader3.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/sounds/fastinvader3.wav -------------------------------------------------------------------------------- /Examples/Invaders/SI/sounds/fastinvader4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/sounds/fastinvader4.wav -------------------------------------------------------------------------------- /Examples/Invaders/SI/sounds/invaderkilled.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/sounds/invaderkilled.wav -------------------------------------------------------------------------------- /Examples/Invaders/SI/sounds/shoot.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/sounds/shoot.wav -------------------------------------------------------------------------------- /Examples/Invaders/SI/sounds/ufo_highpitch.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/sounds/ufo_highpitch.wav -------------------------------------------------------------------------------- /Examples/Invaders/SI/sounds/ufo_highpitch_long.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/sounds/ufo_highpitch_long.wav -------------------------------------------------------------------------------- /Examples/Invaders/SI/sounds/ufo_lowpitch.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/sounds/ufo_lowpitch.wav -------------------------------------------------------------------------------- /Examples/Invaders/SI/sounds/ufo_lowpitch_long.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SI/sounds/ufo_lowpitch_long.wav -------------------------------------------------------------------------------- /Examples/Invaders/SpaceInvaders-1.0-debug.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Invaders/SpaceInvaders-1.0-debug.apk -------------------------------------------------------------------------------- /Examples/Invaders/readme.txt: -------------------------------------------------------------------------------- 1 | Thanks to Paul Sephton...;-) -------------------------------------------------------------------------------- /Examples/Keyboard/android.txt: -------------------------------------------------------------------------------- 1 | title=Keyboard 2 | author=ZenCODE 3 | orientation=landscape -------------------------------------------------------------------------------- /Examples/Keyboard/main.pyo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Keyboard/main.pyo -------------------------------------------------------------------------------- /Examples/Keyboard/numeric.json: -------------------------------------------------------------------------------- 1 | { 2 | "title" : "Numeric", 3 | "description" : "A numeric keypad", 4 | "cols" : 3, 5 | "rows": 4, 6 | "normal_1": [ 7 | ["7", "7", "7", 1], 8 | ["8", "8", "8", 1], 9 | ["9", "9", "9", 1]], 10 | "normal_2": [ 11 | ["4", "4", "4", 1], 12 | ["5", "5", "5", 1], 13 | ["6", "6", "6", 1]], 14 | "normal_3": [ 15 | ["1", "1", "1", 1], 16 | ["2", "2", "2", 1], 17 | ["3", "3", "3", 1]], 18 | "normal_4": [ 19 | ["0", "0", "0", 1], 20 | [".", ".", ".", 1], 21 | ["\u232b", null, "backspace", 1]], 22 | "shift_1": [ 23 | ["7", "7", "7", 1], 24 | ["8", "8", "8", 1], 25 | ["9", "9", "9", 1]], 26 | "shift_2": [ 27 | ["4", "4", "4", 1], 28 | ["5", "5", "5", 1], 29 | ["6", "6", "6", 1]], 30 | "shift_3": [ 31 | ["1", "1", "1", 1], 32 | ["2", "2", "2", 1], 33 | ["3", "3", "3", 1]], 34 | "shift_4": [ 35 | ["0", "0", "0", 1], 36 | [".", ".", ".", 1], 37 | ["\u232b", null, "backspace", 1]] 38 | } -------------------------------------------------------------------------------- /Examples/Properties/main.py: -------------------------------------------------------------------------------- 1 | ''' 2 | A demo of Kivy Properties and why they rule 3 | ''' 4 | from kivy.app import App 5 | from kivy.properties import ObjectProperty 6 | from kivy.uix.boxlayout import BoxLayout 7 | from kivy.lang import Builder 8 | from kivy.animation import Animation, AnimationTransition 9 | 10 | Builder.load_string(''' 11 | : 12 | b1: b1 13 | b2: b2 14 | b3: b3 15 | orientation: 'horizontal' 16 | spacing: '10sp' 17 | padding: 10, 0, 10, 0 18 | Button: 19 | id: b1 20 | text: "one" 21 | Button: 22 | id: b2 23 | text: "two" 24 | Button: 25 | id: b3 26 | text: "three" 27 | ''') 28 | 29 | 30 | class ButtonBox(BoxLayout): 31 | ''' 32 | Illustrate animation 33 | ''' 34 | b1 = ObjectProperty() 35 | b2 = ObjectProperty() 36 | b3 = ObjectProperty() 37 | 38 | def start(self): 39 | ''' 40 | Create and start the animations 41 | Note. In production code, you would probably want a different 42 | 'on_complete' callback for each animation. We use the same on 43 | here for simplicity sake. 44 | ''' 45 | anim = Animation(size_hint_y=0 if self.b1.size_hint_y > 0.5 else 1, 46 | duration=1) 47 | anim.bind(on_complete=lambda x, y: self.start()) 48 | anim.start(self.b1) 49 | 50 | anim2 = Animation(size_hint_y=0 if self.b2.size_hint_y > 0.5 else 1, 51 | duration=1, 52 | transition=AnimationTransition.in_bounce) 53 | anim2.start(self.b2) 54 | 55 | anim3 = Animation(size_hint_y=0 if self.b3.size_hint_y > 0.5 else 1, 56 | duration=1, 57 | transition=AnimationTransition.in_circ) 58 | anim3.start(self.b3) 59 | 60 | 61 | class AnimDemo(App): 62 | 63 | def build(self): 64 | bb = ButtonBox() 65 | bb.start() 66 | return bb 67 | 68 | if __name__ == '__main__': 69 | AnimDemo().run() 70 | -------------------------------------------------------------------------------- /Examples/Recycleview/camimenu.kv: -------------------------------------------------------------------------------- 1 | #: import Window kivy.core.window.Window 2 | #: set gap 0.015 * Window.width 3 | : 4 | canvas.before: 5 | # Draw the image underneath the touch highlighting 6 | Color: 7 | rgba: 1, 1, 1, 1 8 | Rectangle: 9 | source: self.source 10 | size: self.size 11 | pos: self.pos 12 | canvas.after: 13 | # Draw the touch highlighting 14 | Color: 15 | rgba: [0, 0, 0, 0] if not self.pressed else [0.5, 1, 1, 0.5] 16 | Rectangle: 17 | size: self.size 18 | pos: self.pos 19 | size_hint_x: None 20 | width: 0 21 | 22 | 23 | 24 | text: '' 25 | callback: None 26 | number: None 27 | spacing: 5 28 | 29 | CAMIMenuBlock: 30 | # Houses the number image before the label 31 | id: mb_number 32 | text: str(root.number) 33 | callback: root.callback 34 | source: "graphics/menuicon{0}.png".format(root.number % 6) if root.number is not None else "graphics/blank.png" 35 | width: self.height 36 | visible: True 37 | 38 | Widget: 39 | canvas: 40 | Color: 41 | rgba: 0.5, 0.5, 1, 0.5 42 | RoundedRectangle: 43 | size: self.size 44 | pos: self.pos 45 | CAMIMenuBlock: 46 | id: mb_text 47 | callback: root.callback 48 | text: root.text 49 | text_size: self.size 50 | halign: 'left' 51 | valign: 'center' 52 | pos: (self.parent.x + gap, self.parent.y) 53 | size: (self.parent.width - gap, self.parent.height) 54 | visible: True 55 | 56 | CAMIMenuBlock: 57 | id: mb_post0 58 | width: self.height if self.visible else 0 59 | source: root.post_icons[0]['source'] if self.visible else 'graphics/blank.py' 60 | CAMIMenuBlock: 61 | id: mb_post1 62 | width: self.height if self.visible else 0 63 | source: root.post_icons[1]['source'] if self.visible else 'graphics/blank.py' 64 | 65 | 66 | scroll_type: ['bars', 'content'] 67 | scroll_wheel_distance: 10 * gap 68 | bar_width: gap 69 | viewclass: 'CAMIMenuRow' 70 | RecycleBoxLayout: 71 | default_size: None, row_height 72 | default_size_hint: 1, None 73 | size_hint_y: None 74 | height: self.minimum_height 75 | orientation: 'vertical' 76 | spacing: 0.5 * gap 77 | -------------------------------------------------------------------------------- /Examples/Recycleview/camimenu.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module houses the class that defines the row in our RecycleView 3 | """ 4 | from kivy.uix.boxlayout import BoxLayout 5 | from kivy.lang import Builder 6 | from kivy.properties import (ListProperty, BooleanProperty, ObjectProperty, 7 | StringProperty) 8 | from kivy.uix.label import Label 9 | from kivy.uix.recycleview import RecycleView 10 | from kivy.clock import Clock 11 | 12 | Builder.load_file("camimenu.kv") 13 | 14 | 15 | class CAMIMenuBlock(Label): 16 | """ 17 | An item appearing in a CAMIMenuRow. It adds press highlights, callback 18 | functionality and 19 | """ 20 | callback = ObjectProperty(None) 21 | """ The callback to fire or press """ 22 | 23 | source = StringProperty('graphics/blank.png') 24 | """ The graphics to be drawn for the block """ 25 | 26 | pressed = BooleanProperty(False) 27 | """ Indicates whether the block has been tapped or not. """ 28 | 29 | visible = BooleanProperty(False) 30 | """ Indicates whether the widget is displayed or not (has a width)""" 31 | 32 | def on_touch_down(self, touch): 33 | """ Respond to the touch down event """ 34 | if self.collide_point(*touch.pos) and self.visible: 35 | self.pressed = True 36 | self.callback() 37 | 38 | return super(CAMIMenuBlock, self).on_touch_down(touch) 39 | 40 | def on_touch_up(self, touch): 41 | """ Respond to the touch up event """ 42 | if self.pressed: 43 | self.pressed = False 44 | return super(CAMIMenuBlock, self).on_touch_up(touch) 45 | 46 | 47 | class CAMIMenuRow(BoxLayout): 48 | """ 49 | The display class for CAMI Menu rows, optimized for the RecycleView. 50 | """ 51 | post_icons = ListProperty(None) 52 | """ 53 | A list of dictionaries containing: 54 | source: a path to the image 55 | callback: the callback to be fired on clicking 56 | """ 57 | 58 | delayed_overlay = ObjectProperty(None) 59 | """ A function to call which return a widget to be overlayed on the button. 60 | """ 61 | 62 | overlay = ObjectProperty(None) 63 | """ A reference to the widget used as a floating overlay on the menu item. 64 | """ 65 | 66 | _callback = None 67 | """ The pending callback for the 'delayed_load' call. """ 68 | 69 | def on_post_icons(self, widget, icon_list): 70 | """ Respond to the setting of the icon_list property. """ 71 | post0, post1 = len(icon_list) > 0, len(icon_list) > 1 72 | w_post0, w_post1 = self.ids.mb_post0, self.ids.mb_post1 73 | w_post0.visible = post0 74 | w_post1.visible = post1 75 | w_post0.callback = icon_list[0]['callback'] if post0 else None 76 | w_post1.callback = icon_list[1]['callback'] if post1 else None 77 | 78 | def _re_pos_overlay(self, widget, y): 79 | """ Re-position our overlay""" 80 | self.overlay.y = y 81 | 82 | def on_delayed_overlay(self, widget, value): 83 | """ A callback to return the widget overlaying state into on the menu 84 | item. """ 85 | mb_text = self.ids.mb_text 86 | if self._callback is not None: 87 | self._callback.cancel() 88 | if self.overlay is not None: 89 | mb_text.remove_widget(self.overlay) 90 | mb_text.unbind(on_y=self._re_pos_overlay) 91 | 92 | def add_overlay(dt): 93 | # Do we need to check something? That the user has not closed the 94 | # screen? 95 | self.overlay = value() 96 | self.overlay.pos = ( 97 | mb_text.right - self.overlay.width - 15, 98 | mb_text.y) 99 | mb_text.add_widget(self.overlay) 100 | mb_text.bind(on_y=self._re_pos_overlay) 101 | 102 | self._callback = Clock.schedule_once(add_overlay, 2.0) 103 | 104 | 105 | class CAMIMenu(RecycleView): 106 | """ An implementation of the RecycleView, to handle the menu area as a 107 | scrollview. 108 | """ 109 | -------------------------------------------------------------------------------- /Examples/Recycleview/graphics/blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Recycleview/graphics/blank.png -------------------------------------------------------------------------------- /Examples/Recycleview/graphics/group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Recycleview/graphics/group.png -------------------------------------------------------------------------------- /Examples/Recycleview/graphics/menuicon0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Recycleview/graphics/menuicon0.png -------------------------------------------------------------------------------- /Examples/Recycleview/graphics/menuicon1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Recycleview/graphics/menuicon1.png -------------------------------------------------------------------------------- /Examples/Recycleview/graphics/menuicon2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Recycleview/graphics/menuicon2.png -------------------------------------------------------------------------------- /Examples/Recycleview/graphics/menuicon3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Recycleview/graphics/menuicon3.png -------------------------------------------------------------------------------- /Examples/Recycleview/graphics/menuicon4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Recycleview/graphics/menuicon4.png -------------------------------------------------------------------------------- /Examples/Recycleview/graphics/menuicon5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Recycleview/graphics/menuicon5.png -------------------------------------------------------------------------------- /Examples/Recycleview/graphics/trophy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Recycleview/graphics/trophy.png -------------------------------------------------------------------------------- /Examples/Recycleview/main.py: -------------------------------------------------------------------------------- 1 | from random import sample 2 | from string import ascii_lowercase 3 | from kivy.app import App 4 | from kivy.lang import Builder 5 | from kivy.uix.boxlayout import BoxLayout 6 | from kivy.uix.label import Label 7 | 8 | kv = """ 9 | #: import CAMIMenuRow camimenu.CAMIMenuRow 10 | #: import CAMIMenu camimenu.CAMIMenu 11 | #: import Window kivy.core.window.Window 12 | #: set row_height 0.1 * Window.height 13 | 14 | : 15 | canvas: 16 | Color: 17 | rgba: 0.3, 0.3, 0.3, 1 18 | Rectangle: 19 | size: self.size 20 | pos: self.pos 21 | rv: rv 22 | orientation: 'vertical' 23 | GridLayout: 24 | cols: 3 25 | rows: 2 26 | size_hint_y: None 27 | height: dp(108) 28 | padding: dp(8) 29 | spacing: dp(16) 30 | Button: 31 | text: 'Populate list' 32 | on_press: root.populate() 33 | Button: 34 | text: 'Sort list' 35 | on_press: root.sort() 36 | Button: 37 | text: 'Clear list' 38 | on_press: root.clear() 39 | BoxLayout: 40 | spacing: dp(8) 41 | Button: 42 | text: 'Insert new item' 43 | on_press: root.insert(new_item_input.text) 44 | TextInput: 45 | id: new_item_input 46 | size_hint_x: 0.6 47 | hint_text: 'value' 48 | padding: dp(10), dp(10), 0, 0 49 | BoxLayout: 50 | spacing: dp(8) 51 | Button: 52 | text: 'Update first item' 53 | on_press: root.update(update_item_input.text) 54 | TextInput: 55 | id: update_item_input 56 | size_hint_x: 0.6 57 | hint_text: 'new value' 58 | padding: dp(10), dp(10), 0, 0 59 | Button: 60 | text: 'Remove first item' 61 | on_press: root.remove() 62 | 63 | CAMIMenu: 64 | id: rv 65 | """ 66 | 67 | Builder.load_string(kv) 68 | 69 | 70 | class Test(BoxLayout): 71 | 72 | def callback(self, *args): 73 | print("Callback fired with {0}".format(args)) 74 | 75 | def populate(self): 76 | self.rv.data = [{'text': ''.join(sample(ascii_lowercase, 6)), 77 | 'callback': lambda y=x: self.callback(y), 78 | 'post_icons': [ 79 | {'source': 'graphics/trophy.png', 80 | 'callback': lambda y=x: self.callback( 81 | "trophy " + str(x))}, 82 | {'source': 'graphics/group.png', 83 | 'callback': lambda y=x: self.callback( 84 | "group " + str(x))} 85 | ], 86 | 'delayed_overlay': lambda y=x: self.get_progress(y), 87 | 'number': x} 88 | for x in range(50)] 89 | 90 | @staticmethod 91 | def get_progress(number): 92 | return Label(text="Delayed content {0}".format(number)) 93 | 94 | def sort(self): 95 | self.rv.data = sorted(self.rv.data, key=lambda x: x['text']) 96 | 97 | def clear(self): 98 | self.rv.data = [] 99 | 100 | def insert(self, value): 101 | self.rv.data.insert(0, {'text': value or 'default value'}) 102 | 103 | def update(self, value): 104 | if self.rv.data: 105 | self.rv.data[0]['text'] = value or 'default new value' 106 | self.rv.refresh_from_data() 107 | 108 | def remove(self): 109 | if self.rv.data: 110 | self.rv.data.pop(0) 111 | 112 | 113 | class TestApp(App): 114 | def build(self): 115 | return Test() 116 | 117 | 118 | if __name__ == '__main__': 119 | TestApp().run() 120 | -------------------------------------------------------------------------------- /Examples/Scatter/cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Scatter/cover.jpg -------------------------------------------------------------------------------- /Examples/Scatter/main.py: -------------------------------------------------------------------------------- 1 | from kivy.app import App 2 | from kivy.uix.relativelayout import RelativeLayout 3 | from kivy.uix.gridlayout import GridLayout 4 | from kivy.properties import ObjectProperty 5 | from kivy.lang import Builder 6 | 7 | Builder.load_string(''' 8 | : 9 | img: img 10 | scat: scat 11 | Scatter: 12 | id: scat 13 | Image: 14 | id: img 15 | source: "cover.jpg" 16 | 17 | : 18 | scat1: scat1 19 | rows: 2 20 | cols: 2 21 | DemoScatter: 22 | id: scat1 23 | DemoScatter: 24 | DemoScatter: 25 | DemoScatter: 26 | ''') 27 | 28 | 29 | class DemoScatter(RelativeLayout): 30 | img = ObjectProperty() 31 | scat = ObjectProperty() 32 | 33 | def on_touch_down(self, touch): 34 | ret = super(DemoScatter, self).on_touch_down(touch) 35 | if self.collide_point(*touch.pos): 36 | return True 37 | else: 38 | # Continue bubbling event 39 | return ret 40 | 41 | def apply_transform(self, trans): 42 | return self.scat.apply_transform(trans) 43 | 44 | 45 | class MainWindow(GridLayout): 46 | scat1 = ObjectProperty() 47 | 48 | def __init__(self, **kwargs): 49 | super(MainWindow, self).__init__(**kwargs) 50 | 51 | from kivy.graphics.transformation import Matrix 52 | mat = Matrix().scale(3, 3, 3) 53 | self.scat1.apply_transform(mat) 54 | print "Transform applied" 55 | 56 | 57 | class TestApp(App): 58 | def build(self): 59 | return MainWindow() 60 | 61 | TestApp().run() -------------------------------------------------------------------------------- /Examples/Services/buildozer.spec: -------------------------------------------------------------------------------- 1 | [app] 2 | 3 | # (str) Title of your application 4 | title = ServiceDemo 5 | package.name = zencode.kivy.org 6 | package.domain = service.demo 7 | 8 | # (str) Source code where the main.py live 9 | source.dir = ./ 10 | 11 | # (str) Application versioning (method 1) 12 | version = 1.0.0 13 | 14 | # (list) Application requirements 15 | requirements = python3, kivy==1.10.1, pyjnius 16 | 17 | # (list) List of service to declare 18 | #services = NAME:ENTRYPOINT_TO_PY,NAME2:ENTRYPOINT2_TO_PY 19 | services = serviceone:service_one/main.py 20 | 21 | # 22 | # Android specific 23 | # 24 | 25 | fullscreen = 1 26 | # android.permissions = INTERNET 27 | 28 | # (int) Android API to use 29 | android.api = 27 30 | android.minapi = 19 31 | android.sdk = 28 32 | 33 | # (str) Android NDK version to use 34 | # android.ndk = 16b 35 | 36 | # android.ndk_path = ~/Android/android-ndk-r16b/ 37 | android.sdk_path = ~/Android/android-sdk-28/ 38 | p4a.source_dir = ~/Repos/python-for-android 39 | 40 | [buildozer] 41 | 42 | # (int) Log level (0 = error only, 1 = info, 2 = debug (with command output)) 43 | log_level = 2 44 | 45 | # (int) Display warning if buildozer is run as root (0 = False, 1 = True) 46 | warn_on_root = 1 47 | -------------------------------------------------------------------------------- /Examples/Services/helpers.py: -------------------------------------------------------------------------------- 1 | """ 2 | A helper class for providing Operating specific functionality. 3 | """ 4 | 5 | from kivy.utils import platform 6 | 7 | 8 | class OS(object): 9 | """ 10 | A convenience class for handling OS specific sunctionality. 11 | """ 12 | 13 | @staticmethod 14 | def get_user_path(): 15 | """ 16 | Return a path that is writable by the current process and can 17 | be used to store app data. 18 | """ 19 | 20 | if platform == "android": 21 | from jnius import autoclass, cast 22 | PythonActivity = autoclass('org.kivy.android.PythonActivity') 23 | Environment = autoclass('android.os.Environment') 24 | context = cast('android.content.Context', PythonActivity.mActivity) 25 | ret = context.getExternalFilesDir( 26 | Environment.getDataDirectory().getAbsolutePath() 27 | ).getAbsolutePath() 28 | else: 29 | from os import path 30 | 31 | root = path.expanduser("~") 32 | if platform == "ios": 33 | # iOS does not seems to allow for sub-folder creation? 34 | # Documents seems to the the place to put it 35 | # https://groups.google.com/forum/#!topic/kivy-users/sQXAOecthmE 36 | ret = path.join(root, "Documents") 37 | else: 38 | ret = path.join(root, ".KivyServices") 39 | return ret 40 | 41 | -------------------------------------------------------------------------------- /Examples/Services/main.py: -------------------------------------------------------------------------------- 1 | from kivy.app import App 2 | from kivy.lang.builder import Builder 3 | from textwrap import dedent 4 | from kivy.uix.boxlayout import BoxLayout 5 | from kivy.logger import Logger 6 | from kivy.properties import BooleanProperty 7 | import zipfile 8 | from kivy.uix.popup import Popup 9 | from kivy.uix.label import Label 10 | from os.path import exists 11 | 12 | 13 | kv = dedent(''' 14 | #: import Popup kivy.uix.popup.Popup 15 | #: import Label kivy.uix.label.Label 16 | : 17 | orientation: "vertical" 18 | padding: [20, 10, 20, 10] 19 | Label: 20 | id: label 21 | markup: True 22 | halign: "center" 23 | Button: 24 | id: btn1 25 | text: "Open zip in service" 26 | on_press: root.start_service_one() 27 | Button: 28 | id: btn2 29 | text: "Open zip" 30 | on_press: root.open_zip() 31 | 32 | ''') 33 | 34 | 35 | class ServiceUI(BoxLayout): 36 | 37 | service_one = BooleanProperty(False) 38 | """ Indicates the running status of Serviceone""" 39 | 40 | def __init__(self, **kwargs): 41 | super(ServiceUI, self).__init__(**kwargs) 42 | self.ids.label.text = "[b]Service Example[/b]\n\n"\ 43 | "The process can open the zip. The service cannot." 44 | 45 | # self.ids.label.text = "[b]Service Example[/b]\n\n"\ 46 | # "In Kivy, Android services are separate, independent processes."\ 47 | # " This differs from typical Android services." 48 | 49 | def open_zip(self): 50 | """ Open the zip file that cannot be opened by the service. """ 51 | file_name = "service_one/main.zip" 52 | 53 | if not exists(file_name): 54 | Logger.info("main.py: Zip not found. Aborting...") 55 | return 56 | else: 57 | Logger.info("main.py: Zip found. About to open as binary.") 58 | 59 | my_zip = zipfile.ZipFile(file_name, "r") 60 | msg = "zip opened . contains {0}".format(my_zip.filelist[0].filename) 61 | # with open(file_name, 'rb') as f: 62 | # text = str(f.read(10)) 63 | # msg = "Text read = " + text 64 | 65 | Popup(title="Zip file", 66 | content=Label(text=msg), 67 | size_hint=(0.9, 0.5)).open() 68 | Logger.info("main.py: About to open zip file from service.") 69 | 70 | def start_service_one(self): 71 | """ Start the service """ 72 | self._start_android_service("Serviceone") 73 | 74 | def _start_android_service(self, name): 75 | """ Toggle the android service on and off """ 76 | srv_name = "service.demo.zencode.kivy.org.Service" + name 77 | Logger.info("main.py: Starting service {0}".format(srv_name)) 78 | 79 | from jnius import autoclass 80 | service = autoclass(srv_name) 81 | mActivity = autoclass( 82 | 'org.kivy.android.PythonActivity').mActivity 83 | service.start(mActivity, "") 84 | 85 | # param = '{"user_path": "' + OS.get_user_path() + '"}' 86 | # Logger.info("main.py: service param = {0}".format(param)) 87 | # service.start(mActivity, param) 88 | 89 | 90 | class ServiceExample(App): 91 | def build(self): 92 | Builder.load_string(kv) 93 | return ServiceUI() 94 | 95 | 96 | ServiceExample().run() 97 | -------------------------------------------------------------------------------- /Examples/Services/service_one/main.py: -------------------------------------------------------------------------------- 1 | from time import sleep 2 | from kivy.logger import Logger 3 | import zipfile 4 | from os.path import exists 5 | 6 | 7 | class Waiter(object): 8 | """ 9 | This class simply waits for the update to finish and then closes. 10 | """ 11 | def __init__(self): 12 | super(Waiter, self).__init__() 13 | ''' Hold a reference to the display wrapper class''' 14 | self.counter = 0 15 | 16 | def wait(self): 17 | """ Start the loop where we wait for messages. """ 18 | while self.counter < 3: 19 | Logger.info("service_one/main.py: counter = {0}".format( 20 | self.counter)) 21 | sleep(.5) 22 | self.counter += 1 23 | 24 | Logger.info("service_one/main.py: count ended. About to open") 25 | self.open_zip() 26 | 27 | def open_zip(self): 28 | """ Open a standard zip file. """ 29 | file_name = "service_one/main.zip" 30 | if exists(file_name): 31 | Logger.info("service_one/main.py: zip found. About to open.") 32 | my_zip = zipfile.ZipFile(file_name, "r") 33 | Logger.info("service_one/main.py: zip open. contains {0}".format( 34 | my_zip.filelist)) 35 | Logger.info("service_one/main.py: zip examined. Exiting.") 36 | 37 | else: 38 | Logger.info("service_one/main.py: zip not found. Exiting.") 39 | 40 | 41 | if __name__ == '__main__': 42 | Waiter().wait() 43 | 44 | -------------------------------------------------------------------------------- /Examples/Services/service_one/main.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/Services/service_one/main.zip -------------------------------------------------------------------------------- /Examples/Stencil/test.py: -------------------------------------------------------------------------------- 1 | from kivy.lang import Builder 2 | from kivy.app import App 3 | from kivy.uix.label import Label 4 | from kivy.uix.floatlayout import FloatLayout 5 | 6 | 7 | Builder.load_string(""" 8 | : 9 | canvas.before: 10 | # We push a stencil and define a clipping area in the bottom right 11 | StencilPush 12 | Rectangle: 13 | pos: 0, 0 14 | size: 200, 200 15 | StencilUse 16 | # Uncommenting the #canvas.after below breaks things because 17 | # it's in a different set of drawing instructions 18 | #canvas.after: 19 | Color: 20 | rgba: 0, 0, 1, 0.5 21 | Rectangle: 22 | pos: self.pos 23 | size: self.size 24 | StencilUnUse 25 | StencilPop 26 | Color: 27 | rgba: 0, 1, 0, 0.5 28 | Rectangle: 29 | pos: self.pos 30 | size: self.size 31 | """) 32 | 33 | 34 | class CustomLabel(Label): 35 | pass 36 | 37 | 38 | class TestApp(App): 39 | def build(self): 40 | root = FloatLayout() 41 | lbl = CustomLabel(text="Test") 42 | root.add_widget(lbl) 43 | return root 44 | 45 | if __name__ == "__main__": 46 | TestApp().run() 47 | -------------------------------------------------------------------------------- /Examples/SvgWidget/main.py: -------------------------------------------------------------------------------- 1 | from kivy.app import App 2 | from kivy.graphics.svg import Svg 3 | from kivy.uix.boxlayout import BoxLayout 4 | from kivy.graphics import Scale 5 | from kivy.uix.relativelayout import RelativeLayout 6 | from kivy.properties import StringProperty 7 | 8 | 9 | class SvgWidget(RelativeLayout): 10 | filename = StringProperty() 11 | 12 | def __init__(self, **kwargs): 13 | super(SvgWidget, self).__init__(**kwargs) 14 | with self.canvas: 15 | self.scale = Scale(1, 1, 1) 16 | self.svg = Svg(kwargs['filename']) 17 | 18 | self.bind(size=self._do_scale) 19 | 20 | def _do_scale(self, *args): 21 | self.scale.xyz = (self.width / self.svg.width, 22 | self.height / self.svg.height, 23 | 1) 24 | 25 | 26 | class SvgApp(App): 27 | def build(self): 28 | root = BoxLayout() 29 | root.add_widget(SvgWidget(filename='fox.svg')) 30 | root.add_widget(SvgWidget(filename='refresh.svg')) 31 | return root 32 | 33 | 34 | if __name__ == '__main__': 35 | SvgApp().run() 36 | -------------------------------------------------------------------------------- /Examples/SvgWidget/refresh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 41 | 47 | 53 | 60 | 67 | 69 | 71 | 73 | 75 | image/svg+xml 78 | 81 | 84 | 86 | 89 | Openclipart 92 | 94 | 96 | 98 | 101 | 104 | 107 | 110 | 112 | 114 | 116 | 118 | -------------------------------------------------------------------------------- /Examples/contents.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Examples/contents.txt -------------------------------------------------------------------------------- /IDE/PyCharm_kv_completion.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/IDE/PyCharm_kv_completion.jar -------------------------------------------------------------------------------- /IDE/README.md: -------------------------------------------------------------------------------- 1 | KV Lang File Type Support 2 | ========================= 3 | 4 | * Download this file https://github.com/Zen-CODE/kivybits/blob/master/IDE/PyCharm_kv_completion.jar?raw=true 5 | * On Pycharm’s main menu, click "File"-> "Import" (or Import Settings) 6 | * Select this file and PyCharm will present a dialog with filetypes ticked. Click OK. 7 | * You are done. Restart PyCharm. 8 | -------------------------------------------------------------------------------- /KivyCompleteVM/ReadMe.MD: -------------------------------------------------------------------------------- 1 | # Kivy Complete VM - 0.7 2 | 3 | ## Intro 4 | 5 | Greetings. This VM is intended to provide a complete Kivy launch and development 6 | environment. It is not intended to be lightweight and minimal, but complete and 7 | flexible. 8 | 9 | This document outlines the configuration and use of the VM, so that you can use 10 | and manage the machine optimally. 11 | 12 | Download [Kivy_Complete_VM_0.7](http://kivy.braintrainerplus.com/latest.ova) 13 | 14 | md5 checksum: 68a062c935afd88df9c9ddbe9e28a700 15 | 16 | Please consult the ReadMe.txt on the VM's desktop for more information. 17 | 18 | ## Checkouts 19 | 20 | The VM is configured for Python 3.6 support. The build/checkout versions of the 21 | packages are as follows: 22 | 23 | * Kivy version - 1.11.1 24 | * Ubuntu 18.04.03 25 | * buildozer - latest (as of 2019/12/12) 26 | * Python-for-android - latest (as on 2019/12/12) 27 | * Android NDK - 17c 28 | * Android SDK - 28 29 | 30 | These are checked out in the ~/Repos folder. Kivy is built in these folders, 31 | using the symlinks below. 32 | 33 | /usr/local/lib/python3.6/distpackages/kivy -> /home/kivy/Repos/kivy/kivy 34 | 35 | This means that in order to build and run a new/old version, you can simply 36 | checkout the tag (or master for latest) you wish to use, recompile and it's 37 | ready to use. 38 | 39 | ## Buildozer projects 40 | 41 | The VM contains two sample buildozer spec files that successfully build the 42 | touchtracer APK. These lie here: 43 | 44 | Python3: /home/kivy/Repos/kivy/examples/demo/touchtracer/ 45 | 46 | Please see the buildozer.spec files in these folder for the appropriate 47 | settings. 48 | 49 | The VM comes pre-installed with for: 50 | 51 | android.sdk = 28 52 | 53 | android.api = 19 or android.api = 27 54 | 55 | Other versions can be specified, but might result in the downloading and 56 | installation of these packages. 57 | 58 | ## Android SDK 59 | 60 | The VM comes with SDK 28 pre-installed. To update or reconfigure it: 61 | 62 | cd /home/kivy/Android/android-sdk-28/tools/ 63 | ./android 64 | 65 | ## Android Debugging with buildozer 66 | 67 | Please note that in order to attached devices to the VM for debugging, 68 | you first need to give permissions. Un linux hosts, this means running 69 | 70 | sudo adduser $USER vboxusers 71 | 72 | where user is your identity in the host machine. You should then be able 73 | attach a USB filter that allows the VM to pick up your devices. 74 | 75 | In order to start the adb server: 76 | 77 | cd /home/kivy/Android/android-sdk-28/platform-tools/ 78 | sudo ./adb start-server 79 | sudo ./adb start-server 80 | ./adb devices 81 | 82 | Your devices should be listed with the last command. You can then launch 83 | your app with debug output (when inside you app folder) via 84 | 85 | buildozer android debug deploy run logcat 86 | 87 | ## Feedback and support 88 | 89 | For questions and issues, please post on the google Kivy users group. 90 | 91 | https://groups.google.com/forum/#!forum/kivy-users 92 | 93 | Thanks 94 | Zen-CODE 95 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Richard Larkin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /Notes/kivy_tips.txt: -------------------------------------------------------------------------------- 1 | To force doc build via IRC: 2 | bbkv: force build doc 3 | 4 | To update the clone 5 | git pull kivy master 6 | -------------------------------------------------------------------------------- /Notes/webphoto.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Notes/webphoto.jpg -------------------------------------------------------------------------------- /Notes/zencode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Notes/zencode.png -------------------------------------------------------------------------------- /PUG/Demo 1/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PUG/Demo 1/1.png -------------------------------------------------------------------------------- /PUG/Demo 1/main.py: -------------------------------------------------------------------------------- 1 | from kivy.app import App 2 | from kivy.uix.floatlayout import FloatLayout 3 | from kivy.uix.button import Button 4 | from kivy.uix.image import Image 5 | from kivy.animation import Animation 6 | 7 | 8 | class DemoApp(App): 9 | """ 10 | The App class is a singleton and creates the base of your application. 11 | """ 12 | def build(self): 13 | """ This method returns the root widget of your application. """ 14 | float_layout = FloatLayout() 15 | button = Button(text='Click me', 16 | size_hint=(0.4, 0.2), 17 | pos_hint={'center_x': 0.5, 'center_y': 0.8}) 18 | button.bind(on_press=self.button_click) 19 | 20 | self.image = Image(source='1.png', 21 | size_hint=(0.2, 0.2), 22 | pos_hint={'right': 1, 'top': 1}, 23 | allow_stretch=True) 24 | float_layout.add_widget(self.image) 25 | 26 | float_layout.add_widget(button) 27 | return float_layout 28 | 29 | def button_click(self, button): 30 | """ Fired, via binding, when the button is clicked. """ 31 | anim = Animation(pos_hint={'x': 0, 'y': 0}, duration=1) 32 | anim += Animation(size_hint=(1, 1), duration=1, t='in_bounce') 33 | anim.start(self.image) 34 | 35 | 36 | if __name__ == "__main__": 37 | DemoApp().run() -------------------------------------------------------------------------------- /PUG/Kivy_Flask_2017.odp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PUG/Kivy_Flask_2017.odp -------------------------------------------------------------------------------- /PUG/kivy3dgui/audio_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PUG/kivy3dgui/audio_icon.png -------------------------------------------------------------------------------- /PUG/kivy3dgui/main.py: -------------------------------------------------------------------------------- 1 | from kivy.app import App 2 | from kivy.uix.gridlayout import GridLayout 3 | from kivy.uix.button import Button 4 | from kivy.uix.image import Image 5 | from kivy.uix.textinput import TextInput 6 | from kivy3dgui.layout3d import Layout3D, Node 7 | from kivy.animation import Animation 8 | 9 | 10 | class DemoApp(App): 11 | """ 12 | The App class is a singleton and creates the base of your application. 13 | """ 14 | @staticmethod 15 | def get_grid(): 16 | """ Build and return the main grid UI. """ 17 | grid = GridLayout(rows=2, cols=2) 18 | grid.add_widget( 19 | Button(text='Click me')) 20 | grid.add_widget( 21 | TextInput(text='Click me')) 22 | grid.add_widget( 23 | Image(source='audio_icon.png', allow_stretch=True)) 24 | return grid 25 | 26 | def build(self): 27 | """ This method returns the root widget of your application. """ 28 | grid = self.get_grid() 29 | 30 | layout3d = Layout3D(canvas_size=(800, 600)) 31 | node = Node( 32 | rotate=(0, 0.3, 1, 0), # Angle and x, y, z axis of rotation matrix 33 | scale=(0.4, 0.4, 0.4), # x, y, z of scaling matrix 34 | translate=(0, 0.0, -100), # x, y, z of translation matrix 35 | effect=True, 36 | meshes=("./meshes/2dbox.obj",)) 37 | node.add_widget(grid) 38 | layout3d.add_widget(node) 39 | 40 | ani = self.get_animation() 41 | ani.start(node) 42 | return layout3d 43 | 44 | @staticmethod 45 | def get_animation(): 46 | """ Return an animation object setting the rotation.""" 47 | ani = Animation(rotate=(360, 0.3, 1, 0), duration=3) +\ 48 | Animation(rotate=(0, 0.3, 1, 0), duration=3) 49 | # ani.repeat = True 50 | return ani 51 | 52 | if __name__ == "__main__": 53 | DemoApp().run() 54 | 55 | -------------------------------------------------------------------------------- /PUG/kivy3dgui/meshes/2dbox.obj: -------------------------------------------------------------------------------- 1 | # 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware 2 | # File Created: 06.12.2014 10:23:07 3 | 4 | mtllib 2dbox.mtl 5 | 6 | # 7 | # object Box01 8 | # 9 | o 2DBox 10 | v -78.2906 -60.3419 -0.0000 11 | v -78.2906 59.6581 0.0000 12 | v 81.7094 59.6581 0.0000 13 | v 81.7094 -60.3419 -0.0000 14 | v -78.2906 -60.3419 1.0000 15 | v 81.7094 -60.3419 1.0000 16 | v 81.7094 59.6581 1.0000 17 | v -78.2906 59.6581 1.0000 18 | # 8 vertices 19 | 20 | vn 0.0000 0.0000 -1.0000 21 | vn 0.0000 -0.0000 1.0000 22 | vn 0.0000 -1.0000 -0.0000 23 | vn 1.0000 0.0000 -0.0000 24 | vn 0.0000 1.0000 0.0000 25 | vn -1.0000 0.0000 -0.0000 26 | # 6 vertex normals 27 | 28 | vt 0.0005 0.0005 0.5000 29 | vt 0.0005 0.9995 0.5000 30 | vt 0.9995 0.9995 0.5000 31 | vt 0.9995 0.0005 0.5000 32 | vt 0.0005 0.0005 1.5000 33 | vt 0.9995 0.0005 1.5000 34 | vt 0.9995 0.9995 1.5000 35 | vt 0.0005 0.9995 1.5000 36 | # 8 texture coords 37 | 38 | g Box01 39 | usemtl 01___Default 40 | s 2 41 | f 1/1/1 2/2/1 3/3/1 42 | f 3/3/1 4/4/1 1/1/1 43 | s 4 44 | f 5/5/2 6/6/2 7/7/2 45 | f 7/7/2 8/8/2 5/5/2 46 | s 8 47 | f 1/1/3 4/4/3 6/6/3 48 | f 6/6/3 5/5/3 1/1/3 49 | s 16 50 | f 4/4/4 3/3/4 7/7/4 51 | f 7/7/4 6/6/4 4/4/4 52 | s 32 53 | f 3/3/5 2/2/5 8/8/5 54 | f 8/8/5 7/7/5 3/3/5 55 | s 64 56 | f 2/2/6 1/1/6 5/5/6 57 | f 5/5/6 8/8/6 2/2/6 58 | # 12 faces 59 | 60 | -------------------------------------------------------------------------------- /PyCon/ZA 2013/Outline.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/Outline.txt -------------------------------------------------------------------------------- /PyCon/ZA 2013/PyCon.odp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/PyCon.odp -------------------------------------------------------------------------------- /PyCon/ZA 2013/PyCon.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/PyCon.pdf -------------------------------------------------------------------------------- /PyCon/ZA 2013/code/from touch to gestures.py: -------------------------------------------------------------------------------- 1 | from kivy.gesture import Gesture, GestureDatabase 2 | 3 | # Create a gesture 4 | g = Gesture() 5 | g.add_stroke(point_list=[(1, 1), (3, 4), (2, 1)]) 6 | g.normalize() 7 | g.name = "triangle" 8 | 9 | # Add it to database 10 | gdb = GestureDatabase() 11 | gdb.add_gesture(g) 12 | 13 | # And for the next gesture, try to find a match! 14 | g2 = Gesture() 15 | g2.add_stroke(point_list=[(1, 1), (3, 4), (2, 1)]) 16 | g2.normalize() 17 | print gdb.find(g2).name # will print "triangle" 18 | 19 | -------------------------------------------------------------------------------- /PyCon/ZA 2013/code/grabbing a touch.py: -------------------------------------------------------------------------------- 1 | def on_touch_down(self, touch): 2 | if self.collide_point(*touch.pos): 3 | # if the touch collides with our widget, let's grab it 4 | touch.grab(self) 5 | return True # Indicate we have handled the touch 6 | 7 | 8 | def on_touch_move(self, touch): 9 | # This event can also be used to monitor grabbed touch 10 | pass 11 | 12 | 13 | def on_touch_up(self, touch): 14 | # Check if it's a grabbed touch event 15 | if touch.grab_current is self: 16 | # ok, the current touch is dispatched for us. 17 | print('I have been touched!') 18 | touch.ungrab(self) # ungrab or you might have side effects 19 | return True # indicate we have handled the event 20 | -------------------------------------------------------------------------------- /PyCon/ZA 2013/code/properties_decorators.py: -------------------------------------------------------------------------------- 1 | ''' 2 | An example of normal Python properties using decorators 3 | ''' 4 | 5 | class DecProperties(object): 6 | _text = '' 7 | 8 | @property 9 | def text(self): 10 | '''The property "getter"''' 11 | return self._text 12 | 13 | @text.setter 14 | def text(self, value): 15 | '''The property "setter"''' 16 | self._text = value 17 | 18 | if __name__ == '__main__': 19 | obj = DecProperties() 20 | obj.text = "Me" 21 | print obj.text 22 | 23 | -------------------------------------------------------------------------------- /PyCon/ZA 2013/code/properties_kivy.py: -------------------------------------------------------------------------------- 1 | ''' 2 | An example of normal Python properties using decorators 3 | ''' 4 | from kivy.properties import StringProperty 5 | from kivy.event import EventDispatcher 6 | 7 | class KivyProperties(EventDispatcher): 8 | text = StringProperty() 9 | 10 | # To listen for changes 11 | def on_text(self, instance, value): 12 | print "Changing to ", value 13 | 14 | if __name__ == '__main__': 15 | obj = KivyProperties() 16 | obj.text = "Me" 17 | print obj.text 18 | 19 | -------------------------------------------------------------------------------- /PyCon/ZA 2013/code/properties_property.py: -------------------------------------------------------------------------------- 1 | ''' 2 | An example of normal Python properties using decorators 3 | ''' 4 | from kivy.properties import StringProperty 5 | 6 | class PropProperties(object): 7 | _text = '' 8 | 9 | def _get_text(self): 10 | '''The "getter"''' 11 | return self._text 12 | 13 | def _set_text(self, value): 14 | '''The "setter"''' 15 | self._text = value 16 | 17 | text = property(_get_text, _set_text) 18 | 19 | if __name__ == '__main__': 20 | obj = PropProperties() 21 | obj.text = "Me" 22 | print obj.text 23 | 24 | -------------------------------------------------------------------------------- /PyCon/ZA 2013/code/recoding gestures.py: -------------------------------------------------------------------------------- 1 | 2 | def simplegesture(name, point_list): 3 | '''A simple helper function to create and return a gesture''' 4 | g = Gesture() 5 | g.add_stroke(point_list) 6 | g.normalize() 7 | g.name = name 8 | return g 9 | 10 | class GestureBoard(FloatLayout): 11 | def on_touch_down(self, touch): 12 | '''Collect points in touch.ud''' 13 | with self.canvas: 14 | touch.ud['line'] = Line(points=(touch.x, touch.y)) 15 | return True 16 | 17 | def on_touch_move(self, touch): 18 | '''store points of the touch movement''' 19 | try: 20 | touch.ud['line'].points += [touch.x, touch.y] 21 | return True 22 | except (KeyError) as e: 23 | pass 24 | 25 | def on_touch_up(self, touch): 26 | '''The touch is over. Create a gesture and store it''' 27 | g = simplegesture('cross', 28 | list(zip(touch.ud['line'].points[::2], touch.ud['line'].points[1::2]))) 29 | gdb = GestureDatabase() 30 | gdb.add_gesture(g) 31 | -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/Apps_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/Apps_1.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/Apps_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/Apps_2.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/CodeInput.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/CodeInput.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/GTK. Wx, Qt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/GTK. Wx, Qt.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/Interactive Launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/Interactive Launcher.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/Kivy Logo (Reduced).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/Kivy Logo (Reduced).png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/Kivy Logo 2 (Reduced).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/Kivy Logo 2 (Reduced).png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/Kivy Logo 3 (Reduced).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/Kivy Logo 3 (Reduced).png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/Kivy Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/Kivy Logo.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/Kivy_Growth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/Kivy_Growth.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/Kivy_crossplatform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/Kivy_crossplatform.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/Kivy_web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/Kivy_web.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/Popup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/Popup.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/PyMT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/PyMT.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/factory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/factory.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/final_PyCon_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/final_PyCon_background.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/from touch to gestures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/from touch to gestures.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/garden.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/garden.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/gesture recognition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/gesture recognition.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/grabbing_a_touch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/grabbing_a_touch.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/inspector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/inspector.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/kivy_designer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/kivy_designer.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/metrics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/metrics.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/properties_decorator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/properties_decorator.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/properties_event_dispatching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/properties_event_dispatching.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/properties_kivy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/properties_kivy.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/properties_kivy_listen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/properties_kivy_listen.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/properties_kivy_restricted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/properties_kivy_restricted.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/properties_normal_restricted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/properties_normal_restricted.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/properties_property.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/properties_property.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/scatter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/scatter.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/screen_metrics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/screen_metrics.png -------------------------------------------------------------------------------- /PyCon/ZA 2013/images/webdebugger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2013/images/webdebugger.png -------------------------------------------------------------------------------- /PyCon/ZA 2015/Proposal: -------------------------------------------------------------------------------- 1 | Kivy Showcase: a short exploration of how Kivy is changing the world 2 | 3 | In this talk, we will look at some real-world success stories using Kivy. From exhibition size interactive displays to race car telemetry systems to robotics, Kivy is being used to deliver many compelling and innovative applications. We'll use these applications to discuss some of the features and abilities of the framework that make it such a good choice for a wide range of uses. 4 | 5 | We'll briefly cover some exciting projects using Kivy, namely: 6 | 7 | Project Liatris: a new, open source project using Kivy touch devices to control robots. 8 | 9 | RaceCapture Pro: A race-car telemetry system that uses Kivy interactive displays both in-car and in post-session analytics interaction. 10 | 11 | Brain Trainer Plus: A mental dexterity trainer deployed to old age homes and medical treatment facilities that has been shown effective in treating dementia and other mental disorders, as well as bringing a greatly enhanced quality-of-life to the aged and mentally ill. 12 | 13 | CAMI Educational products: The rich feature set and effortless animation abilities of Kivy make developing compelling, responsive desktop and mobile interactions easy. 14 | 15 | The Icarus touch and Touch live projects: creating radically new and exciting interactive musical instruments. 16 | 17 | All of these applications are being delivered using Kivy, a free, open source, full stack, multi-touch, cross platform Python/Cython framework that runs on a watch. I kid you not. 18 | 19 | -------------------------------------------------------------------------------- /PyCon/ZA 2015/PyCon.odp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2015/PyCon.odp -------------------------------------------------------------------------------- /PyCon/ZA 2015/Videos.odt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/PyCon/ZA 2015/Videos.odt -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | kivybits 2 | ======== 3 | 4 | A collection of Kivy bits and pieces. 5 | 6 | This project aims to provide useful bits and pieces of code for use in Kivy. 7 | 8 | https://github.com/kivy/kivy -------------------------------------------------------------------------------- /Talks/2019/devs and bevs .jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Talks/2019/devs and bevs .jpg -------------------------------------------------------------------------------- /Talks/2019/media/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Talks/2019/media/architecture.png -------------------------------------------------------------------------------- /Talks/2019/media/axestar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Talks/2019/media/axestar.jpg -------------------------------------------------------------------------------- /Talks/2019/media/cami_desktop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Talks/2019/media/cami_desktop.jpg -------------------------------------------------------------------------------- /Talks/2019/media/inspector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Talks/2019/media/inspector.png -------------------------------------------------------------------------------- /Talks/2019/media/stu_with_cube.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Talks/2019/media/stu_with_cube.jpg -------------------------------------------------------------------------------- /Talks/2019/media/webdebugger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Talks/2019/media/webdebugger.png -------------------------------------------------------------------------------- /Talks/2019/media/website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Talks/2019/media/website.png -------------------------------------------------------------------------------- /Talks/2019/media/zen-code.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Talks/2019/media/zen-code.jpg -------------------------------------------------------------------------------- /Talks/2020/Kivy_3D_Input/leap-device.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Talks/2020/Kivy_3D_Input/leap-device.png -------------------------------------------------------------------------------- /Talks/2020/Kivy_3D_Input/logo-kivy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Talks/2020/Kivy_3D_Input/logo-kivy.png -------------------------------------------------------------------------------- /Talks/2020/terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zen-CODE/kivybits/86ea1f143586f51b16a9deb6034c73876860bf83/Talks/2020/terminal.png --------------------------------------------------------------------------------