1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.relativelayout import RelativeLayout
from kivy.properties import ListProperty, StringProperty
from kivy.clock import Clock
from kivy.core.window import Window
from helpers.key import Key
from helpers.mapping import Mapping
class PlayList(RelativeLayout):
playlist = ListProperty([])
def __init__(self, **kwargs):
super(PlayList, self).__init__(**kwargs)
Clock.schedule_interval(self.update_playlist, 0.5)
def update_playlist(self, dt):
if self.parent is None or 'Mapping' not in self.parent.ids:
return True
open_files = self.parent.ids['Mapping'].open_files
self.playlist = []
for music_file in open_files.values():
if not music_file.is_playing():
continue
if music_file.is_paused():
self.playlist.append(["⏸", music_file.name, False])
else:
self.playlist.append(["⏵", music_file.name, True])
class ActionList(RelativeLayout):
action_title = StringProperty("")
action_list = ListProperty([])
def update_list(self, key, action_number = 0):
self.action_title = "actions linked to key {}:".format(key.key_sym)
self.action_list = []
action_descriptions = [action.description() for action in key.actions]
for index, description in enumerate(action_descriptions):
if index < int(action_number):
icon = "✓"
elif index + 0.5 == action_number:
icon = "✅"
else:
icon = " "
self.action_list.append([icon, description])
class Screen(FloatLayout):
pass
class MusicSamplerApp(App):
def build(self):
Window.size = (913, 563)
return Screen()
if __name__ == '__main__':
MusicSamplerApp().run()
|