/*
- 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
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id$
*/
#ifndef __gtk_ardour_region_edit_h__
#include <map>
-#include <gtkmm.h>
-#include <libgnomecanvas/libgnomecanvas.h>
-#include <sigc++/signal.h>
+#include <gtkmm/label.h>
+#include <gtkmm/entry.h>
+#include <gtkmm/box.h>
+#include <gtkmm/togglebutton.h>
+#include <gtkmm/button.h>
+#include <gtkmm/arrow.h>
+#include <gtkmm/frame.h>
+#include <gtkmm/table.h>
+#include <gtkmm/adjustment.h>
+#include <gtkmm/separator.h>
+#include <gtkmm/spinbutton.h>
+#include <gtkmm/listviewtext.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 ();
+ RegionEditor (ARDOUR::Session*, boost::shared_ptr<ARDOUR::Region>);
+ virtual ~RegionEditor ();
+
+ protected:
+ virtual void region_changed (const PBD::PropertyChange&);
+
+ Gtk::Table _table;
+ int _table_row;
private:
- ARDOUR::Session& _session;
- ARDOUR::AudioRegion& _region;
- AudioRegionView& _region_view;
+ 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 ();
-
- gint focus_change (GdkEventFocus *);
+
+ 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 ();
- void fade_in_realized ();
- void fade_out_realized ();
+ gint bpressed (GdkEventButton* ev, Gtk::SpinButton* but, void (RegionEditor::*pmf)());
+ gint breleased (GdkEventButton* ev, Gtk::SpinButton* but, void (RegionEditor::*pmf)());
- 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 on_delete_event (GdkEventAny *);
+ void handle_response (int);
bool spin_arrow_grab;
+
+ Gtk::Label _sources_label;
+ Gtk::ListViewText _sources;
};
#endif /* __gtk_ardour_region_edit_h__ */