audioengine branch can now load and run at least one test session.
[ardour.git] / gtk2_ardour / session_option_editor.cc
index dd95b7f057bbc65a242f8599065839c809d9150c..1815db10567e21f60c288ae81011e5fe0f59c1e1 100644 (file)
@@ -60,18 +60,6 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
 
        add_option (_("Timecode"), smf);
 
-       ComboOption<uint32_t>* spf = new ComboOption<uint32_t> (
-               "subframes-per-frame",
-               _("Subframes per frame"),
-               sigc::mem_fun (*_session_config, &SessionConfiguration::get_subframes_per_frame),
-               sigc::mem_fun (*_session_config, &SessionConfiguration::set_subframes_per_frame)
-               );
-
-       spf->add (80, _("80"));
-       spf->add (100, _("100"));
-
-       add_option (_("Timecode"), spf);
-
        _vpu = new ComboOption<float> (
                "video-pullup",
                _("Pull-up / pull-down"),
@@ -91,24 +79,47 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
 
        add_option (_("Timecode"), _vpu);
 
-       ClockOption* co = new ClockOption (
-               "timecode-offset",
-               _("Timecode offset"),
-               sigc::mem_fun (*_session_config, &SessionConfiguration::get_timecode_offset),
-               sigc::mem_fun (*_session_config, &SessionConfiguration::set_timecode_offset)
+       add_option (_("Sync"), new BoolOption (
+                           "use-video-file-fps",
+                           _("Use Video File's FPS Instead of Timecode Value for Timeline and Video Monitor."),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::get_use_video_file_fps),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::set_use_video_file_fps)
+                           ));
+
+       add_option (_("Sync"), new BoolOption (
+                           "videotimeline-pullup",
+                           _("Apply Pull-Up/Down to Video Timeline and Video Monitor (Unless in JACK-sync)."),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::get_videotimeline_pullup),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::set_videotimeline_pullup)
+                           ));
+
+       add_option (_("Timecode"), new OptionEditorHeading (_("Ext Timecode Offsets")));
+
+       ClockOption* sco = new ClockOption (
+               "slave-timecode-offset",
+               _("Slave Timecode offset"),
+               sigc::mem_fun (*_session_config, &SessionConfiguration::get_slave_timecode_offset),
+               sigc::mem_fun (*_session_config, &SessionConfiguration::set_slave_timecode_offset)
                );
 
-       co->set_session (_session);
-       co->clock().set_negative_allowed (true);
+       sco->set_session (_session);
+       sco->clock().set_negative_allowed (true);
+       Gtkmm2ext::UI::instance()->set_tip (sco->tip_widget(), _("The specified offset is added to the received timecode (MTC or LTC)."));
 
-       add_option (_("Timecode"), co);
+       add_option (_("Timecode"), sco);
 
-       add_option (_("Timecode"), new BoolOption (
-                           "timecode-offset-negative",
-                           _("Timecode Offset Negative"),
-                           sigc::mem_fun (*_session_config, &SessionConfiguration::get_timecode_offset_negative),
-                           sigc::mem_fun (*_session_config, &SessionConfiguration::set_timecode_offset_negative)
-                           ));
+       ClockOption* gco = new ClockOption (
+               "timecode-generator-offset",
+               _("Timecode Generator offset"),
+               sigc::mem_fun (*_session_config, &SessionConfiguration::get_timecode_generator_offset),
+               sigc::mem_fun (*_session_config, &SessionConfiguration::set_timecode_generator_offset)
+               );
+
+       gco->set_session (_session);
+       gco->clock().set_negative_allowed (true);
+       Gtkmm2ext::UI::instance()->set_tip (gco->tip_widget(), _("Specify an offset which is added to the generated timecode (so far only LTC)."));
+
+       add_option (_("Timecode"), gco);
 
        add_option (_("Timecode"), new OptionEditorHeading (_("JACK Transport/Time Settings")));
 
@@ -121,40 +132,18 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
 
        /* FADES */
 
-       ComboOption<CrossfadeModel>* cfm = new ComboOption<CrossfadeModel> (
-               "xfade-model",
-               _("Crossfades are created"),
-               sigc::mem_fun (*_session_config, &SessionConfiguration::get_xfade_model),
-               sigc::mem_fun (*_session_config, &SessionConfiguration::set_xfade_model)
-               );
-
-       cfm->add (FullCrossfade, _("to span entire overlap"));
-       cfm->add (ShortCrossfade, _("short"));
-
-       add_option (_("Fades"), cfm);
-
        ComboOption<CrossfadeChoice>* cfc = new ComboOption<CrossfadeChoice> (
                "xfade-choice",
-               _("Crossfade type"),
+               _("Default crossfade type"),
                sigc::mem_fun (*_session_config, &SessionConfiguration::get_xfade_choice),
                sigc::mem_fun (*_session_config, &SessionConfiguration::set_xfade_choice)
                );
 
-       cfc->add (ConstantPowerMinus3dB, _("constant power (-3dB)"));
-       cfc->add (ConstantPowerMinus6dB, _("constant power (-6dB)"));
-       cfc->add (RegionFades, _("use existing region fade shape"));
+       cfc->add (ConstantPowerMinus3dB, _("Constant power (-3dB) crossfade"));
+       cfc->add (ConstantPowerMinus6dB, _("Linear (-6dB) crossfade"));
 
        add_option (_("Fades"), cfc);
 
