X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fplugin_manager.h;h=302b6d2bc9f0c8bf56791d788406d48a8c59d74d;hb=2a6dcddcc513fa3ebc1aad4b2e5fede62277aba5;hp=90f00be8b1fb1387daa5fe563921c6621bb27a2d;hpb=88beef2e93d26d28467fe151f5ef2972d0ca9169;p=ardour.git diff --git a/libs/ardour/ardour/plugin_manager.h b/libs/ardour/ardour/plugin_manager.h index 90f00be8b1..302b6d2bc9 100644 --- a/libs/ardour/ardour/plugin_manager.h +++ b/libs/ardour/ardour/plugin_manager.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2000-2007 Paul Davis + Copyright (C) 2000-2007 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -46,12 +46,10 @@ class PluginManager : public boost::noncopyable { PluginManager (); ~PluginManager (); - /* realtime plugin APIs */ - - ARDOUR::PluginInfoList &vst_plugin_info () { return _vst_plugin_info; } - ARDOUR::PluginInfoList &ladspa_plugin_info () { return _ladspa_plugin_info; } - ARDOUR::PluginInfoList &lv2_plugin_info () { return _lv2_plugin_info; } - ARDOUR::PluginInfoList &au_plugin_info () { return _au_plugin_info; } + ARDOUR::PluginInfoList &vst_plugin_info (); + ARDOUR::PluginInfoList &ladspa_plugin_info (); + ARDOUR::PluginInfoList &lv2_plugin_info (); + ARDOUR::PluginInfoList &au_plugin_info (); void refresh (); @@ -60,40 +58,55 @@ class PluginManager : public boost::noncopyable { static PluginManager* the_manager() { return _manager; } - void load_favorites (); - void save_favorites (); - void add_favorite (ARDOUR::PluginType type, std::string unique_id); - void remove_favorite (ARDOUR::PluginType type, std::string unique_id); - bool is_a_favorite_plugin (const PluginInfoPtr&); - + enum PluginStatusType { + Normal = 0, + Favorite, + Hidden + }; + + void load_statuses (); + void save_statuses (); + void set_status (ARDOUR::PluginType type, std::string unique_id, PluginStatusType status); + PluginStatusType get_status (const PluginInfoPtr&); + + /** plugins were added to or removed from one of the PluginInfoLists */ + PBD::Signal0 PluginListChanged; + private: - struct FavoritePlugin { + struct PluginStatus { ARDOUR::PluginType type; std::string unique_id; + PluginStatusType status; + + PluginStatus (ARDOUR::PluginType t, std::string id, PluginStatusType s = Normal) + : type (t), unique_id (id), status (s) {} - FavoritePlugin (ARDOUR::PluginType t, std::string id) - : type (t), unique_id (id) {} - - bool operator==(const FavoritePlugin& other) const { + bool operator==(const PluginStatus& other) const { return other.type == type && other.unique_id == unique_id; } - bool operator<(const FavoritePlugin& other) const { - return other.type < type || other.unique_id < unique_id; + bool operator<(const PluginStatus& other) const { + if (other.type < type) { + return true; + } else if (other.type == type && other.unique_id < unique_id) { + return true; + } + return false; } }; - typedef std::set FavoritePluginList; - FavoritePluginList favorites; + typedef std::set PluginStatusList; + PluginStatusList statuses; - ARDOUR::PluginInfoList _vst_plugin_info; - ARDOUR::PluginInfoList _ladspa_plugin_info; - ARDOUR::PluginInfoList _lv2_plugin_info; - ARDOUR::PluginInfoList _au_plugin_info; + ARDOUR::PluginInfoList _empty_plugin_info; + ARDOUR::PluginInfoList* _vst_plugin_info; + ARDOUR::PluginInfoList* _ladspa_plugin_info; + ARDOUR::PluginInfoList* _lv2_plugin_info; + ARDOUR::PluginInfoList* _au_plugin_info; #ifdef HAVE_SLV2 LV2World* _lv2_world; #endif - + std::map rdf_type; std::string ladspa_path; @@ -107,10 +120,8 @@ class PluginManager : public boost::noncopyable { void add_vst_presets (); void add_presets (std::string domain); - int au_discover (); void au_refresh (); - - int lv2_discover (); + void lv2_refresh (); int vst_discover_from_path (std::string path);