summaryrefslogtreecommitdiff
path: root/gtk2_ardour/new_session_dialog.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-01-09 04:32:49 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-01-09 04:32:49 +0000
commit0f89d5e50b6a9febd07d3b07074a44420532cd24 (patch)
treee41d2c82afd678ba24e40229ccc9e289107afa21 /gtk2_ardour/new_session_dialog.cc
parente722f6e3a09b136b63d19767048860edc06dce69 (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.cc79
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);