X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmixer_ui.h;h=eeda3c406210993cf32e1dbfc728f354acb3d2d8;hb=bbb65d07d33160366533d9f2390f3f8d56fcb8e1;hp=cd95e1143a8bf43b7d1c8910fcc7013e3d6e395c;hpb=17bfb7cad584bf985222d3d380e5e5e06c27aff2;p=ardour.git diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h index cd95e1143a..eeda3c4062 100644 --- a/gtk2_ardour/mixer_ui.h +++ b/gtk2_ardour/mixer_ui.h @@ -1,5 +1,5 @@ /* - 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 @@ -33,8 +33,10 @@ #include #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" @@ -42,7 +44,6 @@ namespace ARDOUR { class Route; class RouteGroup; - class Session; class AudioDiskstream; }; @@ -50,15 +51,15 @@ class MixerStrip; 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; } @@ -80,13 +81,9 @@ class Mixer_UI : public Gtk::Window 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; @@ -110,18 +107,21 @@ class Mixer_UI : public Gtk::Window // 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 strips; bool strip_scroller_button_release (GdkEventButton*); + void scroll_left (); + void scroll_right (); void add_strip (ARDOUR::RouteList&); void remove_strip (MixerStrip *); @@ -145,8 +145,8 @@ class Mixer_UI : public Gtk::Window gint start_updating (); gint stop_updating (); - void disconnect_from_session (); - + void session_going_away (); + sigc::connection fast_screen_update_connection; void fast_update_strips (); @@ -156,7 +156,7 @@ class Mixer_UI : public Gtk::Window 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); @@ -166,7 +166,7 @@ class Mixer_UI : public Gtk::Window 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 (); @@ -201,7 +201,7 @@ class Mixer_UI : public Gtk::Window void group_flags_changed (void *src, ARDOUR::RouteGroup *); /* various treeviews */ - + struct TrackDisplayModelColumns : public Gtk::TreeModel::ColumnRecord { TrackDisplayModelColumns () { add (text); @@ -216,7 +216,7 @@ class Mixer_UI : public Gtk::Window }; struct GroupDisplayModelColumns : public Gtk::TreeModel::ColumnRecord { - GroupDisplayModelColumns() { + GroupDisplayModelColumns() { add (visible); add (text); add (group);