X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=inline;f=gtk2_ardour%2Flocation_ui.h;h=395464e0492f11cdc275c7f89d2187fed545c469;hb=6d0907089550571628b35774c371f2bbdd576fef;hp=56401f61399b515e575a0026b72bc54a82f25399;hpb=911fdb576e15283897cb7648d07f4ba14ec8f78e;p=ardour.git diff --git a/gtk2_ardour/location_ui.h b/gtk2_ardour/location_ui.h index 56401f6139..395464e049 100644 --- a/gtk2_ardour/location_ui.h +++ b/gtk2_ardour/location_ui.h @@ -29,18 +29,22 @@ #include #include +#include "pbd/signals.h" + #include "ardour/location.h" +#include "ardour/session_handle.h" -#include "ardour_dialog.h" +#include "ardour_window.h" #include "audio_clock.h" namespace ARDOUR { class LocationStack; - class Session; class Location; } -class LocationEditRow : public Gtk::HBox +class ClockGroup; + +class LocationEditRow : public Gtk::HBox, public ARDOUR::SessionHandlePtr { public: LocationEditRow (ARDOUR::Session *sess=0, ARDOUR::Location *loc=0, int32_t num=-1); @@ -53,6 +57,7 @@ class LocationEditRow : public Gtk::HBox void set_number (int); void focus_name(); + void set_clock_group (ClockGroup&); sigc::signal remove_requested; sigc::signal redraw_ranges; @@ -66,9 +71,6 @@ class LocationEditRow : public Gtk::HBox }; ARDOUR::Location *location; - ARDOUR::Session *session; - - Gtk::Table item_table; @@ -77,16 +79,18 @@ class LocationEditRow : public Gtk::HBox Gtk::Label number_label; Gtk::HBox start_hbox; - Gtk::Button start_go_button; AudioClock start_clock; + Gtk::Button start_to_playhead_button; Gtk::HBox end_hbox; - Gtk::Button end_go_button; AudioClock end_clock; + Gtk::Button end_to_playhead_button; AudioClock length_clock; Gtk::CheckButton cd_check_button; Gtk::CheckButton hide_check_button; + Gtk::CheckButton lock_check_button; + Gtk::CheckButton glue_check_button; Gtk::Button remove_button; @@ -96,12 +100,14 @@ class LocationEditRow : public Gtk::HBox Gtk::Label performer_label; - Gtk::Entry performer_entry; + Gtk::Entry performer_entry; Gtk::Label composer_label; - Gtk::Entry composer_entry; + Gtk::Entry composer_entry; Gtk::CheckButton scms_check_button; + Gtk::Label scms_label; Gtk::CheckButton preemph_check_button; - + Gtk::Label preemph_label; + ClockGroup* _clock_group; guint32 i_am_the_modifier; int number; @@ -111,14 +117,15 @@ class LocationEditRow : public Gtk::HBox void performer_entry_changed (); void composer_entry_changed (); - void set_button_pressed (LocationPart part); - void go_button_pressed (LocationPart part); + void to_playhead_button_pressed (LocationPart part); void clock_changed (LocationPart part); - void change_aborted (LocationPart part); + bool locate_to_clock (GdkEventButton*, AudioClock*); void cd_toggled (); void hide_toggled (); + void lock_toggled (); + void glue_toggled (); void remove_button_pressed (); void scms_toggled (); @@ -129,52 +136,52 @@ class LocationEditRow : public Gtk::HBox void name_changed (ARDOUR::Location *); void location_changed (ARDOUR::Location *); void flags_changed (ARDOUR::Location *, void *src); + void lock_changed (ARDOUR::Location *); + void position_lock_style_changed (ARDOUR::Location *); - sigc::connection start_changed_connection; - sigc::connection end_changed_connection; - sigc::connection name_changed_connection; - sigc::connection changed_connection; - sigc::connection flags_changed_connection; + void set_clock_editable_status (); + void show_cd_track_details (); + PBD::ScopedConnectionList connections; }; -class LocationUI : public Gtk::HBox +class LocationUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr { public: LocationUI (); ~LocationUI (); - - virtual void set_session (ARDOUR::Session *); + + void set_session (ARDOUR::Session *); + void set_clock_mode (AudioClock::Mode); void add_new_location(); void add_new_range(); void refresh_location_list (); - void refresh_location_list_s (ARDOUR::Change); + + XMLNode & get_state () const; private: - ARDOUR::Session* session; ARDOUR::LocationStack* locations; + /** set to the location that has just been created with the LocationUI `add' button + (if Config->get_name_new_markers() is true); if it is non-0, the name entry of + the location is given the focus by location_added(). + */ ARDOUR::Location *newest_location; - void session_gone(); - - Gtk::VBox location_vpacker; + void session_going_away (); LocationEditRow loop_edit_row; LocationEditRow punch_edit_row; Gtk::VBox loop_punch_box; - Gtk::ScrolledWindow loop_punch_scroller; Gtk::VPaned loc_range_panes; - Gtk::Frame loc_frame; Gtk::VBox loc_frame_box; Gtk::Button add_location_button; Gtk::ScrolledWindow location_rows_scroller; Gtk::VBox location_rows; - Gtk::Frame range_frame; Gtk::VBox range_frame_box; Gtk::Button add_range_button; Gtk::ScrolledWindow range_rows_scroller; @@ -195,16 +202,20 @@ class LocationUI : public Gtk::HBox void location_removed (ARDOUR::Location *); void location_added (ARDOUR::Location *); + void locations_changed (ARDOUR::Locations::Change); void map_locations (ARDOUR::Locations::LocationList&); + + ClockGroup* _clock_group; + AudioClock::Mode clock_mode_from_session_instant_xml () const; }; -class LocationUIWindow : public ArdourDialog +class LocationUIWindow : public ArdourWindow { public: LocationUIWindow (); ~LocationUIWindow (); - void on_show(); + void on_map (); void set_session (ARDOUR::Session *); LocationUI& ui() { return _ui; } @@ -212,7 +223,7 @@ class LocationUIWindow : public ArdourDialog protected: LocationUI _ui; bool on_delete_event (GdkEventAny*); - void session_gone(); + void session_going_away(); }; #endif // __ardour_location_ui_h__