/*
- Copyright (C) 2000 Paul Davis
+ Copyright (C) 2000-2006 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
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.
-
- $Id$
*/
#ifndef __ardour_mixer_strip__
#include <gtkmm/adjustment.h>
#include <gtkmm2ext/auto_spin.h>
-#include <gtkmm2ext/slider_controller.h>
#include <gtkmm2ext/click_box.h>
+#include <gtkmm2ext/slider_controller.h>
+
+#include <pbd/stateful.h>
#include <ardour/types.h>
#include <ardour/ardour.h>
#include <ardour/io.h>
#include <ardour/insert.h>
-#include <ardour/stateful.h>
#include <ardour/redirect.h>
#include <pbd/fastlog.h>
class MixerStrip : public RouteUI, public Gtk::EventBox
{
public:
- MixerStrip (Mixer_UI&, ARDOUR::Session&, ARDOUR::Route &, bool in_mixer = true);
+ MixerStrip (Mixer_UI&, ARDOUR::Session&, boost::shared_ptr<ARDOUR::Route>, bool in_mixer = true);
+ MixerStrip (Mixer_UI&, ARDOUR::Session&, bool in_mixer = true);
~MixerStrip ();
- void set_width (Width);
+ void set_width (Width, void* owner);
Width get_width() const { return _width; }
+ void* width_owner() const { return _width_owner; }
void fast_update ();
void set_embedded (bool);
-
+
ARDOUR::RouteGroup* mix_group() const;
+ void set_route (boost::shared_ptr<ARDOUR::Route>);
+
+#ifdef GTKOSX
+ sigc::signal<void> WidthChanged;
+#endif
protected:
friend class Mixer_UI;
private:
Mixer_UI& _mixer;
+ void init ();
+
bool _embedded;
bool _packed;
+ bool _mixer_owned;
Width _width;
+ void* _width_owner;
Gtk::Button hide_button;
Gtk::Button width_button;
Gtk::HBox width_hide_box;
+ Gtk::EventBox top_event_box;
void hide_clicked();
void width_clicked ();
RedirectBox pre_redirect_box;
RedirectBox post_redirect_box;
GainMeter gpm;
- PannerUI panners;
+ PannerUI panners;
Gtk::Table button_table;
+ Gtk::Table middle_button_table;
Gtk::Table bottom_button_table;
+ Gtk::Button gain_unit_button;
+ Gtk::Label gain_unit_label;
+ Gtk::Button meter_point_button;
+ Gtk::Label meter_point_label;
+
+ void meter_changed (void *);
+
Gtk::Button diskstream_button;
Gtk::Label diskstream_label;
Gtk::TextView* comment_area;
Gtk::Button comment_button;
+ void comment_editor_done_editing();
void setup_comment_editor ();
void comment_button_clicked ();
Gtk::Menu output_menu;
void add_connection_to_output_menu (ARDOUR::Connection *);
- void stream_input_chosen (ARDOUR::DiskStream*);
- void select_stream_input ();
void connection_input_chosen (ARDOUR::Connection *);
void connection_output_chosen (ARDOUR::Connection *);
void edit_input_configuration ();
void edit_output_configuration ();
- void diskstream_changed (void *src);
+ void diskstream_changed ();
Gtk::Menu *send_action_menu;
void build_send_action_menu ();
void set_automated_controls_sensitivity (bool yn);
Gtk::Menu* route_ops_menu;
+ Gtk::MenuItem* rename_menu_item;
void build_route_ops_menu ();
gint name_button_button_press (GdkEventButton*);
void list_route_operations ();
void name_changed (void *src);
void update_speed_display ();
void map_frozen ();
- void hide_redirect_editor (ARDOUR::Redirect* redirect);
+ void hide_redirect_editor (boost::shared_ptr<ARDOUR::Redirect> redirect);
+ void hide_redirect_editors ();
bool ignore_speed_adjustment;
- string solo_button_name () const { return "MixerSoloButton"; }
- string safe_solo_button_name () const { return "MixerSafeSoloButton"; }
-
void engine_running();
void engine_stopped();
+ static int scrollbar_height;
+
+ void update_io_button (boost::shared_ptr<ARDOUR::Route> route, Width width, bool input_button);
};
#endif /* __ardour_mixer_strip__ */