X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fspeaker_dialog.h;h=2fce9e55c3bd9cd12fb79f43b88459038f6d1081;hb=8cd71108c1d153f84f25c3b9e5153a110826c130;hp=4deee287ff375e44d991ec6bcc3d6e5581e3b2f9;hpb=96943d6d850294583d47d0d4c5f25066c9b9f6f7;p=ardour.git diff --git a/gtk2_ardour/speaker_dialog.h b/gtk2_ardour/speaker_dialog.h index 4deee287ff..2fce9e55c3 100644 --- a/gtk2_ardour/speaker_dialog.h +++ b/gtk2_ardour/speaker_dialog.h @@ -28,18 +28,18 @@ #include "ardour/speakers.h" -#include "ardour_dialog.h" +#include "ardour_window.h" -class SpeakerDialog : public ArdourDialog +class SpeakerDialog : public ArdourWindow { public: SpeakerDialog (); - - ARDOUR::Speakers get_speakers() const; + + boost::shared_ptr get_speakers() const; void set_speakers (boost::shared_ptr); - + private: - ARDOUR::Speakers speakers; + boost::weak_ptr _speakers; Gtk::HBox hbox; Gtk::VBox side_vbox; Gtk::AspectFrame aspect_frame; @@ -47,25 +47,40 @@ private: Gtk::Adjustment azimuth_adjustment; Gtk::SpinButton azimuth_spinner; Gtk::Button add_speaker_button; - Gtk::Button use_system_button; + Gtk::Button remove_speaker_button; int32_t selected_speaker; - int width; - int height; - int drag_x; - int drag_y; + int width; ///< width of the circle + int height; ///< height of the circle + int x_origin; ///< x origin of our stuff within the drawing area + int y_origin; ///< y origin of our stuff within the drawing area + /** distance from the centre of the object being dragged to the mouse pointer + * when the drag was started (ie start_pointer - object_position). + */ + double drag_offset_x; + double drag_offset_y; int drag_index; - + int selected_index; ///< index of any selected speaker, or -1 + PBD::ScopedConnection selected_speaker_connection; + bool ignore_speaker_position_change; + bool ignore_azimuth_change; + bool darea_expose_event (GdkEventExpose*); void darea_size_allocate (Gtk::Allocation& alloc); bool darea_motion_notify_event (GdkEventMotion *ev); bool handle_motion (gint evx, gint evy, GdkModifierType state); bool darea_button_press_event (GdkEventButton *ev); bool darea_button_release_event (GdkEventButton *ev); - + void clamp_to_circle (double& x, double& y); void gtk_to_cart (PBD::CartesianVector& c) const; void cart_to_gtk (PBD::CartesianVector& c) const; int find_closest_object (gdouble x, gdouble y); + + void add_speaker (); + void remove_speaker (); + void azimuth_changed (); + void set_selected (int); + void speaker_position_changed (); }; #endif /* __ardour_gtk_speaker_dialog_h__ */