]>
Commit | Line | Data |
---|---|---|
cc008de4 IB |
1 | import helpers |
2 | ||
3 | helpers.parse_args() | |
4 | ||
d8046b94 IB |
5 | import kivy |
6 | kivy.require("1.9.1") | |
4b2d79ca IB |
7 | from kivy.app import App |
8 | from kivy.uix.floatlayout import FloatLayout | |
9 | from kivy.uix.relativelayout import RelativeLayout | |
10 | from kivy.properties import ListProperty, StringProperty | |
11 | from kivy.clock import Clock | |
12 | from kivy.core.window import Window | |
bb69f62e | 13 | from kivy.lang import Builder |
4b2d79ca IB |
14 | from helpers.key import Key |
15 | from helpers.mapping import Mapping | |
bb69f62e | 16 | |
65ec4d2a IB |
17 | class KeyList(RelativeLayout): |
18 | keylist = ListProperty([]) | |
19 | first_key = StringProperty("") | |
20 | second_key = StringProperty("") | |
21 | third_key = StringProperty("") | |
22 | ||
23 | def append(self, value): | |
98ff4305 | 24 | self.keylist.insert(0, value) |
65ec4d2a IB |
25 | |
26 | def on_keylist(self, instance, new_key_list): | |
27 | if len(self.keylist) > 0: | |
28 | self.first_key = self.keylist[0] | |
29 | if len(self.keylist) > 1: | |
30 | self.second_key = self.keylist[1] | |
31 | if len(self.keylist) > 2: | |
32 | self.third_key = self.keylist[2] | |
33 | ||
4b2d79ca IB |
34 | class PlayList(RelativeLayout): |
35 | playlist = ListProperty([]) | |
36 | ||
37 | def __init__(self, **kwargs): | |
38 | super(PlayList, self).__init__(**kwargs) | |
39 | Clock.schedule_interval(self.update_playlist, 0.5) | |
40 | ||
41 | def update_playlist(self, dt): | |
42 | if self.parent is None or 'Mapping' not in self.parent.ids: | |
43 | return True | |
44 | ||
45 | open_files = self.parent.ids['Mapping'].open_files | |
46 | self.playlist = [] | |
47 | for music_file in open_files.values(): | |
20586193 | 48 | if not music_file.is_in_use(): |
4b2d79ca | 49 | continue |
98ff4305 IB |
50 | |
51 | text = "{}/{}".format( | |
52 | helpers.duration_to_min_sec(music_file.sound_position), | |
2e404903 | 53 | helpers.duration_to_min_sec(music_file.sound_duration)) |
98ff4305 | 54 | |
20586193 | 55 | if music_file.is_loaded_paused(): |
98ff4305 | 56 | self.playlist.append(["⏸", music_file.name, text, False]) |
4b2d79ca | 57 | else: |
98ff4305 | 58 | self.playlist.append(["⏵", music_file.name, text, True]) |
189bf90c | 59 | |
189bf90c | 60 | |
4b2d79ca IB |
61 | class ActionList(RelativeLayout): |
62 | action_title = StringProperty("") | |
63 | action_list = ListProperty([]) | |
189bf90c | 64 | |
4b2d79ca IB |
65 | def update_list(self, key, action_number = 0): |
66 | self.action_title = "actions linked to key {}:".format(key.key_sym) | |
67 | self.action_list = [] | |
189bf90c | 68 | |
4b2d79ca | 69 | action_descriptions = [action.description() for action in key.actions] |
e7f8dab4 | 70 | |
4b2d79ca IB |
71 | for index, description in enumerate(action_descriptions): |
72 | if index < int(action_number): | |
73 | icon = "✓" | |
74 | elif index + 0.5 == action_number: | |
75 | icon = "✅" | |
76 | else: | |
77 | icon = " " | |
be27763f | 78 | |
4b2d79ca | 79 | self.action_list.append([icon, description]) |
189bf90c | 80 | |
4b2d79ca IB |
81 | class Screen(FloatLayout): |
82 | pass | |
189bf90c | 83 | |
4b2d79ca IB |
84 | class MusicSamplerApp(App): |
85 | def build(self): | |
86 | Window.size = (913, 563) | |
9de92b6d | 87 | |
4b2d79ca | 88 | return Screen() |
9de92b6d | 89 | |
4b2d79ca | 90 | if __name__ == '__main__': |
e4846541 | 91 | Builder.load_file(helpers.path() + "/music_sampler.kv") |
4b2d79ca | 92 | MusicSamplerApp().run() |