This commit is contained in:
Matthew Einhorn 2015-04-07 11:55:30 -04:00
commit 7c80c52423
17 changed files with 223 additions and 65 deletions

View File

@ -1,7 +1,7 @@
PYTHON = python
CHECKSCRIPT = kivy/tools/pep8checker/pep8kivy.py
KIVY_DIR = kivy/
NOSETESTS = nosetests
NOSETESTS = $(PYTHON) -m nose.core
KIVY_USE_DEFAULTCONFIG = 1
HOSTPYTHON = $(KIVYIOSROOT)/tmp/Python-$(PYTHON_VERSION)/hostpython

View File

@ -11,13 +11,6 @@ For installing distribution relative packages .deb/.rpm/...
Ubuntu / Kubuntu / Xubuntu / Lubuntu (Saucy and above)
--------------------------------------------------------
0. In case you want to use Python3, add this Pygame PPA before
``$ sudo add-apt-repository ppa:thopiekar/pygame``
** These Pygame packages are neither provided nor supported by the Kivy project.
** Please contact the creator of the package(s) or maintainer of the sourcecode for further help.
#. Add one of the PPAs as you prefer
:stable builds:

View File

@ -11,11 +11,11 @@ name the gesture, and add it to the database, then simliar gestures in the
future will be recognized. You can load and save databases of gestures
in .kg files.
This demonstration code is many files, with this being the primary file.
This demonstration code spans many files, with this being the primary file.
The information pop-up ('No match') comes from the file helpers.py.
The history pane is managed in the file historymanager.py and described
in the file historymanager.kv. The database pane and storage is managed in
the file gestureDatabase.py and the described in the file gestureDatabase.kv.
the file gestureDatabase.py and the described in the file gestureDatabase.kv.
The general logic of the sliders and buttons are in the file
settings.py and described in settings.kv. but the actual settings pane is
described in the file multistroke.kv and managed from this file.

View File

@ -11,7 +11,7 @@ photos.
The photos are loaded from the local images directory, while the background
picture is from the data shipped with kivy in kivy/data/images/background.jpg.
The file pictures.kv describes the interface and the file shadow32.png is
the boarder to make the images looks like framed photographs. Finally,
the border to make the images look like framed photographs. Finally,
the file android.txt is used to package the application for use with the
Kivy Launcher Android application.

View File

@ -1,5 +1,5 @@
ShowcaseScreen:
popup: popup
popup: popup.__self__
fullscreen: True
name: 'Popups'
BoxLayout:

View File

@ -9,7 +9,7 @@ first demonstration is the accordion layout. You can see, but not
edit, the kv language code for any screen by pressing the bug or
'show source' icon. Scroll through the demonstrations using the
left and right icons in the top right or selecting from the menu
bar. This showcases dozens of features.
bar.
The file showcase.kv describes the main container, while each demonstration
pane is described in a separate .kv file in the data/screens directory.

View File

@ -3,15 +3,15 @@
Touch Tracer Line Drawing Demonstration
=======================================
The demonstrates tracking each touch registered to a device. You should
This demonstrates tracking each touch registered to a device. You should
see a basic background image. When you press and hold the mouse, you
should see a cross-hairs with the coordinates written next to them. As
should see cross-hairs with the coordinates written next to them. As
you drag, it leaves a trail. Additional information, like pressure,
will be shown if they are in your device's touch.profile.
This program specifies an icon, the file icon.png, in its App subclass.
It also uses the particle.png file as source for drawing the trails, which
white on transparent. The file touchtracer.kv describes the application.
It also uses the particle.png file as the source for drawing the trails which
are white on transparent. The file touchtracer.kv describes the application.
The file android.txt is used to package the application for use with the
Kivy Launcher Android application. For Android devices, you can

View File

