- public:
- Gtk::TreeModelColumn<std::string> paths;
-
- SoundFilePathColumns() { add (paths); }
- };
- SoundFilePathColumns sfdb_path_columns;
-
- void setup_path_options();
- void add_session_paths ();
- void remove_session_paths ();
- void native_format_chosen ();
- void raid_path_changed ();
-
- /* fades */
-
- // Gtk::Table fade_table;
-
- Gtk::VBox fade_packer;
- Gtk::CheckButton auto_xfade_button;
- Gtk::CheckButton xfade_active_button;
- Gtk::Label layer_mode_label;
- Gtk::ComboBoxText layer_mode_combo;
- Gtk::Label xfade_model_label;
- Gtk::ComboBoxText xfade_model_combo;
- Gtk::Adjustment short_xfade_adjustment;
- Gtk::HScale short_xfade_slider;
-
- void auto_xfade_clicked ();
- void xfade_active_clicked ();
- void layer_mode_chosen ();
- void xfade_model_chosen ();
- void setup_fade_options();
- void short_xfade_adjustment_changed ();
-
- /* solo */
-
- Gtk::VBox solo_packer;
- Gtk::CheckButton solo_latched_button;
- Gtk::CheckButton solo_via_bus_button;
-
- void solo_latched_clicked();
- void solo_via_bus_clicked ();
-
- void setup_solo_options();
-
- /* display */
-
- Gtk::VBox display_packer;
- Gtk::CheckButton show_waveforms_button;
- Gtk::CheckButton show_waveforms_recording_button;
- Gtk::CheckButton mixer_strip_width_button;
- Gtk::CheckButton show_measures_button;
- Gtk::CheckButton follow_playhead_button;
- Gtk::ComboBoxText meter_hold_combo;
- Gtk::ComboBoxText meter_falloff_combo;
-
- void setup_display_options();
- void show_waveforms_clicked ();
- void show_waveforms_recording_clicked ();
- void show_measures_clicked ();
- void strip_width_clicked ();
- void follow_playhead_clicked ();
- void meter_hold_chosen ();
- void meter_falloff_chosen ();
-
- void display_control_changed (Editing::DisplayControl);
-
- /* Sync */
-
- Gtk::VBox sync_packer;
-
- Gtk::CheckButton send_mtc_button;
- Gtk::CheckButton send_mmc_button;
- Gtk::CheckButton jack_time_master_button;
- Gtk::ComboBoxText slave_type_combo;
- Gtk::ComboBoxText smpte_fps_combo;
- AudioClock smpte_offset_clock;
- Gtk::CheckButton smpte_offset_negative_button;
-
- void setup_sync_options ();
- gint send_mtc_toggled (GdkEventButton*, Gtk::CheckButton*);
-
- void slave_type_chosen ();
- void jack_time_master_clicked ();
- void jack_transport_master_clicked ();
- void smpte_fps_chosen ();
- void smpte_offset_chosen ();
- void smpte_offset_negative_clicked ();
-
- /* MIDI */
-
- Gtk::VBox midi_packer;
- Gtk::CheckButton midi_feedback_button;
- Gtk::CheckButton midi_control_button;
- Gtk::CheckButton mmc_control_button;
-
- Gtk::RadioButton::Group mtc_button_group;
- Gtk::RadioButton::Group mmc_button_group;
- Gtk::RadioButton::Group midi_button_group;
-
- void send_mmc_toggled (Gtk::CheckButton*);
- void mmc_control_toggled (Gtk::CheckButton*);
- void midi_control_toggled (Gtk::CheckButton*);
- void midi_feedback_toggled (Gtk::CheckButton*);
-
- gint port_online_toggled (GdkEventButton*,MIDI::Port*,Gtk::ToggleButton*);
- gint port_trace_in_toggled (GdkEventButton*,MIDI::Port*,Gtk::ToggleButton*);
- gint port_trace_out_toggled (GdkEventButton*,MIDI::Port*,Gtk::ToggleButton*);
-
- gint mmc_port_chosen (GdkEventButton*,MIDI::Port*,Gtk::RadioButton*);
- gint mtc_port_chosen (GdkEventButton*,MIDI::Port*,Gtk::RadioButton*);
- gint midi_port_chosen (GdkEventButton*,MIDI::Port*,Gtk::RadioButton*);
-
- void map_port_online (MIDI::Port*, Gtk::ToggleButton*);
-
- void setup_midi_options();
-
- enum PortIndex {
- MtcIndex = 0,
- MmcIndex = 1,
- MidiIndex = 2
- };
-
- std::map<MIDI::Port*,std::vector<Gtk::RadioButton*> > port_toggle_buttons;
-
- /* Click */
-
- IOSelector* click_io_selector;
- GainMeter* click_gpm;
- PannerUI* click_panner;
- Gtk::VBox click_packer;
- Gtk::Table click_table;
- Gtk::Entry click_path_entry;
- Gtk::Entry click_emphasis_path_entry;
- Gtk::Button click_browse_button;
- Gtk::Button click_emphasis_browse_button;
-
- void setup_click_editor ();
- void clear_click_editor ();
-
- void click_chosen (std::string paths);
- void click_emphasis_chosen (std::string paths);
-
- void click_browse_clicked ();
- void click_emphasis_browse_clicked ();
-
- void click_sound_changed ();
- void click_emphasis_sound_changed ();
-
- /* Auditioner */
-
- Gtk::VBox audition_packer;
- Gtk::HBox audition_hpacker;
- Gtk::Label audition_label;
- IOSelector* auditioner_io_selector;
- GainMeter* auditioner_gpm;
- PannerUI* auditioner_panner;
-
- void setup_auditioner_editor ();
- void clear_auditioner_editor ();
- void connect_audition_editor ();
-
- /* keyboard/mouse */
-
- Gtk::Table keyboard_mouse_table;
- Gtk::ComboBoxText edit_modifier_combo;
- Gtk::ComboBoxText delete_modifier_combo;
- Gtk::ComboBoxText snap_modifier_combo;
- Gtk::Adjustment delete_button_adjustment;
- Gtk::SpinButton delete_button_spin;
- Gtk::Adjustment edit_button_adjustment;
- Gtk::SpinButton edit_button_spin;
-
- void setup_keyboard_options ();
- void delete_modifier_chosen ();
- void edit_modifier_chosen ();
- void snap_modifier_chosen ();
- void edit_button_changed ();
- void delete_button_changed ();
-
- /* Miscellany */
-
- Gtk::VBox misc_packer;
-
- Gtk::CheckButton auto_connect_inputs_button;
-
- Gtk::RadioButton auto_connect_output_physical_button;
- Gtk::RadioButton auto_connect_output_master_button;
- Gtk::RadioButton auto_connect_output_manual_button;
- Gtk::RadioButton::Group auto_connect_output_button_group;
-
- Gtk::CheckButton hw_monitor_button;
- Gtk::CheckButton sw_monitor_button;
- Gtk::CheckButton plugins_stop_button;
- Gtk::CheckButton plugins_on_rec_button;
- Gtk::CheckButton verify_remove_last_capture_button;
- Gtk::CheckButton stop_rec_on_xrun_button;
- Gtk::CheckButton stop_at_end_button;
- Gtk::CheckButton debug_keyboard_button;
- Gtk::CheckButton speed_quieten_button;
-
- void setup_misc_options ();
- void plugins_stop_with_transport_clicked ();
- void verify_remove_last_capture_clicked ();
- void plugins_on_while_recording_clicked ();
- void auto_connect_inputs_clicked ();
- void auto_connect_output_physical_clicked ();
- void auto_connect_output_master_clicked ();
- void auto_connect_output_manual_clicked ();
- void hw_monitor_clicked ();
- void sw_monitor_clicked ();
- void stop_rec_on_xrun_clicked ();
- void stop_at_end_clicked ();
- void debug_keyboard_clicked ();
- void speed_quieten_clicked ();
-
- void fixup_combo_size (Gtk::ComboBoxText&, std::vector<std::string>& strings);
+ _set (static_cast<T> (_spin->get_value ()) * _scale);
+ }
+
+private:
+ sigc::slot<T> _get;
+ sigc::slot<bool, T> _set;
+ float _scale;
+ Gtk::Label* _label;
+ Gtk::HBox* _box;
+ Gtk::SpinButton* _spin;
+};
+
+class FaderOption : public Option
+{
+public:
+
+ FaderOption (std::string const &, std::string const &, sigc::slot<ARDOUR::gain_t> g, sigc::slot<bool, ARDOUR::gain_t> s);
+ void set_state_from_config ();
+ void add_to_page (OptionEditorPage *);
+
+private:
+ void db_changed ();
+
+ Gtk::Adjustment _db_adjustment;
+ Gtkmm2ext::HSliderController* _db_slider;
+ Glib::RefPtr<Gdk::Pixbuf> _pix;
+ Gtk::Entry _db_display;
+ Gtk::Label _label;
+ Gtk::HBox _box;
+ sigc::slot<ARDOUR::gain_t> _get;
+ sigc::slot<bool, ARDOUR::gain_t> _set;
+};
+
+class ClockOption : public Option
+{
+public:
+ ClockOption (std::string const &, std::string const &, sigc::slot<ARDOUR::framecnt_t>, sigc::slot<bool, ARDOUR::framecnt_t>);
+ void set_state_from_config ();
+ void add_to_page (OptionEditorPage *);
+ void set_session (ARDOUR::Session *);
+
+private:
+ Gtk::Label _label;
+ AudioClock _clock;
+ sigc::slot<ARDOUR::framecnt_t> _get;
+ sigc::slot<bool, ARDOUR::framecnt_t> _set;
+};
+
+/** Class to represent a single page in an OptionEditor's notebook.
+ * Pages are laid out using a 3-column table; the 1st column is used
+ * to indent non-headings, and the 2nd and 3rd for actual content.
+ */
+class OptionEditorPage
+{
+public:
+ OptionEditorPage (Gtk::Notebook&, std::string const &);
+
+ Gtk::VBox box;
+ Gtk::Table table;
+ std::list<OptionEditorComponent*> components;
+};
+
+/** The OptionEditor dialog base class */
+class OptionEditor : public ArdourDialog
+{
+public:
+ OptionEditor (ARDOUR::Configuration *, std::string const &);
+ ~OptionEditor ();
+
+ void add_option (std::string const &, OptionEditorComponent *);
+
+ void set_current_page (std::string const &);
+
+protected:
+
+ virtual void parameter_changed (std::string const &);
+
+ ARDOUR::Configuration* _config;
+
+private:
+
+ PBD::ScopedConnection config_connection;
+
+ Gtk::Notebook _notebook;
+ std::map<std::string, OptionEditorPage*> _pages;