Vkeybd: use ArdourWidgets for all GUI elements
[ardour.git] / gtk2_ardour / region_editor.h
index 08ab05f3341137a2b561400bd65bda4f69db55f0..84fed5edb81fc818723e5d82a18d443e68408cd8 100644 (file)
@@ -1,22 +1,23 @@
 /*
-    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
-    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.
-
-    $Id$
-*/
+ * Copyright (C) 2005-2018 Paul Davis <paul@linuxaudiosystems.com>
+ * Copyright (C) 2005 Taybin Rutkin <taybin@taybin.com>
+ * Copyright (C) 2009-2011 David Robillard <d@drobilla.net>
+ * Copyright (C) 2010 Carl Hetherington <carl@carlh.net>
+ *
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
 
 #ifndef __gtk_ardour_region_edit_h__
 #define __gtk_ardour_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 <gtkmm/listviewtext.h>
+
 
-#include <libgnomecanvas/libgnomecanvas.h>
-#include <sigc++/signal.h>
+#include "pbd/signals.h"
 
 #include "audio_clock.h"
 #include "ardour_dialog.h"
+#include "region_editor.h"
 
 namespace ARDOUR {
-       class AudioRegion;
+       class Region;
        class Session;
 }
 
-class AudioRegionView;
+class ClockGroup;
 
-class AudioRegionEditor : public ArdourDialog
+class RegionEditor : public ArdourDialog
 {
-  public:
-       AudioRegionEditor (ARDOUR::Session&, ARDOUR::AudioRegion&, AudioRegionView& rv);
-       ~AudioRegionEditor ();
+public:
+       RegionEditor (ARDOUR::Session*, boost::shared_ptr<ARDOUR::Region>);
+       virtual ~RegionEditor ();
 
-  private:
-       ARDOUR::Session& _session;
-       ARDOUR::AudioRegion& _region;
-       AudioRegionView& _region_view;
+protected:
+       virtual void region_changed (const PBD::PropertyChange&);
+
+       Gtk::Table _table;
+       int _table_row;
+
+private:
+       boost::shared_ptr<ARDOUR::Region> _region;
 
        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::Label        envelope_active_button_label;
-       Gtk::Label        envelope_view_button_label;
-
-       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::Label         audition_label;
-
-       Gtk::VBox  upper_vbox;
-       Gtk::HBox  lower_hbox;
-       
-       Gtk::Table time_table;
+       Gtk::ToggleButton audition_button;
 
-       Gtk::Label start_label;
+       Gtk::Label position_label;
        Gtk::Label end_label;
        Gtk::Label length_label;
-       Gtk::Alignment start_alignment;
-       Gtk::Alignment end_alignment;
-       Gtk::Alignment length_alignment;
+       Gtk::Label sync_relative_label;
+       Gtk::Label sync_absolute_label;
+       Gtk::Label start_label;
 
-       AudioClock start_clock;
+       ClockGroup* _clock_group;
+
+       AudioClock position_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);
+       AudioClock sync_offset_relative_clock; ///< sync offset relative to the start of the region
+       AudioClock sync_offset_absolute_clock; ///< sync offset relative to the start of the timeline
+       AudioClock start_clock;
+
+       PBD::ScopedConnection state_connection;
+       PBD::ScopedConnection audition_connection;
+
+       void bounds_changed (const PBD::PropertyChange&);
        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 position_clock_changed ();
        void end_clock_changed ();
        void length_clock_changed ();
-
-       gint envelope_active_button_press (GdkEventButton *);
-       gint envelope_active_button_release (GdkEventButton *);
+       void sync_offset_absolute_clock_changed ();
+       void sync_offset_relative_clock_changed ();
 
        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 ();
+       gint bpressed (GdkEventButton* ev, Gtk::SpinButton* but, void (RegionEditor::*pmf)());
+       gint breleased (GdkEventButton* ev, Gtk::SpinButton* but, void (RegionEditor::*pmf)());
 
-       void fade_in_realized ();
-       void fade_out_realized ();
+       bool on_delete_event (GdkEventAny *);
+       void handle_response (int);
 
-       void start_editing_fade_in ();
-       void start_editing_fade_out ();
-       void stop_editing_fade_in ();
-       void stop_editing_fade_out ();
+       bool spin_arrow_grab;
 
-       gint bpressed (GdkEventButton* ev, Gtk::SpinButton* but, void (AudioRegionEditor::*pmf)());
-       gint breleased (GdkEventButton* ev, Gtk::SpinButton* but, void (AudioRegionEditor::*pmf)());
+       Gtk::Label _sources_label;
+       Gtk::ListViewText _sources;
 
-       bool spin_arrow_grab;
+       void set_clock_mode_from_primary ();
 };
 
 #endif /* __gtk_ardour_region_edit_h__ */