@ -28,7 +28,7 @@ __all__ = (
'kivy_config_fn', 'kivy_usermodules_dir',
)
__version__ = '1.9.0-dev'
__version__ = '1.9.1-dev'
import sys
import shutil
@ -186,7 +186,9 @@ kivy_options = {
'video': (
'gstplayer', 'ffmpeg', 'ffpyplayer', 'gi', 'pygst', 'pyglet',
'null'),
'audio': ('gstplayer', 'pygame', 'gi', 'pygst', 'ffpyplayer', 'sdl2'),
'audio': (
'gstplayer', 'pygame', 'gi', 'pygst', 'ffpyplayer', 'sdl2',
'avplayer'),
'image': ('tex', 'imageio', 'dds', 'gif', 'sdl2', 'pygame', 'pil', 'ffpy'),
'camera': ('opencv', 'gi', 'pygst', 'videocapture', 'avfoundation'),
'spelling': ('enchant', 'osxappkit', ),

View File

@ -40,6 +40,7 @@ from kivy.compat import PY2
from kivy.resources import resource_find
from kivy.properties import StringProperty, NumericProperty, OptionProperty, \
AliasProperty, BooleanProperty
from kivy.utils import platform
from kivy.setupconfig import USE_SDL2
@ -193,7 +194,8 @@ class Sound(EventDispatcher):
# Little trick here, don't activate gstreamer on window
# seem to have lot of crackle or something...
audio_libs = []
if platform in ('macosx', 'ios'):
audio_libs += [('avplayer', 'audio_avplayer')]
# from now on, prefer our gstplayer instead of gi/pygst.
try:
from kivy.lib.gstplayer import GstPlayer # NOQA

View File

@ -0,0 +1,71 @@
'''
AudioAvplayer: implementation of Sound using pyobjus / AVFoundation.
Works on iOS / OSX.
'''
__all__ = ('SoundAvplayer', )
from kivy.core.audio import Sound, SoundLoader
from pyobjus import autoclass
from pyobjus.dylib_manager import load_framework, INCLUDE
import sys
load_framework(INCLUDE.AVFoundation)
AVAudioPlayer = autoclass("AVAudioPlayer")
NSURL = autoclass("NSURL")
NSString = autoclass("NSString")
class SoundAvplayer(Sound):
@staticmethod
def extensions():
# taken from https://developer.apple.com/library/ios/documentation/MusicAudio/Conceptual/CoreAudioOverview/SupportedAudioFormatsMacOSX/SupportedAudioFormatsMacOSX.html
return ("aac", "adts", "aif", "aiff", "aifc", "caf", "mp3", "mp4",
"m4a", "snd", "au", "sd2", "wav")
def __init__(self, **kwargs):
self._avplayer = None
super(SoundAvplayer, self).__init__(**kwargs)
def load(self):
self.unload()
fn = NSString.alloc().initWithUTF8String_(self.filename)
url = NSURL.alloc().initFileURLWithPath_(fn)
self._avplayer = AVAudioPlayer.alloc().initWithContentsOfURL_error_(url, None)
def unload(self):
self.stop()
self._avplayer = None
def play(self):
if not self._avplayer:
return
self._avplayer.play()
super(SoundAvplayer, self).play()
def stop(self):
if not self._avplayer:
return
self._avplayer.stop()
super(SoundAvplayer, self).stop()
def seek(self, position):
if not self._avplayer:
return
self._avplayer.playAtTime_(float(position))
def get_pos(self):
if self._avplayer:
return self._avplayer.currentTime
return super(SoundAvplayer, self).get_pos()
def on_volume(self, instance, volume):
if self._avplayer:
self._avplayer.volume = float(volume)
def _get_length(self):
if self._avplayer:
return self._avplayer.duration
return super(SoundAvplayer, self)._get_length()
SoundLoader.register(SoundAvplayer)

View File

@ -58,6 +58,22 @@ SDLK_SUPER = 1073742051
SDLK_CAPS = 1073741881
SDLK_INSERT = 1073741897
SDLK_KEYPADNUM = 1073741907
SDLK_KP_DEVIDE = 1073741908
SDLK_KP_MULTIPLY = 1073741909
SDLK_KP_MINUS = 1073741910
SDLK_KP_PLUS = 1073741911
SDLK_KP_ENTER = 1073741912
SDLK_KP_1 = 1073741913
SDLK_KP_2 = 1073741914
SDLK_KP_3 = 1073741915
SDLK_KP_4 = 1073741916
SDLK_KP_5 = 1073741917
SDLK_KP_6 = 1073741918
SDLK_KP_7 = 1073741919
SDLK_KP_8 = 1073741920
SDLK_KP_9 = 1073741921
SDLK_KP_0 = 1073741922
SDLK_KP_DOT = 1073741923
SDLK_F1 = 1073741882
SDLK_F2 = 1073741883
SDLK_F3 = 1073741884
@ -416,7 +432,11 @@ class WindowSDL(WindowBase):
SDLK_F2: 283, SDLK_F3: 284, SDLK_F4: 285, SDLK_F5: 286,
SDLK_F6: 287, SDLK_F7: 288, SDLK_F8: 289, SDLK_F9: 290,
SDLK_F10: 291, SDLK_F11: 292, SDLK_F12: 293, SDLK_F13: 294,
SDLK_F14: 295, SDLK_F15: 296, SDLK_KEYPADNUM: 300}
SDLK_F14: 295, SDLK_F15: 296, SDLK_KEYPADNUM: 300, SDLK_KP_DEVIDE: 267,
SDLK_KP_MULTIPLY: 268, SDLK_KP_MINUS: 269, SDLK_KP_PLUS: 270,
SDLK_KP_ENTER: 271, SDLK_KP_DOT: 266, SDLK_KP_0: 256, SDLK_KP_1: 257,
SDLK_KP_2: 258, SDLK_KP_3: 259, SDLK_KP_4: 260, SDLK_KP_5: 261,
SDLK_KP_6: 262, SDLK_KP_7: 263, SDLK_KP_8: 264, SDLK_KP_9:265 }
if platform == 'ios':
# XXX ios keyboard suck, when backspace is hit, the delete

