From 095b672b993e67a980bfea3d1d88c401e05e9b0e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 3 Nov 2025 12:28:07 -0700 Subject: [PATCH] add a page to the new user wizard for the default clip path --- gtk2_ardour/new_user_wizard.cc | 63 ++++++++++++++++++++++++++++++++-- gtk2_ardour/new_user_wizard.h | 6 ++++ 2 files changed, 67 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/new_user_wizard.cc b/gtk2_ardour/new_user_wizard.cc index 7a4d969982..5241b5433e 100644 --- a/gtk2_ardour/new_user_wizard.cc +++ b/gtk2_ardour/new_user_wizard.cc @@ -44,6 +44,7 @@ #include "pbd/openuri.h" #include "ardour/audioengine.h" +#include "ardour/clip_library.h" #include "ardour/filesystem_paths.h" #include "ardour/filename_extensions.h" #include "ardour/plugin_manager.h" @@ -107,6 +108,7 @@ NewUserWizard::NewUserWizard () setup_new_user_page (); setup_first_time_config_page (); + setup_clip_lib_page (); setup_final_page (); } @@ -227,6 +229,14 @@ NewUserWizard::default_dir_changed () config_modified = true; } +void +NewUserWizard::clip_lib_changed () +{ + Config->set_clip_library_dir (clip_lib_chooser->get_filename()); + clip_lib_label->set_text (clip_lib_chooser->get_filename()); + config_modified = true; +} + void NewUserWizard::setup_first_time_config_page () { @@ -252,10 +262,10 @@ Where would you like new %1 sessions to be stored by default?\n\n\ vbox->pack_start (*txt, false, false); vbox->pack_start (*hbox, false, true); - cerr << "set default folder to " << poor_mans_glob (Config->get_default_session_parent_dir()) << endl; Gtkmm2ext::add_volume_shortcuts (*default_dir_chooser); + default_dir_chooser->set_title (_("Default Session Location")); default_dir_chooser->set_current_folder (poor_mans_glob (Config->get_default_session_parent_dir())); - default_dir_chooser->signal_current_folder_changed().connect (sigc::mem_fun (*this, &NewUserWizard::default_dir_changed)); + default_dir_chooser->signal_file_set().connect (sigc::mem_fun (*this, &NewUserWizard::default_dir_changed)); default_dir_chooser->show (); vbox->show_all (); @@ -270,6 +280,55 @@ Where would you like new %1 sessions to be stored by default?\n\n\ set_page_complete (*vbox, true); } +void +NewUserWizard::setup_clip_lib_page () +{ + clip_lib_chooser = manage (new FileChooserButton (string_compose (_("Default folder where %1 should look for samples"), PROGRAM_NAME), + FILE_CHOOSER_ACTION_SELECT_FOLDER)); + clip_lib_label = manage (new Label); + + Gtk::Label* txt = manage (new Label); + HBox* hbox = manage (new HBox); + VBox* vbox = manage (new VBox); + + txt->set_markup (string_compose (_("\ +If you have an existing collection of samples, telling %1\n\ +where they are will make it easier to find them in the program.\ +\n\ +\n\ +Where would you like new %1 sessions to be stored by default?\n\n\ +(You can store samples anywhere you want, this is just a default)"), PROGRAM_NAME)); + txt->set_alignment (0.0, 0.0); + txt->set_justify (JUSTIFY_FILL); + + vbox->set_spacing (18); + vbox->set_border_width (24); + + hbox->pack_start (*clip_lib_chooser, false, true, 8); + hbox->pack_start (*clip_lib_label, false, false, 8); + + vbox->pack_start (*txt, false, false); + vbox->pack_start (*hbox, false, true); + + clip_lib_label->set_text (ARDOUR::platform_default_clip_library_dir()); + + Gtkmm2ext::add_volume_shortcuts (*clip_lib_chooser); + clip_lib_chooser->set_title (_("Default sample library location")); + clip_lib_chooser->signal_file_set().connect (sigc::mem_fun (*this, &NewUserWizard::clip_lib_changed)); + clip_lib_chooser->show (); + + vbox->show_all (); + + append_page (*vbox); + set_page_title (*vbox, _("Default Sample Library Location")); + set_page_header_image (*vbox, icon_pixbuf); + set_page_type (*vbox, ASSISTANT_PAGE_CONTENT); + + /* user can just skip all these settings if they want to */ + + set_page_complete (*vbox, true); +} + void NewUserWizard::setup_final_page () { diff --git a/gtk2_ardour/new_user_wizard.h b/gtk2_ardour/new_user_wizard.h index 813b42cac9..717bfae1e5 100644 --- a/gtk2_ardour/new_user_wizard.h +++ b/gtk2_ardour/new_user_wizard.h @@ -84,6 +84,12 @@ private: void setup_first_page (); Gtk::FileChooserButton new_folder_chooser; + /* Clip lib page */ + Gtk::FileChooserButton* clip_lib_chooser; + Gtk::Label* clip_lib_label; + void clip_lib_changed(); + void setup_clip_lib_page (); + /* final page */ void setup_final_page (); void move_along_now ();