diff options
author | Ismaël Bouya <ismael.bouya@normalesup.org> | 2016-07-29 15:04:18 +0200 |
---|---|---|
committer | Ismaël Bouya <ismael.bouya@normalesup.org> | 2016-07-29 15:33:08 +0200 |
commit | 7d6df771f603e9642047264f967525422ef09e99 (patch) | |
tree | 6c7f4bb37323a5437b4d47d132f6349c168fc685 | |
parent | a49f93078f02c611090132ce9cab6edca31a3f9b (diff) | |
download | MusicSampler-7d6df771f603e9642047264f967525422ef09e99.tar.gz MusicSampler-7d6df771f603e9642047264f967525422ef09e99.tar.zst MusicSampler-7d6df771f603e9642047264f967525422ef09e99.zip |
Add Unfocused overlay when focus is lost1.1.0
-rw-r--r-- | documentation_fr.md | 29 | ||||
-rw-r--r-- | music_sampler/app.py | 18 | ||||
-rw-r--r-- | music_sampler/helpers.py | 5 | ||||
-rw-r--r-- | music_sampler/music_sampler.kv | 16 |
4 files changed, 56 insertions, 12 deletions
diff --git a/documentation_fr.md b/documentation_fr.md index 2371517..2eba81d 100644 --- a/documentation_fr.md +++ b/documentation_fr.md | |||
@@ -16,17 +16,17 @@ Si vous utilisez la version compilée de Music Sampler (cf. plus bas pour un lie | |||
16 | 16 | ||
17 | - Pour utiliser les sources directement, les modules suivants sont requis: | 17 | - Pour utiliser les sources directement, les modules suivants sont requis: |
18 | 18 | ||
19 | | module | version minimale | commentaire | | 19 | | module | version minimale | commentaire | |
20 | | ----------- | ---------------- | -------------------------------- | | 20 | | ----------- | ---------------- | --------------------------------------------------------------------------- | |
21 | | Cython | 0.24 | pour compiler Kivy | | 21 | | Cython | 0.24 | pour compiler Kivy | |
22 | | Kivy | 1.9.1 | | | 22 | | Kivy | 1.9.1 | certaines fonctionnalités nécessitent de compiler/installer avec USE_SDL2=1 | |
23 | | Markdown | 2.6.6 | pour la documentation uniquement | | 23 | | Markdown | 2.6.6 | pour la documentation uniquement | |
24 | | pydub | 0.16.4 | | | 24 | | pydub | 0.16.4 | | |
25 | | Pygame | 1.9.2.dev1 | utilisée par Kivy | | 25 | | Pygame | 1.9.2.dev1 | utilisée par Kivy | |
26 | | Pygments | 2.1.3 | pour la documentation uniquement | | 26 | | Pygments | 2.1.3 | pour la documentation uniquement | |
27 | | sounddevice | 0.3.3 | | | 27 | | sounddevice | 0.3.3 | | |
28 | | transitions | 0.4.1 | | | 28 | | transitions | 0.4.1 | | |
29 | | PyYAML | 3.11 | | | 29 | | PyYAML | 3.11 | | |
30 | 30 | ||
31 | Le projet est également disponible via pip: | 31 | Le projet est également disponible via pip: |
32 | 32 | ||
@@ -36,6 +36,12 @@ Le programme utilise les polices "Symbola" et "Ubuntu" (Regular / Bold), qui doi | |||
36 | 36 | ||
37 | sudo apt-get install ttf-ancient-fonts ttf-ubuntu-font-family portaudio | 37 | sudo apt-get install ttf-ancient-fonts ttf-ubuntu-font-family portaudio |
38 | 38 | ||
39 | Pour compiler kivy avec la librairie SDL2, il faut certains paquets installés: | ||
40 | |||
41 | sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev | ||
42 | |||
43 | cf [Installation Kivy](https://kivy.org/docs/installation/installation-linux.html) | ||
44 | |||
39 | ## Version compilée | 45 | ## Version compilée |
40 | 46 | ||
41 | Une version compilée peut être créée avec pyinstaller: | 47 | Une version compilée peut être créée avec pyinstaller: |
@@ -73,6 +79,7 @@ Toutes les options au lancement sont facultatives ; la plupart du temps lancer l | |||
73 | * `-p MUSIC_PATH, --music-path MUSIC_PATH` : précise le chemin des musiques (par défaut, le dossier courant). | 79 | * `-p MUSIC_PATH, --music-path MUSIC_PATH` : précise le chemin des musiques (par défaut, le dossier courant). |
74 | * `-d, --debug` : Affiche les informations de déboggage (désactivé par défaut) | 80 | * `-d, --debug` : Affiche les informations de déboggage (désactivé par défaut) |
75 | * `-V, --version` : affiche la version courante et quitte (utilisable uniquement pour la version compilée). | 81 | * `-V, --version` : affiche la version courante et quitte (utilisable uniquement pour la version compilée). |
82 | * `--no-focus-warning`: Ne pas afficher d'avertissement lorsque l'application perd le focus. | ||
76 | 83 | ||
77 | Les options suivantes sont plutôt réservées à un usage avancé de music_sampler, ou en cas de problème avec la configuration standard : | 84 | Les options suivantes sont plutôt réservées à un usage avancé de music_sampler, ou en cas de problème avec la configuration standard : |
78 | 85 | ||
diff --git a/music_sampler/app.py b/music_sampler/app.py index 08a8891..ac1944a 100644 --- a/music_sampler/app.py +++ b/music_sampler/app.py | |||
@@ -7,6 +7,7 @@ kivy.require("1.9.1") | |||
7 | from kivy.app import App | 7 | from kivy.app import App |
8 | from kivy.uix.floatlayout import FloatLayout | 8 | from kivy.uix.floatlayout import FloatLayout |
9 | from kivy.uix.relativelayout import RelativeLayout | 9 | from kivy.uix.relativelayout import RelativeLayout |
10 | from kivy.uix.label import Label | ||
10 | from kivy.properties import ListProperty, StringProperty | 11 | from kivy.properties import ListProperty, StringProperty |
11 | from kivy.core.window import Window | 12 | from kivy.core.window import Window |
12 | from kivy.lang import Builder | 13 | from kivy.lang import Builder |
@@ -14,6 +15,7 @@ from kivy.lang import Builder | |||
14 | register_fonts() | 15 | register_fonts() |
15 | 16 | ||
16 | 17 | ||
18 | from .helpers import Config | ||
17 | from .key import Key | 19 | from .key import Key |
18 | from .mapping import Mapping | 20 | from .mapping import Mapping |
19 | 21 | ||
@@ -37,9 +39,23 @@ class KeyList(RelativeLayout): | |||
37 | if len(self.keylist) > 2: | 39 | if len(self.keylist) > 2: |
38 | self.third_key = self.keylist[2] | 40 | self.third_key = self.keylist[2] |
39 | 41 | ||
40 | class Screen(FloatLayout): | 42 | class UnfocusedOverlay(Label): |
41 | pass | 43 | pass |
42 | 44 | ||
45 | class 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) | ||
50 | |||
51 | def focus_changed(self, instance, focus): | ||
52 | if Config.no_focus_warning: | ||
53 | return | ||
54 | if not focus: | ||
55 | self.add_widget(self.unfocused_widget) | ||
56 | else: | ||
57 | self.remove_widget(self.unfocused_widget) | ||
58 | |||
43 | class MusicSamplerApp(App): | 59 | class MusicSamplerApp(App): |
44 | def build(self): | 60 | def build(self): |
45 | Window.size = (913, 563) | 61 | Window.size = (913, 563) |
diff --git a/music_sampler/helpers.py b/music_sampler/helpers.py index 6acaba4..2249746 100644 --- a/music_sampler/helpers.py +++ b/music_sampler/helpers.py | |||
@@ -123,6 +123,10 @@ def parse_args(): | |||
123 | action=ListDevicesAction, | 123 | action=ListDevicesAction, |
124 | help="List available sound devices" | 124 | help="List available sound devices" |
125 | ) | 125 | ) |
126 | parser.add_argument("--no-focus-warning", | ||
127 | action='store_true', | ||
128 | help="Don't show warning when focus is lost" | ||
129 | ) | ||
126 | parser.add_argument('--', | 130 | parser.add_argument('--', |
127 | dest="args", | 131 | dest="args", |
128 | help="Kivy arguments. All arguments after this are interpreted\ | 132 | help="Kivy arguments. All arguments after this are interpreted\ |
@@ -138,6 +142,7 @@ def parse_args(): | |||
138 | Config.channels = args.channels | 142 | Config.channels = args.channels |
139 | Config.sample_width = args.sample_width | 143 | Config.sample_width = args.sample_width |
140 | Config.builtin_mixing = args.builtin_mixing | 144 | Config.builtin_mixing = args.builtin_mixing |
145 | Config.no_focus_warning = args.no_focus_warning | ||
141 | if args.music_path.endswith("/"): | 146 | if args.music_path.endswith("/"): |
142 | Config.music_path = args.music_path | 147 | Config.music_path = args.music_path |
143 | else: | 148 | else: |
diff --git a/music_sampler/music_sampler.kv b/music_sampler/music_sampler.kv index 7abab0d..ae5dbd7 100644 --- a/music_sampler/music_sampler.kv +++ b/music_sampler/music_sampler.kv | |||
@@ -76,6 +76,22 @@ | |||
76 | size_hint: None, None | 76 | size_hint: None, None |
77 | size: 2 * self.parent.width - 2 * self.parent.line_width, self.parent.height - key_label.font_size | 77 | size: 2 * self.parent.width - 2 * self.parent.line_width, self.parent.height - key_label.font_size |
78 | 78 | ||
79 | <UnfocusedOverlay>: | ||
80 | canvas.before: | ||
81 | Color: | ||
82 | rgba: 1, 0, 0, 0.9 | ||
83 | Rectangle: | ||
84 | pos: 0, 0 | ||
85 | size: self.width, self.height | ||
86 | size_hint: 1, 1 | ||
87 | color: 1, 1, 1, 1 | ||
88 | valign: "middle" | ||
89 | halign: "center" | ||
90 | font_name: "Ubuntu" | ||
91 | font_size: self.parent and 2 * self.parent.key_size or 42 | ||
92 | text_size: self.size | ||
93 | text: "Focus lost!" | ||
94 | |||
79 | <Screen>: | 95 | <Screen>: |
80 | canvas: | 96 | canvas: |
81 | Color: | 97 | Color: |