X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Foption_editor.cc;h=50feba34844a931306b0c56dc9ba6e943628a27f;hb=07ff18db2a0c8454f9d2535cad4efbf940d16aa9;hp=207a262dd9d994da8f7b6653120f1cb16d03d549;hpb=c1e6410619403754ffa4388e82de7ec953ab6a7c;p=ardour.git diff --git a/gtk2_ardour/option_editor.cc b/gtk2_ardour/option_editor.cc index 207a262dd9..50feba3484 100644 --- a/gtk2_ardour/option_editor.cc +++ b/gtk2_ardour/option_editor.cc @@ -20,9 +20,12 @@ #include #include #include "gtkmm2ext/utils.h" + #include "ardour/configuration.h" +#include "ardour/rc_configuration.h" #include "ardour/utils.h" #include "ardour/dB.h" + #include "option_editor.h" #include "gui_thread.h" #include "utils.h" @@ -109,7 +112,7 @@ EntryOption::EntryOption (string const & i, string const & n, sigc::slot _set (s) { _label = manage (new Label (n + ":")); - _label->set_alignment (1, 0.5); + _label->set_alignment (0, 0.5); _entry = manage (new Entry); _entry->signal_activate().connect (sigc::mem_fun (*this, &EntryOption::activated)); } @@ -134,8 +137,7 @@ EntryOption::activated () FaderOption::FaderOption (string const & i, string const & n, sigc::slot g, sigc::slot s) : Option (i, n) - // 0.781787 is the value needed for gain to be set to 0. - , _db_adjustment (0.781787, 0, 1, 0.01, 0.1) + , _db_adjustment (gain_to_slider_position_with_max (1.0, Config->get_max_gain()), 0, 1, 0.01, 0.1) , _get (g) , _set (s) { @@ -156,7 +158,7 @@ FaderOption::FaderOption (string const & i, string const & n, sigc::slot _box.pack_start (*_db_slider, false, false); _box.pack_start (_db_display, false, false); _box.show_all (); - + set_size_request_to_display_given_text (_db_display, "-99.0", 12, 12); _db_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &FaderOption::db_changed)); @@ -166,7 +168,7 @@ void FaderOption::set_state_from_config () { gain_t const val = _get (); - _db_adjustment.set_value (gain_to_slider_position (val)); + _db_adjustment.set_value (gain_to_slider_position_with_max (val, Config->get_max_gain ())); char buf[16]; @@ -175,14 +177,14 @@ FaderOption::set_state_from_config () } else { snprintf (buf, sizeof (buf), "%.2f", accurate_coefficient_to_dB (val)); } - + _db_display.set_text (buf); } void FaderOption::db_changed () { - _set (slider_position_to_gain (_db_adjustment.get_value ())); + _set (slider_position_to_gain_with_max (_db_adjustment.get_value (), Config->get_max_gain())); } void @@ -191,6 +193,35 @@ FaderOption::add_to_page (OptionEditorPage* p) add_widgets_to_page (p, &_label, &_box); } +ClockOption::ClockOption (string const & i, string const & n, sigc::slot g, sigc::slot s) + : Option (i, n) + , _clock (X_("timecode-offset"), false, X_("TimecodeOffsetClock"), true, false, true, false) + , _get (g) + , _set (s) +{ + _label.set_text (n + ":"); + _label.set_alignment (0, 0.5); + _label.set_name (X_("OptionsLabel")); +} + +void +ClockOption::set_state_from_config () +{ + _clock.set (_get ()); +} + +void +ClockOption::add_to_page (OptionEditorPage* p) +{ + add_widgets_to_page (p, &_label, &_clock); +} + +void +ClockOption::set_session (Session* s) +{ + _clock.set_session (s); +} + OptionEditorPage::OptionEditorPage (Gtk::Notebook& n, std::string const & t) : table (1, 3) { @@ -211,7 +242,7 @@ OptionEditor::OptionEditor (Configuration* c, std::string const & t) using namespace Notebook_Helpers; set_default_size (300, 300); - set_wmclass (X_("ardour_preferences"), "Ardour"); + set_wmclass (X_("ardour_preferences"), PROGRAM_NAME); set_name ("Preferences"); add_events (Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK); @@ -273,3 +304,46 @@ OptionEditor::add_option (std::string const & pn, OptionEditorComponent* o) o->add_to_page (p); o->set_state_from_config (); } + +void +OptionEditor::set_current_page (string const & p) +{ + int i = 0; + while (i < _notebook.get_n_pages ()) { + if (_notebook.get_tab_label_text (*_notebook.get_nth_page (i)) == p) { + _notebook.set_current_page (i); + return; + } + + ++i; + } +} + + +DirectoryOption::DirectoryOption (string const & i, string const & n, sigc::slot g, sigc::slot s) + : Option (i, n) + , _get (g) + , _set (s) +{ + _file_chooser.set_action (Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER); + _file_chooser.signal_file_set().connect (sigc::mem_fun (*this, &DirectoryOption::file_set)); +} + + +void +DirectoryOption::set_state_from_config () +{ + _file_chooser.set_filename (_get ()); +} + +void +DirectoryOption::add_to_page (OptionEditorPage* p) +{ + add_widgets_to_page (p, manage (new Label (_name)), &_file_chooser); +} + +void +DirectoryOption::file_set () +{ + _set (_file_chooser.get_filename ()); +}