X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fstartup.cc;h=186608e5961292be82a05641d5b176bdeac69ebf;hb=0d2ddbe52aad707af38e40764d69413672241157;hp=fbf7d4ab47f795fb441dbdd564ee96042fe232c1;hpb=f5c4c8a2931f383c76212ea1cfdb6f85f43bb72f;p=ardour.git diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc index fbf7d4ab47..186608e596 100644 --- a/gtk2_ardour/startup.cc +++ b/gtk2_ardour/startup.cc @@ -27,6 +27,7 @@ #include "pbd/file_utils.h" #include "pbd/filesystem.h" #include "pbd/replace_all.h" +#include "pbd/whitespace.h" #include "ardour/filesystem_paths.h" #include "ardour/recent_sessions.h" @@ -38,6 +39,7 @@ #include "opts.h" #include "engine_dialog.h" #include "i18n.h" +#include "utils.h" using namespace std; using namespace Gtk; @@ -63,7 +65,6 @@ ArdourStartup::ArdourStartup () , monitor_via_hardware_button (_("Use an external mixer or the hardware mixer of your audio interface.\n\ Ardour will play NO role in monitoring")) , monitor_via_ardour_button (string_compose (_("Ask %1 to playback material as it is being recorded"), PROGRAM_NAME)) - , _have_setup_existing_session_page (false) , new_folder_chooser (FILE_CHOOSER_ACTION_SELECT_FOLDER) , more_new_session_options_button (_("I'd like more options for this session")) , _output_limit_count_adj (1, 0, 100, 1, 10, 0) @@ -93,17 +94,7 @@ Ardour will play NO role in monitoring")) set_position (WIN_POS_CENTER); set_border_width (12); - sys::path icon_file; - - if (!find_file_in_search_path (ardour_search_path() + system_data_search_path().add_subdirectory_to_paths("icons"), "ardour_icon_48px.png", icon_file)) { - throw failed_constructor(); - } - - try { - icon_pixbuf = Gdk::Pixbuf::create_from_file (icon_file.to_string()); - } - - catch (...) { + if ((icon_pixbuf = ::get_icon ("ardour_icon_48px")) == 0) { throw failed_constructor(); } @@ -180,7 +171,7 @@ ArdourStartup::use_session_template () } } -Glib::ustring +std::string ArdourStartup::session_template_name () { if (!load_template_override.empty()) { @@ -189,7 +180,7 @@ ArdourStartup::session_template_name () } if (ic_existing_session_button.get_active()) { - return ustring(); + return string(); } if (use_template_button.get_active()) { @@ -203,12 +194,14 @@ ArdourStartup::session_template_name () } } -Glib::ustring +std::string ArdourStartup::session_name (bool& should_be_new) { if (ic_new_session_button.get_active()) { should_be_new = true; - return new_name_entry.get_text (); + string val = new_name_entry.get_text (); + strip_whitespace_edges (val); + return val; } else if (_existing_session_chooser_used) { /* existing session chosen from file chooser */ should_be_new = false; @@ -227,11 +220,11 @@ ArdourStartup::session_name (bool& should_be_new) } } -Glib::ustring +std::string ArdourStartup::session_folder () { if (ic_new_session_button.get_active()) { - Glib::ustring legal_session_folder_name = legalize_for_path (new_name_entry.get_text()); + std::string legal_session_folder_name = legalize_for_path (new_name_entry.get_text()); return Glib::build_filename (new_folder_chooser.get_current_folder(), legal_session_folder_name); } else if (_existing_session_chooser_used) { /* existing session chosen from file chooser */ @@ -506,8 +499,7 @@ ArdourStartup::setup_initial_choice_page () bool ArdourStartup::initial_button_press (GdkEventButton *event) { - if (event && event->type == GDK_2BUTTON_PRESS && session_page_index != -1) - { + if (event && event->type == GDK_2BUTTON_PRESS && session_page_index != -1) { set_current_page(session_page_index); return true; } else { @@ -623,7 +615,7 @@ ArdourStartup::populate_session_templates () } static bool -lost_name_entry_focus (GdkEventFocus* ev) +lost_name_entry_focus (GdkEventFocus*) { cerr << "lost focus\n"; return false; @@ -682,7 +674,7 @@ ArdourStartup::setup_new_session_page () new_folder_chooser.set_title (_("Select folder for session")); #ifdef GTKOSX - new_folder_chooser->add_shortcut_folder_uri("file:///Volumes"); + new_folder_chooser->add_shortcut_folder ("/Volumes"); #endif vbox1->pack_start (*hbox2, false, false); @@ -902,52 +894,56 @@ ArdourStartup::setup_existing_session_page () recent_session_model = TreeStore::create (recent_session_columns); redisplay_recent_sessions (); - if (_have_setup_existing_session_page) { - return; + if (!session_hbox.get_children().empty()) { + session_hbox.remove (**session_hbox.get_children().begin()); } - - recent_session_display.set_model (recent_session_model); - recent_session_display.append_column (_("Recent Sessions"), recent_session_columns.visible_name); - recent_session_display.set_headers_visible (false); - recent_session_display.get_selection()->set_mode (SELECTION_BROWSE); - - recent_session_display.get_selection()->signal_changed().connect (sigc::mem_fun (*this, &ArdourStartup::recent_session_row_selected)); - - recent_scroller.add (recent_session_display); - recent_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); - recent_scroller.set_shadow_type (Gtk::SHADOW_IN); - - recent_session_display.show(); - recent_scroller.show(); - int cnt = redisplay_recent_sessions (); - recent_session_display.signal_row_activated().connect (sigc::mem_fun (*this, &ArdourStartup::recent_row_activated)); + if (session_existing_vbox.get_children().empty()) { - if (cnt > 4) { - recent_scroller.set_size_request (-1, 300); - } + recent_session_display.set_model (recent_session_model); + recent_session_display.append_column (_("Recent Sessions"), recent_session_columns.visible_name); + recent_session_display.set_headers_visible (false); + recent_session_display.get_selection()->set_mode (SELECTION_BROWSE); + + recent_session_display.get_selection()->signal_changed().connect (sigc::mem_fun (*this, &ArdourStartup::recent_session_row_selected)); + + recent_scroller.add (recent_session_display); + recent_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); + recent_scroller.set_shadow_type (Gtk::SHADOW_IN); + + recent_session_display.show(); + + recent_scroller.show(); + int cnt = redisplay_recent_sessions (); + recent_session_display.signal_row_activated().connect (sigc::mem_fun (*this, &ArdourStartup::recent_row_activated)); + + if (cnt > 4) { + recent_scroller.set_size_request (-1, 300); + } - VBox* vbox = manage (new VBox); - vbox->set_spacing (8); - vbox->pack_start (recent_scroller, true, true); + session_existing_vbox.set_spacing (8); + session_existing_vbox.pack_start (recent_scroller, true, true); - existing_session_chooser.set_title (_("Select session file")); - existing_session_chooser.signal_file_set().connect (sigc::mem_fun (*this, &ArdourStartup::existing_session_selected)); - - HBox* hbox = manage (new HBox); - hbox->set_spacing (4); - hbox->pack_start (*manage (new Label (_("Browse:"))), PACK_SHRINK); - hbox->pack_start (existing_session_chooser); - vbox->pack_start (*hbox); - hbox->show_all (); + existing_session_chooser.set_title (_("Select session file")); + existing_session_chooser.signal_file_set().connect (sigc::mem_fun (*this, &ArdourStartup::existing_session_selected)); + +#ifdef GTKOSX + existing_session_chooser->add_shortcut_folder ("/Volumes"); +#endif + + HBox* hbox = manage (new HBox); + hbox->set_spacing (4); + hbox->pack_start (*manage (new Label (_("Browse:"))), PACK_SHRINK); + hbox->pack_start (existing_session_chooser); + session_existing_vbox.pack_start (*hbox); + hbox->show_all (); + } - vbox->show_all (); - session_hbox.pack_start (*vbox, true, true); + session_existing_vbox.show_all (); + session_hbox.pack_start (session_existing_vbox, true, true); set_page_title (session_vbox, _("Select a session")); set_page_type (session_vbox, ASSISTANT_PAGE_CONFIRM); - - _have_setup_existing_session_page = true; } void