#include "ardour/session_directory.h"
#include "ardour/midi_patch_manager.h"
-#ifdef SearchPath
-#undef SearchPath
-#endif
-
-#include "ardour/midi_patch_search_path.h"
+#include "ardour/search_paths.h"
#include "i18n.h"
MidiPatchManager::set_session (Session* s)
{
SessionHandlePtr::set_session (s);
+ refresh ();
add_session_patches ();
}
assert (Glib::file_test (path_to_patches, Glib::FILE_TEST_IS_DIR));
- Glib::PatternSpec pattern(string("*.midnam"));
vector<std::string> result;
- find_matching_files_in_directory (path_to_patches, pattern, result);
+ find_files_matching_pattern (result, path_to_patches, "*.midnam");
info << "Loading " << result.size() << " MIDI patches from " << path_to_patches << endmsg;
// build a list of all master devices from all documents
_master_devices_by_model[device->first] = device->second;
_all_models.insert(device->first);
+ const std::string& manufacturer = device->second->manufacturer();
+ if (_devices_by_manufacturer.find(manufacturer) == _devices_by_manufacturer.end()) {
+ MIDINameDocument::MasterDeviceNamesList empty;
+ _devices_by_manufacturer.insert(std::make_pair(manufacturer, empty));
+ }
+ _devices_by_manufacturer[manufacturer].insert(std::make_pair(device->first, device->second));
// make sure there are no double model names
// TODO: handle this gracefully.
_documents.clear();
_master_devices_by_model.clear();
_all_models.clear();
+ _devices_by_manufacturer.clear();
- SearchPath search_path = midi_patch_search_path ();
- Glib::PatternSpec pattern (string("*.midnam"));
+ Searchpath search_path = midi_patch_search_path ();
vector<std::string> result;
- find_matching_files_in_search_path (search_path, pattern, result);
+ find_files_matching_pattern (result, search_path, "*.midnam");
info << "Loading " << result.size() << " MIDI patches from " << search_path.to_string() << endmsg;
_master_devices_by_model[device->first] = device->second;
_all_models.insert(device->first);
+ const std::string& manufacturer = device->second->manufacturer();
+ if (_devices_by_manufacturer.find(manufacturer) == _devices_by_manufacturer.end()) {
+ MIDINameDocument::MasterDeviceNamesList empty;
+ _devices_by_manufacturer.insert(std::make_pair(manufacturer, empty));
+ }
+ _devices_by_manufacturer[manufacturer].insert(std::make_pair(device->first, device->second));
}
}
MidiPatchManager::session_going_away ()
{
SessionHandlePtr::session_going_away ();
- refresh ();
+ _documents.clear();
+ _master_devices_by_model.clear();
+ _all_models.clear();
+ _devices_by_manufacturer.clear();
}