]> git.immae.eu Git - perso/Immae/Projets/Python/MusicSampler.git/commitdiff
Add Unfocused overlay when focus is lost tags/1.1.0 1.1.0
authorIsmaël Bouya <ismael.bouya@normalesup.org>
Fri, 29 Jul 2016 13:04:18 +0000 (15:04 +0200)
committerIsmaël Bouya <ismael.bouya@normalesup.org>
Fri, 29 Jul 2016 13:33:08 +0000 (15:33 +0200)
documentation_fr.md
music_sampler/app.py
music_sampler/helpers.py
music_sampler/music_sampler.kv

index 2371517c8173dadc583461c2a71b8cc8e49533a9..2eba81d1fdd3df7e6e3ba42dceb93529d781b4a3 100644 (file)
@@ -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 :
 
index 08a8891d0a9f88601ffcfc1fac6689f6f92053a1..ac1944a1a5075ce92a3b4340670b25fbafd13c9e 100644 (file)
@@ -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)
index 6acaba4f7e9300523ef6c9a20c389b2eb9d79484..2249746a5a928cf2c416915a0b587c6b10b704d8 100644 (file)
@@ -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:
index 7abab0d374d3bd491f8b307e47e2d8d753f84109..ae5dbd7787251535b8cc907b167fd36e18e10acf 100644 (file)
     size_hint: None, None
     size: 2 * self.parent.width - 2 * self.parent.line_width, self.parent.height - key_label.font_size
 
+<UnfocusedOverlay>:
+  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!"
+
 <Screen>:
   canvas:
     Color: