plugin widgets were written to use Internal values, so use that for now

This commit is contained in:
Ben Loftis 2014-09-18 17:25:11 -05:00
parent 41f13c0109
commit ceff2e3a62
5 changed files with 13 additions and 99 deletions

View file

@ -40,7 +40,6 @@ using namespace Gtkmm2ext;
BarController::BarController (Gtk::Adjustment& adj,
boost::shared_ptr<PBD::Controllable> mc)
: _slider (&adj, 60, 16)
, _logarithmic (false)
, _switching (false)
, _switch_on_release (false)
{
@ -59,8 +58,6 @@ BarController::BarController (Gtk::Adjustment& adj,
Gtk::SpinButton& spinner = _slider.get_spin_button();
spinner.signal_activate().connect (mem_fun (*this, &BarController::entry_activated));
spinner.signal_focus_out_event().connect (mem_fun (*this, &BarController::entry_focus_out));
spinner.signal_input().connect (mem_fun (*this, &BarController::entry_input));
spinner.signal_output().connect (mem_fun (*this, &BarController::entry_output));
spinner.set_digits (9);
spinner.set_numeric (true);
spinner.set_name ("BarControlSpinner");
@ -170,81 +167,3 @@ BarController::set_sensitive (bool yn)
Alignment::set_sensitive (yn);
_slider.set_sensitive (yn);
}
/*
This is called when we need to update the adjustment with the value
from the spinner's text entry.
We need to use Gtk::Entry::get_text to avoid recursive nastiness :)
If we're not in logarithmic mode we can return false to use the
default conversion.
In theory we should check for conversion errors but set numeric
mode to true on the spinner prevents invalid input.
*/
int
BarController::entry_input (double* new_value)
{
if (!_logarithmic) {
return false;
}
// extract a double from the string and take its log
Gtk::SpinButton& spinner = _slider.get_spin_button();
Entry *entry = dynamic_cast<Entry *>(&spinner);
double value;
{
// Switch to user's preferred locale so that
// if they use different LC_NUMERIC conventions,
// we will honor them.
PBD::LocaleGuard lg ("");
sscanf (entry->get_text().c_str(), "%lf", &value);
}
*new_value = log(value);
return true;
}
/*
This is called when we need to update the spinner's text entry
with the value of the adjustment.
We need to use Gtk::Entry::set_text to avoid recursive nastiness :)
If we're not in logarithmic mode we can return false to use the
default conversion.
*/
bool
BarController::entry_output ()
{
if (!_logarithmic) {
return false;
}
char buf[128];
Gtk::SpinButton& spinner = _slider.get_spin_button();
// generate the exponential and turn it into a string
// convert to correct locale.
stringstream stream;
string str;
{
// Switch to user's preferred locale so that
// if they use different LC_NUMERIC conventions,
// we will honor them.
PBD::LocaleGuard lg ("");
snprintf (buf, sizeof (buf), "%g", exp (spinner.get_adjustment()->get_value()));
}
Entry *entry = dynamic_cast<Entry *>(&spinner);
entry->set_text(buf);
return true;
}