summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-09-17 02:09:31 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-09-17 02:09:31 +0000
commitbd82dfce946a22eb23e6b3582726ce186a52c4b6 (patch)
tree571451c3e73c9552e5cb07a5a662c20cc6e6fb98
parent1cd155a7287f662db0548a870d3b5de1a5f40969 (diff)
more NSD changes. if JACK is not running and no interface has ever been chosen, show JUST the audio setup tab. once JACK is successfully started, reshow the NSD with just new/open tabs. still not finished with this utter piece of dreck
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5670 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/ardour_ui.cc16
-rw-r--r--gtk2_ardour/engine_dialog.cc9
-rw-r--r--gtk2_ardour/engine_dialog.h3
-rw-r--r--gtk2_ardour/new_session_dialog.cc83
-rw-r--r--gtk2_ardour/new_session_dialog.h3
5 files changed, 91 insertions, 23 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 2dfec7fe2a..4f57dec905 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -2301,8 +2301,13 @@ ARDOUR_UI::get_session_parameters (bool backend_audio_is_running, bool should_be
response = Gtk::RESPONSE_REJECT;
goto try_again;
}
+
+ /* hide the NSD while we start up the engine */
+
+ new_session_dialog->hide ();
+ flush_pending ();
}
-
+
if (create_engine ()) {
backend_audio_error (!backend_audio_is_running, new_session_dialog);
@@ -2346,10 +2351,17 @@ ARDOUR_UI::get_session_parameters (bool backend_audio_is_running, bool should_be
switch (new_session_dialog->which_page()) {
case NewSessionDialog::OpenPage:
- case NewSessionDialog::EnginePage:
goto loadit;
break;
+ case NewSessionDialog::EnginePage:
+ if (new_session_dialog->engine_control.interface_chosen() && !session_path.empty()) {
+ goto loadit;
+ } else {
+ goto try_again;
+ }
+ break;
+
case NewSessionDialog::NewPage: /* nominally the "new" session creator, but could be in use for an old session */
should_be_new = true;
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc
index 90151fb85d..f643324720 100644
--- a/gtk2_ardour/engine_dialog.cc
+++ b/gtk2_ardour/engine_dialog.cc
@@ -884,6 +884,15 @@ EngineControl::driver_changed ()
hw_meter_button.set_sensitive (false);
monitor_button.set_sensitive (false);
}
+
+ interface_combo.signal_changed().connect (mem_fun (*this, &EngineControl::emit_interface_chosen));
+}
+
+void
+EngineControl::emit_interface_chosen ()
+{
+ cerr << "interface combo changed\n";
+ InterfaceChosen();
}
uint32_t
diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h
index c439719d75..6fc075271c 100644
--- a/gtk2_ardour/engine_dialog.h
+++ b/gtk2_ardour/engine_dialog.h
@@ -29,6 +29,9 @@ class EngineControl : public Gtk::VBox {
XMLNode& get_state ();
void set_state (const XMLNode&);
+ sigc::signal<void> InterfaceChosen;
+ void emit_interface_chosen(); /* grr, need to figure out how to connect signalsl directly */
+
private:
Gtk::Adjustment periods_adjustment;
Gtk::SpinButton periods_spinner;
diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc
index b094e3a635..7799131737 100644
--- a/gtk2_ardour/new_session_dialog.cc
+++ b/gtk2_ardour/new_session_dialog.cc
@@ -497,12 +497,20 @@ NewSessionDialog::set_have_engine (bool yn)
engine_control.discover_servers ();
if (engine_control.interface_chosen()) {
m_notebook->append_page (engine_control, _("Audio Setup"));
+ m_notebook->show_all_children();
+ page_set = Pages (page_set | EnginePage);
} else {
- /* no interface ever selected - make it the first page */
+ /* no interface ever selected - make it the first and only page */
m_notebook->prepend_page (engine_control, _("Audio Setup"));
+ if (page_set & NewPage) {
+ m_notebook->remove_page (*new_session_table);
+ }
+ if (page_set & OpenPage) {
+ m_notebook->remove_page (*open_session_vbox);
+ }
+ m_notebook->show_all_children();
+ page_set = Pages (EnginePage);
}
- m_notebook->show_all_children();
- page_set = Pages (page_set | EnginePage);
}
}
}
@@ -776,29 +784,58 @@ NewSessionDialog::which_page () const
}
} else if (page_set == (NewPage|EnginePage)) {
- switch (num) {
- case 0:
- return NewPage;
- default:
- return EnginePage;
+ if (engine_control.interface_chosen()) {
+ switch (num) {
+ case 0:
+ return NewPage;
+ default:
+ return EnginePage;
+ }
+ } else {
+ switch (num) {
+ case 0:
+ return EnginePage;
+ default:
+ return NewPage;
+ }
}
} else if (page_set == (NewPage|EnginePage|OpenPage)) {
- switch (num) {
- case 0:
- return NewPage;
- case 1:
- return OpenPage;
- default:
- return EnginePage;
+ if (engine_control.interface_chosen()) {
+ switch (num) {
+ case 0:
+ return NewPage;
+ case 1:
+ return OpenPage;
+ default:
+ return EnginePage;
+ }
+ } else {
+ switch (num) {
+ case 0:
+ return EnginePage;
+ case 1:
+ return NewPage;
+ default:
+ return OpenPage;
+ }
}
} else if (page_set == (OpenPage|EnginePage)) {
- switch (num) {
- case 0:
- return OpenPage;
- default:
- return EnginePage;
+ if (engine_control.interface_chosen()) {
+ switch (num) {
+ case 0:
+ return OpenPage;
+ default:
+ return EnginePage;
+ }
+ } else {
+ switch (num) {
+ case 0:
+ return EnginePage;
+ default:
+ return OpenPage;
+ }
}
}
@@ -852,7 +889,11 @@ NewSessionDialog::notebook_page_changed (GtkNotebookPage* np, uint pagenum)
case EnginePage:
on_new_session_page = false;
- m_okbutton->set_label(_("Open"));
+ if (!engine_control.interface_chosen()) {
+ m_okbutton->set_label(_("Start Audio Engine"));
+ } else {
+ m_okbutton->set_label(_("Open"));
+ }
m_okbutton->set_image (*(manage (new Gtk::Image (Gtk::Stock::OPEN, Gtk::ICON_SIZE_BUTTON))));
set_response_sensitive (Gtk::RESPONSE_NONE, false);
set_response_sensitive (Gtk::RESPONSE_OK, true);
diff --git a/gtk2_ardour/new_session_dialog.h b/gtk2_ardour/new_session_dialog.h
index 658b2a8b90..81a0bebfac 100644
--- a/gtk2_ardour/new_session_dialog.h
+++ b/gtk2_ardour/new_session_dialog.h
@@ -217,6 +217,9 @@ protected:
bool have_engine;
Glib::ustring engine_page_session_folder;
Glib::ustring engine_page_session_name;
+
+ sigc::connection ic_connection;
+ void engine_interface_chosen();
};
#endif // NEW_SESSION_DIALOG_H