-PortInsertUI::PortInsertUI (ARDOUR::Session& sess, boost::shared_ptr<ARDOUR::PortInsert> pi)
- : input_selector (sess, pi->io(), true),
- output_selector (sess, pi->io(), false)
-{
- output_selector.set_min_height_divisor (2);
- input_selector.set_min_height_divisor (2);
-
- pack_start (output_selector, true, true);
- pack_start (input_selector, true, true);
-}
-
-void
-PortInsertUI::redisplay ()
-{
- input_selector.setup_ports (input_selector.other());
- output_selector.setup_ports (output_selector.other());
-}
-
-void
-PortInsertUI::finished (IOSelector::Result r)
-{
- input_selector.Finished (r);
- output_selector.Finished (r);
-}
-
-
-PortInsertWindow::PortInsertWindow (ARDOUR::Session& sess, boost::shared_ptr<ARDOUR::PortInsert> pi, bool can_cancel)
- : ArdourDialog ("port insert dialog"),
- _portinsertui (sess, pi),
- ok_button (can_cancel ? _("OK"): _("Close")),
- cancel_button (_("Cancel")),
- rescan_button (_("Rescan"))
-{
-
- set_name ("IOSelectorWindow");
- string title = _("ardour: ");
- title += pi->name();
- set_title (title);
-
- ok_button.set_name ("IOSelectorButton");
- if (!can_cancel) {
- ok_button.set_image (*Gtk::manage (new Gtk::Image (Gtk::Stock::CLOSE, Gtk::ICON_SIZE_BUTTON)));
- }
- cancel_button.set_name ("IOSelectorButton");
- rescan_button.set_name ("IOSelectorButton");
- rescan_button.set_image (*Gtk::manage (new Gtk::Image (Gtk::Stock::REFRESH, Gtk::ICON_SIZE_BUTTON)));
-
- get_action_area()->pack_start (rescan_button, false, false);
- if (can_cancel) {
- cancel_button.set_image (*Gtk::manage (new Gtk::Image (Gtk::Stock::CANCEL, Gtk::ICON_SIZE_BUTTON)));
- get_action_area()->pack_start (cancel_button, false, false);
- } else {
- cancel_button.hide();
- }
- get_action_area()->pack_start (ok_button, false, false);
-
- get_vbox()->pack_start (_portinsertui);
-
- ok_button.signal_clicked().connect (mem_fun (*this, &PortInsertWindow::accept));
- cancel_button.signal_clicked().connect (mem_fun (*this, &PortInsertWindow::cancel));
-
- signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), reinterpret_cast<Window *> (this)));
-
- going_away_connection = pi->GoingAway.connect (mem_fun (*this, &PortInsertWindow::plugin_going_away));
-}
-
-void
-PortInsertWindow::plugin_going_away ()
-{
- ENSURE_GUI_THREAD (mem_fun (*this, &PortInsertWindow::plugin_going_away));
-
- going_away_connection.disconnect ();
- delete_when_idle (this);
-}
-
-void
-PortInsertWindow::on_map ()
-{
- _portinsertui.redisplay ();
- Window::on_map ();
-}
-
-
-void
-PortInsertWindow::cancel ()
-{
- _portinsertui.finished (IOSelector::Cancelled);
- hide ();
-}
-
-void
-PortInsertWindow::accept ()
-{
- _portinsertui.finished (IOSelector::Accepted);
- hide ();
-}
-