summaryrefslogtreecommitdiff
path: root/gtk2_ardour/io_selector.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-09-30 14:18:15 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-09-30 14:18:15 +0000
commitcaa305ed2b5f2b5ed976a1e0b18b3794c2ab2465 (patch)
treeb609da362fdeb0a5be7758e9f6dee1869170477c /gtk2_ardour/io_selector.cc
parent9a30bb2aecabcdd16568e6548dd1aeade8effa48 (diff)
more tweaks to the IO Selector
git-svn-id: svn://localhost/ardour2/branches/3.0@3840 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/io_selector.cc')
-rw-r--r--gtk2_ardour/io_selector.cc99
1 files changed, 35 insertions, 64 deletions
diff --git a/gtk2_ardour/io_selector.cc b/gtk2_ardour/io_selector.cc
index c2e78485f8..94da96573c 100644
--- a/gtk2_ardour/io_selector.cc
+++ b/gtk2_ardour/io_selector.cc
@@ -53,12 +53,6 @@ IOSelector::IOSelector (ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO>
} else {
_io->input_changed.connect (mem_fun(*this, &IOSelector::ports_changed));
}
-
- /* this got lost in a merge from 2.0 */
-
- // set_button_sensitivity ();
- // io->name_changed.connect (mem_fun(*this, &IOSelector::name_changed));
-
}
void
@@ -210,55 +204,6 @@ IOSelector::row_descriptor () const
return _("port");
}
-#if 0
-void
-IOSelector::set_button_sensitivity ()
-{
- if (for_input) {
-
- if (io->input_maximum() < 0 || io->input_maximum() > (int) io->n_inputs()) {
- add_port_button.set_sensitive (true);
- } else {
- add_port_button.set_sensitive (false);
- }
-
- } else {
-
- if (io->output_maximum() < 0 || io->output_maximum() > (int) io->n_outputs()) {
- add_port_button.set_sensitive (true);
- } else {
- add_port_button.set_sensitive (false);
- }
-
- }
-
- if (for_input) {
- if (io->n_inputs() && (io->input_minimum() < 0 || io->input_minimum() < (int) io->n_inputs())) {
- remove_port_button.set_sensitive (true);
- } else {
- remove_port_button.set_sensitive (false);
- }
-
- } else {
- if (io->n_outputs() && (io->output_minimum() < 0 || io->output_minimum() < (int) io->n_outputs())) {
- remove_port_button.set_sensitive (true);
- } else {
- remove_port_button.set_sensitive (false);
- }
- }
-}
-#endif
-
-#if 0
-void
-IOSelector::name_changed (void* src)
-{
- ENSURE_GUI_THREAD(bind (mem_fun(*this, &IOSelector::name_changed), src));
-
- display_ports ();
-}
-#endif
-
IOSelectorWindow::IOSelectorWindow (
ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO> io, bool for_input, bool can_cancel
)
@@ -273,20 +218,19 @@ IOSelectorWindow::IOSelectorWindow (
add_events (Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK);
set_name ("IOSelectorWindow2");
- string title;
- if (for_input) {
- title = string_compose(_("%1 input"), io->name());
- } else {
- title = string_compose(_("%1 output"), io->name());
- }
+ // io->name_changed.connect (mem_fun(*this, &IOSelectorWindow::io_name_changed));
if (_selector.maximum_rows() > _selector.n_rows()) {
add_button.set_name ("IOSelectorButton");
add_button.set_image (*Gtk::manage (new Gtk::Image (Gtk::Stock::ADD, Gtk::ICON_SIZE_BUTTON)));
get_action_area()->pack_start (add_button, false, false);
add_button.signal_clicked().connect (sigc::mem_fun (_selector, &IOSelector::add_row));
+ }
+
+ if (!for_input) {
+ io->output_changed.connect (mem_fun(*this, &IOSelectorWindow::ports_changed));
} else {
- add_button.hide ();
+ io->input_changed.connect (mem_fun(*this, &IOSelectorWindow::ports_changed));
}
rescan_button.set_name ("IOSelectorButton");
@@ -314,12 +258,14 @@ IOSelectorWindow::IOSelectorWindow (
cancel_button.signal_clicked().connect (mem_fun(*this, &IOSelectorWindow::cancel));
rescan_button.signal_clicked().connect (mem_fun(*this, &IOSelectorWindow::rescan));
- set_title (title);
set_position (Gtk::WIN_POS_MOUSE);
+ io_name_changed (this);
+ ports_changed (IOChange (0), this);
+
show_all ();
- signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), reinterpret_cast<Window *> (this)));
+ signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), this));
}
IOSelectorWindow::~IOSelectorWindow()
@@ -328,6 +274,16 @@ IOSelectorWindow::~IOSelectorWindow()
}
void
+IOSelectorWindow::ports_changed (ARDOUR::IOChange change, void *src)
+{
+ if (_selector.maximum_rows() > _selector.n_rows()) {
+ add_button.set_sensitive (true);
+ } else {
+ add_button.set_sensitive (false);
+ }
+}
+
+void
IOSelectorWindow::rescan ()
{
_selector.redisplay ();
@@ -354,6 +310,21 @@ IOSelectorWindow::on_map ()
Window::on_map ();
}
+void
+IOSelectorWindow::io_name_changed (void* src)
+{
+ ENSURE_GUI_THREAD(bind (mem_fun(*this, &IOSelectorWindow::io_name_changed), src));
+
+ string title;
+
+ if (!_selector.offering_input()) {
+ title = string_compose(_("%1 input"), _selector.io()->name());
+ } else {
+ title = string_compose(_("%1 output"), _selector.io()->name());
+ }
+
+ set_title (title);
+}
PortInsertUI::PortInsertUI (ARDOUR::Session& sess, boost::shared_ptr<ARDOUR::PortInsert> pi)
: input_selector (sess, pi->io(), true),