summaryrefslogtreecommitdiff
path: root/libs/ardour/plugin_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/plugin_manager.cc')
-rw-r--r--libs/ardour/plugin_manager.cc87
1 files changed, 62 insertions, 25 deletions
diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc
index 8315397fe8..22e649e03e 100644
--- a/libs/ardour/plugin_manager.cc
+++ b/libs/ardour/plugin_manager.cc
@@ -82,7 +82,7 @@ PluginManager::PluginManager ()
char* s;
string lrdf_path;
- load_favorites ();
+ load_statuses ();
#ifdef HAVE_AUDIOUNITS
ProcessSerialNumber psn = { 0, kCurrentProcess };
@@ -414,7 +414,7 @@ PluginManager::get_ladspa_category (uint32_t plugin_id)
lrdf_statement* matches1 = lrdf_matches (&pattern);
if (!matches1) {
- return "";
+ return "Unknown";
}
pattern.subject = matches1->object;
@@ -426,7 +426,7 @@ PluginManager::get_ladspa_category (uint32_t plugin_id)
lrdf_free_statements(matches1);
if (!matches2) {
- return ("");
+ return ("Unknown");
}
string label = matches2->object;
@@ -557,19 +557,24 @@ PluginManager::vst_discover (string path)
#endif // VST_SUPPORT
-bool
-PluginManager::is_a_favorite_plugin (const PluginInfoPtr& pi)
+PluginManager::PluginStatusType
+PluginManager::get_status (const PluginInfoPtr& pi)
{
- FavoritePlugin fp (pi->type, pi->unique_id);
- return find (favorites.begin(), favorites.end(), fp) != favorites.end();
+ PluginStatus ps (pi->type, pi->unique_id);
+ PluginStatusList::const_iterator i = find (statuses.begin(), statuses.end(), ps);
+ if (i == statuses.end() ) {
+ return Normal;
+ } else {
+ return i->status;
+ }
}
void
-PluginManager::save_favorites ()
+PluginManager::save_statuses ()
{
ofstream ofs;
sys::path path = user_config_directory();
- path /= "favorite_plugins";
+ path /= "plugin_statuses";
ofs.open (path.to_string().c_str(), ios_base::openmode (ios::out|ios::trunc));
@@ -577,7 +582,7 @@ PluginManager::save_favorites ()
return;
}
- for (FavoritePluginList::iterator i = favorites.begin(); i != favorites.end(); ++i) {
+ for (PluginStatusList::iterator i = statuses.begin(); i != statuses.end(); ++i) {
switch ((*i).type) {
case LADSPA:
ofs << "LADSPA";
@@ -593,17 +598,31 @@ PluginManager::save_favorites ()
break;
}
- ofs << ' ' << (*i).unique_id << endl;
+ ofs << ' ' << (*i).unique_id << ' ';
+
+ switch ((*i).status) {
+ case Normal:
+ ofs << "Normal";
+ break;
+ case Favorite:
+ ofs << "Favorite";
+ break;
+ case Hidden:
+ ofs << "Hidden";
+ break;
+ }
+
+ ofs << endl;
}
ofs.close ();
}
void
-PluginManager::load_favorites ()
+PluginManager::load_statuses ()
{
sys::path path = user_config_directory();
- path /= "favorite_plugins";
+ path /= "plugin_statuses";
ifstream ifs (path.to_string().c_str());
if (!ifs) {
@@ -612,7 +631,9 @@ PluginManager::load_favorites ()
std::string stype;
std::string id;
+ std::string sstatus;
PluginType type;
+ PluginStatusType status;
while (ifs) {
@@ -626,6 +647,12 @@ PluginManager::load_favorites ()
break;
}
+ ifs >> sstatus;
+ if (!ifs) {
+ break;
+
+ }
+
if (stype == "LADSPA") {
type = LADSPA;
} else if (stype == "AudioUnit") {
@@ -635,30 +662,40 @@ PluginManager::load_favorites ()
} else if (stype == "VST") {
type = VST;
} else {
- error << string_compose (_("unknown favorite plugin type \"%1\" - ignored"), stype)
+ error << string_compose (_("unknown plugin type \"%1\" - ignored"), stype)
+ << endmsg;
+ continue;
+ }
+ if (sstatus == "Normal") {
+ status = Normal;
+ } else if (sstatus == "Favorite") {
+ status = Favorite;
+ } else if (sstatus == "Hidden") {
+ status = Hidden;
+ } else {
+ error << string_compose (_("unknown plugin status type \"%1\" - ignored"), stype)
<< endmsg;
continue;
}
- add_favorite (type, id);
+ set_status (type, id, status);
}
ifs.close ();
}
void
-PluginManager::add_favorite (PluginType t, string id)
+PluginManager::set_status (PluginType t, string id, PluginStatusType status)
{
- FavoritePlugin fp (t, id);
- pair<FavoritePluginList::iterator,bool> res = favorites.insert (fp);
- //cerr << "Added " << t << " " << id << " success ? " << res.second << endl;
-}
+ PluginStatus ps (t, id, status);
+ statuses.erase (ps);
-void
-PluginManager::remove_favorite (PluginType t, string id)
-{
- FavoritePlugin fp (t, id);
- favorites.erase (fp);
+ if (status == Normal) {
+ return;
+ }
+
+ pair<PluginStatusList::iterator, bool> res = statuses.insert (ps);
+ //cerr << "Added " << t << " " << id << " " << status << " success ? " << res.second << endl;
}
ARDOUR::PluginInfoList&