-       add_option (_("Fades"), new SpinOption<float> (
-               _("short-xfade-seconds"),
-               _("Short crossfade length"),
-               sigc::mem_fun (*_session_config, &SessionConfiguration::get_short_xfade_seconds),
-               sigc::mem_fun (*_session_config, &SessionConfiguration::set_short_xfade_seconds),
-               0, 1000, 1, 10,
-               _("ms"), 0.001
-                           ));
-
        add_option (_("Fades"), new SpinOption<float> (
                _("destructive-xfade-seconds"),
                _("Destructive crossfade length"),
@@ -164,13 +153,6 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
                _("ms")
                            ));
 
-       add_option (_("Fades"), new BoolOption (
-                           "auto-xfade",
-                           _("Create crossfades automatically"),
-                           sigc::mem_fun (*_session_config, &SessionConfiguration::get_auto_xfade),
-                           sigc::mem_fun (*_session_config, &SessionConfiguration::set_auto_xfade)
-                           ));
-
        add_option (_("Fades"), new BoolOption (
                            "use-region-fades",
                            _("Region fades active"),
@@ -219,11 +201,13 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
        add_option (_("Media"), new OptionEditorHeading (_("File locations")));
 
         SearchPathOption* spo = new SearchPathOption ("audio-search-path", _("Search for audio files in:"),
+                                                     _session->path(),
                                                       sigc::mem_fun (*_session_config, &SessionConfiguration::get_audio_search_path),
                                                       sigc::mem_fun (*_session_config, &SessionConfiguration::set_audio_search_path));
         add_option (_("Media"), spo);
 
         spo = new SearchPathOption ("midi-search-path", _("Search for MIDI files in:"),
+                                   _session->path(),
                                     sigc::mem_fun (*_session_config, &SessionConfiguration::get_midi_search_path),
                                     sigc::mem_fun (*_session_config, &SessionConfiguration::set_midi_search_path));
 
@@ -233,7 +217,7 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
 
         add_option (_("Monitoring"), new BoolOption (
                            "auto-input",
-                           _("Monitoring automatically follows transport state (\"auto-input\")"),
+                           _("Track Input Monitoring automatically follows transport state (\"auto-input\")"),
                            sigc::mem_fun (*_session_config, &SessionConfiguration::get_auto_input),
                            sigc::mem_fun (*_session_config, &SessionConfiguration::set_auto_input)
                            ));
@@ -287,6 +271,62 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
                            sigc::mem_fun (*_session_config, &SessionConfiguration::get_glue_new_regions_to_bars_and_beats),
                            sigc::mem_fun (*_session_config, &SessionConfiguration::set_glue_new_regions_to_bars_and_beats)
                            ));
+
+       add_option (_("Meterbridge"), new OptionEditorHeading (_("Route Display")));
+
+       add_option (_("Meterbridge"), new BoolOption (
+                           "show-midi-on-meterbridge",
+                           _("Show Midi Tracks"),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::get_show_midi_on_meterbridge),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_midi_on_meterbridge)
+                           ));
+
+       add_option (_("Meterbridge"), new BoolOption (
+                           "show-busses-on-meterbridge",
+                           _("Show Busses"),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::get_show_busses_on_meterbridge),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_busses_on_meterbridge)
+                           ));
+
+       add_option (_("Meterbridge"), new BoolOption (
+                           "show-master-on-meterbridge",
+                           _("Include Master Bus"),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::get_show_master_on_meterbridge),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_master_on_meterbridge)
+                           ));
+
+       add_option (_("Meterbridge"), new OptionEditorHeading (_("Button Area")));
+
+       add_option (_("Meterbridge"), new BoolOption (
+                           "show-rec-on-meterbridge",
+                           _("Rec-enable Button"),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::get_show_rec_on_meterbridge),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_rec_on_meterbridge)
+                           ));
+
+       add_option (_("Meterbridge"), new BoolOption (
+                           "show-mute-on-meterbridge",
+                           _("Mute Button"),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::get_show_mute_on_meterbridge),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_mute_on_meterbridge)
+                           ));
+
+       add_option (_("Meterbridge"), new BoolOption (
+                           "show-solo-on-meterbridge",
+                           _("Solo Button"),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::get_show_solo_on_meterbridge),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_solo_on_meterbridge)
+                           ));
+
+       add_option (_("Meterbridge"), new OptionEditorHeading (_("Name Labels")));
+
+       add_option (_("Meterbridge"), new BoolOption (
+                           "show-name-on-meterbridge",
+                           _("Track Name"),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::get_show_name_on_meterbridge),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_name_on_meterbridge)
+                           ));
+
 }
 
 void
@@ -300,7 +340,11 @@ SessionOptionEditor::parameter_changed (std::string const & p)
                        _vpu->set_sensitive(true);
                }
        }
-
+       if (p == "timecode-format") {
+               /* update offset clocks */
+               parameter_changed("timecode-generator-offset");
+               parameter_changed("slave-timecode-offset");
+       }
 }
 
 /* the presence of absence of a monitor section is not really a regular session
@@ -318,6 +362,10 @@ SessionOptionEditor::set_use_monitor_section (bool yn)
                _session->remove_monitor_section ();
        }
 
+       /* store this choice for any new sessions */
+       
+       Config->set_use_monitor_bus (yn);
+
        return had_monitor_section != yn;
 }