/*
- Copyright (C) 2000 Paul Davis
+ Copyright (C) 2000 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
#include <gtkmm/treeview.h>
#include "pbd/stateful.h"
+#include "pbd/signals.h"
#include "ardour/ardour.h"
+#include "ardour/session_handle.h"
#include "route_processor_selection.h"
#include "enums.h"
namespace ARDOUR {
class Route;
class RouteGroup;
- class Session;
class AudioDiskstream;
};
class PluginSelector;
class MixerGroupTabs;
-class Mixer_UI : public Gtk::Window
+class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr
{
public:
Mixer_UI ();
~Mixer_UI();
- void connect_to_session (ARDOUR::Session *);
-
- PluginSelector& plugin_selector() { return *_plugin_selector; }
+ void set_session (ARDOUR::Session *);
+
+ PluginSelector* plugin_selector();
void set_strip_width (Width);
Width get_strip_width () const { return _strip_width; }
RouteRedirectSelection& selection() { return _selection; }
- static std::string get_order_key();
-
private:
- ARDOUR::Session *session;
-
bool _visible;
-
+
Gtk::HBox global_hpacker;
Gtk::VBox global_vpacker;
Gtk::ScrolledWindow scroller;
// for restoring window geometry.
int m_root_x, m_root_y, m_width, m_height;
-
+
void set_window_pos_and_size ();
void get_window_pos_and_size ();
bool on_key_press_event (GdkEventKey*);
bool on_key_release_event (GdkEventKey*);
+ bool on_scroll_event (GdkEventScroll*);
void pane_allocation_handler (Gtk::Allocation&, Gtk::Paned*);
-
+
std::list<MixerStrip *> strips;
bool strip_scroller_button_release (GdkEventButton*);
+ void scroll_left ();
+ void scroll_right ();
void add_strip (ARDOUR::RouteList&);
void remove_strip (MixerStrip *);
gint start_updating ();
gint stop_updating ();
- void disconnect_from_session ();
-
+ void session_going_away ();
+
sigc::connection fast_screen_update_connection;
void fast_update_strips ();
bool no_track_list_redisplay;
bool track_display_button_press (GdkEventButton*);
void strip_width_changed ();
-
+
void track_list_change (const Gtk::TreeModel::Path&,const Gtk::TreeModel::iterator&);
void track_list_delete (const Gtk::TreeModel::Path&);
void track_list_reorder (const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator& iter, int* new_order);
void set_all_strips_visibility (bool yn);
void set_all_audio_visibility (int tracks, bool yn);
-
+
void hide_all_routes ();
void show_all_routes ();
void show_all_audiobus ();
void group_flags_changed (void *src, ARDOUR::RouteGroup *);
/* various treeviews */
-
+
struct TrackDisplayModelColumns : public Gtk::TreeModel::ColumnRecord {
TrackDisplayModelColumns () {
add (text);
};
struct GroupDisplayModelColumns : public Gtk::TreeModel::ColumnRecord {
- GroupDisplayModelColumns() {
+ GroupDisplayModelColumns() {
add (visible);
add (text);
add (group);