#define MIDI_PATCH_MANAGER_H_
#include "midi++/midnam_patch.h"
+
#include "pbd/signals.h"
-#include "ardour/session_handle.h"
+#include "pbd/search_path.h"
-namespace ARDOUR {
- class Session;
-}
+#include "ardour/libardour_visibility.h"
namespace MIDI
{
namespace Name
{
-class LIBARDOUR_API MidiPatchManager : public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr
+class LIBARDOUR_API MidiPatchManager
{
/// Singleton
private:
return *_manager;
}
- void set_session (ARDOUR::Session*);
+ void add_search_path (const PBD::Searchpath& search_path);
+
+ void remove_search_path (const PBD::Searchpath& search_path);
boost::shared_ptr<MIDINameDocument> document_by_model(std::string model_name)
{ return _documents[model_name]; }
const DeviceNamesByMaker& devices_by_manufacturer() const { return _devices_by_manufacturer; }
private:
- void session_going_away();
- void refresh();
- void add_session_patches();
+ bool add_midi_name_document(const std::string& file_path);
+ bool remove_midi_name_document(const std::string& file_path);
+
+ void add_midnam_files_from_directory(const std::string& directory_path);
+ void remove_midnam_files_from_directory(const std::string& directory_path);
+
+private:
+ PBD::Searchpath _search_path;
MidiNameDocuments _documents;
MIDINameDocument::MasterDeviceNamesList _master_devices_by_model;