Ajout du GUI
This commit is contained in:
94
kivy/modules/recorder.py
Normal file
94
kivy/modules/recorder.py
Normal file
@@ -0,0 +1,94 @@
|
||||
'''
|
||||
Recorder module
|
||||
===============
|
||||
|
||||
.. versionadded:: 1.1.0
|
||||
|
||||
Create an instance of :class:`~kivy.input.recorder.Recorder`, attach to the
|
||||
class, and bind some keys to record / play sequences:
|
||||
|
||||
- F6: play the last record in a loop
|
||||
- F7: read the latest recording
|
||||
- F8: record input events
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
.. |attrs| replace:: :attr:`~kivy.input.recorder.Recorder.record_attrs`
|
||||
.. |profile_mask| replace::
|
||||
:attr:`~kivy.input.recorder.Recorder.record_profile_mask`
|
||||
|
||||
:Parameters:
|
||||
`attrs`: str, defaults to |attrs| value.
|
||||
Attributes to record from the motion event
|
||||
`profile_mask`: str, defaults to |profile_mask| value.
|
||||
Mask for motion event profile. Used to filter which profile will appear
|
||||
in the fake motion event when replayed.
|
||||
`filename`: str, defaults to 'recorder.kvi'
|
||||
Name of the file to record / play with
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
For normal module usage, please see the :mod:`~kivy.modules` documentation.
|
||||
|
||||
'''
|
||||
|
||||
__all__ = ('start', 'stop')
|
||||
|
||||
from kivy.logger import Logger
|
||||
from functools import partial
|
||||
|
||||
|
||||
def replay(recorder, *args):
|
||||
if recorder.play:
|
||||
return
|
||||
else:
|
||||
recorder.play = True
|
||||
|
||||
|
||||
def on_recorder_key(recorder, window, key, *largs):
|
||||
if key == 289: # F8
|
||||
if recorder.play:
|
||||
Logger.error('Recorder: Cannot start recording while playing.')
|
||||
return
|
||||
recorder.record = not recorder.record
|
||||
elif key == 288: # F7
|
||||
if recorder.record:
|
||||
Logger.error('Recorder: Cannot start playing while recording.')
|
||||
return
|
||||
recorder.play = not recorder.play
|
||||
elif key == 287: # F6
|
||||
if recorder.play:
|
||||
recorder.unbind(play=replay)
|
||||
else:
|
||||
recorder.bind(play=replay)
|
||||
recorder.play = True
|
||||
|
||||
|
||||
def start(win, ctx):
|
||||
keys = {}
|
||||
|
||||
# attributes
|
||||
value = ctx.config.get('attrs', None)
|
||||
if value is not None:
|
||||
keys['record_attrs'] = value.split(':')
|
||||
|
||||
# profile mask
|
||||
value = ctx.config.get('profile_mask', None)
|
||||
if value is not None:
|
||||
keys['record_profile_mask'] = value.split(':')
|
||||
|
||||
# filename
|
||||
value = ctx.config.get('filename', None)
|
||||
if value is not None:
|
||||
keys['filename'] = value
|
||||
|
||||
from kivy.input.recorder import Recorder
|
||||
ctx.recorder = Recorder(window=win, **keys)
|
||||
win.bind(on_key_down=partial(on_recorder_key, ctx.recorder))
|
||||
|
||||
|
||||
def stop(win, ctx):
|
||||
if hasattr(ctx, 'recorder'):
|
||||
ctx.recorder.release()
|
||||
Reference in New Issue
Block a user