-Editor::TimeFXDialog::TimeFXDialog (Editor& e, bool pitch)
- : ArdourDialog (X_("time fx dialog")),
- editor (e),
- pitching (pitch),
- pitch_octave_adjustment (0.0, -4.0, 4.0, 1, 2.0),
- pitch_semitone_adjustment (0.0, -12.0, 12.0, 1.0, 4.0),
- pitch_cent_adjustment (0.0, -499.0, 500.0, 5.0, 15.0),
- pitch_octave_spinner (pitch_octave_adjustment),
- pitch_semitone_spinner (pitch_semitone_adjustment),
- pitch_cent_spinner (pitch_cent_adjustment),
- quick_button (_("Quick but Ugly")),
- antialias_button (_("Skip Anti-aliasing")),
- stretch_opts_label (_("Contents:")),
- precise_button (_("Strict Linear"))
-{
- set_modal (true);
- set_position (Gtk::WIN_POS_MOUSE);
- set_name (N_("TimeFXDialog"));
-
- WindowTitle title(Glib::get_application_name());
- if (pitching) {
- title += _("Pitch Shift");
- } else {
- title += _("Time Stretch");
- }
- set_title(title.get_string());
-
- cancel_button = add_button (_("Cancel"), Gtk::RESPONSE_CANCEL);
-
- get_vbox()->set_spacing (5);
- get_vbox()->set_border_width (12);
-
- if (pitching) {
-
- upper_button_box.set_spacing (5);
- upper_button_box.set_border_width (5);
-
- Gtk::Label* l;
-
- l = manage (new Label (_("Octaves")));
- upper_button_box.pack_start (*l, false, false);
- upper_button_box.pack_start (pitch_octave_spinner, false, false);
-
- l = manage (new Label (_("Semitones (12TET)")));
- upper_button_box.pack_start (*l, false, false);
- upper_button_box.pack_start (pitch_semitone_spinner, false, false);
-
- l = manage (new Label (_("Cents")));
- upper_button_box.pack_start (*l, false, false);
- upper_button_box.pack_start (pitch_cent_spinner, false, false);
-
- pitch_cent_spinner.set_digits (1);
-
- add_button (_("Shift"), Gtk::RESPONSE_ACCEPT);
-
- get_vbox()->pack_start (upper_button_box, false, false);
-
- } else {
-
-#ifdef USE_RUBBERBAND
- opts_box.set_spacing (5);
- opts_box.set_border_width (5);
- vector<string> strings;
-
- set_popdown_strings (stretch_opts_selector, editor.rb_opt_strings);
- /* set default */
- stretch_opts_selector.set_active_text (editor.rb_opt_strings[4]);
-
- opts_box.pack_start (precise_button, false, false);
- opts_box.pack_start (stretch_opts_label, false, false);
- opts_box.pack_start (stretch_opts_selector, false, false);
-
- get_vbox()->pack_start (opts_box, false, false);
-
-#else
- upper_button_box.set_homogeneous (true);
- upper_button_box.set_spacing (5);
- upper_button_box.set_border_width (5);
-
- upper_button_box.pack_start (quick_button, true, true);
- upper_button_box.pack_start (antialias_button, true, true);
-
- quick_button.set_name (N_("TimeFXButton"));
- antialias_button.set_name (N_("TimeFXButton"));
-
- get_vbox()->pack_start (upper_button_box, false, false);
-
-#endif
- add_button (_("Stretch/Shrink"), Gtk::RESPONSE_ACCEPT);
- }
-
- get_vbox()->pack_start (progress_bar);
-
- progress_bar.set_name (N_("TimeFXProgress"));
-
- show_all_children ();
-}
-
-gint
-Editor::TimeFXDialog::update_progress ()
-{
- progress_bar.set_fraction (request.progress);
- return !request.done;
-}
-
-void
-Editor::TimeFXDialog::cancel_in_progress ()
-{
- status = -2;
- request.cancel = true;
- first_cancel.disconnect();
-}
-
-gint
-Editor::TimeFXDialog::delete_in_progress (GdkEventAny* ev)
-{
- status = -2;
- request.cancel = true;
- first_delete.disconnect();
- return TRUE;
-}
-