From 8b8205994bf0f4b0f427c2268182d7c958670550 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Nusser?= Date: Fri, 1 May 2020 22:44:27 +0200 Subject: Add default kit/map functionality for config file. For this I introduced a new config file called drumgizmo.conf. --- plugin/Makefile.mingw32.in | 1 + src/Makefile.am | 2 ++ src/drumgizmo.cc | 10 ++++++++ src/drumgizmo.h | 2 ++ src/drumgizmoconf.cc | 64 ++++++++++++++++++++++++++++++++++++++++++++++ src/drumgizmoconf.h | 43 +++++++++++++++++++++++++++++++ 6 files changed, 122 insertions(+) create mode 100644 src/drumgizmoconf.cc create mode 100644 src/drumgizmoconf.h 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 + +class DrumgizmoConfig + : public ConfigFile +{ +public: + DrumgizmoConfig(); + ~DrumgizmoConfig(); + + bool load() override; + bool save() override; + + std::string defaultKit; + std::string defaultMidimap; +}; -- cgit v1.2.3