X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fstartup.cc;h=8e94ae916789ec0126f39743b40036ee69e60482;hb=af0083b11d0285f8fd529262b66b287ae33d130a;hp=891d2cf2decf395b97490226e08eae92628770b6;hpb=8983d84fb2668bb54383e8148c45ef75af93d360;p=ardour.git diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc index 891d2cf2de..8e94ae9167 100644 --- a/gtk2_ardour/startup.cc +++ b/gtk2_ardour/startup.cc @@ -38,7 +38,9 @@ #include "ardour/session.h" #include "ardour/session_state_utils.h" #include "ardour/template_utils.h" +#include "ardour/filename_extensions.h" +#include "ardour_ui.h" #include "startup.h" #include "opts.h" #include "engine_dialog.h" @@ -121,11 +123,11 @@ Ardour will play NO role in monitoring")) set_default_icon_list (window_icons); } - new_user = !exists (been_here_before_path ()); + new_user = !Glib::file_test(been_here_before_path().to_string(), Glib::FILE_TEST_EXISTS); bool need_audio_setup = !EngineControl::engine_running(); - setup_prerelease_page (); + // setup_prerelease_page (); if (new_user) { @@ -148,6 +150,8 @@ Ardour will play NO role in monitoring")) setup_audio_page (); } + ic_new_session_button.set_active (true); // always create new session on first run + } else { if (need_audio_setup) { @@ -243,8 +247,8 @@ std::string ArdourStartup::session_template_name () { if (!load_template_override.empty()) { - string the_path = (ARDOUR::user_template_directory()/ (load_template_override + ".template")).to_string(); - return the_path; + string the_path(ARDOUR::user_template_directory()); + return Glib::build_filename (the_path, load_template_override + ARDOUR::template_suffix); } if (ic_existing_session_button.get_active()) { @@ -366,6 +370,8 @@ void ArdourStartup::default_dir_changed () { Config->set_default_session_parent_dir (default_dir_chooser->get_filename()); + // make new session folder chooser point to the new default + new_folder_chooser.set_current_folder (Config->get_default_session_parent_dir()); config_changed (); } @@ -432,7 +438,8 @@ signal as well as record it. This is called \"monitoring\". There are\n\ different ways to do this depending on the equipment you have and the\n\ configuration of that equipment. The two most common are presented here.\n\ Please choose whichever one is right for your setup.\n\n\ -(You can change this preference at any time, via the Preferences dialog)")); +(You can change this preference at any time, via the Preferences dialog)\n\n\ +If you do not understand what this is about, just accept the default.")); monitor_label.set_alignment (0.0, 0.0); vbox->set_spacing (6); @@ -471,8 +478,7 @@ ArdourStartup::setup_monitor_section_choice_page () no_monitor_section_button.set_label (_("Use a Master bus directly")); l->set_alignment (0.0, 1.0); - l->set_markup(_("Connect the Master bus directly to your hardware outputs.\n\ -Preferable for simple use.")); + l->set_markup(_("Connect the Master bus directly to your hardware outputs. This is preferable for simple usage.")); vbox = manage (new VBox); vbox->set_spacing (6); @@ -506,7 +512,8 @@ greater control in monitoring without affecting the mix.")); use_monitor_section_button.signal_toggled().connect (sigc::mem_fun (*this, &ArdourStartup::config_changed)); no_monitor_section_button.signal_toggled().connect (sigc::mem_fun (*this, &ArdourStartup::config_changed)); - monitor_section_label.set_markup(_("(You can change this preference at any time, via the Preferences dialog)")); + monitor_section_label.set_markup(_("You can change this preference at any time via the Preferences dialog.\nYou can also add or remove the monitor section to/from any session.\n\n\ +If you do not understand what this is about, just accept the default.")); monitor_section_label.set_alignment (0.0, 0.0); hbox->pack_start (*main_vbox, true, true, 8); @@ -543,10 +550,10 @@ ArdourStartup::setup_initial_choice_page () centering_vbox->pack_start (ic_new_session_button, false, true); centering_vbox->pack_start (ic_existing_session_button, false, true); - ic_new_session_button.signal_button_press_event().connect(sigc::mem_fun(*this, &ArdourStartup::initial_button_press), false); + ic_new_session_button.signal_button_press_event().connect(sigc::mem_fun(*this, &ArdourStartup::initial_button_clicked), false); ic_new_session_button.signal_activate().connect(sigc::mem_fun(*this, &ArdourStartup::initial_button_activated), false); - ic_existing_session_button.signal_button_press_event().connect(sigc::mem_fun(*this, &ArdourStartup::initial_button_press), false); + ic_existing_session_button.signal_button_press_event().connect(sigc::mem_fun(*this, &ArdourStartup::initial_button_clicked), false); ic_existing_session_button.signal_activate().connect(sigc::mem_fun(*this, &ArdourStartup::initial_button_activated), false); centering_hbox->pack_start (*centering_vbox, true, true); @@ -567,20 +574,21 @@ ArdourStartup::setup_initial_choice_page () } bool -ArdourStartup::initial_button_press (GdkEventButton *event) +ArdourStartup::initial_button_clicked (GdkEventButton* ev) { - if (event && event->type == GDK_2BUTTON_PRESS && session_page_index != -1) { + if (ev->type == GDK_2BUTTON_PRESS && session_page_index != -1) { set_current_page(session_page_index); - return true; - } else { - return false; } + + return false; } void ArdourStartup::initial_button_activated () { - set_current_page(session_page_index); + if (session_page_index != -1) { + set_current_page(session_page_index); + } } void @@ -710,7 +718,7 @@ ArdourStartup::populate_session_templates () static bool lost_name_entry_focus (GdkEventFocus*) { - cerr << "lost focus\n"; + // cerr << "lost focus\n"; return false; } @@ -761,6 +769,13 @@ ArdourStartup::setup_new_session_page () if (!ARDOUR_COMMAND_LINE::session_name.empty()) { new_folder_chooser.set_current_folder (poor_mans_glob (Glib::path_get_dirname (ARDOUR_COMMAND_LINE::session_name))); + } else if (ARDOUR_UI::instance()->session_loaded) { + // point the new session file chooser at the parent directory of the current session + string session_parent_dir = Glib::path_get_dirname(ARDOUR_UI::instance()->the_session()->path()); + string::size_type last_dir_sep = session_parent_dir.rfind(G_DIR_SEPARATOR); + session_parent_dir = session_parent_dir.substr(0, last_dir_sep); + new_folder_chooser.set_current_folder (session_parent_dir); + new_folder_chooser.add_shortcut_folder (poor_mans_glob (Config->get_default_session_parent_dir())); } else { new_folder_chooser.set_current_folder (poor_mans_glob (Config->get_default_session_parent_dir())); } @@ -879,7 +894,7 @@ ArdourStartup::setup_new_session_page () void ArdourStartup::new_name_mapped () { - cerr << "Grab new name focus\n"; + // cerr << "Grab new name focus\n"; new_name_entry.grab_focus (); } @@ -919,11 +934,11 @@ ArdourStartup::redisplay_recent_sessions () for (vector::const_iterator i = session_directories.begin(); i != session_directories.end(); ++i) { - std::vector state_file_paths; + std::vector state_file_paths; // now get available states for this session - get_state_files_in_directory (*i, state_file_paths); + get_state_files_in_directory ((*i).to_string (), state_file_paths); vector* states; vector item; @@ -971,6 +986,7 @@ ArdourStartup::redisplay_recent_sessions () } } + recent_session_display.set_tooltip_column(1); // recent_session_columns.fullpath recent_session_display.set_model (recent_session_model); return rs.size(); } @@ -1023,7 +1039,14 @@ ArdourStartup::setup_existing_session_page () existing_session_chooser.set_title (_("Select session file")); existing_session_chooser.signal_file_set().connect (sigc::mem_fun (*this, &ArdourStartup::existing_session_selected)); + existing_session_chooser.set_current_folder(poor_mans_glob (Config->get_default_session_parent_dir())); + FileFilter session_filter; + session_filter.add_pattern ("*.ardour"); + session_filter.set_name (string_compose (_("%1 sessions"), PROGRAM_NAME)); + existing_session_chooser.add_filter (session_filter); + existing_session_chooser.set_filter (session_filter); + #ifdef GTKOSX existing_session_chooser.add_shortcut_folder ("/Volumes"); #endif