diff --git a/examples/testapp.py b/examples/testapp.py index 9a5ae693f..419f2315f 100644 --- a/examples/testapp.py +++ b/examples/testapp.py @@ -1,8 +1,13 @@ from kivy.app import App +from kivy.uix.widget import Widget from kivy.uix.button import Button +from kivy.uix.label import Label +from kivy.core.text import Label as CoreLabel +from kivy.graphics import * + class TestApp(App): def build(self): - return Button() + return Button(text='Hello world') TestApp().run() diff --git a/examples/testcanvas.py b/examples/testcanvas.py index 2d3ed5caa..b100c0b67 100644 --- a/examples/testcanvas.py +++ b/examples/testcanvas.py @@ -3,7 +3,6 @@ from kivy.uix.widget import Widget from kivy.core.image import Image from kivy.graphics import * - class TestApp(App): def build(self): a = Widget() diff --git a/kivy/uxl.py b/kivy/uxl.py index 844a5b449..31d0dd605 100644 --- a/kivy/uxl.py +++ b/kivy/uxl.py @@ -23,7 +23,12 @@ Example of Uxl files :: size: self.size ''' +__all__ = ('Uxl', 'UxlParser') + from kivy.factory import Factory +from kivy.logger import Logger + +trace = Logger.trace class UxlError(Exception): def __init__(self, context, line, message): @@ -75,6 +80,8 @@ class UxlParser(object): lines = zip(range(len(lines)), lines) self.sourcecode = lines[:] + trace('UxlParser: parse %d lines' % len(lines)) + # Ensure the version if self.filename: self.parse_version(lines[0]) @@ -108,6 +115,7 @@ class UxlParser(object): if version != '1.0': raise UxlError(self, ln, 'Only Uxl 1.0 are supported' ' (<%s> found)' % version) + trace('UxlParser: uxl version is %s' % version) def strip_comments(self, lines): '''Remove all comments from lines inplace. @@ -176,12 +184,6 @@ class UxlParser(object): # It's a property else: - ''' - if name == 'children': - raise UxlError(self, ln, - ' usage is forbidden') - ''' - if len(x) == 1: raise UxlError(self, ln, 'Syntax error') value = x[1].strip() @@ -215,6 +217,7 @@ class UxlParser(object): def load_resource(self, filename): '''Load an external resource ''' + trace('UxlParser: load external <%s>' % filename) with open(filename, 'r') as fd: return fd.read() @@ -255,10 +258,11 @@ class UxlBase(object): self.idmap = {} def add_rule(self, rule, defs): - print 'add rule', rule + trace('Uxl: add rule %s' % str(rule)) self.rules.append((rule, defs)) def load_file(self, filename, **kwargs): + trace('Uxl: load file %s' % filename) with open(filename, 'r') as fd: return self.load_string(fd.read(), **kwargs) @@ -281,9 +285,9 @@ class UxlBase(object): def apply(self, widget): '''Apply all the Uxl rules matching the widget on the widget. ''' - print 'Ask apply from', widget + trace('Uxl: Apply uxl to %s' % widget) matches = self.match(widget) - print '=> matches', matches + trace('Uxl: Found %d matches for %s' % (len(matches), widget)) if not matches: return self.idmap['root'] = widget @@ -310,6 +314,7 @@ class UxlBase(object): def build_item(self, item, params, is_instance=False): if is_instance is False: + trace('Uxl: build item %s' % item) if item.startswith('<'): raise UxlError(params['__ctx__'], params['__line__'], 'Rules are not accepted inside Widget') @@ -356,6 +361,7 @@ class UxlBase(object): return widget def build_canvas(self, item, elements): + trace('Uxl: build canvas for %s' % item) for name, params in elements: element = Factory.get(name)() for key, value in params.iteritems(): @@ -383,9 +389,9 @@ class UxlBase(object): except Exception, e: raise raise UxlError(ctx, ln, str(e)) - print element def build_rule(self, item, params): + trace('Uxl: build rule for %s' % item) if item[0] != '<' or item[-1] != '>': raise UxlError(params['__ctx__'], params['__line__'], 'Invalid rule (must be inside <>)')