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()