summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Nusser <andre.nusser@googlemail.com>2020-05-01 22:44:27 +0200
committerAndré Nusser <andre.nusser@googlemail.com>2020-05-02 16:17:34 +0200
commit8b8205994bf0f4b0f427c2268182d7c958670550 (patch)
tree4b8ba00bf95ef3923d1688d7835f8ca247d5a259
parentd9c671d14dacf3d7c02305df9b7d5fba67357a55 (diff)
Add default kit/map functionality for config file.
For this I introduced a new config file called drumgizmo.conf.
-rw-r--r--plugin/Makefile.mingw32.in1
-rw-r--r--src/Makefile.am2
-rw-r--r--src/drumgizmo.cc10
-rw-r--r--src/drumgizmo.h2
-rw-r--r--src/drumgizmoconf.cc64
-rw-r--r--src/drumgizmoconf.h43
6 files changed, 122 insertions, 0 deletions
diff --git a/plugin/Makefile.mingw32.in b/plugin/Makefile.mingw32.in
index a43da6d..bf52e04 100644
--- a/plugin/Makefile.mingw32.in
+++ b/plugin/Makefile.mingw32.in
@@ -27,6 +27,7 @@ DG_SRC = \
@top_srcdir@/src/directory.cc \
@top_srcdir@/src/domloader.cc \
@top_srcdir@/src/drumgizmo.cc \
+ @top_srcdir@/src/drumgizmoconf.cc \
@top_srcdir@/src/drumkit.cc \
@top_srcdir@/src/drumkitloader.cc \
@top_srcdir@/src/events.cc \
diff --git a/src/Makefile.am b/src/Makefile.am
index 56e06b4..f2a392d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -47,6 +47,7 @@ libdg_la_SOURCES = \
domloader.cc \
dgxmlparser.cc \
drumgizmo.cc \
+ drumgizmoconf.cc \
drumkit.cc \
drumkitloader.cc \
events.cc \
@@ -95,6 +96,7 @@ EXTRA_DIST = \
dgxmlparser.h \
domloader.h \
drumgizmo.h \
+ drumgizmoconf.h \
drumkit.h \
drumkitloader.h \
event.h \
diff --git a/src/drumgizmo.cc b/src/drumgizmo.cc
index 3af5cbc..ca91c12 100644
--- a/src/drumgizmo.cc
+++ b/src/drumgizmo.cc
@@ -55,6 +55,16 @@ DrumGizmo::DrumGizmo(Settings& settings,
loader.init();
setSamplerate(44100.0f, settings.resampling_quality.load());
settings_getter.audition_counter.hasChanged(); // Reset audition_counter
+
+ config.load();
+ if(config.defaultMidimap != "" && settings.midimap_file.load() == "")
+ {
+ settings.midimap_file.store(config.defaultMidimap);
+ }
+ if(config.defaultKit != "" && settings.drumkit_file.load() == "")
+ {
+ settings.drumkit_file.store(config.defaultKit);
+ }
}
DrumGizmo::~DrumGizmo()
diff --git a/src/drumgizmo.h b/src/drumgizmo.h
index a075dd6..f08c9f7 100644
--- a/src/drumgizmo.h
+++ b/src/drumgizmo.h
@@ -38,6 +38,7 @@
#include "events.h"
#include "events_ds.h"
#include "audiofile.h"
+#include "drumgizmoconf.h"
#include "drumkit.h"
#include "drumkitloader.h"
#include "audiocache.h"
@@ -80,6 +81,7 @@ private:
protected:
DrumKitLoader loader;
+ DrumgizmoConfig config;
AudioOutputEngine& oe;
AudioInputEngine& ie;
diff --git a/src/drumgizmoconf.cc b/src/drumgizmoconf.cc
new file mode 100644
index 0000000..93509e8
--- /dev/null
+++ b/src/drumgizmoconf.cc
@@ -0,0 +1,64 @@
+/* -*- Mode: c++ -*- */
+/***************************************************************************
+ * drumgizmoconf.cc
+ *
+ * Sat May 2 09:18:32 CEST 2020
+ * Copyright 2020 André Nusser
+ * andre.nusser@googlemail.com
+ ****************************************************************************/
+
+/*
+ * This file is part of DrumGizmo.
+ *
+ * DrumGizmo is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DrumGizmo is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with DrumGizmo; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#include "drumgizmoconf.h"
+
+#define CONFIGFILENAME "drumgizmo.conf"
+
+DrumgizmoConfig::DrumgizmoConfig()
+ : ConfigFile(CONFIGFILENAME)
+{
+ load();
+}
+
+DrumgizmoConfig::~DrumgizmoConfig()
+{
+ save();
+}
+
+bool DrumgizmoConfig::load()
+{
+ defaultKit.clear();
+ defaultMidimap.clear();
+
+ if(!ConfigFile::load())
+ {
+ return false;
+ }
+
+ defaultKit = getValue("defaultKit");
+ defaultMidimap = getValue("defaultMidimap");
+
+ return true;
+}
+
+bool DrumgizmoConfig::save()
+{
+ setValue("defaultKit", defaultKit);
+ setValue("defaultMidimap", defaultMidimap);
+
+ return ConfigFile::save();
+}
diff --git a/src/drumgizmoconf.h b/src/drumgizmoconf.h
new file mode 100644
index 0000000..f031730
--- /dev/null
+++ b/src/drumgizmoconf.h
@@ -0,0 +1,43 @@
+/* -*- Mode: c++ -*- */
+/***************************************************************************
+ * drumgizmoconf.h
+ *
+ * Sat May 2 09:18:32 CEST 2020
+ * Copyright 2020 André Nusser
+ * andre.nusser@googlemail.com
+ ****************************************************************************/
+
+/*
+ * This file is part of DrumGizmo.
+ *
+ * DrumGizmo is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DrumGizmo is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with DrumGizmo; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#pragma once
+
+#include <configfile.h>
+
+class DrumgizmoConfig
+ : public ConfigFile
+{
+public:
+ DrumgizmoConfig();
+ ~DrumgizmoConfig();
+
+ bool load() override;
+ bool save() override;
+
+ std::string defaultKit;
+ std::string defaultMidimap;
+};