From 9d1ea1e7cfa256c7f5cac027382d92f658734ccb Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Thu, 25 Jul 2019 17:49:16 +0200 Subject: Add generic logger interface for propagating messages while loading drumkits to the commandline and/or plugin UI. --- drumgizmo/dgvalidator.cc | 42 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) (limited to 'drumgizmo') diff --git a/drumgizmo/dgvalidator.cc b/drumgizmo/dgvalidator.cc index d7557aa..c8c192a 100644 --- a/drumgizmo/dgvalidator.cc +++ b/drumgizmo/dgvalidator.cc @@ -30,10 +30,27 @@ #include #include #include - +#include #include #include +void logger(LogLevel level, const std::string& message) +{ + switch(level) + { + case LogLevel::Info: + std::cout << "[Info]"; + break; + case LogLevel::Warning: + std::cout << "[Warning]"; + break; + case LogLevel::Error: + std::cout << "[Error]"; + break; + } + std::cout << " " << message << std::endl; +} + void printUsage(const char* prog, bool full = true) { printf("Usage: %s |-h|--help\n", prog); @@ -65,7 +82,7 @@ int main(int argc, char* argv[]) std::vector instrumentdoms; std::string path = getPath(edited_filename); bool parseerror = false; - bool ret = parseDrumkitFile(edited_filename, drumkitdom); + bool ret = parseDrumkitFile(edited_filename, drumkitdom, logger); if(!ret) { WARN(drumkitloader, "Drumkit file parser error: '%s'", @@ -77,7 +94,8 @@ int main(int argc, char* argv[]) for(const auto& ref : drumkitdom.instruments) { instrumentdoms.emplace_back(); - bool ret = parseInstrumentFile(path + "/" + ref.file, instrumentdoms.back()); + bool ret = parseInstrumentFile(path + "/" + ref.file, instrumentdoms.back(), + logger); if(!ret) { WARN(drumkitloader, "Instrument file parser error: '%s'", @@ -97,16 +115,18 @@ int main(int argc, char* argv[]) DrumKit kit; DOMLoader domloader(settings, rand); - ret = domloader.loadDom(path, drumkitdom, instrumentdoms, kit); + ret = domloader.loadDom(path, drumkitdom, instrumentdoms, kit, logger); if(!ret) { WARN(drumkitloader, "DOMLoader error"); + logger(LogLevel::Error, "Validator found errors."); return 1; } parseerror |= !ret; if(parseerror) { ERR(drumgizmo, "Drumkit parser failed: %s\n", edited_filename.c_str()); + logger(LogLevel::Error, "Validator found errors."); return 1; } @@ -115,15 +135,27 @@ int main(int argc, char* argv[]) { for(auto& audiofile: instrument->audiofiles) { - audiofile->load(1); + audiofile->load(logger, 1); if(!audiofile->isLoaded()) { WARN(drumkitloader, "Instrument file load error: '%s'", audiofile->filename.data()); + logger(LogLevel::Warning, "Error loading audio file '" + + audiofile->filename + "' in the '" + instrument->getName() + + "' instrument"); parseerror = true; } } } + if(parseerror) + { + logger(LogLevel::Warning, "Validator found errors."); + } + else + { + logger(LogLevel::Info, "Validator finished without errors."); + } + return parseerror ? 1 : 0; } -- cgit v1.2.3