replace ::cast_dynamic() with relevant ActionManager::get_*_action() calls
[ardour.git] / gtk2_ardour / region_editor.h
index 394ad6bcfb4e780f9444bfd90e50cc4ae76c4d31..888ab8afb38526598b89bd85d90ba0221d60f71b 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
 #ifndef __gtk_ardour_region_edit_h__
 #define __gtk_ardour_region_edit_h__
 
+#include <map>
+
+#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 Region;
+       class Session;
+}
 
-namespace ARDOUR { class Session; }
+class ClockGroup;
 
-/** Just a useless stub for now... */
 class RegionEditor : public ArdourDialog
 {
-  public:
-       RegionEditor(ARDOUR::Session& s)
-       : ArdourDialog ("region editor")
-       , _session(s)
-       {}
+public:
+       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:
+       boost::shared_ptr<ARDOUR::Region> _region;
+
+       void connect_editor_events ();
+
+       Gtk::Label name_label;
+       Gtk::Entry name_entry;
+       Gtk::ToggleButton audition_button;
+
+       Gtk::Label position_label;
+       Gtk::Label end_label;
+       Gtk::Label length_label;
+       Gtk::Label sync_relative_label;
+       Gtk::Label sync_absolute_label;
+       Gtk::Label start_label;
+
+       ClockGroup* _clock_group;
+
+       AudioClock position_clock;
+       AudioClock end_clock;
+       AudioClock length_clock;
+       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 audition_state_changed (bool);
+
+       void activation ();
+
+       void name_entry_changed ();
+       void position_clock_changed ();
+       void end_clock_changed ();
+       void length_clock_changed ();
+       void sync_offset_absolute_clock_changed ();
+       void sync_offset_relative_clock_changed ();
+
+       void audition_button_toggled ();
+
+       gint bpressed (GdkEventButton* ev, Gtk::SpinButton* but, void (RegionEditor::*pmf)());
+       gint breleased (GdkEventButton* ev, Gtk::SpinButton* but, void (RegionEditor::*pmf)());
+
+       bool on_delete_event (GdkEventAny *);
+       void handle_response (int);
+
+       bool spin_arrow_grab;
 
-       virtual ~RegionEditor () {}
+       Gtk::Label _sources_label;
+       Gtk::ListViewText _sources;
 
-  protected:
-       ARDOUR::Session&     _session;
+       void set_clock_mode_from_primary ();
 };
 
 #endif /* __gtk_ardour_region_edit_h__ */