X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fnormalize_dialog.cc;h=9872bcbc35223fe8fd8526fdd89d5ef76f439b97;hb=3e59452fa0182ace7785c62acef83cb0d213cc86;hp=088c12343308813dbce99ae6481ee72a30389739;hpb=8f448a78cd4263b5b9e55a2c2a8858e8cb6488b4;p=ardour.git diff --git a/gtk2_ardour/normalize_dialog.cc b/gtk2_ardour/normalize_dialog.cc index 088c123433..9872bcbc35 100644 --- a/gtk2_ardour/normalize_dialog.cc +++ b/gtk2_ardour/normalize_dialog.cc @@ -23,17 +23,19 @@ #include #include #include "normalize_dialog.h" +#include "i18n.h" using namespace Gtk; double NormalizeDialog::_last_normalization_value = 0; +bool NormalizeDialog::_last_normalize_individually = true; NormalizeDialog::NormalizeDialog (bool more_than_one) : ArdourDialog (more_than_one ? _("Normalize regions") : _("Normalize region")) , _normalize_individually (0) { get_vbox()->set_spacing (12); - + HBox* hbox = manage (new HBox); hbox->set_spacing (6); hbox->set_border_width (6); @@ -42,6 +44,7 @@ NormalizeDialog::NormalizeDialog (bool more_than_one) _spin->set_range (-112, 0); _spin->set_increments (0.1, 1); _spin->set_value (_last_normalization_value); + _spin->set_activates_default (); hbox->pack_start (*_spin, false, false); hbox->pack_start (*manage (new Label (_("dbFS"))), false, false); get_vbox()->pack_start (*hbox); @@ -55,23 +58,29 @@ NormalizeDialog::NormalizeDialog (bool more_than_one) RadioButton* b = manage (new RadioButton (group, _("Normalize each region using the peak value of all regions"))); vbox->pack_start (*b); - get_vbox()->pack_start (*vbox); + _normalize_individually->set_active (_last_normalize_individually); + b->set_active (!_last_normalize_individually); - _progress_bar = manage (new ProgressBar); - get_vbox()->pack_start (*_progress_bar); + get_vbox()->pack_start (*vbox); } + _progress_bar = manage (new ProgressBar); + get_vbox()->pack_start (*_progress_bar); + show_all (); - + add_button (Stock::CANCEL, RESPONSE_CANCEL); add_button (_("Normalize"), RESPONSE_ACCEPT); + set_default_response (RESPONSE_ACCEPT); + + signal_response().connect (sigc::mem_fun (*this, &NormalizeDialog::button_clicked)); } bool NormalizeDialog::normalize_individually () const { if (_normalize_individually == 0) { - return false; + return true; } return _normalize_individually->get_active (); @@ -84,11 +93,26 @@ NormalizeDialog::target () const } void -NormalizeDialog::set_progress (double p) +NormalizeDialog::update_progress_gui (float p) { _progress_bar->set_fraction (p); +} - while (gtk_events_pending()) { - gtk_main_iteration (); +int +NormalizeDialog::run () +{ + int const r = ArdourDialog::run (); + _last_normalization_value = target (); + if (_normalize_individually) { + _last_normalize_individually = _normalize_individually->get_active (); + } + return r; +} + +void +NormalizeDialog::button_clicked (int r) +{ + if (r == RESPONSE_CANCEL) { + cancel (); } }