From cdb11c4aa9d7b7a26e687968ad916ac4f7dd78f1 Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Tue, 16 Oct 2012 11:44:34 -0600 Subject: [PATCH 01/29] Add a new showcase example that allows interactive editing of Kivy language code to see how it affects the widgets. --- examples/demo/kivycatalog/DroidSansMono.ttf | Bin 0 -> 117072 bytes examples/demo/kivycatalog/README | 20 +++ .../container_kvs/AnchorLayoutContainer.kv | 15 ++ .../container_kvs/BoxLayoutContainer.kv | 14 ++ .../container_kvs/ButtonContainer.kv | 27 +++ .../container_kvs/CheckBoxContainer.kv | 27 +++ .../container_kvs/FileChooserContainer.kv | 19 +++ .../container_kvs/FloatLayoutContainer.kv | 16 ++ .../container_kvs/GridLayoutContainer.kv | 20 +++ .../container_kvs/LabelContainer.kv | 21 +++ .../container_kvs/MediaContainer.kv | 9 + .../container_kvs/PlaygroundContainer.kv | 4 + .../container_kvs/PopupContainer.kv | 23 +++ .../container_kvs/ProgressBarContainer.kv | 17 ++ .../container_kvs/RestContainer.kv | 5 + .../container_kvs/ScatterContainer.kv | 16 ++ .../container_kvs/SelectorsContainer.kv | 10 ++ .../container_kvs/StackLayoutContainer.kv | 25 +++ .../container_kvs/TextContainer.kv | 20 +++ examples/demo/kivycatalog/kivycatalog.kv | 161 ++++++++++++++++++ examples/demo/kivycatalog/main.py | 138 +++++++++++++++ 21 files changed, 607 insertions(+) create mode 100644 examples/demo/kivycatalog/DroidSansMono.ttf create mode 100644 examples/demo/kivycatalog/README create mode 100644 examples/demo/kivycatalog/container_kvs/AnchorLayoutContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/BoxLayoutContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/ButtonContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/CheckBoxContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/FileChooserContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/FloatLayoutContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/GridLayoutContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/LabelContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/MediaContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/PlaygroundContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/PopupContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/ProgressBarContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/RestContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/ScatterContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/SelectorsContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/StackLayoutContainer.kv create mode 100644 examples/demo/kivycatalog/container_kvs/TextContainer.kv create mode 100644 examples/demo/kivycatalog/kivycatalog.kv create mode 100644 examples/demo/kivycatalog/main.py diff --git a/examples/demo/kivycatalog/DroidSansMono.ttf b/examples/demo/kivycatalog/DroidSansMono.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6e79dad17fc95ac20b6f52097f70b2ca652316f2 GIT binary patch literal 117072 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: + language_box: language_box + BoxLayout: + spacing: 5 + TabbedPanel: + size_hint: .6, 1 + tab_pos: "left_top" + default_tab_text: "Introduction" + default_tab_content: introduction_tab + on_default_tab: root.show_kv(*args) + + + Accordion: + id: introduction_tab + AccordionItem: + on_collapse: root.show_kv(*args) + title: "Playground" + kv_container: playground + PlaygroundContainer: + id: playground + AccordionItem: + title: "Welcome" + Label: + text_size: self.width-60, self.height-60 + valign: "middle" + text: "The Kivy Catalog is an interactive showcase of Kivy Widgets defined in the Kivy language. For each widget you see, you can directly edit the .kv language syntax to see what effects your changes have on the widget.\n\nThere is also a playground on this tab where you can test your Kivy language code directly. This is beta software. The basics seem to work, but some widgets are missing or don't have the ideal .kv representation. Not all widgets are represented yet. It is trivial to add a new .kv file to the interface.\n\nPull requests are welcome." + + TabbedPanelHeader: + text: 'Layouts' + content: layout_tab + on_state: root.show_kv(*args) + TabbedPanelHeader: + text: 'UX Widgets' + content: basic_widgets + on_state: root.show_kv(*args) + TabbedPanelHeader: + text: 'Complex' + content: complex_widgets + on_state: root.show_kv(*args) + + Accordion: + id: layout_tab + AccordionItem: + on_collapse: root.show_kv(*args) + title: "FloatLayout" + kv_container: floatlayoutcontainer + FloatLayoutContainer: + id: floatlayoutcontainer + AccordionItem: + on_collapse: root.show_kv(*args) + title: "BoxLayout" + kv_container: boxlayoutcontainer + BoxLayoutContainer: + id: boxlayoutcontainer + AccordionItem: + on_collapse: root.show_kv(*args) + title: "AnchorLayout" + kv_container: anchorlayoutcontainer + AnchorLayoutContainer: + id: anchorlayoutcontainer + AccordionItem: + on_collapse: root.show_kv(*args) + title: "GridLayout" + kv_container: gridlayoutcontainer + GridLayoutContainer: + id: gridlayoutcontainer + AccordionItem: + on_collapse: root.show_kv(*args) + title: "StackLayout" + kv_container: stacklayoutcontainer + StackLayoutContainer: + id: stacklayoutcontainer + Accordion: + id: basic_widgets + AccordionItem: + on_collapse: root.show_kv(*args) + title: "Buttons" + kv_container: buttoncontainer + ButtonContainer: + id: buttoncontainer + AccordionItem: + on_collapse: root.show_kv(*args) + title: "Labels" + kv_container: labelcontainer + LabelContainer: + id: labelcontainer + AccordionItem: + on_collapse: root.show_kv(*args) + title: "Booleans" + kv_container: checkboxcontainer + CheckBoxContainer: + id: checkboxcontainer + AccordionItem: + on_collapse: root.show_kv(*args) + title: "Progress Bar" + kv_container: progressbarcontainer + ProgressBarContainer: + id: progressbarcontainer + AccordionItem: + on_collapse: root.show_kv(*args) + title: "Media" + kv_container: mediacontainer + MediaContainer: + id: mediacontainer + AccordionItem: + on_collapse: root.show_kv(*args) + title: "Text" + kv_container: textcontainer + TextContainer: + id: textcontainer + Accordion: + id: complex_widgets + AccordionItem: + on_collapse: root.show_kv(*args) + title: "Popups" + kv_container: popupcontainer + PopupContainer: + id: popupcontainer + AccordionItem: + on_collapse: root.show_kv(*args) + title: "Selectors" + kv_container: selectorscontainer + SelectorsContainer: + id: selectorscontainer + AccordionItem: + on_collapse: root.show_kv(*args) + title: "FileChoosers" + kv_container: filechoosercontainer + FileChooserContainer: + id: filechoosercontainer + AccordionItem: + on_collapse: root.show_kv(*args) + title: "Scatter" + kv_container: scatter + ScatterContainer: + id: scatter + AccordionItem: + on_collapse: root.show_kv(*args) + title: "ReST" + kv_container: rest + RestContainer: + id: rest + + BoxLayout: + id: bl + orientation: "vertical" + size_hint: .4, 1 + TextInput: + text_size: self.width-20, self.height-20 + font_name: "DroidSansMono.ttf" + valign: "top" + id: language_box + text: "This box will display the kivy language for whatever has been selected" + Button: + size_hint: 1, None + height: 50 + text: "Render" + on_press: root.change_kv(*args) diff --git a/examples/demo/kivycatalog/main.py b/examples/demo/kivycatalog/main.py new file mode 100644 index 000000000..74bb85ef7 --- /dev/null +++ b/examples/demo/kivycatalog/main.py @@ -0,0 +1,138 @@ +import os +from kivy.app import App +from kivy.factory import Factory +from kivy.lang import Builder, Parser, ParserException +from kivy.properties import ObjectProperty + +from kivy.uix.boxlayout import BoxLayout +from kivy.uix.popup import Popup +from kivy.uix.label import Label + +'''List of classes that need to be instantiated in the factory from .kv files. +''' +CONTAINER_CLASSES = [c[:-3] for c in os.listdir('container_kvs') + if c.endswith('.kv')] + + +def factoryable(class_name, parents, attrs): + '''Metaclass that automatically records the resultant class in the Factory. + This allows the class to be accessed inside the .kv language file in the + Builder. + ''' + cls = type(class_name, parents, attrs) + Factory.register(class_name, cls) + return cls + + +class Container(BoxLayout): + '''A container is essentially a class that loads its root from a known + .kv file. + + The name of the .kv file is taken from the Container's class. + We can't just use kv rules because the class may be edited + in the interface and reloaded by the user. + See :meth: change_kv where this happens. + ''' + __metaclass__ = factoryable + + def __init__(self, **kwargs): + super(Container, self).__init__(**kwargs) + parser = Parser(content=file(self.kv_file).read()) + widget = Factory.get(parser.root.name)() + Builder._apply_rule(widget, parser.root, parser.root) + self.add_widget(widget) + + @property + def kv_file(self): + '''Get the name of the kv file, a lowercase version of the class name.''' + return os.path.join('container_kvs', + self.__class__.__name__ + ".kv") + + +for class_name in CONTAINER_CLASSES: + globals()[class_name] = type(class_name, (Container,), {}) + + +class Catalog(BoxLayout): + '''Catalog of widgets. This is the root widget of the app. It contains + a tabbed pain of widgets that can be displayed and a textbox where .kv + language files for widgets being demoed can be edited. + + The entire interface for the Catalog is defined in kivycatalog.kv, although + individual containers are defined in the container_kvs directory. + + To add a container to the catalog, + first create the .kv file in container_kvs + The name of the file (sans .kv) will be the name of the widget available + inside the kivycatalog.kv + Finally modify kivycatalog.kv to add an AccordionItem + to hold the new widget. + Follow the examples in kivycatalog.kv to ensure the item + has an appropriate id and the class has been referenced. + + You do not need to edit any python code, just .kv language files! + ''' + language_box = ObjectProperty() + + def __init__(self, **kwargs): + super(Catalog, self).__init__(**kwargs) + self.kv_container = None + from kivy.clock import Clock + Clock.schedule_once(self.show_kv) + + def show_kv(self, object, collapsed=None): + '''Called when an accordionitem is collapsed or expanded. If it + was expanded, we need to show the .kv language file associated with + the newly revealed container.''' + if collapsed == "down": # a tabbed panel was clicked, not an accordion + object = object.content.children[0] + collapsed = False + if collapsed is False and hasattr(object, "kv_container"): + with open(object.kv_container.kv_file) as file: + self.language_box.background_color = (1, 1, 1, 1) + self.language_box.readonly = False + self.language_box.text = file.read() + self.kv_container = object.kv_container + else: + self.language_box.background_color = (1, 1, 1, .5) + self.language_box.text = "" + self.language_box.readonly = True + self.kv_container = None + + def change_kv(self, button): + '''Called when the update button is clicked. Needs to update the + interface for the currently active kv widget, if there is one based + on the kv file the user entered. If there is an error in their kv + syntax, show a nice popup.''' + if self.kv_container: + try: + parser = Parser(content=self.language_box.text.encode('utf8')) + self.kv_container.clear_widgets() + widget = Factory.get(parser.root.name)() + Builder._apply_rule(widget, parser.root, parser.root) + self.kv_container.add_widget(widget) + except (SyntaxError, ParserException) as e: + content = Label(text=str(e), text_size=(350, None)) + popup = Popup(title="Parse Error in Kivy Language Markup", + content=content, text_size=(350, None), + size_hint=(None, None), size=(400, 400)) + popup.open() + except: + import traceback + traceback.print_exc() + popup = Popup(title="Boom", + content=Label(text="Something horrible happened while parsing your Kivy Language", text_size=(350, None)), + text_size=(350, None), + size_hint=(None, None), size=(400, 400)) + popup.open() + + +class KivyCatalogApp(App): + '''The kivy App that runs the main root. All we do is build a catalog + widget into the root.''' + def build(self): + return Catalog() + + +if __name__ == "__main__": + KivyCatalogApp().run() From c093c824004ae0fb276554a3120b89d283200a56 Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Wed, 17 Oct 2012 19:13:34 -0600 Subject: [PATCH 02/29] class decorators are so much sexier than meta classes --- examples/demo/kivycatalog/main.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/demo/kivycatalog/main.py b/examples/demo/kivycatalog/main.py index 74bb85ef7..21d7700ba 100644 --- a/examples/demo/kivycatalog/main.py +++ b/examples/demo/kivycatalog/main.py @@ -14,16 +14,17 @@ CONTAINER_CLASSES = [c[:-3] for c in os.listdir('container_kvs') if c.endswith('.kv')] -def factoryable(class_name, parents, attrs): - '''Metaclass that automatically records the resultant class in the Factory. - This allows the class to be accessed inside the .kv language file in the - Builder. +def factoryable(cls): + '''Class decorator that automatically records + the resultant class in the Factory. + This allows the class to be accessed + inside the .kv language file in the Builder. ''' - cls = type(class_name, parents, attrs) - Factory.register(class_name, cls) + Factory.register(cls.__name__, cls) return cls +@factoryable class Container(BoxLayout): '''A container is essentially a class that loads its root from a known .kv file. @@ -33,7 +34,6 @@ class Container(BoxLayout): in the interface and reloaded by the user. See :meth: change_kv where this happens. ''' - __metaclass__ = factoryable def __init__(self, **kwargs): super(Container, self).__init__(**kwargs) From a10a5131338d6b1af1edabc39e539481a71561f6 Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Wed, 17 Oct 2012 19:26:10 -0600 Subject: [PATCH 03/29] Add a keybinding to the Kivy textarea to render when ctrl-S is pressed. --- examples/demo/kivycatalog/kivycatalog.kv | 2 +- examples/demo/kivycatalog/main.py | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/examples/demo/kivycatalog/kivycatalog.kv b/examples/demo/kivycatalog/kivycatalog.kv index 8fb2d2e54..636f425b7 100644 --- a/examples/demo/kivycatalog/kivycatalog.kv +++ b/examples/demo/kivycatalog/kivycatalog.kv @@ -148,7 +148,7 @@ id: bl orientation: "vertical" size_hint: .4, 1 - TextInput: + KivyRenderTextInput: text_size: self.width-20, self.height-20 font_name: "DroidSansMono.ttf" valign: "top" diff --git a/examples/demo/kivycatalog/main.py b/examples/demo/kivycatalog/main.py index 21d7700ba..b7fa5fc4e 100644 --- a/examples/demo/kivycatalog/main.py +++ b/examples/demo/kivycatalog/main.py @@ -1,4 +1,5 @@ import os +import sys from kivy.app import App from kivy.factory import Factory from kivy.lang import Builder, Parser, ParserException @@ -7,6 +8,7 @@ from kivy.properties import ObjectProperty from kivy.uix.boxlayout import BoxLayout from kivy.uix.popup import Popup from kivy.uix.label import Label +from kivy.uix.textinput import TextInput '''List of classes that need to be instantiated in the factory from .kv files. ''' @@ -53,6 +55,25 @@ for class_name in CONTAINER_CLASSES: globals()[class_name] = type(class_name, (Container,), {}) +@factoryable +class KivyRenderTextInput(TextInput): + def _keyboard_on_key_down(self, window, keycode, text, modifiers): + is_osx = sys.platform == 'darwin' + # Keycodes on OSX: + ctrl, cmd = 64, 1024 + key, key_str = keycode + + if text and not key in (self.interesting_keys.keys() + [27]): + # This allows *either* ctrl *or* cmd, but not both. + if modifiers == ['ctrl'] or (is_osx and modifiers == ['meta']): + if key == ord('s'): + self.parent.parent.parent.change_kv(True) + return + + super(KivyRenderTextInput, self)._keyboard_on_key_down( + window, keycode, text, modifiers) + + class Catalog(BoxLayout): '''Catalog of widgets. This is the root widget of the app. It contains a tabbed pain of widgets that can be displayed and a textbox where .kv From 4a4adfeaac9ef7090189a1e8e2f7f48c26eed507 Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Wed, 17 Oct 2012 19:32:12 -0600 Subject: [PATCH 04/29] Update the more or less pathetic help screen. --- examples/demo/kivycatalog/kivycatalog.kv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/demo/kivycatalog/kivycatalog.kv b/examples/demo/kivycatalog/kivycatalog.kv index 636f425b7..be37b77f7 100644 --- a/examples/demo/kivycatalog/kivycatalog.kv +++ b/examples/demo/kivycatalog/kivycatalog.kv @@ -26,7 +26,7 @@ Label: text_size: self.width-60, self.height-60 valign: "middle" - text: "The Kivy Catalog is an interactive showcase of Kivy Widgets defined in the Kivy language. For each widget you see, you can directly edit the .kv language syntax to see what effects your changes have on the widget.\n\nThere is also a playground on this tab where you can test your Kivy language code directly. This is beta software. The basics seem to work, but some widgets are missing or don't have the ideal .kv representation. Not all widgets are represented yet. It is trivial to add a new .kv file to the interface.\n\nPull requests are welcome." + text: "The Kivy Catalog is an interactive showcase of Kivy Widgets defined in the Kivy language. For each widget you see, you can directly edit the .kv language syntax to see what effects your changes have on the widget. Click 'Render' or hit 'Ctrl-S' to view your changes.\n\nThere is also a playground on this tab where you can test your Kivy language code directly. This is beta software. The basics seem to work, but some widgets are missing or don't have the ideal .kv representation. Not all widgets are represented yet. It is trivial to add a new .kv file to the interface.\n\nPull requests are welcome." TabbedPanelHeader: text: 'Layouts' From 4715beff3643a726a99df8a6eaa91702b84ded50 Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Wed, 17 Oct 2012 21:48:34 -0600 Subject: [PATCH 05/29] Switch to a screen manager for better use of screen real estate --- .../container_kvs/PlaygroundContainer.kv | 4 +- examples/demo/kivycatalog/kivycatalog.kv | 241 ++++++++---------- examples/demo/kivycatalog/main.py | 76 +++--- 3 files changed, 140 insertions(+), 181 deletions(-) diff --git a/examples/demo/kivycatalog/container_kvs/PlaygroundContainer.kv b/examples/demo/kivycatalog/container_kvs/PlaygroundContainer.kv index afb25979b..9cdb3352d 100644 --- a/examples/demo/kivycatalog/container_kvs/PlaygroundContainer.kv +++ b/examples/demo/kivycatalog/container_kvs/PlaygroundContainer.kv @@ -1,4 +1,6 @@ #:kivy 1.4 Label: - text: "Paste your Kivy code in here and render!" \ No newline at end of file + text_size: self.width-60, self.height-60 + valign: "middle" + text: "The Kivy Catalog is an interactive showcase of Kivy Widgets defined in the Kivy language. For each widget you see, you can directly edit the .kv language syntax to see what effects your changes have on the widget. Click 'Render' or hit 'Ctrl-S' to view your changes.\n\nThere is also a playground on this tab where you can test your Kivy language code directly. This is beta software. The basics seem to work, but some widgets are missing or don't have the ideal .kv representation. Not all widgets are represented yet. It is trivial to add a new .kv file to the interface.\n\nPull requests are welcome." diff --git a/examples/demo/kivycatalog/kivycatalog.kv b/examples/demo/kivycatalog/kivycatalog.kv index be37b77f7..371b3f824 100644 --- a/examples/demo/kivycatalog/kivycatalog.kv +++ b/examples/demo/kivycatalog/kivycatalog.kv @@ -1,153 +1,112 @@ #:kivy 1.4 +[ContainerToggle@ToggleButton]: + group: "container_toggle" + text: ctx.text + on_press: root.parent.parent.parent.show_kv(*args) + state: ctx.state if hasattr(ctx, "state") else "normal" : language_box: language_box + screen_manager: screen_manager BoxLayout: - spacing: 5 - TabbedPanel: - size_hint: .6, 1 - tab_pos: "left_top" - default_tab_text: "Introduction" - default_tab_content: introduction_tab - on_default_tab: root.show_kv(*args) - - - Accordion: - id: introduction_tab - AccordionItem: - on_collapse: root.show_kv(*args) - title: "Playground" - kv_container: playground - PlaygroundContainer: - id: playground - AccordionItem: - title: "Welcome" - Label: - text_size: self.width-60, self.height-60 - valign: "middle" - text: "The Kivy Catalog is an interactive showcase of Kivy Widgets defined in the Kivy language. For each widget you see, you can directly edit the .kv language syntax to see what effects your changes have on the widget. Click 'Render' or hit 'Ctrl-S' to view your changes.\n\nThere is also a playground on this tab where you can test your Kivy language code directly. This is beta software. The basics seem to work, but some widgets are missing or don't have the ideal .kv representation. Not all widgets are represented yet. It is trivial to add a new .kv file to the interface.\n\nPull requests are welcome." - - TabbedPanelHeader: - text: 'Layouts' - content: layout_tab - on_state: root.show_kv(*args) - TabbedPanelHeader: - text: 'UX Widgets' - content: basic_widgets - on_state: root.show_kv(*args) - TabbedPanelHeader: - text: 'Complex' - content: complex_widgets - on_state: root.show_kv(*args) - - Accordion: - id: layout_tab - AccordionItem: - on_collapse: root.show_kv(*args) - title: "FloatLayout" - kv_container: floatlayoutcontainer - FloatLayoutContainer: - id: floatlayoutcontainer - AccordionItem: - on_collapse: root.show_kv(*args) - title: "BoxLayout" - kv_container: boxlayoutcontainer - BoxLayoutContainer: - id: boxlayoutcontainer - AccordionItem: - on_collapse: root.show_kv(*args) - title: "AnchorLayout" - kv_container: anchorlayoutcontainer - AnchorLayoutContainer: - id: anchorlayoutcontainer - AccordionItem: - on_collapse: root.show_kv(*args) - title: "GridLayout" - kv_container: gridlayoutcontainer - GridLayoutContainer: - id: gridlayoutcontainer - AccordionItem: - on_collapse: root.show_kv(*args) - title: "StackLayout" - kv_container: stacklayoutcontainer - StackLayoutContainer: - id: stacklayoutcontainer - Accordion: - id: basic_widgets - AccordionItem: - on_collapse: root.show_kv(*args) - title: "Buttons" - kv_container: buttoncontainer - ButtonContainer: - id: buttoncontainer - AccordionItem: - on_collapse: root.show_kv(*args) - title: "Labels" - kv_container: labelcontainer - LabelContainer: - id: labelcontainer - AccordionItem: - on_collapse: root.show_kv(*args) - title: "Booleans" - kv_container: checkboxcontainer - CheckBoxContainer: - id: checkboxcontainer - AccordionItem: - on_collapse: root.show_kv(*args) - title: "Progress Bar" - kv_container: progressbarcontainer - ProgressBarContainer: - id: progressbarcontainer - AccordionItem: - on_collapse: root.show_kv(*args) - title: "Media" - kv_container: mediacontainer - MediaContainer: - id: mediacontainer - AccordionItem: - on_collapse: root.show_kv(*args) - title: "Text" - kv_container: textcontainer - TextContainer: - id: textcontainer - Accordion: - id: complex_widgets - AccordionItem: - on_collapse: root.show_kv(*args) - title: "Popups" - kv_container: popupcontainer - PopupContainer: - id: popupcontainer - AccordionItem: - on_collapse: root.show_kv(*args) - title: "Selectors" - kv_container: selectorscontainer - SelectorsContainer: - id: selectorscontainer - AccordionItem: - on_collapse: root.show_kv(*args) - title: "FileChoosers" - kv_container: filechoosercontainer - FileChooserContainer: - id: filechoosercontainer - AccordionItem: - on_collapse: root.show_kv(*args) - title: "Scatter" - kv_container: scatter - ScatterContainer: - id: scatter - AccordionItem: - on_collapse: root.show_kv(*args) - title: "ReST" - kv_container: rest - RestContainer: - id: rest + BoxLayout: + size_hint: None, 1 + orientation: "vertical" + ContainerToggle: + text: "Welcome" + state: "down" + ContainerToggle: + text: "Float Layout" + ContainerToggle: + text: "Box Layout" + ContainerToggle: + text: "Anchor Layout" + ContainerToggle: + text: "Grid Layout" + ContainerToggle: + text: "Stack Layout" + ContainerToggle: + text: "Buttons" + ContainerToggle: + text: "Labels" + ContainerToggle: + text: "Booleans" + ContainerToggle: + text: "Progress Bar" + ContainerToggle: + text: "Media" + ContainerToggle: + text: "Text" + ContainerToggle: + text: "Popups" + ContainerToggle: + text: "Selectors" + ContainerToggle: + text: "File Choosers" + ContainerToggle: + text: "Scatter" + ContainerToggle: + text: "ReST" + ScreenManager: + id: screen_manager + size_hint: 1, 1 + Screen: + name: "Welcome" + PlaygroundContainer: + Screen: + name: "Float Layout" + FloatLayoutContainer + Screen: + name: "Box Layout" + BoxLayoutContainer: + Screen: + name: "Anchor Layout" + AnchorLayoutContainer: + Screen: + name: "Grid Layout" + GridLayoutContainer: + Screen: + name: "Stack Layout" + StackLayoutContainer: + Screen: + name: "Buttons" + ButtonContainer: + Screen: + name: "Labels" + LabelContainer: + Screen: + name: "Booleans" + CheckBoxContainer: + Screen: + name: "Progress Bar" + ProgressBarContainer: + Screen: + name: "Media" + MediaContainer: + Screen: + name: "Text" + TextContainer: + Screen: + name: "Popups" + PopupContainer: + Screen: + name: "Selectors" + SelectorsContainer: + Screen: + name: "File Choosers" + FileChooserContainer: + Screen: + name: "Scatter" + ScatterContainer: + Screen: + name: "ReST" + RestContainer: BoxLayout: id: bl orientation: "vertical" - size_hint: .4, 1 + size_hint: 1, 1 KivyRenderTextInput: text_size: self.width-20, self.height-20 font_name: "DroidSansMono.ttf" @@ -158,4 +117,4 @@ size_hint: 1, None height: 50 text: "Render" - on_press: root.change_kv(*args) + on_press: root.change_kv(*args) \ No newline at end of file diff --git a/examples/demo/kivycatalog/main.py b/examples/demo/kivycatalog/main.py index b7fa5fc4e..c8b1983a0 100644 --- a/examples/demo/kivycatalog/main.py +++ b/examples/demo/kivycatalog/main.py @@ -94,58 +94,56 @@ class Catalog(BoxLayout): You do not need to edit any python code, just .kv language files! ''' language_box = ObjectProperty() + screen_manager = ObjectProperty() def __init__(self, **kwargs): super(Catalog, self).__init__(**kwargs) - self.kv_container = None - from kivy.clock import Clock - Clock.schedule_once(self.show_kv) + self.show_kv(None) - def show_kv(self, object, collapsed=None): + def show_kv(self, object): '''Called when an accordionitem is collapsed or expanded. If it was expanded, we need to show the .kv language file associated with the newly revealed container.''' - if collapsed == "down": # a tabbed panel was clicked, not an accordion - object = object.content.children[0] - collapsed = False - if collapsed is False and hasattr(object, "kv_container"): - with open(object.kv_container.kv_file) as file: - self.language_box.background_color = (1, 1, 1, 1) - self.language_box.readonly = False - self.language_box.text = file.read() - self.kv_container = object.kv_container - else: - self.language_box.background_color = (1, 1, 1, .5) - self.language_box.text = "" - self.language_box.readonly = True - self.kv_container = None + + # if object is not passed, it's initialization, we just need to load + # the file + if object: + # one button must always be pressed, even if user presses it again + if object.state == "normal": + object.state = "down" + + self.screen_manager.current = object.text + + with open(self.screen_manager.current_screen.content.children[ + 0].kv_file) as file: + self.language_box.text = file.read() def change_kv(self, button): '''Called when the update button is clicked. Needs to update the interface for the currently active kv widget, if there is one based on the kv file the user entered. If there is an error in their kv syntax, show a nice popup.''' - if self.kv_container: - try: - parser = Parser(content=self.language_box.text.encode('utf8')) - self.kv_container.clear_widgets() - widget = Factory.get(parser.root.name)() - Builder._apply_rule(widget, parser.root, parser.root) - self.kv_container.add_widget(widget) - except (SyntaxError, ParserException) as e: - content = Label(text=str(e), text_size=(350, None)) - popup = Popup(title="Parse Error in Kivy Language Markup", - content=content, text_size=(350, None), - size_hint=(None, None), size=(400, 400)) - popup.open() - except: - import traceback - traceback.print_exc() - popup = Popup(title="Boom", - content=Label(text="Something horrible happened while parsing your Kivy Language", text_size=(350, None)), - text_size=(350, None), - size_hint=(None, None), size=(400, 400)) - popup.open() + kv_container = self.screen_manager.current_screen.content.children[0] + try: + parser = Parser(content=self.language_box.text.encode('utf8')) + kv_container.clear_widgets() + widget = Factory.get(parser.root.name)() + Builder._apply_rule(widget, parser.root, parser.root) + kv_container.add_widget(widget) + except (SyntaxError, ParserException) as e: + content = Label(text=str(e), text_size=(350, None)) + popup = Popup(title="Parse Error in Kivy Language Markup", + content=content, text_size=(350, None), + size_hint=(None, None), size=(400, 400)) + popup.open() + except: + import traceback + traceback.print_exc() + popup = Popup(title="Boom", + content=Label(text="Something horrible happened while parsing your Kivy Language", text_size=(350, None)), + text_size=(350, None), + size_hint=(None, None), size=(400, 400)) + popup.open() class KivyCatalogApp(App): From d2538382cd947ccc43a4e902d0235c7c3268340e Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Wed, 17 Oct 2012 21:50:23 -0600 Subject: [PATCH 06/29] Fix bugs in scatter demo --- examples/demo/kivycatalog/container_kvs/ScatterContainer.kv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/demo/kivycatalog/container_kvs/ScatterContainer.kv b/examples/demo/kivycatalog/container_kvs/ScatterContainer.kv index 16cd4d93c..3b94f6124 100644 --- a/examples/demo/kivycatalog/container_kvs/ScatterContainer.kv +++ b/examples/demo/kivycatalog/container_kvs/ScatterContainer.kv @@ -1,12 +1,12 @@ #:kivy 1.4 -BoxLayout: +FloatLayout: Scatter: size_hint: None, None size: 100, 100 pos: 100, 100 Image: - source: 'softboy.png' + source: "../../widgets/softboy.png" Scatter: size_hint: None, None size: 100, 100 From 967ba589621ac520728609f400375c930385cb71 Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Wed, 17 Oct 2012 21:53:42 -0600 Subject: [PATCH 07/29] One issue fixed --- examples/demo/kivycatalog/README | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/demo/kivycatalog/README b/examples/demo/kivycatalog/README index e51568e75..e9b5dc8ce 100644 --- a/examples/demo/kivycatalog/README +++ b/examples/demo/kivycatalog/README @@ -11,7 +11,6 @@ python main.py and browse or edit widgets to your heart's content. Known bugs: * StackLayout is misbehaving * The DropDown item I had tested completely crashes Kivy -* Scatter seems to do some weird translation on multitouch. This is probably an Accordion related bug * The GridLayout example could use some extra features * If you try to start the app with focused set to true, weird stuff happens. but it works fine if you set focused to true and press render. From d9bf952eba4d470a8f8a98e8f21c460a0b2a7fc2 Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Wed, 17 Oct 2012 21:58:11 -0600 Subject: [PATCH 08/29] Make the text area a fixed width to give more room to demo results --- examples/demo/kivycatalog/kivycatalog.kv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/demo/kivycatalog/kivycatalog.kv b/examples/demo/kivycatalog/kivycatalog.kv index 371b3f824..c97b33af4 100644 --- a/examples/demo/kivycatalog/kivycatalog.kv +++ b/examples/demo/kivycatalog/kivycatalog.kv @@ -50,7 +50,6 @@ text: "ReST" ScreenManager: id: screen_manager - size_hint: 1, 1 Screen: name: "Welcome" PlaygroundContainer: @@ -106,7 +105,8 @@ BoxLayout: id: bl orientation: "vertical" - size_hint: 1, 1 + size_hint: None, 1 + width: 400 KivyRenderTextInput: text_size: self.width-20, self.height-20 font_name: "DroidSansMono.ttf" From 21338d9e9d19d302de138030236eaab22fe44c08 Mon Sep 17 00:00:00 2001 From: Bruno Gola Date: Thu, 18 Oct 2012 07:40:02 -0300 Subject: [PATCH 09/29] fixes typo in kivy/interactive.py documentation --- kivy/interactive.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kivy/interactive.py b/kivy/interactive.py index 063625c28..b07f9f03b 100644 --- a/kivy/interactive.py +++ b/kivy/interactive.py @@ -43,7 +43,7 @@ can be quickly listed by using the '.' operator and pressing 'tab.' Try this code in an Ipython shell.:: from kivy.interactive import InteractiveLauncher - from kivy.app imort App + from kivy.app import App from kivy.uix.widget import Widget from kivy.graphics import Color, Ellipse From fad78dc6d267492aaa83ccdfa0ad3c01059c02c5 Mon Sep 17 00:00:00 2001 From: tshirtman Date: Thu, 18 Oct 2012 17:47:49 +0200 Subject: [PATCH 10/29] add .travis.yml --- .travis.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..32b95f7ad --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +language: python +python: + - "2.6" + - "2.7" +# command to install dependencies +before_install: + - sudo apt-get update + - sudo apt-get install python-setuptools python-pygame python-opengl python-gst0.10 python-enchant gstreamer-0.10-plugins-good python-dev build-essential libgl1-mesa-dev libgles2-mesa-dev + +install: + - pip install --upgrade cython --use-mirrors + +# command to run tests +script: + - make test From 5a36ff00eacc19dd94b8064ba3059fe78ce2bc29 Mon Sep 17 00:00:00 2001 From: tshirtman Date: Thu, 18 Oct 2012 17:54:44 +0200 Subject: [PATCH 11/29] fix typo in travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 32b95f7ad..aa6abf8a6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ python: # command to install dependencies before_install: - sudo apt-get update - - sudo apt-get install python-setuptools python-pygame python-opengl python-gst0.10 python-enchant gstreamer-0.10-plugins-good python-dev build-essential libgl1-mesa-dev libgles2-mesa-dev + - sudo apt-get install python-setuptools python-pygame python-opengl python-gst0.10 python-enchant gstreamer0.10-plugins-good python-dev build-essential libgl1-mesa-dev libgles2-mesa-dev install: - pip install --upgrade cython --use-mirrors From 10990383848110622002e0415b4c336f75e68b5d Mon Sep 17 00:00:00 2001 From: tshirtman Date: Thu, 18 Oct 2012 17:58:05 +0200 Subject: [PATCH 12/29] add missing "make" in travis --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index aa6abf8a6..1593bdc47 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,7 @@ before_install: install: - pip install --upgrade cython --use-mirrors + - make # command to run tests script: From 810cd555a9dc438a19cd98132b13f0778ca933d9 Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Thu, 18 Oct 2012 15:24:11 -0600 Subject: [PATCH 13/29] No need to explicitly register subclasses of Widget in Kivy 1.5 --- examples/demo/kivycatalog/main.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/examples/demo/kivycatalog/main.py b/examples/demo/kivycatalog/main.py index c8b1983a0..e65ceaa86 100644 --- a/examples/demo/kivycatalog/main.py +++ b/examples/demo/kivycatalog/main.py @@ -16,17 +16,6 @@ CONTAINER_CLASSES = [c[:-3] for c in os.listdir('container_kvs') if c.endswith('.kv')] -def factoryable(cls): - '''Class decorator that automatically records - the resultant class in the Factory. - This allows the class to be accessed - inside the .kv language file in the Builder. - ''' - Factory.register(cls.__name__, cls) - return cls - - -@factoryable class Container(BoxLayout): '''A container is essentially a class that loads its root from a known .kv file. @@ -55,7 +44,6 @@ for class_name in CONTAINER_CLASSES: globals()[class_name] = type(class_name, (Container,), {}) -@factoryable class KivyRenderTextInput(TextInput): def _keyboard_on_key_down(self, window, keycode, text, modifiers): is_osx = sys.platform == 'darwin' From 4879498652175561440cbe5e4416c2d60803d41a Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Thu, 18 Oct 2012 15:29:42 -0600 Subject: [PATCH 14/29] Set a default size of 1024x768 on the window. This may not be an appropriate default size. But it is a default size. ;) --- examples/demo/kivycatalog/main.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/examples/demo/kivycatalog/main.py b/examples/demo/kivycatalog/main.py index e65ceaa86..6a02fc70e 100644 --- a/examples/demo/kivycatalog/main.py +++ b/examples/demo/kivycatalog/main.py @@ -1,15 +1,23 @@ +import kivy +kivy.require('1.4.2') import os import sys from kivy.app import App from kivy.factory import Factory from kivy.lang import Builder, Parser, ParserException from kivy.properties import ObjectProperty +from kivy.config import Config from kivy.uix.boxlayout import BoxLayout from kivy.uix.popup import Popup from kivy.uix.label import Label from kivy.uix.textinput import TextInput +print Config.get('graphics', 'width') + +Config.set('graphics', 'width', '1024') +Config.set('graphics', 'height', '768') + '''List of classes that need to be instantiated in the factory from .kv files. ''' CONTAINER_CLASSES = [c[:-3] for c in os.listdir('container_kvs') From d9bd348ceee21a2dbda85eb23736db1c4bb7e594 Mon Sep 17 00:00:00 2001 From: Qua-non Date: Fri, 19 Oct 2012 04:15:10 +0530 Subject: [PATCH 15/29] uix: New widget CodeInput, highlited code editor --- doc/sources/sphinxext/preprocess.py | 4 +- kivy/extras/__init__.py | 1 + .../lexer_kivy.py => extras/highlight.py} | 2 + kivy/factory_registers.py | 1 + kivy/tools/highlight/pygments/__init__.py | 0 kivy/uix/codeinput.py | 171 ++++++++++++++++++ 6 files changed, 177 insertions(+), 2 deletions(-) create mode 100644 kivy/extras/__init__.py rename kivy/{tools/highlight/pygments/lexer_kivy.py => extras/highlight.py} (97%) delete mode 100644 kivy/tools/highlight/pygments/__init__.py create mode 100644 kivy/uix/codeinput.py diff --git a/doc/sources/sphinxext/preprocess.py b/doc/sources/sphinxext/preprocess.py index b7d1d5b5a..a49665a8c 100644 --- a/doc/sources/sphinxext/preprocess.py +++ b/doc/sources/sphinxext/preprocess.py @@ -106,8 +106,8 @@ def callback_signature(app, what, name, obj, options, signature, def setup(app): import kivy - sys.path += [join(dirname(kivy.__file__), 'tools', 'highlight', 'pygments')] - from lexer_kivy import KivyLexer + sys.path += [join(dirname(kivy.__file__), 'extras')] + from highlight import KivyLexer app.add_lexer('kv', KivyLexer()) app.add_autodocumenter(CythonMethodDocumenter) diff --git a/kivy/extras/__init__.py b/kivy/extras/__init__.py new file mode 100644 index 000000000..8d1c8b69c --- /dev/null +++ b/kivy/extras/__init__.py @@ -0,0 +1 @@ + diff --git a/kivy/tools/highlight/pygments/lexer_kivy.py b/kivy/extras/highlight.py similarity index 97% rename from kivy/tools/highlight/pygments/lexer_kivy.py rename to kivy/extras/highlight.py index 2b62b01c3..c83b3193c 100644 --- a/kivy/tools/highlight/pygments/lexer_kivy.py +++ b/kivy/extras/highlight.py @@ -1,3 +1,5 @@ +'''Pygments lexer for kv language +''' from pygments.lexer import RegexLexer, bygroups, using from pygments.lexers.agile import PythonLexer from pygments import highlight diff --git a/kivy/factory_registers.py b/kivy/factory_registers.py index e020e7ce5..0ff43a79d 100644 --- a/kivy/factory_registers.py +++ b/kivy/factory_registers.py @@ -81,6 +81,7 @@ r('Bubble', module='kivy.uix.bubble') r('BubbleButton', module='kivy.uix.bubble') r('Camera', module='kivy.uix.camera') r('Carousel', module='kivy.uix.carousel') +r('CodeInput', module='kivy.uix.codeinput') r('CheckBox', module='kivy.uix.checkbox') r('DropDown', module='kivy.uix.dropdown') r('FloatLayout', module='kivy.uix.floatlayout') diff --git a/kivy/tools/highlight/pygments/__init__.py b/kivy/tools/highlight/pygments/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/kivy/uix/codeinput.py b/kivy/uix/codeinput.py new file mode 100644 index 000000000..656fe1890 --- /dev/null +++ b/kivy/uix/codeinput.py @@ -0,0 +1,171 @@ +# -*- coding: utf-8 -*- +''' +Code Input +========== + +.. versionadded:: 1.5.0 + +.. image:: images/codeinput.jpg + + +The :class:`CodeInput` provides a box of editable highlited text, like the ones +shown in the image. + +It supports all the features supported by the :class:`~kivy.uix.textinput` and +Code highliting for `languages supported by pygments +`_ along with `KivyLexer` for `KV Language` +highliting. + +Usage example +------------- + +To create a CodeInput with highliting for `KV language`:: + + from kivy.uix.codeinput import CodeInput + from kivy.extras.highlight import KivyLexer + codeinput = CodeInput(lexer=KivyLexer) + +To create a CodeInput with highliting for `Cython`:: + + from kivy.uix.codeinput import CodeInput + from pygments.lexers import CythonLexer + codeinput = CodeInput(lexer=CythonLexer) + +''' + +__all__ = ('CodeInput', ) + +from pygments import highlight +from pygments import lexers +from kivy.extras.highlight import KivyLexer +from pygments.formatters import BBCodeFormatter + +from kivy.uix.textinput import TextInput +from kivy.uix.label import Label +from kivy.cache import Cache +from kivy.properties import BooleanProperty, ObjectProperty + +Cache_get = Cache.get +Cache_append = Cache.append + +# TODO: fix empty line rendering +# TODO: color chooser for keywords/strings/... + + +class CodeInput(TextInput): + '''CodeInput class, used for displaying highlited code. + ''' + + lexer = ObjectProperty(lexers.PythonLexer) + '''This holds the selected Lexer used by pygments to highlite the code + + + :data:`lexer` is a :class:`~kivy.properties.ObjectProperty` defaults to + `PythonLexer` + ''' + + def __init__(self, **kwargs): + super(CodeInput, self).__init__(**kwargs) + self._line_options = kw = self._get_line_options() + self._markup_label_cached = Label(**kw) + self.formatter = BBCodeFormatter() + text_color = kwargs.get('foreground_color') + #use text_color as foreground color + if text_color: + self.text_color = (text_color[0], text_color[1], text_color[2], + text_color[3]) + else: + self.text_color = (0, 0, 0, 1) + # set foreground to white to allow text colors to show + # use text_color as the default color in bbcodes + self.foreground_color = [1, 1, 1, 1] + if not kwargs.get('background_color'): + self.background_color = [.9, .92, .92, 1] + + def _create_line_label(self, text): + # Create a label from a text, using line options + ntext = text.replace('\n', '').replace('\t', ' ' * self.tab_width) + if self.password: + ntext = '*' * len(ntext) + ntext = self._get_bbcode(ntext) + kw = self._get_line_options() + cid = '%s\0%s' % (ntext, str(kw)) + texture = Cache_get('textinput.label', cid) + + if not texture: + # FIXME right now, we can't render very long line... + # if we move on "VBO" version as fallback, we won't need to do this. + # try to found the maximum text we can handle + label = Label(text=ntext, **kw) + if text.find('\n') > 0: + label.text = '' + else: + label.text = ntext + label.texture_update() + + # ok, we found it. + texture = label.texture + Cache_append('textinput.label', cid, texture) + label.text = '' + return texture + + def _get_line_options(self): + kw = super(CodeInput, self)._get_line_options() + kw['markup'] = True + kw['valign'] = 'top' + return kw + + def _get_bbcode(self, ntext): + # get bbcoded text for python + try: + ntext[0] + # replace brackets with special chars that aren't highlighted + # by pygment. can't use &bl; ... cause & is highlighted + # if at some time support for braille is added then replace these + # characters with something else + ntext = ntext.replace('[', u'⣿;').replace(']', u'⣾;') + ntext = highlight(ntext, self.lexer(), self.formatter) + ntext = ntext.replace(u'⣿;', '&bl;').replace(u'⣾;', '&br;') + # replace special chars with &bl; and &br; + ntext = ''.join(('[color=rgba', str(self.text_color), ']', + ntext, '[/color]')) + ntext = ntext.replace('\n', '') + return ntext + except IndexError: + return '' + + # overriden to get accurate cursor position for markup text + def _get_text_width(self, text, tab_width, label_cached): + # fix cursor placement diff cause of markup + kw = self._get_line_options() + cid = '%s\0%s' % (text, str(kw)) + width = Cache_get('textinput.width', cid) + if not width: + _markup_label_cached = Label(**kw) + if text == '\n' or text.find('\n') > 0: + width = 0 + else: + _markup_label_cached.text = self._get_bbcode(text) + _markup_label_cached.texture_update() + texture = _markup_label_cached.texture + # use width of texture of '.' instead of ' ' in start of line + # which is of 0 width in markup + width = texture.width if texture else\ + label_cached.get_extents('.')[0] * len(text) + Cache.append('textinput.width', cid, width) + _markup_label_cached.text = '' + return width + + # overriden to prevent cursor position off screen + def _cursor_offset(self): + '''Get the cursor x offset on the current line + ''' + offset = 0 + try: + if self.cursor_col: + offset = self._get_text_width( + self._lines[self.cursor_row][:self.cursor_col]) + except: + pass + finally: + return offset From 4a8235254e6db455dc2dbd4e3e7adc567b4ee6e0 Mon Sep 17 00:00:00 2001 From: Qua-non Date: Fri, 19 Oct 2012 04:26:39 +0530 Subject: [PATCH 16/29] Doc: add preview image for CodeInput --- doc/sources/images/codeinput.jpg | Bin 0 -> 52439 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/sources/images/codeinput.jpg diff --git a/doc/sources/images/codeinput.jpg b/doc/sources/images/codeinput.jpg new file mode 100644 index 0000000000000000000000000000000000000000..48d8f0cc1a93600c11244c12e34e27be084e01af GIT binary patch literal 52439 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 literal 0 HcmV?d00001 From 1fc8b1dbcc5965f61d234b56a86f9cd78f3b43c4 Mon Sep 17 00:00:00 2001 From: tshirtman Date: Sun, 21 Oct 2012 13:18:55 +0200 Subject: [PATCH 17/29] add pil in dependencies for travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 1593bdc47..9a0b12a6c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ before_install: - sudo apt-get install python-setuptools python-pygame python-opengl python-gst0.10 python-enchant gstreamer0.10-plugins-good python-dev build-essential libgl1-mesa-dev libgles2-mesa-dev install: - - pip install --upgrade cython --use-mirrors + - pip install --upgrade cython pil --use-mirrors - make # command to run tests From 12ff576e80639093931584470442cf590b36de31 Mon Sep 17 00:00:00 2001 From: tshirtman Date: Sun, 21 Oct 2012 17:06:11 +0200 Subject: [PATCH 18/29] fix relative imports to absolute --- kivy/input/postproc/__init__.py | 8 ++++---- kivy/tests/test_filechooser.py | 2 +- kivy/tests/test_graphics.py | 2 +- kivy/tests/test_issue_609.py | 2 +- kivy/tests/test_uix_anchorlayout.py | 2 +- kivy/tests/test_uix_boxlayout.py | 2 +- kivy/tests/test_uix_widget.py | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/kivy/input/postproc/__init__.py b/kivy/input/postproc/__init__.py index 562cb4644..ad3058f2d 100644 --- a/kivy/input/postproc/__init__.py +++ b/kivy/input/postproc/__init__.py @@ -7,10 +7,10 @@ Input Postprocessing __all__ = ('kivy_postproc_modules', ) import os -from doubletap import InputPostprocDoubleTap -from ignorelist import InputPostprocIgnoreList -from retaintouch import InputPostprocRetainTouch -from dejitter import InputPostprocDejitter +from kivy.input.postproc.doubletap import InputPostprocDoubleTap +from kivy.input.postproc.ignorelist import InputPostprocIgnoreList +from kivy.input.postproc.retaintouch import InputPostprocRetainTouch +from kivy.input.postproc.dejitter import InputPostprocDejitter # Mapping of ID to module kivy_postproc_modules = {} diff --git a/kivy/tests/test_filechooser.py b/kivy/tests/test_filechooser.py index 518ce8416..9a14a8e57 100644 --- a/kivy/tests/test_filechooser.py +++ b/kivy/tests/test_filechooser.py @@ -1,4 +1,4 @@ -from common import GraphicUnitTest +from kivy.tests.common import GraphicUnitTest class FileChooserTestCase(GraphicUnitTest): diff --git a/kivy/tests/test_graphics.py b/kivy/tests/test_graphics.py index 372da9535..6afef0f4f 100644 --- a/kivy/tests/test_graphics.py +++ b/kivy/tests/test_graphics.py @@ -5,7 +5,7 @@ Graphics tests Testing the simple vertex instructions ''' -from common import GraphicUnitTest +from kivy.tests.common import GraphicUnitTest class VertexInstructionTestCase(GraphicUnitTest): diff --git a/kivy/tests/test_issue_609.py b/kivy/tests/test_issue_609.py index 90969f22b..d7b6d1be5 100644 --- a/kivy/tests/test_issue_609.py +++ b/kivy/tests/test_issue_609.py @@ -1,4 +1,4 @@ -from common import GraphicUnitTest +from kivy.tests.common import GraphicUnitTest class Issue609(GraphicUnitTest): diff --git a/kivy/tests/test_uix_anchorlayout.py b/kivy/tests/test_uix_anchorlayout.py index 9dde6dcd1..e893e7efd 100644 --- a/kivy/tests/test_uix_anchorlayout.py +++ b/kivy/tests/test_uix_anchorlayout.py @@ -3,7 +3,7 @@ Anchor layout unit test ======================= ''' -from common import GraphicUnitTest +from kivy.tests.common import GraphicUnitTest class UIXAnchorLayoutTestcase(GraphicUnitTest): diff --git a/kivy/tests/test_uix_boxlayout.py b/kivy/tests/test_uix_boxlayout.py index c9791085d..8d450c33b 100644 --- a/kivy/tests/test_uix_boxlayout.py +++ b/kivy/tests/test_uix_boxlayout.py @@ -6,7 +6,7 @@ Order matter. On the screen, most of example must have the red->blue->green order. ''' -from common import GraphicUnitTest +from kivy.tests.common import GraphicUnitTest class UIXBoxLayoutTestcase(GraphicUnitTest): diff --git a/kivy/tests/test_uix_widget.py b/kivy/tests/test_uix_widget.py index eab662057..92375a6a8 100644 --- a/kivy/tests/test_uix_widget.py +++ b/kivy/tests/test_uix_widget.py @@ -1,4 +1,4 @@ -from common import GraphicUnitTest +from kivy.tests.common import GraphicUnitTest class UIXWidgetTestCase(GraphicUnitTest): From 78f1a75c144a583a0305f4895a96052051ac3faa Mon Sep 17 00:00:00 2001 From: Joe Hillenbrand Date: Mon, 22 Oct 2012 11:03:45 -0700 Subject: [PATCH 19/29] doc typo --- doc/sources/guide/readingdoc.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sources/guide/readingdoc.rst b/doc/sources/guide/readingdoc.rst index d54ffeb63..1d6e8a62f 100644 --- a/doc/sources/guide/readingdoc.rst +++ b/doc/sources/guide/readingdoc.rst @@ -16,7 +16,7 @@ it will be generated like this: .. image:: images/api-button.jpg -It should be read like this: the "Button" class is into the "kivy.uix.button" +It should be read like this: the "Button" class is in the "kivy.uix.button" module. So if you want to import that class in your code, write that:: from kivy.uix.button import Button From 8a4351c3db043acb6e6c3d728a22af4b20d19936 Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Mon, 22 Oct 2012 21:47:32 -0600 Subject: [PATCH 20/29] Make stack layout more representative --- .../container_kvs/StackLayoutContainer.kv | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/demo/kivycatalog/container_kvs/StackLayoutContainer.kv b/examples/demo/kivycatalog/container_kvs/StackLayoutContainer.kv index 981d5d2e3..867261d1a 100644 --- a/examples/demo/kivycatalog/container_kvs/StackLayoutContainer.kv +++ b/examples/demo/kivycatalog/container_kvs/StackLayoutContainer.kv @@ -6,20 +6,20 @@ StackLayout: spacing: 5 Button: text: "Button 1" - size_hint: .2, .5 + size_hint: .2, .4 width: 100 Button: text: "Button 2" - size_hint: .2, .5 + size_hint: .2, .4 Button: text: "Button 3" - size_hint: .2, .5 + size_hint: .2, .4 Button: text: "Button 4" - size_hint: .2, .5 + size_hint: .2, .4 Button: text: "Button 5" - size_hint: .2, .5 + size_hint: .2, .4 Button: text: "Button 6" - size_hint: .2, .5 + size_hint: .2, .4 \ No newline at end of file From d2abb515197d981381c1bbe3642c190f9f76192b Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Mon, 22 Oct 2012 21:47:58 -0600 Subject: [PATCH 21/29] Remove TODO --- examples/demo/kivycatalog/README | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/demo/kivycatalog/README b/examples/demo/kivycatalog/README index e9b5dc8ce..6c3b5dac0 100644 --- a/examples/demo/kivycatalog/README +++ b/examples/demo/kivycatalog/README @@ -9,7 +9,6 @@ a la http://kivy.org/docs/installation/installation.html Then run python main.py and browse or edit widgets to your heart's content. Known bugs: -* StackLayout is misbehaving * The DropDown item I had tested completely crashes Kivy * The GridLayout example could use some extra features * If you try to start the app with focused set to true, weird stuff happens. From 831ef30523706f53f31aa9a533de1d54ded46c27 Mon Sep 17 00:00:00 2001 From: Mathieu Virbel Date: Tue, 23 Oct 2012 13:06:44 +0200 Subject: [PATCH 22/29] atlas: automatically generate a border of 1px for each image in the atlas. refs #289 --- kivy/atlas.py | 30 ++++++++++++++++++++-------- kivy/data/images/defaulttheme-0.png | Bin 43303 -> 43814 bytes kivy/data/images/defaulttheme.atlas | 2 +- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/kivy/atlas.py b/kivy/atlas.py index 6121ece6d..51f2aa5b4 100644 --- a/kivy/atlas.py +++ b/kivy/atlas.py @@ -192,7 +192,7 @@ class Atlas(EventDispatcher): self.textures = textures @staticmethod - def create(outname, filenames, size, padding=1): + def create(outname, filenames, size, padding=2): '''This method can be used to create manually an atlas from a set of images. @@ -204,11 +204,17 @@ class Atlas(EventDispatcher): List of filename to put in the atlas `size`: int Size of an atlas image - `padding`: int, default to 1 - Padding to put around each image. Care, if you put 0, they might - be some issues with OpenGL, because by default, Kivy texture are - using GL_CLAMP_TO_EDGE, and the edge is another image than - the image you'll want to display. + `padding`: int, default to 2 + Padding to put around each image. + + Be careful. If you're using a padding < 2, you might get issues + with border of the images. Because of the OpenGL linearization, + it might take the pixels of the adjacent image. + + If you're using a padding >= 2, we'll automatically generate a + "border" of 1px of your image, around the image. If you look at + the result, don't be scared if the image inside it are not + exactly the same as yours :). ''' # Thanks to # omnisaurusgames.com/2011/06/texture-atlas-generation-using-python/ @@ -232,7 +238,6 @@ class Atlas(EventDispatcher): # the freebox tuple format is: outidx, x, y, w, h freeboxes = [(0, 0, 0, size, size)] numoutimages = 1 - padding = 1 # full boxes are areas where we have placed images in the atlas # the full box tuple format is: image, outidx, x, y, w, h, filename @@ -291,7 +296,16 @@ class Atlas(EventDispatcher): outimages = [Image.new('RGBA', (size, size)) for i in range(0, int(numoutimages))] for fb in fullboxes: - outimages[fb[1]].paste(fb[0], (fb[2], fb[3])) + x, y = fb[2], fb[3] + out = outimages[fb[1]] + out.paste(fb[0], (fb[2], fb[3])) + w, h = fb[0].size + if padding > 1: + out.paste(fb[0].crop((0, 0, w, 1)), (x, y - 1)) + out.paste(fb[0].crop((0, h - 1, w, h)), (x, y + h)) + out.paste(fb[0].crop((0, 0, 1, h)), (x - 1, y)) + out.paste(fb[0].crop((w - 1, 0, w, h)), (x + w, y)) + # save the output images for idx, outimage in enumerate(outimages): diff --git a/kivy/data/images/defaulttheme-0.png b/kivy/data/images/defaulttheme-0.png index 070430af82862b4c747445ada12b065a8c2623c7..066afd936ab68f0b5aae3721c6e36e84a9ca4158 100644 GIT binary patch literal 43814 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

