diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2007-12-19 02:27:50 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2007-12-19 02:27:50 +0000 |
commit | c6ca7ce48fb1339040878fb2af9958894bcee1b6 (patch) | |
tree | e0694bc14518b5e9ce4babdc830dd723f09246b5 /gtk2_ardour/new_session_dialog.cc | |
parent | 5252e9d640acd406eaba055fd3cbd6fd95a09069 (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.cc | 48 |
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); |