diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2013-04-26 15:18:22 +0200 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2013-04-26 15:18:22 +0200 |
commit | 813d802443679a6f937a13680bc0ec3fb11a96b6 (patch) | |
tree | 832080cb77616941ede4572fcf845eb4281f59ba | |
parent | 605dee007b10fbca1a03b0a2b604b4e999ad7c0f (diff) |
Add MidimapLoadStatus Message.
-rw-r--r-- | plugingui/plugingui.cc | 20 | ||||
-rw-r--r-- | src/audioinputenginemidi.cc | 26 | ||||
-rw-r--r-- | src/audioinputenginemidi.h | 6 | ||||
-rw-r--r-- | src/drumgizmo.cc | 12 | ||||
-rw-r--r-- | src/message.h | 7 |
5 files changed, 64 insertions, 7 deletions
diff --git a/plugingui/plugingui.cc b/plugingui/plugingui.cc index 864f4d8..8e886ee 100644 --- a/plugingui/plugingui.cc +++ b/plugingui/plugingui.cc @@ -250,11 +250,31 @@ void PluginGUI::thread_main() } } break; + case Message::LoadStatusMidimap: + { + LoadStatusMessageMidimap *ls = (LoadStatusMessageMidimap*)msg; + DEBUG(gui, "Midimap status (%d)\n", + ls->success); + progress2->setProgress(1); + if(ls->success) { + progress2->setState(GUI::ProgressBar::green); + } else { + progress2->setState(GUI::ProgressBar::red); + } + } + break; case Message::EngineSettingsMessage: { EngineSettingsMessage *settings = (EngineSettingsMessage *)msg; lineedit->setText(settings->drumkitfile); lineedit2->setText(settings->midimapfile); + if(settings->midimap_loaded) { + progress2->setProgress(1); + progress2->setState(GUI::ProgressBar::green); + } else { + progress2->setProgress(0); + progress2->setState(GUI::ProgressBar::blue); + } check->setChecked(settings->enable_velocity_modifier); knob->setValue(settings->velocity_modifier_weight); knob2->setValue(settings->velocity_modifier_falloff); diff --git a/src/audioinputenginemidi.cc b/src/audioinputenginemidi.cc index 00aa518..44e8606 100644 --- a/src/audioinputenginemidi.cc +++ b/src/audioinputenginemidi.cc @@ -30,13 +30,25 @@ #include <hugin.hpp> -void AudioInputEngineMidi::loadMidiMap(std::string f, Instruments &instruments) +AudioInputEngineMidi::AudioInputEngineMidi() { + is_valid = false; +} + +bool AudioInputEngineMidi::loadMidiMap(std::string f, Instruments &instruments) +{ + file = ""; + is_valid = false; + DEBUG(mmap, "loadMidiMap(%s, i.size() == %d)\n", f.c_str(), instruments.size()); - if(f == "") return; + + if(f == "") return false; + MidiMapParser p(f); - if(p.parse()) {/*return false;*/} + if(p.parse()) { + return false; + } mmap.clear(); mmap.midimap = p.midimap; @@ -46,6 +58,9 @@ void AudioInputEngineMidi::loadMidiMap(std::string f, Instruments &instruments) } file = f; + is_valid = true; + + return true; } std::string AudioInputEngineMidi::midimapFile() @@ -53,6 +68,11 @@ std::string AudioInputEngineMidi::midimapFile() return file; } +bool AudioInputEngineMidi::isValid() +{ + return is_valid; +} + #ifdef TEST_AUDIOINPUTENGINEMIDI //Additional dependency files //deps: diff --git a/src/audioinputenginemidi.h b/src/audioinputenginemidi.h index 0f63f8a..b01fef0 100644 --- a/src/audioinputenginemidi.h +++ b/src/audioinputenginemidi.h @@ -36,6 +36,7 @@ class AudioInputEngineMidi : public AudioInputEngine { public: + AudioInputEngineMidi(); virtual ~AudioInputEngineMidi() {} bool isMidiEngine() { return true; } @@ -51,13 +52,16 @@ public: virtual event_t *run(size_t pos, size_t len, size_t *nevents) = 0; virtual void post() = 0; - void loadMidiMap(std::string file, Instruments &i); + bool loadMidiMap(std::string file, Instruments &i); std::string midimapFile(); + bool isValid(); + protected: MidiMapper mmap; std::string file; + bool is_valid; }; #endif/*__DRUMGIZMO_AUDIOINPUTENGINEMIDI_H__*/ diff --git a/src/drumgizmo.cc b/src/drumgizmo.cc index 8ba45f5..943e852 100644 --- a/src/drumgizmo.cc +++ b/src/drumgizmo.cc @@ -201,22 +201,28 @@ void DrumGizmo::handleEngineEvents() { AudioInputEngineMidi *aim = (AudioInputEngineMidi*)ie; LoadMidimapMessage *m = (LoadMidimapMessage*)msg; - aim->loadMidiMap(m->midimapfile, kit.instruments); + bool ret = aim->loadMidiMap(m->midimapfile, kit.instruments); + + LoadStatusMessageMidimap *ls = new LoadStatusMessageMidimap(); + ls->success = ret; + sendGUIMessage(ls); } break; case Message::EngineSettingsMessage: { DEBUG(msg, "got EngineSettingsMessage message."); - + bool mmap_loaded = false; std::string mmapfile; if(ie->isMidiEngine()) { AudioInputEngineMidi *aim = (AudioInputEngineMidi*)ie; mmapfile = aim->midimapFile(); + mmap_loaded = aim->isValid(); + } EngineSettingsMessage *msg = new EngineSettingsMessage(); msg->midimapfile = mmapfile; - msg->midimap_loaded = true; + msg->midimap_loaded = mmap_loaded; msg->drumkitfile = drumkitfile(); msg->drumkit_loaded = true; msg->enable_velocity_modifier = Conf::enable_velocity_modifier; diff --git a/src/message.h b/src/message.h index 9bf2f12..4ce65ef 100644 --- a/src/message.h +++ b/src/message.h @@ -32,6 +32,7 @@ public: typedef enum { // Engine -> GUI Messages: LoadStatus, // Signal GUI the current load status. + LoadStatusMidimap, // Signal GUI the current load status of the midimap. // GUI -> Engine, Engine -> Engine Messages: LoadDrumKit, // Signal engine to load drumkit. @@ -52,6 +53,12 @@ public: std::string current_file; }; +class LoadStatusMessageMidimap : public Message { +public: + type_t type() { return Message::LoadStatusMidimap; } + bool success; +}; + class LoadDrumKitMessage : public Message { public: type_t type() { return Message::LoadDrumKit; } |