summaryrefslogtreecommitdiff
path: root/drumgizmo
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2019-07-25 17:49:16 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2019-09-28 20:37:47 +0200
commit9d1ea1e7cfa256c7f5cac027382d92f658734ccb (patch)
tree39ec7cdaa8ed571137430ccbbc0a391bb27427a3 /drumgizmo
parentcd9af98abdce1fe3759e786d6b010a7fe3395e2c (diff)
Add generic logger interface for propagating messages while loading drumkits to the commandline
and/or plugin UI.
Diffstat (limited to 'drumgizmo')
-rw-r--r--drumgizmo/dgvalidator.cc42
1 files changed, 37 insertions, 5 deletions
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 <random.h>
#include <settings.h>
#include <drumkit.h>
-
+#include <iostream>
#include <string>
#include <hugin.hpp>
+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 <drumkit>|-h|--help\n", prog);
@@ -65,7 +82,7 @@ int main(int argc, char* argv[])
std::vector<InstrumentDOM> 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;
}