diff --git a/gtk2_ardour/tracks_control_panel.cc b/gtk2_ardour/tracks_control_panel.cc index 41112a09a4..80bda14c97 100644 --- a/gtk2_ardour/tracks_control_panel.cc +++ b/gtk2_ardour/tracks_control_panel.cc @@ -94,6 +94,8 @@ TracksControlPanel::TracksControlPanel () , _frame_rate_combo (get_combo_box_text ("frame_rate_combo")) , _browse_button(get_waves_button("browse_default_folder")) , _auto_lock_timer_combo(get_combo_box_text("auto_lock_timer_combo")) + , _auto_save_timer_combo(get_combo_box_text("auto_save_timer_combo")) + , _pre_record_buffer_combo(get_combo_box_text("pre_record_buffer_combo")) , _have_control (false) , _ignore_changes (0) { diff --git a/gtk2_ardour/tracks_control_panel.h b/gtk2_ardour/tracks_control_panel.h index 5d5a64b6cc..9ea87ff8a7 100644 --- a/gtk2_ardour/tracks_control_panel.h +++ b/gtk2_ardour/tracks_control_panel.h @@ -75,6 +75,8 @@ class TracksControlPanel : public WavesDialog, public PBD::ScopedConnectionList Gtk::ComboBoxText& _bit_depth_combo; Gtk::ComboBoxText& _frame_rate_combo; Gtk::ComboBoxText& _auto_lock_timer_combo; + Gtk::ComboBoxText& _auto_save_timer_combo; + Gtk::ComboBoxText& _pre_record_buffer_combo; Gtk::Label& _latency_label; Gtk::Label& _default_open_path; diff --git a/gtk2_ardour/tracks_control_panel.logic.cc b/gtk2_ardour/tracks_control_panel.logic.cc index b357aee08a..bb0ba39a86 100644 --- a/gtk2_ardour/tracks_control_panel.logic.cc +++ b/gtk2_ardour/tracks_control_panel.logic.cc @@ -153,6 +153,8 @@ TracksControlPanel::init () populate_bit_depth_combo(); populate_frame_rate_combo(); populate_auto_lock_timer_combo(); + populate_save_lock_timer_combo(); + populate_pre_record_buffer_combo(); _audio_settings_tab_button.set_active(true); } @@ -585,6 +587,49 @@ TracksControlPanel::populate_auto_lock_timer_combo() _auto_lock_timer_combo.set_active_text( str_time ); } +void +TracksControlPanel::populate_save_lock_timer_combo() +{ + using namespace std; + + vector save_time_strings; + save_time_strings.push_back("0 Min"); + save_time_strings.push_back("1 Min"); + save_time_strings.push_back("3 Min"); + save_time_strings.push_back("5 Min"); + save_time_strings.push_back("10 Min"); + save_time_strings.push_back("15 Min"); + + int time = ARDOUR_UI::config()->get_auto_save_timer(); + stringstream ss; + ss << time; + string str_time = ss.str() + " Min"; + + set_popdown_strings (_auto_save_timer_combo, save_time_strings); + _auto_save_timer_combo.set_sensitive (save_time_strings.size() > 1); + _auto_save_timer_combo.set_active_text( str_time ); +} + +void +TracksControlPanel::populate_pre_record_buffer_combo() +{ + using namespace std; + + vector pre_record_buffer_strings; + pre_record_buffer_strings.push_back("0 Min"); + pre_record_buffer_strings.push_back("1 Min"); + pre_record_buffer_strings.push_back("2 Min"); + + int time = ARDOUR_UI::config()->get_pre_record_buffer(); + stringstream ss; + ss << time; + string str_time = ss.str() + " Min"; + + set_popdown_strings (_pre_record_buffer_combo, pre_record_buffer_strings); + _pre_record_buffer_combo.set_sensitive (pre_record_buffer_strings.size() > 1); + _pre_record_buffer_combo.set_active_text( str_time ); +} + void TracksControlPanel::refresh_session_settings_info() { @@ -1270,15 +1315,28 @@ TracksControlPanel::save_default_session_path() void TracksControlPanel::save_auto_lock_time() { - using namespace std; - string s = _auto_lock_timer_combo.get_active_text(); - char * pEnd; int time = strtol( s.c_str(), &pEnd, 10 ); - ARDOUR_UI::config()->set_auto_lock_timer(time); - ARDOUR_UI::config()->save_state(); +} + +void +TracksControlPanel::save_auto_save_time() +{ + string s = _auto_save_timer_combo.get_active_text(); + char * pEnd; + int time = strtol( s.c_str(), &pEnd, 10 ); + ARDOUR_UI::config()->set_auto_save_timer(time); +} + +void +TracksControlPanel::save_pre_record_buffer() +{ + string s = _pre_record_buffer_combo.get_active_text(); + char * pEnd; + int time = strtol( s.c_str(), &pEnd, 10 ); + ARDOUR_UI::config()->set_pre_record_buffer(time); } void TracksControlPanel::update_session_config () @@ -1307,6 +1365,10 @@ TracksControlPanel::update_configs() // update global config save_default_session_path(); save_auto_lock_time(); + save_auto_save_time(); + save_pre_record_buffer(); + // save ARDOUR_UI::config to disk persistently + ARDOUR_UI::config()->save_state(); } void @@ -1324,7 +1386,33 @@ void TracksControlPanel::on_cancel (WavesButton*) { hide(); - response(Gtk::RESPONSE_CANCEL); + response(Gtk::RESPONSE_CANCEL); + + // restore previous value in combo-boxes + stringstream ss; + int temp; + string str; + temp = ARDOUR_UI::config()->get_auto_lock_timer(); + ss.str(string("")); + ss.clear(); + ss << temp; + str = ss.str() + " Min"; + _auto_lock_timer_combo.set_active_text(str); + + temp = ARDOUR_UI::config()->get_auto_save_timer(); + ss.str(string("")); + ss.clear(); + ss << temp; + str = ss.str() + " Min"; + _auto_save_timer_combo.set_active_text(str); + + temp = ARDOUR_UI::config()->get_pre_record_buffer(); + ss.str(string("")); + ss.clear(); + ss << temp; + str = ss.str() + " Min"; + _pre_record_buffer_combo.set_active_text(str); + _default_open_path.set_text(Config->get_default_session_parent_dir()); } diff --git a/gtk2_ardour/tracks_control_panel.logic.h b/gtk2_ardour/tracks_control_panel.logic.h index 82d1018eaf..cb9dd62ab9 100644 --- a/gtk2_ardour/tracks_control_panel.logic.h +++ b/gtk2_ardour/tracks_control_panel.logic.h @@ -56,6 +56,8 @@ void on_browse_button (WavesButton*); void save_default_session_path(); void save_auto_lock_time(); + void save_auto_save_time(); + void save_pre_record_buffer(); void on_ok(WavesButton*); void on_cancel(WavesButton*); void on_apply(WavesButton*); @@ -101,6 +103,8 @@ void populate_bit_depth_combo(); void populate_frame_rate_combo(); void populate_auto_lock_timer_combo(); + void populate_save_lock_timer_combo(); + void populate_pre_record_buffer_combo(); // Engine State update callback handlers void on_port_registration_update(); diff --git a/gtk2_ardour/ui/tracks_preferences.xml b/gtk2_ardour/ui/tracks_preferences.xml index 675242cabb..5c14db274c 100644 --- a/gtk2_ardour/ui/tracks_preferences.xml +++ b/gtk2_ardour/ui/tracks_preferences.xml @@ -240,14 +240,18 @@