From: Ismaël Bouya Date: Fri, 29 Jul 2016 13:04:18 +0000 (+0200) Subject: Add Unfocused overlay when focus is lost X-Git-Tag: 1.1.0 X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2FPython%2FMusicSampler.git;a=commitdiff_plain;h=7d6df771f603e9642047264f967525422ef09e99 Add Unfocused overlay when focus is lost --- 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 - Pour utiliser les sources directement, les modules suivants sont requis: -| module | version minimale | commentaire | -| ----------- | ---------------- | -------------------------------- | -| Cython | 0.24 | pour compiler Kivy | -| Kivy | 1.9.1 | | -| Markdown | 2.6.6 | pour la documentation uniquement | -| pydub | 0.16.4 | | -| Pygame | 1.9.2.dev1 | utilisée par Kivy | -| Pygments | 2.1.3 | pour la documentation uniquement | -| sounddevice | 0.3.3 | | -| transitions | 0.4.1 | | -| PyYAML | 3.11 | | +| module | version minimale | commentaire | +| ----------- | ---------------- | --------------------------------------------------------------------------- | +| Cython | 0.24 | pour compiler Kivy | +| Kivy | 1.9.1 | certaines fonctionnalités nécessitent de compiler/installer avec USE_SDL2=1 | +| Markdown | 2.6.6 | pour la documentation uniquement | +| pydub | 0.16.4 | | +| Pygame | 1.9.2.dev1 | utilisée par Kivy | +| Pygments | 2.1.3 | pour la documentation uniquement | +| sounddevice | 0.3.3 | | +| transitions | 0.4.1 | | +| PyYAML | 3.11 | | Le projet est également disponible via pip: @@ -36,6 +36,12 @@ Le programme utilise les polices "Symbola" et "Ubuntu" (Regular / Bold), qui doi sudo apt-get install ttf-ancient-fonts ttf-ubuntu-font-family portaudio +Pour compiler kivy avec la librairie SDL2, il faut certains paquets installés: + + sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev + +cf [Installation Kivy](https://kivy.org/docs/installation/installation-linux.html) + ## Version compilée 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 * `-p MUSIC_PATH, --music-path MUSIC_PATH` : précise le chemin des musiques (par défaut, le dossier courant). * `-d, --debug` : Affiche les informations de déboggage (désactivé par défaut) * `-V, --version` : affiche la version courante et quitte (utilisable uniquement pour la version compilée). + * `--no-focus-warning`: Ne pas afficher d'avertissement lorsque l'application perd le focus. 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 : 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") from kivy.app import App from kivy.uix.floatlayout import FloatLayout from kivy.uix.relativelayout import RelativeLayout +from kivy.uix.label import Label from kivy.properties import ListProperty, StringProperty from kivy.core.window import Window from kivy.lang import Builder @@ -14,6 +15,7 @@ from kivy.lang import Builder register_fonts() +from .helpers import Config from .key import Key from .mapping import Mapping @@ -37,9 +39,23 @@ class KeyList(RelativeLayout): if len(self.keylist) > 2: self.third_key = self.keylist[2] -class Screen(FloatLayout): +class UnfocusedOverlay(Label): pass +class Screen(FloatLayout): + def __init__(self, **kwargs): + super(Screen, self).__init__(**kwargs) + self.unfocused_widget = UnfocusedOverlay() + Window.bind(focus=self.focus_changed) + + def focus_changed(self, instance, focus): + if Config.no_focus_warning: + return + if not focus: + self.add_widget(self.unfocused_widget) + else: + self.remove_widget(self.unfocused_widget) + class MusicSamplerApp(App): def build(self): 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(): action=ListDevicesAction, help="List available sound devices" ) + parser.add_argument("--no-focus-warning", + action='store_true', + help="Don't show warning when focus is lost" + ) parser.add_argument('--', dest="args", help="Kivy arguments. All arguments after this are interpreted\ @@ -138,6 +142,7 @@ def parse_args(): Config.channels = args.channels Config.sample_width = args.sample_width Config.builtin_mixing = args.builtin_mixing + Config.no_focus_warning = args.no_focus_warning if args.music_path.endswith("/"): Config.music_path = args.music_path 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 @@ size_hint: None, None size: 2 * self.parent.width - 2 * self.parent.line_width, self.parent.height - key_label.font_size +: + canvas.before: + Color: + rgba: 1, 0, 0, 0.9 + Rectangle: + pos: 0, 0 + size: self.width, self.height + size_hint: 1, 1 + color: 1, 1, 1, 1 + valign: "middle" + halign: "center" + font_name: "Ubuntu" + font_size: self.parent and 2 * self.parent.key_size or 42 + text_size: self.size + text: "Focus lost!" + : canvas: Color: