Vkeybd: use ArdourWidgets for all GUI elements
[ardour.git] / gtk2_ardour / region_editor.h
index 176ced0792a874666a201ecc3c1c04de66f75b34..84fed5edb81fc818723e5d82a18d443e68408cd8 100644 (file)
 /*
-    Copyright (C) 2001 Paul Davis 
+ * 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.
+ */
 
-    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.
+#ifndef __gtk_ardour_region_edit_h__
+#define __gtk_ardour_region_edit_h__
 
-    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.
+#include <map>
 
-    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.
+#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>
 
-    $Id: region_editor.h 231 2006-01-03 14:16:27Z karstenweise $
-*/
 
-#ifndef __gtk_ardour_region_edit_h__
-#define __gtk_ardour_region_edit_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__ */