factor out shuttle controller to its own class, new design
[ardour.git] / gtk2_ardour / processor_box.cc
index 7dc2f4f25f4013b29b07113f64f568b0ea6eb5a2..ff1c05e18a2417272185b96b06629f557d6e85ba 100644 (file)
@@ -384,6 +384,12 @@ PluginInsertProcessorEntry::plugin_insert_splitting_changed ()
        }
 }
 
+void
+PluginInsertProcessorEntry::hide_things ()
+{
+       plugin_insert_splitting_changed ();
+}
+
 void
 PluginInsertProcessorEntry::setup_visuals ()
 {
@@ -632,13 +638,13 @@ ProcessorBox::show_processor_menu (gint arg)
                processor_menu = build_processor_menu ();
        }
 
-       Gtk::MenuItem* plugin_menu_item = dynamic_cast<Gtk::MenuItem*>(ActionManager::get_widget("/processormenu/newplugin"));
+       Gtk::MenuItem* plugin_menu_item = dynamic_cast<Gtk::MenuItem*>(ActionManager::get_widget("/ProcessorMenu/newplugin"));
 
        if (plugin_menu_item) {
                plugin_menu_item->set_submenu (*_get_plugin_selector()->plugin_menu());
        }
 
-       Gtk::MenuItem* aux_menu_item = dynamic_cast<Gtk::MenuItem*>(ActionManager::get_widget("/processormenu/newaux"));
+       Gtk::MenuItem* aux_menu_item = dynamic_cast<Gtk::MenuItem*>(ActionManager::get_widget("/ProcessorMenu/newaux"));
 
        if (aux_menu_item) {
                Menu* m = build_possible_aux_menu();
@@ -869,7 +875,7 @@ ProcessorBox::processor_button_release_event (GdkEventButton *ev, ProcessorEntry
 Menu *
 ProcessorBox::build_processor_menu ()
 {
-       processor_menu = dynamic_cast<Gtk::Menu*>(ActionManager::get_widget("/processormenu") );
+       processor_menu = dynamic_cast<Gtk::Menu*>(ActionManager::get_widget("/ProcessorMenu") );
        processor_menu->set_name ("ArdourContextMenu");
        return processor_menu;
 }
@@ -915,11 +921,7 @@ ProcessorBox::use_plugins (const SelectedPlugins& plugins)
 
                Route::ProcessorStreams err_streams;
 
-               if (Config->get_new_plugins_active()) {
-                       processor->activate ();
-               }
-
-               if (_route->add_processor (processor, _placement, &err_streams)) {
+               if (_route->add_processor (processor, _placement, &err_streams, Config->get_new_plugins_active ())) {
                        weird_plugin_dialog (**p, err_streams);
                        return true;
                        // XXX SHAREDPTR delete plugin here .. do we even need to care?
@@ -949,14 +951,14 @@ ProcessorBox::weird_plugin_dialog (Plugin& p, Route::ProcessorStreams streams)
        text += _("\nThis plugin has:\n");
        if (has_midi) {
                uint32_t const n = p.get_info()->n_inputs.n_midi ();
-               text += string_compose (ngettext ("\t%1 MIDI input", "\t%1 MIDI inputs", n), n);
+               text += string_compose (ngettext ("\t%1 MIDI input\n", "\t%1 MIDI inputs\n", n), n);
        }
        if (has_audio) {
                uint32_t const n = p.get_info()->n_inputs.n_audio ();
-               text += string_compose (ngettext ("\t%1 audio input", "\t%1 audio inputs", n), n);
+               text += string_compose (ngettext ("\t%1 audio input\n", "\t%1 audio inputs\n", n), n);
        }
 
-       text += _("\nBut at the insertion point, there are:\n");
+       text += _("\nbut at the insertion point, there are:\n");
        if (has_midi) {
                uint32_t const n = streams.count.n_midi ();
                text += string_compose (ngettext ("\t%1 MIDI channel\n", "\t%1 MIDI channels\n", n), n);
@@ -1630,6 +1632,14 @@ ProcessorBox::paste_processor_state (const XMLNodeList& nlist, boost::shared_ptr
 
                                p.reset (r);
 
+                       } else if (type->value() == "port") {
+
+                               XMLNode n (**niter);
+                               p.reset (new PortInsert (*_session, _route->pannable (), _route->mute_master ()));
+                               if (p->set_state (n, Stateful::loading_state_version)) {
+                                       return;
+                               }
+
                        } else {
                                /* XXX its a bit limiting to assume that everything else
                                   is a plugin.
@@ -1914,7 +1924,7 @@ ProcessorBox::toggle_edit_processor (boost::shared_ptr<Processor> processor)
 void
 ProcessorBox::register_actions ()
 {
-       Glib::RefPtr<Gtk::ActionGroup> popup_act_grp = Gtk::ActionGroup::create(X_("processormenu"));
+       Glib::RefPtr<Gtk::ActionGroup> popup_act_grp = Gtk::ActionGroup::create(X_("ProcessorMenu"));
        Glib::RefPtr<Action> act;
 
        /* new stuff */
@@ -2285,6 +2295,15 @@ ProcessorBox::mixer_strip_delivery_changed (boost::weak_ptr<Delivery> w)
        }
 }
 
+void
+ProcessorBox::hide_things ()
+{
+       list<ProcessorEntry*> c = processor_display.children ();
+       for (list<ProcessorEntry*>::iterator i = c.begin(); i != c.end(); ++i) {
+               (*i)->hide_things ();
+       }
+}
+
 ProcessorWindowProxy::ProcessorWindowProxy (
        string const & name,
        XMLNode const * node,