X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Flocation_ui.h;h=ea6b80f3a4f562396c8840e34c49e039dead60bc;hb=c88716665a62399efa6278b5eaa254434a77a305;hp=51daa6814da418332b646992ee017e24b16a769a;hpb=6edccc3070b813157ffcd4014ec8dd7fa6ed9ce7;p=ardour.git diff --git a/gtk2_ardour/location_ui.h b/gtk2_ardour/location_ui.h index 51daa6814d..ea6b80f3a4 100644 --- a/gtk2_ardour/location_ui.h +++ b/gtk2_ardour/location_ui.h @@ -1,5 +1,5 @@ /* - Copyright (C) 1999-2002 Paul Davis + Copyright (C) 1999-2002 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 @@ -26,19 +26,23 @@ #include #include #include +#include +#include -#include -#include +#include "pbd/signals.h" + +#include "ardour/location.h" +#include "ardour/session_handle.h" #include "ardour_dialog.h" +#include "audio_clock.h" namespace ARDOUR { class LocationStack; - class Session; class Location; } -class LocationEditRow : public Gtk::HBox +class LocationEditRow : public Gtk::HBox, public ARDOUR::SessionHandlePtr { public: LocationEditRow (ARDOUR::Session *sess=0, ARDOUR::Location *loc=0, int32_t num=-1); @@ -50,9 +54,10 @@ class LocationEditRow : public Gtk::HBox void set_session (ARDOUR::Session *); void set_number (int); - - sigc::signal remove_requested; - sigc::signal redraw_ranges; + void focus_name(); + + sigc::signal remove_requested; + sigc::signal redraw_ranges; protected: @@ -63,23 +68,18 @@ class LocationEditRow : public Gtk::HBox }; ARDOUR::Location *location; - ARDOUR::Session *session; - - Gtk::Table item_table; - + Gtk::Entry name_entry; Gtk::Label name_label; Gtk::Label number_label; - + Gtk::HBox start_hbox; - Gtk::Button start_set_button; Gtk::Button start_go_button; AudioClock start_clock; Gtk::HBox end_hbox; - Gtk::Button end_set_button; Gtk::Button end_go_button; AudioClock end_clock; @@ -101,19 +101,19 @@ class LocationEditRow : public Gtk::HBox Gtk::CheckButton scms_check_button; Gtk::CheckButton preemph_check_button; - guint32 i_am_the_modifier; int number; - + void name_entry_changed (); void isrc_entry_changed (); void performer_entry_changed (); void composer_entry_changed (); - + void set_button_pressed (LocationPart part); void go_button_pressed (LocationPart part); void clock_changed (LocationPart part); + void change_aborted (LocationPart part); void cd_toggled (); void hide_toggled (); @@ -127,37 +127,38 @@ class LocationEditRow : public Gtk::HBox void name_changed (ARDOUR::Location *); void location_changed (ARDOUR::Location *); void flags_changed (ARDOUR::Location *, void *src); - - sigc::connection start_changed_connection; - sigc::connection end_changed_connection; - sigc::connection name_changed_connection; - sigc::connection changed_connection; - sigc::connection flags_changed_connection; - -}; + PBD::ScopedConnectionList connections; +}; -class LocationUI : public ArdourDialog +class LocationUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr { public: LocationUI (); ~LocationUI (); - + void set_session (ARDOUR::Session *); + void add_new_location(); + void add_new_range(); + + void refresh_location_list (); + private: ARDOUR::LocationStack* locations; - - void session_gone(); + ARDOUR::Location *newest_location; + + void session_going_away (); Gtk::VBox location_vpacker; - Gtk::HBox location_hpacker; 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; @@ -170,7 +171,6 @@ class LocationUI : public ArdourDialog Gtk::ScrolledWindow range_rows_scroller; Gtk::VBox range_rows; - /* When any location changes it start or end points, it sends a signal that is caught by one of these functions @@ -181,20 +181,29 @@ class LocationUI : public ArdourDialog void location_redraw_ranges (); gint do_location_remove (ARDOUR::Location *); - + guint32 i_am_the_modifier; - void add_new_location(); - void add_new_range(); - - void refresh_location_list (); - void refresh_location_list_s (ARDOUR::Change); void location_removed (ARDOUR::Location *); void location_added (ARDOUR::Location *); void map_locations (ARDOUR::Locations::LocationList&); +}; + +class LocationUIWindow : public ArdourDialog +{ + public: + LocationUIWindow (); + ~LocationUIWindow (); + + void on_show(); + void set_session (ARDOUR::Session *); + + LocationUI& ui() { return _ui; } protected: + LocationUI _ui; bool on_delete_event (GdkEventAny*); + void session_going_away(); }; #endif // __ardour_location_ui_h__