diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-09 04:32:49 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-09 04:32:49 +0000 |
commit | 0f89d5e50b6a9febd07d3b07074a44420532cd24 (patch) | |
tree | e41d2c82afd678ba24e40229ccc9e289107afa21 /gtk2_ardour/new_session_dialog.cc | |
parent | e722f6e3a09b136b63d19767048860edc06dce69 (diff) |
even more fixes for the new session dialog and its use
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2848 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/new_session_dialog.cc')
-rw-r--r-- | gtk2_ardour/new_session_dialog.cc | 79 |
1 files changed, 74 insertions, 5 deletions
diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc index 2b4b75d3ed..a112ebfe40 100644 --- a/gtk2_ardour/new_session_dialog.cc +++ b/gtk2_ardour/new_session_dialog.cc @@ -678,6 +678,56 @@ NewSessionDialog::get_current_page() return m_notebook->get_current_page(); } +NewSessionDialog::Pages +NewSessionDialog::which_page () +{ + int num = m_notebook->get_current_page(); + + if (page_set == NewPage) { + return NewPage; + + } else if (page_set == OpenPage) { + return OpenPage; + + } else if (page_set == EnginePage) { + return EnginePage; + + } else if (page_set == NewPage|OpenPage) { + switch (num) { + case 0: + return NewPage; + default: + return OpenPage; + } + + } else if (page_set == NewPage|EnginePage) { + switch (num) { + case 0: + return NewPage; + default: + return EnginePage; + } + + } else if (page_set == NewPage|EnginePage|OpenPage) { + switch (num) { + case 0: + return NewPage; + case 1: + return OpenPage; + default: + return EnginePage; + } + + } else if (page_set == OpenPage|EnginePage) { + switch (num) { + case 0: + return OpenPage; + default: + return EnginePage; + } + } +} + void NewSessionDialog::set_current_page(int page) { @@ -710,17 +760,28 @@ NewSessionDialog::notebook_page_changed (GtkNotebookPage* np, uint pagenum) return; } - if (pagenum == 1) { + switch (which_page()) { + case OpenPage: on_new_session_page = false; m_okbutton->set_label(_("Open")); - m_okbutton->set_image (*(new Gtk::Image (Gtk::Stock::OPEN, Gtk::ICON_SIZE_BUTTON))); + m_okbutton->set_image (*(manage (new Gtk::Image (Gtk::Stock::OPEN, Gtk::ICON_SIZE_BUTTON)))); set_response_sensitive (Gtk::RESPONSE_NONE, false); if (m_treeview->get_selection()->count_selected_rows() == 0) { set_response_sensitive (Gtk::RESPONSE_OK, false); } else { set_response_sensitive (Gtk::RESPONSE_OK, true); } - } else { + break; + + case EnginePage: + on_new_session_page = false; + 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); + break; + + default: on_new_session_page = true; m_okbutton->set_label(_("New")); m_okbutton->set_image (*(new Gtk::Image (Gtk::Stock::NEW, Gtk::ICON_SIZE_BUTTON))); @@ -750,11 +811,19 @@ NewSessionDialog::treeview_selection_changed () void NewSessionDialog::file_chosen () { - if (on_new_session_page) return; + switch (which_page()) { + case NewPage: + case EnginePage: + return; + } m_treeview->get_selection()->unselect_all(); - get_window()->set_cursor(Gdk::Cursor(Gdk::WATCH)); + Glib::RefPtr<Gdk::Window> win (get_window()); + + if (win) { + win->set_cursor(Gdk::Cursor(Gdk::WATCH)); + } if (!m_open_filechooser->get_filename().empty()) { set_response_sensitive (Gtk::RESPONSE_OK, true); |