#include <gtkmm/stock.h>
#include <gtkmm/scale.h>
#include <gtkmm2ext/utils.h>
+#include <gtkmm2ext/slider_controller.h>
#include "pbd/fpu.h"
#include "midi++/manager.h"
#include "midi++/factory.h"
+#include "ardour/dB.h"
#include "ardour/rc_configuration.h"
#include "ardour/control_protocol_manager.h"
#include "control_protocol/control_protocol.h"
private:
- void model_changed (TreeModel::Path const & p, TreeModel::iterator const & i)
+ void model_changed (TreeModel::Path const &, TreeModel::iterator const & i)
{
TreeModel::Row r = *i;
_box->pack_start (*t, false, false);
}
- void parameter_changed (string const & p)
+ void parameter_changed (string const &)
{
/* XXX: these aren't really config options... */
}
_dpi_adjustment (50, 50, 250, 1, 10),
_dpi_slider (_dpi_adjustment)
{
- _dpi_adjustment.set_value (_rc_config->get_font_scale ());
+ _dpi_adjustment.set_value (_rc_config->get_font_scale () / 1024);
Label* l = manage (new Label (_("Font scaling:")));
l->set_name ("OptionsLabel");
void parameter_changed (string const & p)
{
if (p == "font-scale") {
- _dpi_adjustment.set_value (_rc_config->get_font_scale() / 1024.);
+ _dpi_adjustment.set_value (_rc_config->get_font_scale() / 1024);
}
}
HScale _dpi_slider;
};
+class SoloMuteOptions : public OptionEditorBox
+{
+public:
+ SoloMuteOptions (RCConfiguration* c) :
+ _rc_config (c),
+ // 0.781787 is the value needed for gain to be set to 0.
+ _db_adjustment (0.781787, 0.0, 1.0, 0.01, 0.1)
+
+ {
+ if ((pix = ::get_icon ("fader_belt_h")) == 0) {
+ throw failed_constructor();
+ }
+
+ _db_slider = manage (new HSliderController (pix,
+ &_db_adjustment,
+ false));
+
+
+ parameter_changed ("solo-mute-gain");
+
+ Label* l = manage (new Label (_("Solo mute cut (dB):")));
+ l->set_name ("OptionsLabel");
+
+ HBox* h = manage (new HBox);
+ h->set_spacing (4);
+ h->pack_start (*l, false, false);
+ h->pack_start (*_db_slider, false, false);
+ h->pack_start (_db_display, false, false);
+
+ set_size_request_to_display_given_text (_db_display, "-99.0", 12, 12);
+
+ _box->pack_start (*h, false, false);
+
+ _db_adjustment.signal_value_changed().connect (mem_fun (*this, &SoloMuteOptions::db_changed));
+ }
+
+ void parameter_changed (string const & p)
+ {
+ if (p == "solo-mute-gain") {
+ gain_t val = _rc_config->get_solo_mute_gain();
+
+ _db_adjustment.set_value (gain_to_slider_position (val));
+
+ char buf[16];
+
+ if (val == 0.0) {
+ snprintf (buf, sizeof (buf), "-inf");
+ } else {
+ snprintf (buf, sizeof (buf), "%.2f", coefficient_to_dB (val));
+ }
+
+ _db_display.set_text (buf);
+ }
+ }
+
+ void set_state_from_config ()
+ {
+ parameter_changed ("solo-mute-gain");
+ }
+
+private:
+
+ void db_changed ()
+ {
+ _rc_config->set_solo_mute_gain (slider_position_to_gain (_db_adjustment.get_value()));
+ }
+
+ RCConfiguration* _rc_config;
+ Adjustment _db_adjustment;
+ Gtkmm2ext::HSliderController* _db_slider;
+ Glib::RefPtr<Gdk::Pixbuf> pix;
+ Entry _db_display;
+};
+
class ControlSurfacesOptions : public OptionEditorBox
{
private:
- void model_changed (TreeModel::Path const & p, TreeModel::iterator const & i)
+ void model_changed (TreeModel::Path const &, TreeModel::iterator const & i)
{
TreeModel::Row r = *i;
add_option (_("Audio"), new OptionEditorHeading (_("Solo")));
- ComboOption<SoloModel>* sm = new ComboOption<SoloModel> (
- "solo-model",
- _("Solo"),
- mem_fun (*_rc_config, &RCConfiguration::get_solo_model),
- mem_fun (*_rc_config, &RCConfiguration::set_solo_model)
+
+ add_option (_("Audio"),
+ new BoolOption (
+ "solo-control-is-listen-control",
+ _("Solo controls are Listen controls"),
+ mem_fun (*_rc_config, &RCConfiguration::get_solo_control_is_listen_control),
+ mem_fun (*_rc_config, &RCConfiguration::set_solo_control_is_listen_control)
+ ));
+
+ ComboOption<ListenPosition>* lp = new ComboOption<ListenPosition> (
+ "listen-position",
+ _("Listen Position"),
+ mem_fun (*_rc_config, &RCConfiguration::get_listen_position),
+ mem_fun (*_rc_config, &RCConfiguration::set_listen_position)
);
- sm->add (InverseMute, _("in place"));
- sm->add (SoloBus, _("via bus"));
+ lp->add (AfterFaderListen, _("after-fader listen"));
+ lp->add (PreFaderListen, _("pre-fader listen"));
- add_option (_("Audio"), sm);
+ add_option (_("Audio"), lp);
+ add_option (_("Audio"), new SoloMuteOptions (_rc_config));
add_option (_("Audio"),
new BoolOption (