X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fspeaker_dialog.h;h=95217003802168da9626e5326f64872fd2787378;hb=8a2c82465938cd528781e7cdcb04e8a3530a0b51;hp=2a63dab44fad6ce23f2b066fb3dfe613ddb65443;hpb=0da1f2edb204677e353e01f257518703bec43603;p=ardour.git diff --git a/gtk2_ardour/speaker_dialog.h b/gtk2_ardour/speaker_dialog.h index 2a63dab44f..9521700380 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,27 +47,39 @@ private: Gtk::Adjustment azimuth_adjustment; Gtk::SpinButton azimuth_spinner; Gtk::Button add_speaker_button; - Gtk::Button use_system_button; - int32_t selected_speaker; - int width; - int height; - int drag_x; - int drag_y; + Gtk::Button remove_speaker_button; + 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__ */