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<Glib::RefPtr<Gdk::Pixbuf> > window_icons;
+ Glib::RefPtr<Gdk::Pixbuf> 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 ();
{
}
+void
+ArdourStartup::setup_prerelease_page ()
+{
+ VBox* vbox = manage (new VBox);
+ Label* label = manage (new Label);
+ label->set_markup (_("<b>Welcome to this BETA release of Ardour 3.0</b>\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 <b>NOT</b> 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) <b>Please do NOT use the forums at ardour.org to report issues</b>.\n\
+4) Please <b>DO</b> 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 <b>DO</b> use the ardour-users mailing list to discuss ideas and pass on comments.\n\
+6) Please <b>DO</b> 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)
{
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 ();
}
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()) {
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 ();
}
} 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<Gtk::Window*>(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<Gtk::Button*>(def)) != 0) {
+ if (more_new_session_options_button.get_active()) {
+ button->set_label (_("Forward"));
+ }else{
+ button->set_label (_("Open"));
+ }
+ }
}
}
}
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);
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));
}
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);
}
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);
_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"));
_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);
_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);
_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);
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;
+}
+