Skip to content

Commit 7c208d5

Browse files
committed
Merge branch 'master' of git://github.com/tito/kivy into pdf
2 parents 3380e5a + 40483bd commit 7c208d5

File tree

8 files changed

+413
-69
lines changed

8 files changed

+413
-69
lines changed

kivy/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
'kivy_config_fn', 'kivy_usermodules_dir',
2929
)
3030

31-
__version__ = '1.0.9-dev'
31+
__version__ = '1.0.10-dev'
3232

3333
import sys
3434
import shutil

kivy/config.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -313,9 +313,9 @@ def write(self):
313313
Config.setdefault('input', 'mouse', 'mouse')
314314

315315
# activate native input provider in configuration
316-
if platform == 'darwin':
317-
Config.setdefault('input', 'mactouch', 'mactouch')
318-
elif platform == 'win32':
316+
# from 1.0.9, don't activate mactouch by default, or app are
317+
# unusable.
318+
if platform == 'win32':
319319
Config.setdefault('input', 'wm_touch', 'wm_touch')
320320
Config.setdefault('input', 'wm_pen', 'wm_pen')
321321
elif platform == 'linux2':

kivy/core/video/video_gstreamer.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
from os import path
2222
from threading import Lock
23+
from urllib import pathname2url
2324
from kivy.graphics.texture import Texture
2425
from kivy.logger import Logger
2526
from functools import partial
@@ -143,9 +144,13 @@ def seek(self, percent):
143144
self._buffer = self._videosink.emit('pull-preroll')
144145

145146
def _get_uri(self):
146-
if ':' in self.filename:
147-
return self.filename
148-
return 'file://'+path.abspath(self.filename)
147+
uri = self.filename
148+
if not uri:
149+
return
150+
if uri.split(':')[0] not in (
151+
'http', 'https', 'file', 'udp', 'rtp', 'rtsp'):
152+
uri = 'file:' + pathname2url(path.realpath(uri))
153+
return uri
149154

150155
def _do_eos(self, *args):
151156
self.seek(0)

kivy/data/style.kv

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
<Button,ToggleButton>:
1313
canvas:
14+
Clear
1415
Color:
1516
rgba: self.background_color
1617
BorderImage:
@@ -253,25 +254,25 @@
253254
size: root.size
254255
source: 'data/images/filechooser_selected.png'
255256

256-
Image:
257-
size: 48, 48
258-
source: 'data/images/filechooser_%s.png' % ('folder' if ctx.isdir else 'file')
259-
pos: root.x + 24, root.y + 40
260-
Label:
261-
text: unicode(ctx.name)
262-
text_size: (root.width, self.height)
263-
halign: 'center'
264-
shorten: True
265-
size: 100, 16
266-
pos: root.x, root.y + 16
267-
268-
Label:
269-
text: unicode(ctx.get_nice_size())
270-
font_size: 8
271-
color: .8, .8, .8, 1
272-
size: 100, 16
273-
pos: root.pos
274-
halign: 'center'
257+
Image:
258+
size: 48, 48
259+
source: 'data/images/filechooser_%s.png' % ('folder' if ctx.isdir else 'file')
260+
pos: root.x + 24, root.y + 40
261+
Label:
262+
text: unicode(ctx.name)
263+
text_size: (root.width, self.height)
264+
halign: 'center'
265+
shorten: True
266+
size: 100, 16
267+
pos: root.x, root.y + 16
268+
269+
Label:
270+
text: unicode(ctx.get_nice_size())
271+
font_size: 8
272+
color: .8, .8, .8, 1
273+
size: 100, 16
274+
pos: root.pos
275+
halign: 'center'
275276

276277

277278
# Switch widget

kivy/lang.py

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,9 @@
453453
from kivy.logger import Logger
454454
from kivy.utils import OrderedDict, QueryDict
455455
from kivy.cache import Cache
456-
from kivy import kivy_data_dir
456+
from kivy import kivy_data_dir, require
457+
from kivy.lib.debug import make_traceback
458+
457459