View File

@ -44,7 +44,7 @@ class FileChooserUnicodeTestCase(unittest.TestCase):
\xc3\xa0\xc2\xa4\xc2\xb5\xc3\xa0\xc2\xa5\xe2\x82\xactestb',
b'oor\xff\xff\xff\xff\xee\xfe\xef\x81\x8D\x99testb']
self.ufiles = [join(basepathu, f) for f in ufiles]
self.bfiles = [join(basepathb, f) for f in bfiles]
self.bfiles = [join(basepathb, f) for f in bfiles] if PY2 else []
if not os.path.isdir(basepathu):
os.mkdir(basepathu)
for f in self.ufiles:
@ -79,11 +79,13 @@ class FileChooserUnicodeTestCase(unittest.TestCase):
# unicode encoding to be able to compare to returned unicode
for f in self.exitsfiles:
self.assertIn(f, files)
wid = FileChooserListView(path=self.basepathb)
Clock.tick()
files = [join(self.basepathb, f) for f in wid.files]
for f in self.bfiles:
self.assertIn(f, files)
if PY2:
wid = FileChooserListView(path=self.basepathb)
Clock.tick()
files = [join(self.basepathb, f) for f in wid.files]
for f in self.bfiles:
self.assertIn(f, files)
def tearDown(self):
if self.skip_test:

View File

