X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fpanner_ui.h;h=1e83f33872b8be2b1dfd8ee3ee6c2088cb27b815;hb=7496a856c7785888327146c9934e5db23ba5f155;hp=3fb4632d13d0c366ae0d1c2d57078b05c5577274;hpb=8a7e3f17f4b78bb0383e47a7ee2e63fb964c04e7;p=ardour.git diff --git a/gtk2_ardour/panner_ui.h b/gtk2_ardour/panner_ui.h index 3fb4632d13..1e83f33872 100644 --- a/gtk2_ardour/panner_ui.h +++ b/gtk2_ardour/panner_ui.h @@ -1,21 +1,24 @@ /* - Copyright (C) 2004 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 - 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., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ + * Copyright (C) 2005-2011 Paul Davis + * Copyright (C) 2005 Taybin Rutkin + * Copyright (C) 2009-2011 David Robillard + * Copyright (C) 2009-2012 Carl Hetherington + * Copyright (C) 2014-2017 Robin Gareus + * + * 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. + */ #ifndef __ardour_gtk_panner_ui_h__ #define __ardour_gtk_panner_ui_h__ @@ -24,27 +27,26 @@ #include #include -#include #include #include #include #include -#include -#include +#include "ardour/session_handle.h" #include "enums.h" class Panner2d; -class PannerBar; class Panner2dWindow; +class StereoPanner; +class MonoPanner; namespace ARDOUR { - class IO; class Session; -} -namespace Gtkmm2ext { - class FastMeter; + class Panner; + class PannerShell; + class Delivery; + class AutomationControl; } namespace Gtk { @@ -52,82 +54,75 @@ namespace Gtk { class Menuitem; } -class PannerUI : public Gtk::HBox +class PannerUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr { - public: - PannerUI (ARDOUR::Session&); +public: + PannerUI (ARDOUR::Session*); ~PannerUI (); - virtual void set_io (boost::shared_ptr); + virtual void set_panner (boost::shared_ptr, boost::shared_ptr); - void pan_changed (void *); + void panshell_changed (); void update_pan_sensitive (); void update_gain_sensitive (); void set_width (Width); void setup_pan (); + void set_available_panners(std::map); + void set_send_drawing_mode (bool); void effective_pan_display (); - void set_meter_strip_name (string name); - boost::shared_ptr get_controllable(); + void set_meter_strip_name (std::string name); + + void on_size_allocate (Gtk::Allocation &); - private: + static void setup_slider_pix (); + +private: friend class MixerStrip; + friend class SendUI; - boost::shared_ptr _io; - ARDOUR::Session& _session; - std::vector connections; + boost::shared_ptr _panshell; + boost::shared_ptr _panner; + PBD::ScopedConnectionList connections; + PBD::ScopedConnectionList _pan_control_connections; bool ignore_toggle; bool in_pan_update; + int _current_nouts; + int _current_nins; + std::string _current_uri; + bool _send_mode; - static const int pan_bar_height; - - Panner2d* panner; + Panner2d* twod_panner; ///< 2D panner, or 0 Panner2dWindow* big_window; Gtk::VBox pan_bar_packer; - Gtk::Adjustment hAdjustment; - Gtk::Adjustment vAdjustment; - Gtk::Viewport panning_viewport; - Gtk::EventBox panning_up; - Gtk::Arrow panning_up_arrow; - Gtk::EventBox panning_down; - Gtk::Arrow panning_down_arrow; Gtk::VBox pan_vbox; + Gtk::VBox poswidth_box; Width _width; - Gtk::ToggleButton panning_link_button; - Gtk::Button panning_link_direction_button; - Gtk::HBox panning_link_box; + StereoPanner* _stereo_panner; + MonoPanner* _mono_panner; - bool panning_link_button_press (GdkEventButton*); - bool panning_link_button_release (GdkEventButton*); + bool _ignore_width_change; + bool _ignore_position_change; + void width_adjusted (); + void show_width (); + void position_adjusted (); + void show_position (); Gtk::Menu* pan_astate_menu; Gtk::Menu* pan_astyle_menu; - Gtk::Button pan_automation_style_button; Gtk::ToggleButton pan_automation_state_button; - void panning_link_direction_clicked (); - - std::vector pan_adjustments; - std::vector pan_bars; - - void pan_adjustment_changed (uint32_t which); void pan_value_changed (uint32_t which); - void pan_printer (char* buf, uint32_t, Gtk::Adjustment*); - void update_pan_bars (bool only_if_aplay); - void update_pan_linkage (); - void update_pan_state (); void build_astate_menu (); void build_astyle_menu (); - void panner_changed (); - void hide_pans (); void panner_moved (int which); @@ -136,29 +131,28 @@ class PannerUI : public Gtk::HBox gint start_pan_touch (GdkEventButton*); gint end_pan_touch (GdkEventButton*); - bool pan_button_event (GdkEventButton*, uint32_t which); + bool pan_button_event (GdkEventButton*); Gtk::Menu* pan_menu; Gtk::CheckMenuItem* bypass_menu_item; - void build_pan_menu (uint32_t which); - void pan_mute (uint32_t which); - void pan_reset (uint32_t); - void pan_reset_all (); + void build_pan_menu (); + void pan_reset (); void pan_bypass_toggle (); + void pan_edit (); + void pan_set_custom_type (std::string type); void pan_automation_state_changed(); - void pan_automation_style_changed(); - gint pan_automation_style_button_event (GdkEventButton *); gint pan_automation_state_button_event (GdkEventButton *); - sigc::connection pan_watching; std::string astate_string (ARDOUR::AutoState); std::string short_astate_string (ARDOUR::AutoState); std::string _astate_string (ARDOUR::AutoState, bool); - std::string astyle_string (ARDOUR::AutoStyle); - std::string short_astyle_string (ARDOUR::AutoStyle); - std::string _astyle_string (ARDOUR::AutoStyle, bool); + void start_touch (boost::weak_ptr); + void stop_touch (boost::weak_ptr); + + std::map _panner_list; + bool _suspend_menu_callbacks; }; #endif /* __ardour_gtk_panner_ui_h__ */