]> git.immae.eu Git - perso/Immae/Projets/Python/MusicSampler.git/blame - music_sampler/app.py
Leave application correctly when clicking on the cross button
[perso/Immae/Projets/Python/MusicSampler.git] / music_sampler / app.py
CommitLineData
d734981b 1from .helpers import parse_args, register_fonts, path
cc008de4 2
6ebe6247 3parse_args()
cc008de4 4
d8046b94
IB
5import kivy
6kivy.require("1.9.1")
4b2d79ca
IB
7from kivy.app import App
8from kivy.uix.floatlayout import FloatLayout
9from kivy.uix.relativelayout import RelativeLayout
7d6df771 10from kivy.uix.label import Label
4b2d79ca 11from kivy.properties import ListProperty, StringProperty
4b2d79ca 12from kivy.core.window import Window
bb69f62e 13from kivy.lang import Builder
bb69f62e 14
6ebe6247 15register_fonts()
35bde798 16
dd25f8f0 17
7d6df771 18from .helpers import Config
dd25f8f0
IB
19from .key import Key
20from .mapping import Mapping
21
60aa2bed 22from .app_blocks.actionlist import *
d734981b
IB
23from .app_blocks.playlist import *
24
65ec4d2a
IB
25class KeyList(RelativeLayout):
26 keylist = ListProperty([])
27 first_key = StringProperty("")
28 second_key = StringProperty("")
29 third_key = StringProperty("")
30
31 def append(self, value):
98ff4305 32 self.keylist.insert(0, value)
65ec4d2a
IB
33
34 def on_keylist(self, instance, new_key_list):
35 if len(self.keylist) > 0:
36 self.first_key = self.keylist[0]
37 if len(self.keylist) > 1:
38 self.second_key = self.keylist[1]
39 if len(self.keylist) > 2:
40 self.third_key = self.keylist[2]
41
7d6df771 42class UnfocusedOverlay(Label):
4b2d79ca 43 pass
189bf90c 44
7d6df771
IB
45class Screen(FloatLayout):
46 def __init__(self, **kwargs):
47 super(Screen, self).__init__(**kwargs)
48 self.unfocused_widget = UnfocusedOverlay()
49 Window.bind(focus=self.focus_changed)
ca3264c8 50 Window.on_request_close = self.on_request_close
7d6df771
IB
51
52 def focus_changed(self, instance, focus):
53 if Config.no_focus_warning:
54 return
55 if not focus:
56 self.add_widget(self.unfocused_widget)
57 else:
58 self.remove_widget(self.unfocused_widget)
59
ca3264c8
IB
60 def on_request_close(self, *args, **kwargs):
61 self.ids["Mapping"].leave_application()
62
4b2d79ca
IB
63class MusicSamplerApp(App):
64 def build(self):
65 Window.size = (913, 563)
9de92b6d 66
4b2d79ca 67 return Screen()
9de92b6d 68
6ebe6247
IB
69def main():
70 Builder.load_file(path() + "/music_sampler.kv")
4b2d79ca 71 MusicSamplerApp().run()