mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-16 11:46:25 +01:00
Split TimeFXDialog from Editor.
git-svn-id: svn://localhost/ardour2/branches/3.0@4698 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
9f77cd9e19
commit
eeae6aec34
7 changed files with 341 additions and 241 deletions
|
|
@ -248,6 +248,7 @@ tempo_lines.cc
|
|||
theme_manager.cc
|
||||
time_axis_view.cc
|
||||
time_axis_view_item.cc
|
||||
time_fx_dialog.cc
|
||||
time_selection.cc
|
||||
ui_config.cc
|
||||
utils.cc
|
||||
|
|
|
|||
|
|
@ -88,30 +88,31 @@ namespace LADSPA {
|
|||
class Plugin;
|
||||
}
|
||||
|
||||
class TimeAxisView;
|
||||
class AudioTimeAxisView;
|
||||
class AutomationTimeAxisView;
|
||||
class AnalysisWindow;
|
||||
class AudioRegionView;
|
||||
class CrossfadeView;
|
||||
class PluginSelector;
|
||||
class PlaylistSelector;
|
||||
class Marker;
|
||||
class GroupedButtons;
|
||||
class AudioStreamView;
|
||||
class AudioTimeAxisView;
|
||||
class AutomationLine;
|
||||
class AutomationSelection;
|
||||
class AutomationTimeAxisView;
|
||||
class BundleManager;
|
||||
class ControlPoint;
|
||||
class CrossfadeView;
|
||||
class GlobalPortMatrixWindow;
|
||||
class GroupedButtons;
|
||||
class Marker;
|
||||
class MixerStrip;
|
||||
class PlaylistSelector;
|
||||
class PluginSelector;
|
||||
class RhythmFerret;
|
||||
class Selection;
|
||||
class SoundFileOmega;
|
||||
class StreamView;
|
||||
class TempoLines;
|
||||
class TimeAxisView;
|
||||
class TimeFXDialog;
|
||||
class TimeSelection;
|
||||
class TrackSelection;
|
||||
class AutomationSelection;
|
||||
class MixerStrip;
|
||||
class StreamView;
|
||||
class AudioStreamView;
|
||||
class ControlPoint;
|
||||
class SoundFileOmega;
|
||||
class RhythmFerret;
|
||||
class AnalysisWindow;
|
||||
class BundleManager;
|
||||
class GlobalPortMatrixWindow;
|
||||
|
||||
/* <CMT Additions> */
|
||||
class ImageFrameView;
|
||||
|
|
@ -133,7 +134,7 @@ class Editor : public PublicEditor
|
|||
void connect_to_session (ARDOUR::Session *);
|
||||
ARDOUR::Session* current_session() const { return session; }
|
||||
void first_idle ();
|
||||
virtual bool have_idled() const { return _have_idled; }
|
||||
virtual bool have_idled () const { return _have_idled; }
|
||||
|
||||
nframes64_t leftmost_position() const { return leftmost_frame; }
|
||||
nframes64_t current_page_frames() const {
|
||||
|
|
@ -264,6 +265,7 @@ class Editor : public PublicEditor
|
|||
bool show_measures () const { return _show_measures; }
|
||||
|
||||
/* analysis window */
|
||||
|
||||
void analyze_region_selection();
|
||||
void analyze_range_selection();
|
||||
|
||||
|
|
@ -277,9 +279,9 @@ class Editor : public PublicEditor
|
|||
void add_toplevel_controls (Gtk::Container&);
|
||||
Gtk::HBox& get_status_bar_packer() { return status_bar_hpacker; }
|
||||
|
||||
void set_zoom_focus (Editing::ZoomFocus);
|
||||
void set_zoom_focus (Editing::ZoomFocus);
|
||||
Editing::ZoomFocus get_zoom_focus () const { return zoom_focus; }
|
||||
double get_current_zoom () const { return frames_per_unit; }
|
||||
double get_current_zoom () const { return frames_per_unit; }
|
||||
|
||||
void temporal_zoom_step (bool coarser);
|
||||
|
||||
|
|
@ -337,8 +339,8 @@ class Editor : public PublicEditor
|
|||
void video_pullup_chosen (ARDOUR::Session::PullupFormat pullup);
|
||||
void subframes_per_frame_chosen (uint32_t);
|
||||
|
||||
void update_smpte_mode();
|
||||
void update_video_pullup();
|
||||
void update_smpte_mode ();
|
||||
void update_video_pullup ();
|
||||
void update_subframes_per_frame ();
|
||||
|
||||
/* fades/xfades */
|
||||
|
|
@ -628,10 +630,10 @@ class Editor : public PublicEditor
|
|||
|
||||
bool verbose_cursor_on; // so far unused
|
||||
|
||||
Gtk::EventBox time_canvas_event_box;
|
||||
Gtk::EventBox track_canvas_event_box;
|
||||
Gtk::EventBox time_button_event_box;
|
||||
Gtk::EventBox ruler_label_event_box;
|
||||
Gtk::EventBox time_canvas_event_box;
|
||||
Gtk::EventBox track_canvas_event_box;
|
||||
Gtk::EventBox time_button_event_box;
|
||||
Gtk::EventBox ruler_label_event_box;
|
||||
|
||||
ArdourCanvas::Group *minsec_group;
|
||||
ArdourCanvas::Pixbuf *logo_item;
|
||||
|
|
@ -696,14 +698,14 @@ class Editor : public PublicEditor
|
|||
Glib::RefPtr<Gtk::ToggleAction> ruler_range_action;
|
||||
Glib::RefPtr<Gtk::ToggleAction> ruler_loop_punch_action;
|
||||
Glib::RefPtr<Gtk::ToggleAction> ruler_cd_marker_action;
|
||||
bool no_ruler_shown_update;
|
||||
bool no_ruler_shown_update;
|
||||
|
||||
gint ruler_button_press (GdkEventButton*);
|
||||
gint ruler_button_release (GdkEventButton*);
|
||||
gint ruler_mouse_motion (GdkEventMotion*);
|
||||
bool ruler_scroll (GdkEventScroll* event);
|
||||
|
||||
gint ruler_pressed_button;
|
||||
gint ruler_pressed_button;
|
||||
Gtk::Widget * ruler_grabbed_widget;
|
||||
|
||||
void initialize_rulers ();
|
||||
|
|
@ -814,7 +816,6 @@ class Editor : public PublicEditor
|
|||
Gtk::Label transport_mark_label;
|
||||
Gtk::Label cd_mark_label;
|
||||
|
||||
|
||||
Gtk::VBox time_button_vbox;
|
||||
Gtk::HBox time_button_hbox;
|
||||
|
||||
|
|
@ -833,11 +834,9 @@ class Editor : public PublicEditor
|
|||
void set_y_axis (double position);
|
||||
};
|
||||
|
||||
friend struct Cursor; /* it needs access to several private
|
||||
fields. XXX fix me.
|
||||
*/
|
||||
friend struct Cursor; /* FIXME: needs access to several private fields */
|
||||
|
||||
Cursor* playhead_cursor;
|
||||
Cursor* playhead_cursor;
|
||||
ArdourCanvas::Group* cursor_group;
|
||||
|
||||
void cursor_to_region_boundary (Cursor*, int32_t dir);
|
||||
|
|
@ -2016,48 +2015,54 @@ public:
|
|||
|
||||
/* Drag-n-Drop */
|
||||
|
||||
int convert_drop_to_paths (std::vector<Glib::ustring>& paths,
|
||||
const Glib::RefPtr<Gdk::DragContext>& context,
|
||||
gint x,
|
||||
gint y,
|
||||
const Gtk::SelectionData& data,
|
||||
guint info,
|
||||
guint time);
|
||||
int convert_drop_to_paths (
|
||||
std::vector<Glib::ustring>& paths,
|
||||
const Glib::RefPtr<Gdk::DragContext>& context,
|
||||
gint x,
|
||||
gint y,
|
||||
const Gtk::SelectionData& data,
|
||||
guint info,
|
||||
guint time);
|
||||
|
||||
void track_canvas_drag_data_received (const Glib::RefPtr<Gdk::DragContext>& context,
|
||||
gint x,
|
||||
gint y,
|
||||
const Gtk::SelectionData& data,
|
||||
guint info,
|
||||
guint time);
|
||||
void track_canvas_drag_data_received (
|
||||
const Glib::RefPtr<Gdk::DragContext>& context,
|
||||
gint x,
|
||||
gint y,
|
||||
const Gtk::SelectionData& data,
|
||||
guint info,
|
||||
guint time);
|
||||
|
||||
void region_list_display_drag_data_received (const Glib::RefPtr<Gdk::DragContext>& context,
|
||||
gint x,
|
||||
gint y,
|
||||
const Gtk::SelectionData& data,
|
||||
guint info,
|
||||
guint time);
|
||||
void region_list_display_drag_data_received (
|
||||
const Glib::RefPtr<Gdk::DragContext>& context,
|
||||
gint x,
|
||||
gint y,
|
||||
const Gtk::SelectionData& data,
|
||||
guint info,
|
||||
guint time);
|
||||
|
||||
void drop_paths (const Glib::RefPtr<Gdk::DragContext>& context,
|
||||
gint x,
|
||||
gint y,
|
||||
const Gtk::SelectionData& data,
|
||||
guint info,
|
||||
guint time);
|
||||
void drop_paths (
|
||||
const Glib::RefPtr<Gdk::DragContext>& context,
|
||||
gint x,
|
||||
gint y,
|
||||
const Gtk::SelectionData& data,
|
||||
guint info,
|
||||
guint time);
|
||||
|
||||
void drop_regions (const Glib::RefPtr<Gdk::DragContext>& context,
|
||||
gint x,
|
||||
gint y,
|
||||
const Gtk::SelectionData& data,
|
||||
guint info,
|
||||
guint time);
|
||||
void drop_regions (
|
||||
const Glib::RefPtr<Gdk::DragContext>& context,
|
||||
gint x,
|
||||
gint y,
|
||||
const Gtk::SelectionData& data,
|
||||
guint info,
|
||||
guint time);
|
||||
|
||||
void drop_routes (const Glib::RefPtr<Gdk::DragContext>& context,
|
||||
gint x,
|
||||
gint y,
|
||||
const Gtk::SelectionData& data,
|
||||
guint info,
|
||||
guint time);
|
||||
void drop_routes (
|
||||
const Glib::RefPtr<Gdk::DragContext>& context,
|
||||
gint x,
|
||||
gint y,
|
||||
const Gtk::SelectionData& data,
|
||||
guint info,
|
||||
guint time);
|
||||
|
||||
/* audio export */
|
||||
|
||||
|
|
@ -2128,45 +2133,6 @@ public:
|
|||
void start_time_fx (ArdourCanvas::Item*, GdkEvent*);
|
||||
void end_time_fx (ArdourCanvas::Item*, GdkEvent*);
|
||||
|
||||
struct TimeFXDialog : public ArdourDialog {
|
||||
ARDOUR::TimeFXRequest request;
|
||||
Editor& editor;
|
||||
bool pitching;
|
||||
Gtk::Adjustment pitch_octave_adjustment;
|
||||
Gtk::Adjustment pitch_semitone_adjustment;
|
||||
Gtk::Adjustment pitch_cent_adjustment;
|
||||
Gtk::SpinButton pitch_octave_spinner;
|
||||
Gtk::SpinButton pitch_semitone_spinner;
|
||||
Gtk::SpinButton pitch_cent_spinner;
|
||||
RegionSelection regions;
|
||||
Gtk::ProgressBar progress_bar;
|
||||
|
||||
/* SoundTouch */
|
||||
Gtk::ToggleButton quick_button;
|
||||
Gtk::ToggleButton antialias_button;
|
||||
Gtk::HBox upper_button_box;
|
||||
|
||||
/* RubberBand */
|
||||
Gtk::ComboBoxText stretch_opts_selector;
|
||||
Gtk::Label stretch_opts_label;
|
||||
Gtk::ToggleButton precise_button;
|
||||
Gtk::ToggleButton preserve_formants_button;
|
||||
Gtk::HBox opts_box;
|
||||
|
||||
Gtk::Button* cancel_button;
|
||||
Gtk::Button* action_button;
|
||||
Gtk::VBox packer;
|
||||
int status;
|
||||
|
||||
TimeFXDialog (Editor& e, bool for_pitch);
|
||||
|
||||
gint update_progress ();
|
||||
sigc::connection first_cancel;
|
||||
sigc::connection first_delete;
|
||||
void cancel_in_progress ();
|
||||
gint delete_in_progress (GdkEventAny*);
|
||||
};
|
||||
|
||||
/* "whats mine is yours" */
|
||||
|
||||
friend class TimeFXDialog;
|
||||
|
|
|
|||
|
|
@ -30,10 +30,11 @@
|
|||
#include <gtkmm2ext/window_title.h>
|
||||
#include <gtkmm2ext/utils.h>
|
||||
|
||||
#include "editor.h"
|
||||
#include "audio_time_axis.h"
|
||||
#include "audio_region_view.h"
|
||||
#include "audio_time_axis.h"
|
||||
#include "editor.h"
|
||||
#include "region_selection.h"
|
||||
#include "time_fx_dialog.h"
|
||||
|
||||
#include "ardour/session.h"
|
||||
#include "ardour/region.h"
|
||||
|
|
@ -59,132 +60,6 @@ using namespace sigc;
|
|||
using namespace Gtk;
|
||||
using namespace Gtkmm2ext;
|
||||
|
||||
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")),
|
||||
preserve_formants_button(_("Preserve Formants"))
|
||||
{
|
||||
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);
|
||||
|
||||
upper_button_box.pack_start (preserve_formants_button, false, false);
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
int
|
||||
Editor::time_stretch (RegionSelection& regions, float fraction)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -28,11 +28,10 @@ using std::list;
|
|||
using std::set;
|
||||
|
||||
class RegionView;
|
||||
class TimeAxisView;
|
||||
|
||||
/**
|
||||
* Class to represent list of selected regions.
|
||||
/** Class to represent list of selected regions.
|
||||
*/
|
||||
|
||||
class RegionSelection : public std::list<RegionView*>, public sigc::trackable
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
189
gtk2_ardour/time_fx_dialog.cc
Normal file
189
gtk2_ardour/time_fx_dialog.cc
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
/*
|
||||
Copyright (C) 2000-2009 Paul Davis
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
#include "time_fx_dialog.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <cstdlib>
|
||||
#include <cmath>
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "pbd/error.h"
|
||||
#include "pbd/pthread_utils.h"
|
||||
#include "pbd/memento_command.h"
|
||||
|
||||
#include <gtkmm2ext/window_title.h>
|
||||
#include <gtkmm2ext/utils.h>
|
||||
|
||||
#include "editor.h"
|
||||
#include "audio_time_axis.h"
|
||||
#include "audio_region_view.h"
|
||||
#include "region_selection.h"
|
||||
|
||||
#include "ardour/session.h"
|
||||
#include "ardour/region.h"
|
||||
#include "ardour/audioplaylist.h"
|
||||
#include "ardour/audio_track.h"
|
||||
#include "ardour/audioregion.h"
|
||||
#include "ardour/audio_diskstream.h"
|
||||
#include "ardour/stretch.h"
|
||||
#include "ardour/midi_stretch.h"
|
||||
#include "ardour/pitch.h"
|
||||
|
||||
#ifdef USE_RUBBERBAND
|
||||
#include "rubberband/RubberBandStretcher.h"
|
||||
using namespace RubberBand;
|
||||
#endif
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace ARDOUR;
|
||||
using namespace PBD;
|
||||
using namespace sigc;
|
||||
using namespace Gtk;
|
||||
using namespace Gtkmm2ext;
|
||||
|
||||
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"))
|
||||
, preserve_formants_button(_("Preserve Formants"))
|
||||
{
|
||||
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);
|
||||
|
||||
upper_button_box.pack_start (preserve_formants_button, false, false);
|
||||
|
||||
|
||||
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
|
||||
TimeFXDialog::update_progress ()
|
||||
{
|
||||
progress_bar.set_fraction (request.progress);
|
||||
return !request.done;
|
||||
}
|
||||
|
||||
void
|
||||
TimeFXDialog::cancel_in_progress ()
|
||||
{
|
||||
status = -2;
|
||||
request.cancel = true;
|
||||
first_cancel.disconnect();
|
||||
}
|
||||
|
||||
gint
|
||||
TimeFXDialog::delete_in_progress (GdkEventAny* ev)
|
||||
{
|
||||
status = -2;
|
||||
request.cancel = true;
|
||||
first_delete.disconnect();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
69
gtk2_ardour/time_fx_dialog.h
Normal file
69
gtk2_ardour/time_fx_dialog.h
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/*
|
||||
Copyright (C) 2000-2009 Paul Davis
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __ardour_time_fx_dialog_h__
|
||||
#define __ardour_time_fx_dialog_h__
|
||||
|
||||
#include <gtkmm.h>
|
||||
|
||||
#include "ardour_dialog.h"
|
||||
#include "region_selection.h"
|
||||
|
||||
class Editor;
|
||||
|
||||
struct TimeFXDialog : public ArdourDialog {
|
||||
ARDOUR::TimeFXRequest request;
|
||||
Editor& editor;
|
||||
bool pitching;
|
||||
Gtk::Adjustment pitch_octave_adjustment;
|
||||
Gtk::Adjustment pitch_semitone_adjustment;
|
||||
Gtk::Adjustment pitch_cent_adjustment;
|
||||
Gtk::SpinButton pitch_octave_spinner;
|
||||
Gtk::SpinButton pitch_semitone_spinner;
|
||||
Gtk::SpinButton pitch_cent_spinner;
|
||||
RegionSelection regions;
|
||||
Gtk::ProgressBar progress_bar;
|
||||
|
||||
/* SoundTouch */
|
||||
Gtk::ToggleButton quick_button;
|
||||
Gtk::ToggleButton antialias_button;
|
||||
Gtk::HBox upper_button_box;
|
||||
|
||||
/* RubberBand */
|
||||
Gtk::ComboBoxText stretch_opts_selector;
|
||||
Gtk::Label stretch_opts_label;
|
||||
Gtk::ToggleButton precise_button;
|
||||
Gtk::ToggleButton preserve_formants_button;
|
||||
Gtk::HBox opts_box;
|
||||
|
||||
Gtk::Button* cancel_button;
|
||||
Gtk::Button* action_button;
|
||||
Gtk::VBox packer;
|
||||
int status;
|
||||
|
||||
TimeFXDialog (Editor& e, bool for_pitch);
|
||||
|
||||
gint update_progress ();
|
||||
sigc::connection first_cancel;
|
||||
sigc::connection first_delete;
|
||||
void cancel_in_progress ();
|
||||
gint delete_in_progress (GdkEventAny*);
|
||||
};
|
||||
|
||||
#endif /* __ardour_time_fx_dialog_h__ */
|
||||
|
|
@ -221,6 +221,7 @@ def build(bld):
|
|||
theme_manager.cc
|
||||
time_axis_view.cc
|
||||
time_axis_view_item.cc
|
||||
time_fx_dialog.cc
|
||||
time_selection.cc
|
||||
ui_config.cc
|
||||
utils.cc
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue