/*
- 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__ */