Merge branch 'master' into windows
[ardour.git] / gtk2_ardour / audio_region_editor.h
index 38cd920e5e7833ceb49f450fc6d5284870b38679..0d9292b483d84e16ebb30823a2e9c2377355d302 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2001 Paul Davis 
+    Copyright (C) 2001 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
@@ -15,7 +15,6 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id$
 */
 
 #ifndef __gtk_ardour_audio_region_edit_h__
 #include <gtkmm/arrow.h>
 #include <gtkmm/frame.h>
 #include <gtkmm/table.h>
-#include <gtkmm/alignment.h>
 #include <gtkmm/adjustment.h>
 #include <gtkmm/separator.h>
 #include <gtkmm/spinbutton.h>
 
 #include <libgnomecanvas/libgnomecanvas.h>
-#include <sigc++/signal.h>
+
+#include "pbd/signals.h"
+#ifdef WIN32
+#include "pbd/glib_semaphore.h"
+#else
+#include "pbd/crossthread.h"
+#endif
 
 #include "audio_clock.h"
 #include "ardour_dialog.h"
@@ -53,134 +57,38 @@ class AudioRegionView;
 class AudioRegionEditor : public RegionEditor
 {
   public:
-       AudioRegionEditor (ARDOUR::Session&, ARDOUR::AudioRegion&, AudioRegionView& rv);
+       AudioRegionEditor (ARDOUR::Session*, boost::shared_ptr<ARDOUR::AudioRegion>);
        ~AudioRegionEditor ();
 
+       void peak_amplitude_thread ();
+
   private:
-       ARDOUR::AudioRegion& _region;
-       AudioRegionView& _region_view;
-
-       void connect_editor_events ();
-
-       Gtk::Label name_label;
-       Gtk::Entry name_entry;
-       Gtk::HBox  name_hbox;
-
-       Gtk::HBox  top_row_hbox;
-       Gtk::HBox  top_row_button_hbox;
-
-       Gtk::ToggleButton lock_button;
-       Gtk::ToggleButton mute_button;
-       Gtk::ToggleButton opaque_button;
-       Gtk::ToggleButton envelope_active_button;
-       Gtk::ToggleButton envelope_view_button;
-
-       Gtk::Button       raise_button;
-       Gtk::Arrow        raise_arrow;
-       Gtk::Button       lower_button;
-       Gtk::Arrow        lower_arrow;
-       Gtk::Frame        layer_frame;
-       Gtk::Label        layer_value_label;
-       Gtk::Label        layer_label;
-       Gtk::HBox         layer_hbox;
-
-       Gtk::ToggleButton  audition_button;
-
-       Gtk::HBox  lower_hbox;
-       
-       Gtk::Table time_table;
-
-       Gtk::Label start_label;
-       Gtk::Label end_label;
-       Gtk::Label length_label;
-       Gtk::Alignment start_alignment;
-       Gtk::Alignment end_alignment;
-       Gtk::Alignment length_alignment;
-
-       AudioClock start_clock;
-       AudioClock end_clock;
-       AudioClock length_clock;
-       AudioClock sync_offset_clock;
-
-       Gtk::Table  envelope_loop_table;
-       Gtk::Button loop_button;
-       Gtk::Label  loop_label;
-       Gtk::Label  envelope_label;
-
-       Gtk::Table fade_in_table;
-       Gtk::Label fade_in_label;
-       Gtk::Alignment fade_in_label_align;
-       Gtk::Label fade_in_active_button_label;
-       Gtk::ToggleButton fade_in_active_button;
-       Gtk::Label fade_in_length_label;
-
-       Gtk::Adjustment fade_in_length_adjustment;
-       Gtk::SpinButton fade_in_length_spinner;
-
-       Gtk::Table fade_out_table;
-       Gtk::Label fade_out_label;
-       Gtk::Alignment fade_out_label_align;
-       Gtk::Label fade_out_active_button_label;
-       Gtk::ToggleButton fade_out_active_button;
-       Gtk::Label fade_out_length_label;
-
-       Gtk::Adjustment fade_out_length_adjustment;
-       Gtk::SpinButton fade_out_length_spinner;
-
-       Gtk::HSeparator sep3;
-       Gtk::VSeparator sep1;
-       Gtk::VSeparator sep2;
-
-       void region_changed (ARDOUR::Change);
-       void bounds_changed (ARDOUR::Change);
-       void name_changed ();
-       void opacity_changed ();
-       void mute_changed ();
-       void envelope_active_changed ();
-       void lock_changed ();
-       void layer_changed ();
-
-       void fade_in_length_adjustment_changed ();
-       void fade_out_length_adjustment_changed ();
-       void fade_in_changed ();
-       void fade_out_changed ();
-       void audition_state_changed (bool);
-
-       void activation ();
-
-       void name_entry_changed ();
-       void start_clock_changed ();
-       void end_clock_changed ();
-       void length_clock_changed ();
-
-       gint envelope_active_button_press (GdkEventButton *);
-       gint envelope_active_button_release (GdkEventButton *);
-
-       void audition_button_toggled ();
-       void envelope_view_button_toggled ();
-       void lock_button_clicked ();
-       void mute_button_clicked ();
-       void opaque_button_clicked ();
-       void raise_button_clicked ();
-       void lower_button_clicked ();
-
-       void fade_in_active_toggled ();
-       void fade_out_active_toggled ();
-       void fade_in_active_changed ();
-       void fade_out_active_changed ();
-
-       void fade_in_realized ();
-       void fade_out_realized ();
-
-       void start_editing_fade_in ();
-       void start_editing_fade_out ();
-       void stop_editing_fade_in ();
-       void stop_editing_fade_out ();
-
-       gint bpressed (GdkEventButton* ev, Gtk::SpinButton* but, void (AudioRegionEditor::*pmf)());
-       gint breleased (GdkEventButton* ev, Gtk::SpinButton* but, void (AudioRegionEditor::*pmf)());
-
-       bool spin_arrow_grab;
+
+       void region_changed (PBD::PropertyChange const &);
+
+       void gain_changed ();
+       void gain_adjustment_changed ();
+
+       boost::shared_ptr<ARDOUR::AudioRegion> _audio_region;
+
+       Gtk::Label gain_label;
+       Gtk::Adjustment gain_adjustment;
+       Gtk::SpinButton gain_entry;
+
+       Gtk::Label _peak_amplitude_label;
+       Gtk::Entry _peak_amplitude;
+
+       void signal_peak_thread ();
+       void wait_for_signal ();
+       pthread_t _peak_amplitude_thread_handle;
+       void peak_amplitude_found (double);
+       PBD::Signal1<void, double> PeakAmplitudeFound;
+       PBD::ScopedConnection _peak_amplitude_connection;
+#ifdef WIN32
+       PBD::GlibSemaphore m_peak_sem;
+#else
+       CrossThreadChannel _peak_channel;
+#endif
 };
 
 #endif /* __gtk_ardour_audio_region_edit_h__ */