458460
trace = Logger.trace
459461
global_idmap = {}
@@ -467,7 +469,7 @@
467469
lang_keyvalue = re.compile('([a-zA-Z_][a-zA-Z0-9_.]*\.[a-zA-Z0-9_.]+)')
468470

469471

470-
def precompile_value(name, value):
472+
def precompile_value(name, value, line=1, parser=None):
471473
# if it's an id, we don't need to compile, the value is the id.
472474
if name == 'id':
473475
return value
@@ -480,18 +482,18 @@ def precompile_value(name, value):
480482
# if we don't detect any string/key in it, we can eval and give the
481483
# result
482484
if re.search(lang_key, tmp) is None:
483-
return (None, eval(value), value)
485+
return (None, eval(value), value, line + 1, parser)
484486

485487
# ok, we can compile.
486-
code = compile(value, '<string>', mode)
488+
code = compile(value, parser.filename or '<string>', mode)
487489

488490
# now, detect obj.prop
489491
# first, remove all the string from the value
490492
tmp = re.sub(lang_str, '', value)
491493
# detect key.value inside value
492494
kw = re.findall(lang_keyvalue, tmp)
493495

494-
return (kw, code, value)
496+
return (kw, code, value, line + 1, parser)
495497

496498

497499
class ParserError(Exception):
@@ -529,13 +531,10 @@ def __init__(self, **kwargs):
529531
self.sourcecode = []
530532
self.objects = []
531533
self.directives = []
534+
self.filename = kwargs.get('filename', None)
532535
content = kwargs.get('content', None)
533-
self.filename = filename = kwargs.get('filename', None)
534-
if filename:
535-
content = self.load_resource(filename)
536536
if content is None:
537-
raise ValueError('No content passed. Use filename or '
538-
'content attribute.')
537+
raise ValueError('No content passed')
539538
self.parse(content)
540539

541540
def execute_directives(self):
@@ -633,7 +632,7 @@ def precompile_objects(self, objects):
633632
'canvas.after'):
634633
self.precompile_objects(value[0])
635634
continue
636-
value[0] = precompile_value(key, value[0])
635+
value[0] = precompile_value(key, value[0], value[1], value[2])
637636

638637
def parse_version(self, line):
639638
'''Parse the version line.
@@ -648,9 +647,9 @@ def parse_version(self, line):
648647
'#:kivy <version>')
649648

650649
version = content[6:].strip()
651-
if version != '1.0':
652-
raise ParserError(self, ln, 'Only Kivy language 1.0 is supported'
653-
' (<%s> found)' % version)
650+
if len(version.split('.')) == 2:
651+
version += '.0'
652+
require(version)
654653
if __debug__:
655654
trace('Parser: Kivy version is %s' % version)
656655

@@ -792,9 +791,16 @@ def _eval_center(boxsize, center):
792791

793792
def custom_callback(*largs, **kwargs):
794793
element, key, value, idmap = largs[0]
794+
__kvlang__ = value
795795
locals().update(idmap)
796796
args = largs[1:]
797-
exec value[1]
797+
try:
798+
exec value[1]
799+
except:
800+
exc_info = sys.exc_info()
801+
traceback = make_traceback(exc_info)
802+
exc_type, exc_value, tb = traceback.standard_exc_info
803+
raise exc_type, exc_value, tb
798804

799805

800806
def create_handler(element, key, vd, idmap):
@@ -960,7 +966,8 @@ def load_string(self, string, **kwargs):
960966
kwargs.setdefault('rulesonly', False)
961967
self._current_filename = kwargs.get('filename', None)
962968
try:
963-
parser = Parser(content=string)
969+
parser = Parser(content=string, filename=kwargs.get(
970+
'filename', None))
964971
root = self.build(parser.objects)
965972
if kwargs['rulesonly'] and root:
966973
filename = kwargs.get('rulesonly', '<string>')

0 commit comments

Comments
 (0)