mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-10 08:36:32 +01:00
Don't close the plugin manager when an incompatible plugin is selected. Fixes #1194.
git-svn-id: svn://localhost/ardour2/branches/3.0@7006 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
47de938e99
commit
0bc6a319f1
4 changed files with 34 additions and 23 deletions
|
|
@ -30,7 +30,7 @@ class PluginInterestedObject {
|
|||
PluginInterestedObject() {}
|
||||
virtual ~PluginInterestedObject() {}
|
||||
|
||||
virtual void use_plugins (const SelectedPlugins&) = 0;
|
||||
virtual bool use_plugins (const SelectedPlugins&) = 0;
|
||||
};
|
||||
|
||||
#endif /* __gtkardour_plugin_interest_h__ */
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ static const char* _filter_mode_strings[] = {
|
|||
};
|
||||
|
||||
PluginSelector::PluginSelector (PluginManager *mgr)
|
||||
: ArdourDialog (_("ardour: plugins"), true, false),
|
||||
: ArdourDialog (_("Plugin Manager"), true, false),
|
||||
filter_button (Stock::CLEAR)
|
||||
{
|
||||
set_position (Gtk::WIN_POS_MOUSE);
|
||||
|
|
@ -442,8 +442,12 @@ PluginSelector::run ()
|
|||
{
|
||||
ResponseType r;
|
||||
TreeModel::Children::iterator i;
|
||||
SelectedPlugins plugins;
|
||||
|
||||
bool finish = false;
|
||||
|
||||
while (!finish) {
|
||||
|
||||
SelectedPlugins plugins;
|
||||
r = (ResponseType) Dialog::run ();
|
||||
|
||||
switch (r) {
|
||||
|
|
@ -456,14 +460,17 @@ PluginSelector::run ()
|
|||
}
|
||||
}
|
||||
if (interested_object && !plugins.empty()) {
|
||||
interested_object->use_plugins (plugins);
|
||||
finish = !interested_object->use_plugins (plugins);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
finish = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
hide();
|
||||
amodel->clear();
|
||||
|
|
|
|||
|
|
@ -742,7 +742,8 @@ ProcessorBox::choose_plugin ()
|
|||
_get_plugin_selector()->set_interested_object (*this);
|
||||
}
|
||||
|
||||
void
|
||||
/** @return true if an error occurred, otherwise false */
|
||||
bool
|
||||
ProcessorBox::use_plugins (const SelectedPlugins& plugins)
|
||||
{
|
||||
for (SelectedPlugins::const_iterator p = plugins.begin(); p != plugins.end(); ++p) {
|
||||
|
|
@ -757,6 +758,7 @@ ProcessorBox::use_plugins (const SelectedPlugins& plugins)
|
|||
|
||||
if (_route->add_processor (processor, _placement, &err_streams)) {
|
||||
weird_plugin_dialog (**p, err_streams);
|
||||
return true;
|
||||
// XXX SHAREDPTR delete plugin here .. do we even need to care?
|
||||
} else {
|
||||
|
||||
|
|
@ -765,12 +767,14 @@ ProcessorBox::use_plugins (const SelectedPlugins& plugins)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
ProcessorBox::weird_plugin_dialog (Plugin& p, Route::ProcessorStreams streams)
|
||||
{
|
||||
ArdourDialog dialog (_("ardour: weird plugin dialog"));
|
||||
ArdourDialog dialog (_("Plugin Incompatibility"));
|
||||
Label label;
|
||||
|
||||
string text = string_compose(_("You attempted to add the plugin \"%1\" at index %2.\n"),
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARD
|
|||
void return_io_finished (IOSelector::Result, boost::weak_ptr<ARDOUR::Processor>, IOSelectorWindow*);
|
||||
void choose_insert ();
|
||||
void choose_plugin ();
|
||||
void use_plugins (const SelectedPlugins&);
|
||||
bool use_plugins (const SelectedPlugins&);
|
||||
|
||||
bool no_processor_redisplay;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue