]> git.immae.eu Git - perso/Immae/Projets/Python/MusicSampler.git/blobdiff - helpers/__init__.py
Remove fonts from directory
[perso/Immae/Projets/Python/MusicSampler.git] / helpers / __init__.py
index 9d6663893bc32634b1163f7a525b8b04a7bdf9a5..4827e6c1af392acf8614008c1e1d9749e54a0190 100644 (file)
@@ -6,9 +6,43 @@ import math
 import sounddevice as sd
 import logging
 
+from . import sysfont
+
 class Config:
     pass
 
+def find_font(name, style=sysfont.STYLE_NONE):
+    if getattr(sys, 'frozen', False):
+        font = sys._MEIPASS + "/fonts/{}_{}.ttf".format(name, style)
+    else:
+        font = sysfont.get_font(name, style=style)
+        if font is not None:
+            font = font[4]
+    return font
+
+def register_fonts():
+    from kivy.core.text import LabelBase
+
+    ubuntu_regular = find_font("Ubuntu", style=sysfont.STYLE_NORMAL)
+    ubuntu_bold = find_font("Ubuntu", style=sysfont.STYLE_BOLD)
+    symbola = find_font("Symbola")
+
+    if ubuntu_regular is None:
+        error_print("Font Ubuntu regular could not be found, please install it.")
+        sys.exit()
+    if symbola is None:
+        error_print("Font Symbola could not be found, please install it.")
+        sys.exit()
+    if ubuntu_bold is None:
+        warn_print("Font Ubuntu Bold could not be found.")
+
+    LabelBase.register(name="Ubuntu",
+            fn_regular=ubuntu_regular,
+            fn_bold=ubuntu_bold)
+    LabelBase.register(name="Symbola",
+            fn_regular=symbola)
+
+
 def path():
     if getattr(sys, 'frozen', False):
         return sys._MEIPASS + "/"
@@ -33,6 +67,10 @@ def parse_args():
             default="config.yml",
             required=False,
             help="Config file to load")
+    parser.add_argument("-p", "--music-path",
+            default=".",
+            required=False,
+            help="Folder in which to find the music files")
     parser.add_argument("-d", "--debug",
             nargs=0,
             action=DebugModeAction,
@@ -86,7 +124,7 @@ def parse_args():
                     by Kivy. Pass \"-- --help\" to get Kivy's usage.")
 
     from kivy.logger import Logger
-    Logger.setLevel(logging.ERROR)
+    Logger.setLevel(logging.WARN)
 
     args = parser.parse_args(argv)
 
@@ -98,6 +136,10 @@ def parse_args():
     Config.channels = args.channels
     Config.sample_width = args.sample_width
     Config.builtin_mixing = args.builtin_mixing
+    if args.music_path.endswith("/"):
+        Config.music_path = args.music_path
+    else:
+        Config.music_path = args.music_path + "/"
 
 class DebugModeAction(argparse.Action):
     def __call__(self, parser, namespace, values, option_string=None):
@@ -131,16 +173,20 @@ def duration_to_min_sec(duration):
 
 def gain(volume, old_volume=None):
     if old_volume is None:
-        return 20 * math.log10(volume / 100)
+        return 20 * math.log10(max(volume, 0.1) / 100)
     else:
         return [
                 20 * math.log10(max(volume, 0.1) / max(old_volume, 0.1)),
                 max(volume, 0)]
 
-def debug_print(message):
+def debug_print(message, with_trace=False):
+    from kivy.logger import Logger
+    Logger.debug('MusicSampler: ' + message, exc_info=with_trace)
+
+def error_print(message, with_trace=False):
     from kivy.logger import Logger
-    Logger.debug('MusicSampler: ' + message)
+    Logger.error('MusicSampler: ' + message, exc_info=with_trace)
 
-def error_print(message):
+def warn_print(message, with_trace=False):
     from kivy.logger import Logger
-    Logger.error('MusicSampler: ' + message)
+    Logger.warn('MusicSampler: ' + message, exc_info=with_trace)