summaryrefslogtreecommitdiff
path: root/gtk2_ardour/io_selector.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-07-17 22:54:45 +0000
committerCarl Hetherington <carl@carlh.net>2009-07-17 22:54:45 +0000
commit50437bff22279473cd364d007d5e474af2a542bc (patch)
tree4ebe55e6ac2ae8ded3dfd12a2f1b6e866a9dd6c4 /gtk2_ardour/io_selector.cc
parentb89a786b3e300ce3eb28c4e6791e8e141afb19f9 (diff)
Various tweaks to the port matrix: open to full size; remove buttons and move their functionality into a context menu;
set maximum size hint to stop port matrix windows being resized beyond their useful size; remove visibility checkbuttons - visibility now controlled through menu or by clicking on group names; port groups fold down to a small tab when hidden; don't swap the orientation of the matrix once it has been opened. git-svn-id: svn://localhost/ardour2/branches/3.0@5373 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/io_selector.cc')
-rw-r--r--gtk2_ardour/io_selector.cc107
1 files changed, 20 insertions, 87 deletions
diff --git a/gtk2_ardour/io_selector.cc b/gtk2_ardour/io_selector.cc
index 4333efd8ea..3c1e4c91ed 100644
--- a/gtk2_ardour/io_selector.cc
+++ b/gtk2_ardour/io_selector.cc
@@ -181,100 +181,22 @@ IOSelector::list_is_global (int dim) const
}
IOSelectorWindow::IOSelectorWindow (ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO> io, bool can_cancel)
- : ArdourDialog ("I/O selector")
- , _selector (session, io)
- , add_button (_("Add Port"))
- , disconnect_button (_("Disconnect All"))
- , ok_button (can_cancel ? _("OK"): _("Close"))
- , cancel_button (_("Cancel"))
- , rescan_button (_("Rescan"))
-
+ : _selector (session, io)
{
- /* XXX: what's this for? */
- add_events (Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK);
-
set_name ("IOSelectorWindow2");
+ set_title (_("I/O selector"));
- /* Disconnect All button */
- disconnect_button.set_name ("IOSelectorButton");
- disconnect_button.set_image (*Gtk::manage (new Gtk::Image (Gtk::Stock::DISCONNECT, Gtk::ICON_SIZE_BUTTON)));
- disconnect_button.signal_clicked().connect (sigc::mem_fun (_selector, &IOSelector::disassociate_all));
- get_action_area()->pack_start (disconnect_button, false, false);
-
- /* Add Port button */
- 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::bind (sigc::mem_fun (_selector, &IOSelector::add_channel), boost::shared_ptr<Bundle> ()));
-
- /* Rescan button */
- rescan_button.set_name ("IOSelectorButton");
- rescan_button.set_image (*Gtk::manage (new Gtk::Image (Gtk::Stock::REFRESH, Gtk::ICON_SIZE_BUTTON)));
- rescan_button.signal_clicked().connect (sigc::mem_fun (*this, &IOSelectorWindow::rescan));
- get_action_area()->pack_start (rescan_button, false, false);
-
- io->PortCountChanged.connect (sigc::hide (mem_fun (*this, &IOSelectorWindow::ports_changed)));
-
- /* Cancel button */
- if (can_cancel) {
- cancel_button.set_name ("IOSelectorButton");
- 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();
- }
- cancel_button.signal_clicked().connect (mem_fun(*this, &IOSelectorWindow::cancel));
-
- /* OK button */
- ok_button.set_name ("IOSelectorButton");
- if (!can_cancel) {
- ok_button.set_image (*Gtk::manage (new Gtk::Image (Gtk::Stock::CLOSE, Gtk::ICON_SIZE_BUTTON)));
- }
- ok_button.signal_clicked().connect (mem_fun(*this, &IOSelectorWindow::accept));
- get_action_area()->pack_start (ok_button, false, false);
-
- get_vbox()->set_spacing (8);
-
- get_vbox()->pack_start (_selector, true, true);
+ add (_selector);
set_position (Gtk::WIN_POS_MOUSE);
io_name_changed (this);
- ports_changed ();
show_all ();
signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), this));
-}
-
-void
-IOSelectorWindow::ports_changed ()
-{
- /* XXX make this insensitive based on port connectivity, not
- port counts.
- */
-
- add_button.set_sensitive (true);
-}
-
-void
-IOSelectorWindow::rescan ()
-{
- _selector.setup_ports (_selector.other());
-}
-void
-IOSelectorWindow::cancel ()
-{
- _selector.Finished (IOSelector::Cancelled);
- hide ();
-}
-
-void
-IOSelectorWindow::accept ()
-{
- _selector.Finished (IOSelector::Accepted);
- hide ();
+ resize (32768, 32768);
}
void
@@ -300,6 +222,21 @@ IOSelectorWindow::io_name_changed (void* src)
set_title (title);
}
+void
+IOSelectorWindow::on_realize ()
+{
+ Window::on_realize ();
+
+ pair<uint32_t, uint32_t> const m = _selector.max_size ();
+
+ GdkGeometry g;
+ g.max_width = m.first;
+ g.max_height = m.second;
+
+ set_geometry_hints (*this, g, Gdk::HINT_MAX_SIZE);
+}
+
+
PortInsertUI::PortInsertUI (ARDOUR::Session& sess, boost::shared_ptr<ARDOUR::PortInsert> pi)
: input_selector (sess, pi->input())
, output_selector (sess, pi->output())
@@ -330,8 +267,7 @@ PortInsertWindow::PortInsertWindow (ARDOUR::Session& sess, boost::shared_ptr<ARD
: ArdourDialog ("port insert dialog"),
_portinsertui (sess, pi),
ok_button (can_cancel ? _("OK"): _("Close")),
- cancel_button (_("Cancel")),
- rescan_button (_("Rescan"))
+ cancel_button (_("Cancel"))
{
set_name ("IOSelectorWindow");
@@ -344,10 +280,7 @@ PortInsertWindow::PortInsertWindow (ARDOUR::Session& sess, boost::shared_ptr<ARD
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);