X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=helpers%2F__init__.py;h=4827e6c1af392acf8614008c1e1d9749e54a0190;hb=35bde798b6cda13579337b0ec5a803fdd5eab19a;hp=f5ad848b855324c7a9133a29533d4535bb9f210d;hpb=aee1334ca47ff55c815eee204fe03683a572be0f;p=perso%2FImmae%2FProjets%2FPython%2FMusicSampler.git diff --git a/helpers/__init__.py b/helpers/__init__.py index f5ad848..4827e6c 100644 --- a/helpers/__init__.py +++ b/helpers/__init__.py @@ -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): @@ -137,10 +179,14 @@ def gain(volume, old_volume=None): 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)