mirror of https://github.com/kivy/kivy.git
use logger for uxl
This commit is contained in:
parent
cb6165511a
commit
e73b2df4f3
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
26
kivy/uxl.py
26
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,
|
||||
'<children> 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 <>)')
|
||||
|
|
Loading…
Reference in New Issue