- std::vector<std::string> state_file_paths;
-
- // now get available states for this session
-
- get_state_files_in_directory (*i, state_file_paths);
-
- vector<string*>* states;
- vector<const gchar*> item;
- string fullpath = *i;
-
- /* remove any trailing / */
-
- if (fullpath[fullpath.length()-1] == '/') {
- fullpath = fullpath.substr (0, fullpath.length()-1);
- }
-
- /* check whether session still exists */
- if (!Glib::file_test(fullpath.c_str(), Glib::FILE_TEST_EXISTS)) {
- /* session doesn't exist */
- continue;
- }
-
- /* now get available states for this session */
-
- if ((states = Session::possible_states (fullpath)) == 0) {
- /* no state file? */
- continue;
- }
-
- std::vector<string> state_file_names(get_file_names_no_extension (state_file_paths));
-
- Gtk::TreeModel::Row row = *(recent_session_model->append());
-
- row[recent_session_columns.visible_name] = Glib::path_get_basename (fullpath);
- row[recent_session_columns.fullpath] = fullpath;
-
- if (state_file_names.size() > 1) {
-
- // add the children
-
- for (std::vector<std::string>::iterator i2 = state_file_names.begin();
- i2 != state_file_names.end(); ++i2)
- {
-
- Gtk::TreeModel::Row child_row = *(recent_session_model->append (row.children()));
-
- child_row[recent_session_columns.visible_name] = *i2;
- child_row[recent_session_columns.fullpath] = fullpath;
- }
- }
- }
-
- recent_session_display.set_tooltip_column(1); // recent_session_columns.fullpath
- recent_session_display.set_model (recent_session_model);
- return rs.size();
-}
-
-void
-ArdourStartup::recent_session_row_selected ()
-{
- if (recent_session_display.get_selection()->count_selected_rows() > 0) {
- set_page_complete (session_vbox, true);
- } else {
- set_page_complete (session_vbox, false);
- }
-}
-
-void
-ArdourStartup::setup_existing_session_page ()
-{
- recent_session_model = TreeStore::create (recent_session_columns);
- redisplay_recent_sessions ();
-
- if (!session_hbox.get_children().empty()) {
- session_hbox.remove (**session_hbox.get_children().begin());
- }
-
- if (session_existing_vbox.get_children().empty()) {
-
- 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);
- }
-
- 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));
- 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
-
- 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, false, false);
- hbox->show_all ();
- }
-
- 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);
-}
-
-void
-ArdourStartup::more_new_session_options_button_clicked ()
-{
- if (more_new_session_options_button.get_active()) {
- more_options_vbox.show_all ();
- set_page_type (more_options_vbox, ASSISTANT_PAGE_CONFIRM);
- set_page_type (session_vbox, ASSISTANT_PAGE_CONTENT);
- } else {
- set_page_type (session_vbox, ASSISTANT_PAGE_CONFIRM);
- more_options_vbox.hide ();
- }
-}
-
-void
-ArdourStartup::setup_more_options_page ()
-{
- more_options_vbox.set_border_width (24);
-
- _output_limit_count.set_adjustment (_output_limit_count_adj);
- _input_limit_count.set_adjustment (_input_limit_count_adj);
- _master_bus_channel_count.set_adjustment (_master_bus_channel_count_adj);
-
- chan_count_label_1.set_text (_("channels"));
- chan_count_label_3.set_text (_("channels"));
- chan_count_label_4.set_text (_("channels"));
-
- chan_count_label_1.set_alignment(0,0.5);
- chan_count_label_1.set_padding(0,0);
- chan_count_label_1.set_line_wrap(false);
-
- chan_count_label_3.set_alignment(0,0.5);
- chan_count_label_3.set_padding(0,0);
- chan_count_label_3.set_line_wrap(false);
-
- chan_count_label_4.set_alignment(0,0.5);
- chan_count_label_4.set_padding(0,0);
- chan_count_label_4.set_line_wrap(false);
-
- bus_label.set_markup (_("<b>Busses</b>"));
- input_label.set_markup (_("<b>Inputs</b>"));
- output_label.set_markup (_("<b>Outputs</b>"));
-
- _master_bus_channel_count.set_flags(Gtk::CAN_FOCUS);
- _master_bus_channel_count.set_update_policy(Gtk::UPDATE_ALWAYS);
- _master_bus_channel_count.set_numeric(true);
- _master_bus_channel_count.set_digits(0);
- _master_bus_channel_count.set_wrap(false);
-
- _create_master_bus.set_label (_("Create master bus"));
- _create_master_bus.set_flags(Gtk::CAN_FOCUS);
- _create_master_bus.set_relief(Gtk::RELIEF_NORMAL);
- _create_master_bus.set_mode(true);
- _create_master_bus.set_active(true);
- _create_master_bus.set_border_width(0);
-
- advanced_table.set_row_spacings(0);
- advanced_table.set_col_spacings(0);
-
- _connect_inputs.set_label (_("Automatically connect to physical_inputs"));
- _connect_inputs.set_flags(Gtk::CAN_FOCUS);
- _connect_inputs.set_relief(Gtk::RELIEF_NORMAL);
- _connect_inputs.set_mode(true);
- _connect_inputs.set_active(Config->get_input_auto_connect() != ManualConnect);
- _connect_inputs.set_border_width(0);
-
- _limit_input_ports.set_label (_("Use only"));
- _limit_input_ports.set_flags(Gtk::CAN_FOCUS);
- _limit_input_ports.set_relief(Gtk::RELIEF_NORMAL);
- _limit_input_ports.set_mode(true);
- _limit_input_ports.set_sensitive(true);
- _limit_input_ports.set_border_width(0);
-
- _input_limit_count.set_flags(Gtk::CAN_FOCUS);
- _input_limit_count.set_update_policy(Gtk::UPDATE_ALWAYS);
- _input_limit_count.set_numeric(true);
- _input_limit_count.set_digits(0);
- _input_limit_count.set_wrap(false);
- _input_limit_count.set_sensitive(false);
-
- bus_hbox.pack_start (bus_table, Gtk::PACK_SHRINK, 18);
-
- bus_label.set_alignment(0, 0.5);
- bus_label.set_padding(0,0);
- bus_label.set_line_wrap(false);
- bus_label.set_selectable(false);
- bus_label.set_use_markup(true);
- bus_frame.set_shadow_type(Gtk::SHADOW_NONE);
- bus_frame.set_label_align(0,0.5);
- bus_frame.add(bus_hbox);
- bus_frame.set_label_widget(bus_label);
-
- bus_table.set_row_spacings (0);
- bus_table.set_col_spacings (0);
- bus_table.attach (_create_master_bus, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
- bus_table.attach (_master_bus_channel_count, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
- bus_table.attach (chan_count_label_1, 2, 3, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 6, 0);
-
- input_port_limit_hbox.pack_start(_limit_input_ports, Gtk::PACK_SHRINK, 6);
- input_port_limit_hbox.pack_start(_input_limit_count, Gtk::PACK_SHRINK, 0);
- input_port_limit_hbox.pack_start(chan_count_label_3, Gtk::PACK_SHRINK, 6);
- input_port_vbox.pack_start(_connect_inputs, Gtk::PACK_SHRINK, 0);
- input_port_vbox.pack_start(input_port_limit_hbox, Gtk::PACK_EXPAND_PADDING, 0);
- input_table.set_row_spacings(0);
- input_table.set_col_spacings(0);
- input_table.attach(input_port_vbox, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 6, 6);
-
- input_hbox.pack_start (input_table, Gtk::PACK_SHRINK, 18);
-
- input_label.set_alignment(0, 0.5);
- input_label.set_padding(0,0);
- input_label.set_line_wrap(false);
- input_label.set_selectable(false);
- input_label.set_use_markup(true);
- input_frame.set_shadow_type(Gtk::SHADOW_NONE);
- input_frame.set_label_align(0,0.5);
- input_frame.add(input_hbox);
- input_frame.set_label_widget(input_label);
-
- _connect_outputs.set_label (_("Automatically connect outputs"));
- _connect_outputs.set_flags(Gtk::CAN_FOCUS);
- _connect_outputs.set_relief(Gtk::RELIEF_NORMAL);
- _connect_outputs.set_mode(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);
- _limit_output_ports.set_relief(Gtk::RELIEF_NORMAL);
- _limit_output_ports.set_mode(true);
- _limit_output_ports.set_sensitive(true);
- _limit_output_ports.set_border_width(0);
- _output_limit_count.set_flags(Gtk::CAN_FOCUS);
- _output_limit_count.set_update_policy(Gtk::UPDATE_ALWAYS);
- _output_limit_count.set_numeric(false);
- _output_limit_count.set_digits(0);
- _output_limit_count.set_wrap(false);
- _output_limit_count.set_sensitive(false);
- output_port_limit_hbox.pack_start(_limit_output_ports, Gtk::PACK_SHRINK, 6);
- output_port_limit_hbox.pack_start(_output_limit_count, Gtk::PACK_SHRINK, 0);
- output_port_limit_hbox.pack_start(chan_count_label_4, Gtk::PACK_SHRINK, 6);
-
- _connect_outputs_to_master.set_label (_("... to master bus"));
- _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(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_group (connect_outputs_group);
-
- _connect_outputs_to_physical.set_label (_("... to physical outputs"));
- _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(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);
- output_conn_vbox.pack_start(_connect_outputs_to_master, Gtk::PACK_SHRINK, 0);
- output_conn_vbox.pack_start(_connect_outputs_to_physical, Gtk::PACK_SHRINK, 0);
- output_vbox.set_border_width(6);
-
- output_port_vbox.pack_start(output_port_limit_hbox, Gtk::PACK_SHRINK, 0);
-
- output_vbox.pack_start(output_conn_vbox);
- output_vbox.pack_start(output_port_vbox);
-
- output_label.set_alignment(0, 0.5);
- output_label.set_padding(0,0);
- output_label.set_line_wrap(false);
- output_label.set_selectable(false);
- output_label.set_use_markup(true);
- output_frame.set_shadow_type(Gtk::SHADOW_NONE);
- output_frame.set_label_align(0,0.5);
-
- output_hbox.pack_start (output_vbox, Gtk::PACK_SHRINK, 18);
-
- output_frame.add(output_hbox);
- output_frame.set_label_widget(output_label);
-
- more_options_vbox.pack_start(advanced_table, Gtk::PACK_SHRINK, 0);
- more_options_vbox.pack_start(bus_frame, Gtk::PACK_SHRINK, 6);
- more_options_vbox.pack_start(input_frame, Gtk::PACK_SHRINK, 6);
- more_options_vbox.pack_start(output_frame, Gtk::PACK_SHRINK, 0);
-
- /* signals */
-
- _connect_inputs.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::connect_inputs_clicked));
- _connect_outputs.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::connect_outputs_clicked));
- _limit_input_ports.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::limit_inputs_clicked));
- _limit_output_ports.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::limit_outputs_clicked));
- _create_master_bus.signal_clicked().connect (sigc::mem_fun (*this, &ArdourStartup::master_bus_button_clicked));
-
- /* note that more_options_vbox is NOT visible by
- * default. this is entirely by design - this page
- * should be skipped unless explicitly requested.
- */
-
- session_options_page_index = append_page (more_options_vbox);
- set_page_title (more_options_vbox, _("Advanced Session Options"));
- set_page_complete (more_options_vbox, true);
-}
-
-bool
-ArdourStartup::create_master_bus() const
-{
- return _create_master_bus.get_active();
-}
-
-int
-ArdourStartup::master_channel_count() const
-{
- return _master_bus_channel_count.get_value_as_int();
-}
-
-bool
-ArdourStartup::connect_inputs() const
-{
- return _connect_inputs.get_active();
-}
-
-bool
-ArdourStartup::limit_inputs_used_for_connection() const
-{
- return _limit_input_ports.get_active();
-}
-
-int
-ArdourStartup::input_limit_count() const
-{
- return _input_limit_count.get_value_as_int();
-}
-
-bool
-ArdourStartup::connect_outputs() const
-{
- return _connect_outputs.get_active();
-}
-
-bool
-ArdourStartup::limit_outputs_used_for_connection() const
-{
- return _limit_output_ports.get_active();
-}
-
-int
-ArdourStartup::output_limit_count() const
-{
- return _output_limit_count.get_value_as_int();
-}
-
-bool
-ArdourStartup::connect_outs_to_master() const
-{
- return _connect_outputs_to_master.get_active();
-}
-
-bool
-ArdourStartup::connect_outs_to_physical() const
-{
- return _connect_outputs_to_physical.get_active();
-}
-
-void
-ArdourStartup::connect_inputs_clicked ()
-{
- _limit_input_ports.set_sensitive(_connect_inputs.get_active());
-
- if (_connect_inputs.get_active() && _limit_input_ports.get_active()) {
- _input_limit_count.set_sensitive(true);
- } else {
- _input_limit_count.set_sensitive(false);
- }
-}
-
-void
-ArdourStartup::connect_outputs_clicked ()
-{
- _limit_output_ports.set_sensitive(_connect_outputs.get_active());