@ -1,2 +1,9 @@
usr/lib/python2.7/dist-packages/kivy/*.so
usr/lib/python2.7/dist-packages/kivy/graphics/*.so
usr/lib/python2.7/dist-packages/kivy/core/clipboard/*.so
usr/lib/python2.7/dist-packages/kivy/graphics/*.so
usr/lib/python2.7/dist-packages/kivy/core/audio/*.so
usr/lib/python2.7/dist-packages/kivy/core/image/*.so
usr/lib/python2.7/dist-packages/kivy/core/text/*.so
usr/lib/python2.7/dist-packages/kivy/core/text/*.so
usr/lib/python2.7/dist-packages/kivy/core/window/*.so
usr/lib/python2.7/dist-packages/kivy/lib/gstplayer/*.so

View File

@ -1,21 +1,35 @@
usr/lib/python2.7/dist-packages/Kivy-*.egg-info
usr/lib/python2.7/dist-packages/kivy/*.py
usr/lib/python2.7/dist-packages/kivy/*.pyc
usr/lib/python2.7/dist-packages/kivy/*.py*
usr/lib/python2.7/dist-packages/kivy/*.pxd
usr/lib/python2.7/dist-packages/kivy/adapters/*
usr/lib/python2.7/dist-packages/kivy/core/*
usr/lib/python2.7/dist-packages/kivy/effects/*
usr/lib/python2.7/dist-packages/kivy/ext/*
usr/lib/python2.7/dist-packages/kivy/extras/*
usr/lib/python2.7/dist-packages/kivy/adapters/*.py*
usr/lib/python2.7/dist-packages/kivy/core/*.py*
usr/lib/python2.7/dist-packages/kivy/core/audio/*.py*
usr/lib/python2.7/dist-packages/kivy/core/camera/*.py*
usr/lib/python2.7/dist-packages/kivy/core/clipboard/*.py*
usr/lib/python2.7/dist-packages/kivy/core/gl/*.py*
usr/lib/python2.7/dist-packages/kivy/core/image/*.py*
usr/lib/python2.7/dist-packages/kivy/core/spelling/*.py*
usr/lib/python2.7/dist-packages/kivy/core/text/*.py*
usr/lib/python2.7/dist-packages/kivy/core/text/*.pxd
usr/lib/python2.7/dist-packages/kivy/core/video/*.py*
usr/lib/python2.7/dist-packages/kivy/core/window/*.py*
usr/lib/python2.7/dist-packages/kivy/effects/*.py*
usr/lib/python2.7/dist-packages/kivy/ext/*.py*
usr/lib/python2.7/dist-packages/kivy/extras/*.py*
usr/lib/python2.7/dist-packages/kivy/garden/*.py*
usr/lib/python2.7/dist-packages/kivy/graphics/config.h
usr/lib/python2.7/dist-packages/kivy/graphics/*.py*
usr/lib/python2.7/dist-packages/kivy/graphics/*.pxd
usr/lib/python2.7/dist-packages/kivy/graphics/*.pxi
usr/lib/python2.7/dist-packages/kivy/input
usr/lib/python2.7/dist-packages/kivy/lib
usr/lib/python2.7/dist-packages/kivy/modules
usr/lib/python2.7/dist-packages/kivy/network
usr/lib/python2.7/dist-packages/kivy/uix
usr/lib/python2.7/dist-packages/kivy/storage
usr/lib/python2.7/dist-packages/kivy/input/*.py*
usr/lib/python2.7/dist-packages/kivy/input/postproc/*.py*
usr/lib/python2.7/dist-packages/kivy/input/providers/*.py*
usr/lib/python2.7/dist-packages/kivy/lib/*.py*
usr/lib/python2.7/dist-packages/kivy/lib/gstplayer/*.py*
usr/lib/python2.7/dist-packages/kivy/lib/osc/*.py*
usr/lib/python2.7/dist-packages/kivy/lib/vidcore_lite/*.py*
usr/lib/python2.7/dist-packages/kivy/lib/vidcore_lite/*.pxd
usr/lib/python2.7/dist-packages/kivy/modules/*.py*
usr/lib/python2.7/dist-packages/kivy/network/*.py*
usr/lib/python2.7/dist-packages/kivy/storage/*.py*
usr/lib/python2.7/dist-packages/kivy/uix/*.py*

View File

@ -1,2 +1,9 @@
usr/lib/python3/dist-packages/kivy/*.so
usr/lib/python3/dist-packages/kivy/graphics/*.so
usr/lib/python3/dist-packages/kivy/core/clipboard/*.so
usr/lib/python3/dist-packages/kivy/graphics/*.so
usr/lib/python3/dist-packages/kivy/core/audio/*.so
usr/lib/python3/dist-packages/kivy/core/image/*.so
usr/lib/python3/dist-packages/kivy/core/text/*.so
usr/lib/python3/dist-packages/kivy/core/text/*.so
usr/lib/python3/dist-packages/kivy/core/window/*.so
usr/lib/python3/dist-packages/kivy/lib/gstplayer/*.so

View File

@ -1,24 +1,64 @@
usr/lib/python3/dist-packages/Kivy-*.egg-info
usr/lib/python3/dist-packages/kivy/*.py
usr/lib/python3/dist-packages/kivy/*.py*
usr/lib/python3/dist-packages/kivy/*.pxd
usr/lib/python3/dist-packages/kivy/__pycache__/*.pyc
usr/lib/python3/dist-packages/kivy/adapters/*
usr/lib/python3/dist-packages/kivy/core/*
usr/lib/python3/dist-packages/kivy/effects/*
usr/lib/python3/dist-packages/kivy/ext/*
usr/lib/python3/dist-packages/kivy/extras/*
usr/lib/python3/dist-packages/kivy/adapters/*.py*
usr/lib/python3/dist-packages/kivy/core/*.py*
usr/lib/python3/dist-packages/kivy/core/audio/*.py*
usr/lib/python3/dist-packages/kivy/core/camera/*.py*
usr/lib/python3/dist-packages/kivy/core/clipboard/*.py*
usr/lib/python3/dist-packages/kivy/core/gl/*.py*
usr/lib/python3/dist-packages/kivy/core/image/*.py*
usr/lib/python3/dist-packages/kivy/core/spelling/*.py*
usr/lib/python3/dist-packages/kivy/core/text/*.py*
usr/lib/python3/dist-packages/kivy/core/text/*.pxd
usr/lib/python3/dist-packages/kivy/core/video/*.py*
usr/lib/python3/dist-packages/kivy/core/window/*.py*
usr/lib/python3/dist-packages/kivy/effects/*.py*
usr/lib/python3/dist-packages/kivy/ext/*.py*
usr/lib/python3/dist-packages/kivy/extras/*.py*
usr/lib/python3/dist-packages/kivy/garden/*.py*
usr/lib/python3/dist-packages/kivy/garden/__pycache__/*.pyc
usr/lib/python3/dist-packages/kivy/graphics/config.h
usr/lib/python3/dist-packages/kivy/graphics/*.py*
usr/lib/python3/dist-packages/kivy/graphics/*.pxd
usr/lib/python3/dist-packages/kivy/graphics/*.pxi
usr/lib/python3/dist-packages/kivy/graphics/__pycache__/*.pyc
usr/lib/python3/dist-packages/kivy/input
usr/lib/python3/dist-packages/kivy/lib
usr/lib/python3/dist-packages/kivy/modules
usr/lib/python3/dist-packages/kivy/network
usr/lib/python3/dist-packages/kivy/uix
usr/lib/python3/dist-packages/kivy/input/*.py*
usr/lib/python3/dist-packages/kivy/input/postproc/*.py*
usr/lib/python3/dist-packages/kivy/input/providers/*.py*
usr/lib/python3/dist-packages/kivy/lib/*.py*
usr/lib/python3/dist-packages/kivy/lib/gstplayer/*.py*
usr/lib/python3/dist-packages/kivy/lib/osc/*.py*
usr/lib/python3/dist-packages/kivy/lib/vidcore_lite/*.py*
usr/lib/python3/dist-packages/kivy/lib/vidcore_lite/*.pxd
usr/lib/python3/dist-packages/kivy/modules/*.py*
usr/lib/python3/dist-packages/kivy/network/*.py*
usr/lib/python3/dist-packages/kivy/storage/*.py*
usr/lib/python3/dist-packages/kivy/uix/*.py*
usr/lib/python3/dist-packages/kivy/storage/*
usr/lib/python3/dist-packages/kivy/storage/__pycache__/*
usr/lib/python3/dist-packages/kivy/adapters/__pycache__
usr/lib/python3/dist-packages/kivy/lib/vidcore_lite/__pycache__
usr/lib/python3/dist-packages/kivy/lib/__pycache__
usr/lib/python3/dist-packages/kivy/lib/osc/__pycache__
usr/lib/python3/dist-packages/kivy/lib/gstplayer/__pycache__
usr/lib/python3/dist-packages/kivy/storage/__pycache__
usr/lib/python3/dist-packages/kivy/uix/__pycache__
usr/lib/python3/dist-packages/kivy/network/__pycache__
usr/lib/python3/dist-packages/kivy/__pycache__
usr/lib/python3/dist-packages/kivy/modules/__pycache__
usr/lib/python3/dist-packages/kivy/effects/__pycache__
usr/lib/python3/dist-packages/kivy/input/__pycache__
usr/lib/python3/dist-packages/kivy/input/postproc/__pycache__
usr/lib/python3/dist-packages/kivy/input/providers/__pycache__
usr/lib/python3/dist-packages/kivy/garden/__pycache__
usr/lib/python3/dist-packages/kivy/extras/__pycache__
usr/lib/python3/dist-packages/kivy/core/__pycache__
usr/lib/python3/dist-packages/kivy/core/image/__pycache__
usr/lib/python3/dist-packages/kivy/core/text/__pycache__
usr/lib/python3/dist-packages/kivy/core/camera/__pycache__
usr/lib/python3/dist-packages/kivy/core/video/__pycache__
usr/lib/python3/dist-packages/kivy/core/clipboard/__pycache__
usr/lib/python3/dist-packages/kivy/core/gl/__pycache__
usr/lib/python3/dist-packages/kivy/core/audio/__pycache__
usr/lib/python3/dist-packages/kivy/core/window/__pycache__
usr/lib/python3/dist-packages/kivy/core/spelling/__pycache__
usr/lib/python3/dist-packages/kivy/ext/__pycache__
usr/lib/python3/dist-packages/kivy/graphics/__pycache__

12
kivy/tools/packaging/linux/debian/rules Normal file → Executable file
View File

@ -13,16 +13,16 @@ export DH_VERBOSE=1
dh $@ --with python2,python3
override_dh_auto_build:
rm -rf $(CURDIR)/debian/tmp-build
for PYX in $(shell pyversions -i) $(shell py3versions -r) ; do \
$(MAKE) clean; \
$(MAKE) build PYTHON=$$PYX; \
done
cd doc && PYTHONPATH=.. make html
$(MAKE) install PYTHON=$$PYX INSTALL_ROOT=$(CURDIR)/debian/tmp-build INSTALL_PREFIX=/usr INSTALL_LAYOUT=deb; \
done; \
cd doc && PYTHONPATH=.. make PYTHON=$$PYX html
override_dh_auto_install:
for PYX in $(shell pyversions -i) $(shell py3versions -r) ; do \
$(MAKE) install PYTHON=$$PYX INSTALL_ROOT=$(CURDIR)/debian/tmp INSTALL_PREFIX=/usr INSTALL_LAYOUT=deb; \
done
mv $(CURDIR)/debian/tmp-build $(CURDIR)/debian/tmp
override_dh_auto_test:
#xvfb-run -s "+extension GLX" dh_auto_test