summaryrefslogtreecommitdiff
path: root/gtk2_ardour/new_session_dialog.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2007-12-19 02:27:50 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2007-12-19 02:27:50 +0000
commitc6ca7ce48fb1339040878fb2af9958894bcee1b6 (patch)
treee0694bc14518b5e9ce4babdc830dd723f09246b5 /gtk2_ardour/new_session_dialog.cc
parent5252e9d640acd406eaba055fd3cbd6fd95a09069 (diff)
made new session dialog hide pages as necessary, to be a bit simpler whenever possible
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2797 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/new_session_dialog.cc')
-rw-r--r--gtk2_ardour/new_session_dialog.cc48
1 files changed, 41 insertions, 7 deletions
diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc
index 1ae412af41..85ebf4b115 100644
--- a/gtk2_ardour/new_session_dialog.cc
+++ b/gtk2_ardour/new_session_dialog.cc
@@ -341,10 +341,6 @@ NewSessionDialog::NewSessionDialog()
m_notebook->set_flags(Gtk::CAN_FOCUS);
m_notebook->set_scrollable(true);
- m_notebook->append_page(*new_session_table, _("New Session"));
- m_notebook->pages().back().set_tab_label_packing(false, true, Gtk::PACK_START);
- m_notebook->append_page(*open_session_vbox, _("Open Session"));
- m_notebook->pages().back().set_tab_label_packing(false, true, Gtk::PACK_START);
get_vbox()->set_homogeneous(false);
get_vbox()->set_spacing(0);
@@ -441,6 +437,8 @@ NewSessionDialog::NewSessionDialog()
m_open_filechooser->signal_selection_changed ().connect (mem_fun (*this, &NewSessionDialog::file_chosen));
m_template->signal_selection_changed ().connect (mem_fun (*this, &NewSessionDialog::template_chosen));
m_name->grab_focus();
+
+ page_set = Pages (0);
}
NewSessionDialog::~NewSessionDialog()
@@ -448,22 +446,58 @@ NewSessionDialog::~NewSessionDialog()
in_destructor = true;
}
+int
+NewSessionDialog::run ()
+{
+ if (!page_set) {
+ /* nothing to display */
+ return Gtk::RESPONSE_OK;
+ }
+
+ return ArdourDialog::run ();
+}
+
void
NewSessionDialog::set_have_engine (bool yn)
{
if (yn) {
m_notebook->remove_page (engine_control);
+ page_set = Pages (page_set & ~EnginePage);
} else {
- // XXX this is a bit of crude hack. if we ever add or remove
- // pages from the notebook, this is going to break.
- if (m_notebook->get_n_pages () != 3) {
+ if (!(page_set & EnginePage)) {
m_notebook->append_page (engine_control, _("Audio Setup"));
m_notebook->show_all_children();
+ page_set = Pages (page_set | EnginePage);
}
}
}
void
+NewSessionDialog::set_existing_session (bool yn)
+{
+ if (yn) {
+
+ if (page_set & NewPage) {
+ m_notebook->remove_page (*new_session_table);
+ page_set = Pages (page_set & ~NewPage);
+ }
+
+ if (page_set & OpenPage) {
+ m_notebook->remove_page (*open_session_vbox);
+ page_set = Pages (page_set & ~OpenPage);
+ }
+
+ } else {
+ m_notebook->append_page(*new_session_table, _("New Session"));
+ m_notebook->pages().back().set_tab_label_packing(false, true, Gtk::PACK_START);
+ m_notebook->append_page(*open_session_vbox, _("Open Session"));
+ m_notebook->pages().back().set_tab_label_packing(false, true, Gtk::PACK_START);
+ m_notebook->show_all_children();
+ page_set = Pages (page_set | (NewPage|OpenPage));
+ }
+}
+
+void
NewSessionDialog::set_session_name (const Glib::ustring& name)
{
m_name->set_text (name);