(&fmBqEY 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 TEi>Z({Wj$33$^mcRw4fnUM^#z literal 43303 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 Date: Tue, 23 Oct 2012 15:54:47 +0200 Subject: [PATCH 23/29] update travis config --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 9a0b12a6c..a7383e7a7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,9 +5,11 @@ python: # command to install dependencies before_install: - sudo apt-get update - - sudo apt-get install python-setuptools python-pygame python-opengl python-gst0.10 python-enchant gstreamer0.10-plugins-good python-dev build-essential libgl1-mesa-dev libgles2-mesa-dev + - sudo apt-get install python-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev libsmpeg-dev python-numpy libportmidi-dev ffmpeg libswscale-dev libavformat-dev libavcodec-dev libjpeg-dev libtiff4-dev libx11-6 libX11-dev + - sudo apt-get install python-setuptools python-opengl gstreamer0.10-plugins-good build-essential libgl1-mesa-dev libgles2-mesa-dev install: + - pip install pygame - pip install --upgrade cython pil --use-mirrors - make From 0e97ebefc44e5a98ee55205dde41c843d99ee9d9 Mon Sep 17 00:00:00 2001 From: Mathieu Virbel Date: Tue, 23 Oct 2012 16:05:41 +0200 Subject: [PATCH 24/29] update travis to use mercurial version of pygame with pip. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index a7383e7a7..e5a1eb5c6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,10 +6,10 @@ python: before_install: - sudo apt-get update - sudo apt-get install python-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev libsmpeg-dev python-numpy libportmidi-dev ffmpeg libswscale-dev libavformat-dev libavcodec-dev libjpeg-dev libtiff4-dev libx11-6 libX11-dev - - sudo apt-get install python-setuptools python-opengl gstreamer0.10-plugins-good build-essential libgl1-mesa-dev libgles2-mesa-dev + - sudo apt-get install python-setuptools python-opengl gstreamer0.10-plugins-good build-essential libgl1-mesa-dev libgles2-mesa-dev mercurial install: - - pip install pygame + - pip install hg+http://bitbucket.org/pygame/pygame - pip install --upgrade cython pil --use-mirrors - make From 96de131c4f4f0330e2bd0d7c761044dcf66aa073 Mon Sep 17 00:00:00 2001 From: Mathieu Virbel Date: Tue, 23 Oct 2012 16:21:59 +0200 Subject: [PATCH 25/29] test travis with xvfb --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e5a1eb5c6..baa845e61 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,7 @@ before_install: - sudo apt-get update - sudo apt-get install python-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev libsmpeg-dev python-numpy libportmidi-dev ffmpeg libswscale-dev libavformat-dev libavcodec-dev libjpeg-dev libtiff4-dev libx11-6 libX11-dev - sudo apt-get install python-setuptools python-opengl gstreamer0.10-plugins-good build-essential libgl1-mesa-dev libgles2-mesa-dev mercurial + - sudo apt-get install xvfb install: - pip install hg+http://bitbucket.org/pygame/pygame @@ -15,4 +16,4 @@ install: # command to run tests script: - - make test + - xvfb-run -s "+extension GLX" make test From 91c2bc6853eea8c635a41c29efaf15af508d8e73 Mon Sep 17 00:00:00 2001 From: tshirtman Date: Tue, 23 Oct 2012 17:23:06 +0200 Subject: [PATCH 26/29] add example for codeinput, show off all the lexers of pygments --- examples/widgets/codeinput.py | 83 +++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 examples/widgets/codeinput.py diff --git a/examples/widgets/codeinput.py b/examples/widgets/codeinput.py new file mode 100644 index 000000000..0cfd972cf --- /dev/null +++ b/examples/widgets/codeinput.py @@ -0,0 +1,83 @@ +from kivy.app import App +from kivy.extras.highlight import KivyLexer +from kivy.uix.codeinput import CodeInput +from kivy.factory import Factory +import pygments + +example_text = ''' +---------------------Python---------------------------------- +import kivy +kivy.require('1.0.6') # replace with your current kivy version ! +from kivy.app import App +from kivy.uix.button import Button + +class MyApp(App): + def build(self): + return Button(text='Hello World') + +if __name__ == '__main__': + MyApp().run() +----------------------Java------------------------------------ + +public static byte toUnsignedByte(int intVal) { + byte byteVal; + return (byte)(intVal & 0xFF); +} +---------------------kv lang------------------------- +#:kivy 1.0 + +: + canvas: + Color: + rgb: .5, .5, .5 + Rectangle: + pos: self.pos + size: self.size +-----------------HTML----------------------------- + +

+ + + +''' + + +class CodeInputTest(App): + def build(self): + b = Factory.BoxLayout(orientation='vertical') + languages = Factory.Spinner( + text='language', + values=sorted(['KvLexer', ] + pygments.lexers.LEXERS.keys()), + size_hint_y=None, + height='30pt') + + languages.bind(text=self.change_lang) + b.add_widget(languages) + + self.codeinput = CodeInput( + lexer=KivyLexer(), + font_name='data/fonts/DroidSansMono.ttf', font_size=12, + text=example_text) + + b.add_widget(self.codeinput) + + return b + + def change_lang(self, instance, l): + if l == 'KvLexer': + lx = KivyLexer() + + else: + lx = pygments.lexers.get_lexer_by_name( + pygments.lexers.LEXERS[l][2][0]) + + self.codeinput.lexer = lx + + +CodeInputTest().run() From b22c899da6113f640e1508a1287d09b0cbdb2050 Mon Sep 17 00:00:00 2001 From: Qua-non Date: Tue, 23 Oct 2012 20:55:54 +0530 Subject: [PATCH 27/29] CodeInput: rehash backend, now faster and leaner --- kivy/uix/codeinput.py | 72 +++++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/kivy/uix/codeinput.py b/kivy/uix/codeinput.py index 656fe1890..fd3c0e597 100644 --- a/kivy/uix/codeinput.py +++ b/kivy/uix/codeinput.py @@ -23,13 +23,13 @@ To create a CodeInput with highliting for `KV language`:: from kivy.uix.codeinput import CodeInput from kivy.extras.highlight import KivyLexer - codeinput = CodeInput(lexer=KivyLexer) + codeinput = CodeInput(lexer=KivyLexer()) To create a CodeInput with highliting for `Cython`:: from kivy.uix.codeinput import CodeInput from pygments.lexers import CythonLexer - codeinput = CodeInput(lexer=CythonLexer) + codeinput = CodeInput(lexer=CythonLexer()) ''' @@ -41,7 +41,7 @@ from kivy.extras.highlight import KivyLexer from pygments.formatters import BBCodeFormatter from kivy.uix.textinput import TextInput -from kivy.uix.label import Label +from kivy.core.text.markup import MarkupLabel as Label from kivy.cache import Cache from kivy.properties import BooleanProperty, ObjectProperty @@ -56,7 +56,7 @@ class CodeInput(TextInput): '''CodeInput class, used for displaying highlited code. ''' - lexer = ObjectProperty(lexers.PythonLexer) + lexer = ObjectProperty(None) '''This holds the selected Lexer used by pygments to highlite the code @@ -65,17 +65,18 @@ class CodeInput(TextInput): ''' def __init__(self, **kwargs): + self.formatter = BBCodeFormatter() + self.lexer = lexers.PythonLexer() + self.text_color = (0, 0, 0, 1) + self._label_cached = Label() super(CodeInput, self).__init__(**kwargs) self._line_options = kw = self._get_line_options() - self._markup_label_cached = Label(**kw) - self.formatter = BBCodeFormatter() - text_color = kwargs.get('foreground_color') + self._label_cached = Label(**kw) #use text_color as foreground color + text_color = kwargs.get('foreground_color') if text_color: self.text_color = (text_color[0], text_color[1], text_color[2], text_color[3]) - else: - self.text_color = (0, 0, 0, 1) # set foreground to white to allow text colors to show # use text_color as the default color in bbcodes self.foreground_color = [1, 1, 1, 1] @@ -101,7 +102,10 @@ class CodeInput(TextInput): label.text = '' else: label.text = ntext - label.texture_update() + try: + label.refresh() + except ValueError: + pass # ok, we found it. texture = label.texture @@ -124,7 +128,7 @@ class CodeInput(TextInput): # if at some time support for braille is added then replace these # characters with something else ntext = ntext.replace('[', u'⣿;').replace(']', u'⣾;') - ntext = highlight(ntext, self.lexer(), self.formatter) + ntext = highlight(ntext, self.lexer, self.formatter) ntext = ntext.replace(u'⣿;', '&bl;').replace(u'⣾;', '&br;') # replace special chars with &bl; and &br; ntext = ''.join(('[color=rgba', str(self.text_color), ']', @@ -134,28 +138,6 @@ class CodeInput(TextInput): except IndexError: return '' - # overriden to get accurate cursor position for markup text - def _get_text_width(self, text, tab_width, label_cached): - # fix cursor placement diff cause of markup - kw = self._get_line_options() - cid = '%s\0%s' % (text, str(kw)) - width = Cache_get('textinput.width', cid) - if not width: - _markup_label_cached = Label(**kw) - if text == '\n' or text.find('\n') > 0: - width = 0 - else: - _markup_label_cached.text = self._get_bbcode(text) - _markup_label_cached.texture_update() - texture = _markup_label_cached.texture - # use width of texture of '.' instead of ' ' in start of line - # which is of 0 width in markup - width = texture.width if texture else\ - label_cached.get_extents('.')[0] * len(text) - Cache.append('textinput.width', cid, width) - _markup_label_cached.text = '' - return width - # overriden to prevent cursor position off screen def _cursor_offset(self): '''Get the cursor x offset on the current line @@ -169,3 +151,27 @@ class CodeInput(TextInput): pass finally: return offset + + def on_lexer(self, instance, value): + self._trigger_refresh_text() + +if __name__ == '__main__': + from kivy.extras.highlight import KivyLexer + from kivy.app import App + + class CodeInputTest(App): + def build(self): + return CodeInput(lexer=KivyLexer(), + font_name='data/fonts/DroidSansMono.ttf', font_size=12, + text=''' +#:kivy 1.0 + +: + canvas: + Color: + rgb: .5, .5, .5 + Rectangle: + pos: self.pos + size: self.size''') + + CodeInputTest().run() From 7a597a1f3ea4b45fb5ccf6e3a6607f8368951536 Mon Sep 17 00:00:00 2001 From: tshirtman Date: Tue, 23 Oct 2012 17:41:16 +0200 Subject: [PATCH 28/29] simplify codeinput example --- examples/widgets/codeinput.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/widgets/codeinput.py b/examples/widgets/codeinput.py index 0cfd972cf..6a16894fd 100644 --- a/examples/widgets/codeinput.py +++ b/examples/widgets/codeinput.py @@ -1,6 +1,5 @@ from kivy.app import App from kivy.extras.highlight import KivyLexer -from kivy.uix.codeinput import CodeInput from kivy.factory import Factory import pygments @@ -60,7 +59,7 @@ class CodeInputTest(App): languages.bind(text=self.change_lang) b.add_widget(languages) - self.codeinput = CodeInput( + self.codeinput = Factory.CodeInput( lexer=KivyLexer(), font_name='data/fonts/DroidSansMono.ttf', font_size=12, text=example_text) From 27e0892400c6a53d1bd8855d0dbf4e600487abf4 Mon Sep 17 00:00:00 2001 From: tshirtman Date: Tue, 23 Oct 2012 17:46:11 +0200 Subject: [PATCH 29/29] some format fix in codeinput --- kivy/uix/codeinput.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/kivy/uix/codeinput.py b/kivy/uix/codeinput.py index fd3c0e597..67f227ce4 100644 --- a/kivy/uix/codeinput.py +++ b/kivy/uix/codeinput.py @@ -37,13 +37,12 @@ __all__ = ('CodeInput', ) from pygments import highlight from pygments import lexers -from kivy.extras.highlight import KivyLexer from pygments.formatters import BBCodeFormatter from kivy.uix.textinput import TextInput from kivy.core.text.markup import MarkupLabel as Label from kivy.cache import Cache -from kivy.properties import BooleanProperty, ObjectProperty +from kivy.properties import ObjectProperty Cache_get = Cache.get Cache_append = Cache.append @@ -76,7 +75,7 @@ class CodeInput(TextInput): text_color = kwargs.get('foreground_color') if text_color: self.text_color = (text_color[0], text_color[1], text_color[2], - text_color[3]) + text_color[3]) # set foreground to white to allow text colors to show # use text_color as the default color in bbcodes self.foreground_color = [1, 1, 1, 1] @@ -132,7 +131,7 @@ class CodeInput(TextInput): ntext = ntext.replace(u'⣿;', '&bl;').replace(u'⣾;', '&br;') # replace special chars with &bl; and &br; ntext = ''.join(('[color=rgba', str(self.text_color), ']', - ntext, '[/color]')) + ntext, '[/color]')) ntext = ntext.replace('\n', '') return ntext except IndexError: