X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fstartup.cc;h=a7bce0a8479c3232165c63481534cebad65a18ad;hb=e827bb2bff271f99abd3531ddd0e5a01c8ac5014;hp=b556c7319085040ac7231372e979d65bb71234b0;hpb=6822c2a9045637e2696fc9d74113be9e39acf194;p=ardour.git diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc index b556c73190..a7bce0a847 100644 --- a/gtk2_ardour/startup.cc +++ b/gtk2_ardour/startup.cc @@ -102,15 +102,43 @@ Ardour will play NO role in monitoring")) throw failed_constructor(); } - sys::path been_here_before = user_config_directory(); - been_here_before /= ".a3"; // XXXX use more specific version so we can catch upgrades - new_user = !exists (been_here_before); + list > window_icons; + Glib::RefPtr icon; + + if ((icon = ::get_icon ("ardour_icon_16px")) != 0) { + window_icons.push_back (icon); + } + if ((icon = ::get_icon ("ardour_icon_22px")) != 0) { + window_icons.push_back (icon); + } + if ((icon = ::get_icon ("ardour_icon_32px")) != 0) { + window_icons.push_back (icon); + } + if ((icon = ::get_icon ("ardour_icon_48px")) != 0) { + window_icons.push_back (icon); + } + if (!window_icons.empty ()) { + set_default_icon_list (window_icons); + } + + new_user = !exists (been_here_before_path ()); bool need_audio_setup = !EngineControl::engine_running(); + setup_prerelease_page (); + if (new_user) { - /* "touch" the file */ - ofstream fout (been_here_before.to_string().c_str()); + + /* Create the config directory so that we have somewhere to put the + been_here_before file. + */ + try { + sys::create_directories (user_config_directory ()); + } + catch (const sys::filesystem_error& ex) { + error << "Could not create user configuration directory" << endmsg; + } + setup_new_user_page (); setup_first_time_config_page (); setup_monitoring_choice_page (); @@ -143,6 +171,41 @@ ArdourStartup::~ArdourStartup () { } +void +ArdourStartup::setup_prerelease_page () +{ + VBox* vbox = manage (new VBox); + Label* label = manage (new Label); + label->set_markup (_("Welcome to this BETA release of Ardour 3.0\n\n\ +There are still several issues and bugs to be worked on,\n\ +as well as general workflow improvements, before this can be considered\n\ +release software. So, a few guidelines:\n\ +\n\ +1) Please do NOT use this software with the expectation that it is stable or reliable\n\ + though it may be so, depending on your workflow.\n\ +2) Please see http://ardour.org/a3_features for a guide to new features.\n\ +3) Please do NOT use the forums at ardour.org to report issues.\n\ +4) Please DO use the bugtracker at http://tracker.ardour.org/ to report issues\n\ + making sure to note the product version number as 3.0-alpha.\n\ +5) Please DO use the ardour-users mailing list to discuss ideas and pass on comments.\n\ +6) Please DO join us on IRC for real time discussions about ardour3. You\n\ + can get there directly from Ardour via the Help->Chat menu option.\n\ +\n\ +Full information on all the above can be found on the support page at\n\ +\n\ + http://ardour.org/support\n\ +")); + + vbox->set_border_width (12); + vbox->pack_start (*label, false, false, 12); + vbox->show_all (); + + append_page (*vbox); + set_page_type (*vbox, ASSISTANT_PAGE_CONTENT); + set_page_title (*vbox, _("This is an BETA RELEASE")); + set_page_complete (*vbox, true); +} + void ArdourStartup::set_new_only (bool yn) { @@ -300,7 +363,7 @@ using the program.\ void ArdourStartup::default_dir_changed () { - Config->set_default_session_parent_dir (default_dir_chooser->get_current_folder()); + Config->set_default_session_parent_dir (default_dir_chooser->get_filename()); config_changed (); } @@ -567,7 +630,7 @@ ArdourStartup::on_apply () if (config_modified) { if (default_dir_chooser) { - Config->set_default_session_parent_dir (default_dir_chooser->get_current_folder()); + Config->set_default_session_parent_dir (default_dir_chooser->get_filename()); } if (monitor_via_hardware_button.get_active()) { @@ -578,6 +641,9 @@ ArdourStartup::on_apply () Config->set_use_monitor_bus (use_monitor_section_button.get_active()); + /* "touch" the been-here-before path now that we're about to save Config */ + ofstream fout (been_here_before_path().to_string().c_str()); + Config->save_state (); } @@ -596,6 +662,26 @@ ArdourStartup::on_prepare (Gtk::Widget* page) } else { /* existing session requested */ setup_existing_session_page (); + + } + + /* HACK HACK HACK ... change the "Apply" button label + to say "Open" + */ + + Gtk::Widget* tl = session_vbox.get_toplevel(); + Gtk::Window* win; + if ((win = dynamic_cast(tl)) != 0) { + /* ::get_default_widget() is not wrapped in gtkmm */ + Gtk::Widget* def = wrap (gtk_window_get_default_widget (win->gobj())); + Gtk::Button* button; + if ((button = dynamic_cast(def)) != 0) { + if (more_new_session_options_button.get_active()) { + button->set_label (_("Forward")); + }else{ + button->set_label (_("Open")); + } + } } } } @@ -748,9 +834,9 @@ ArdourStartup::setup_new_session_page () use_session_as_template_button.show (); session_template_chooser.show (); - Gtk::FileFilter* template_filter = manage (new (Gtk::FileFilter)); - template_filter->add_pattern(X_("*.template")); - session_template_chooser.set_filter (*template_filter); + Gtk::FileFilter* session_filter = manage (new (Gtk::FileFilter)); + session_filter->add_pattern (X_("*.ardour")); + session_template_chooser.set_filter (*session_filter); session_template_chooser.set_title (_("Select template")); vbox3->pack_start (*hbox4b, false, false); @@ -780,6 +866,10 @@ ArdourStartup::setup_new_session_page () set_page_title (session_vbox, _("New Session")); set_page_type (session_vbox, ASSISTANT_PAGE_CONFIRM); + if (more_new_session_options_button.get_active()) { + set_page_type (session_vbox, ASSISTANT_PAGE_CONTENT); + } + new_name_entry.signal_map().connect (sigc::mem_fun (*this, &ArdourStartup::new_name_mapped)); new_name_entry.signal_focus_out_event().connect (sigc::ptr_fun (lost_name_entry_focus)); } @@ -909,19 +999,19 @@ ArdourStartup::setup_existing_session_page () 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); } @@ -931,19 +1021,19 @@ 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)); - + #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); + session_existing_vbox.pack_start (*hbox, false, false); hbox->show_all (); } - + session_existing_vbox.show_all (); session_hbox.pack_start (session_existing_vbox, true, true); @@ -1013,7 +1103,7 @@ ArdourStartup::setup_more_options_page () _connect_inputs.set_flags(Gtk::CAN_FOCUS); _connect_inputs.set_relief(Gtk::RELIEF_NORMAL); _connect_inputs.set_mode(true); - _connect_inputs.set_active(true); + _connect_inputs.set_active(Config->get_input_auto_connect() != ManualConnect); _connect_inputs.set_border_width(0); _limit_input_ports.set_label (_("Use only")); @@ -1073,7 +1163,7 @@ ArdourStartup::setup_more_options_page () _connect_outputs.set_flags(Gtk::CAN_FOCUS); _connect_outputs.set_relief(Gtk::RELIEF_NORMAL); _connect_outputs.set_mode(true); - _connect_outputs.set_active(true); + _connect_outputs.set_active(Config->get_output_auto_connect() != ManualConnect); _connect_outputs.set_border_width(0); _limit_output_ports.set_label (_("Use only")); _limit_output_ports.set_flags(Gtk::CAN_FOCUS); @@ -1095,7 +1185,7 @@ ArdourStartup::setup_more_options_page () _connect_outputs_to_master.set_flags(Gtk::CAN_FOCUS); _connect_outputs_to_master.set_relief(Gtk::RELIEF_NORMAL); _connect_outputs_to_master.set_mode(true); - _connect_outputs_to_master.set_active(false); + _connect_outputs_to_master.set_active(Config->get_output_auto_connect() == AutoConnectMaster); _connect_outputs_to_master.set_border_width(0); _connect_outputs_to_master.set_group (connect_outputs_group); @@ -1105,7 +1195,7 @@ ArdourStartup::setup_more_options_page () _connect_outputs_to_physical.set_flags(Gtk::CAN_FOCUS); _connect_outputs_to_physical.set_relief(Gtk::RELIEF_NORMAL); _connect_outputs_to_physical.set_mode(true); - _connect_outputs_to_physical.set_active(false); + _connect_outputs_to_physical.set_active(Config->get_output_auto_connect() == AutoConnectPhysical); _connect_outputs_to_physical.set_border_width(0); output_conn_vbox.pack_start(_connect_outputs, Gtk::PACK_SHRINK, 0); @@ -1287,3 +1377,12 @@ ArdourStartup::existing_session_selected () set_page_complete (session_vbox, true); move_along_now (); } + +sys::path +ArdourStartup::been_here_before_path () const +{ + sys::path b = user_config_directory(); + b /= ".a3"; // XXXX use more specific version so we can catch upgrades + return b; +} +