X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_routes.h;h=e9497edbbec566cf497cff1d234d50ced8d68d92;hb=d6b5c23579dc02d2f98fc1f48bf038c1070057fb;hp=a1e72664cc7015bc60e0cd75e0c401ffd6c24115;hpb=0ff828822f88c70db31183c66505fdfd640bb87d;p=ardour.git diff --git a/gtk2_ardour/editor_routes.h b/gtk2_ardour/editor_routes.h index a1e72664cc..e9497edbbe 100644 --- a/gtk2_ardour/editor_routes.h +++ b/gtk2_ardour/editor_routes.h @@ -20,9 +20,18 @@ #ifndef __ardour_gtk_editor_route_h__ #define __ardour_gtk_editor_route_h__ +#include +#include +#include +#include + #include "pbd/signals.h" +#include "gtkmm2ext/widget_state.h" + #include "editor_component.h" +class VCATimeAxisView; + class EditorRoutes : public EditorComponent, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr { public: @@ -36,47 +45,60 @@ public: void move_selected_tracks (bool); void show_track_in_display (TimeAxisView &); - + + void suspend_redisplay () { - _no_redisplay = true; + if (!_no_redisplay) { + _no_redisplay = true; + _redisplay_on_resume = false; + } } - + void resume_redisplay () { _no_redisplay = false; - redisplay (); + if (_redisplay_on_resume) { + redisplay (); + } } - + void redisplay (); void update_visibility (); - void routes_added (std::list routes); + void time_axis_views_added (std::list); void route_removed (TimeAxisView *); void hide_track_in_display (TimeAxisView &); std::list views () const; void hide_all_tracks (bool); void clear (); - void sync_order_keys (std::string const &); + void sync_presentation_info_from_treeview (); + void sync_treeview_from_presentation_info (PBD::PropertyChange const &); private: - void initial_display (); + void redisplay_real (); + void on_input_active_changed (std::string const &); void on_tv_rec_enable_changed (std::string const &); + void on_tv_rec_safe_toggled (std::string const &); void on_tv_mute_enable_toggled (std::string const &); void on_tv_solo_enable_toggled (std::string const &); void on_tv_solo_isolate_toggled (std::string const &); void on_tv_solo_safe_toggled (std::string const &); void build_menu (); - void show_menu (); - void route_deleted (Gtk::TreeModel::Path const &); + void presentation_info_changed (PBD::PropertyChange const &); + void row_deleted (Gtk::TreeModel::Path const &); void visible_changed (std::string const &); + void active_changed (std::string const &); void reordered (Gtk::TreeModel::Path const &, Gtk::TreeModel::iterator const &, int *); bool button_press (GdkEventButton *); - void route_property_changed (const PBD::PropertyChange&, boost::weak_ptr); + void route_property_changed (const PBD::PropertyChange&, boost::weak_ptr); void handle_gui_changes (std::string const &, void *); + bool idle_update_mute_rec_solo_etc (); void update_rec_display (); void update_mute_display (); - void update_solo_display (bool); + void update_solo_display (); void update_solo_isolate_display (); void update_solo_safe_display (); + void update_input_active_display (); + void update_active_display (); void set_all_tracks_visibility (bool); void set_all_audio_midi_visibility (int, bool); void show_all_routes (); @@ -88,12 +110,10 @@ private: void show_all_miditracks (); void hide_all_miditracks (); void show_tracks_with_regions_at_playhead (); - - void display_drag_data_received ( - Glib::RefPtr const &, gint, gint, Gtk::SelectionData const &, guint, guint - ); - - void track_list_reorder (Gtk::TreeModel::Path const &, Gtk::TreeModel::iterator const & iter, int* new_order); + void selection_changed (); + + int plugin_setup (boost::shared_ptr, boost::shared_ptr, ARDOUR::Route::PluginSetupOptions); + bool selection_filter (Glib::RefPtr const &, Gtk::TreeModel::Path const &, bool); void name_edit (std::string const &, std::string const &); void solo_changed_so_update_mute (); @@ -103,42 +123,73 @@ private: add (text); add (visible); add (rec_state); + add (rec_safe); add (mute_state); add (solo_state); + add (solo_visible); + add (solo_lock_iso_visible); add (solo_isolate_state); add (solo_safe_state); add (is_track); add (tv); - add (route); + add (stripable); add (name_editable); + add (is_input_active); + add (is_midi); + add (no_vca); + add (active); } - - Gtk::TreeModelColumn text; + + Gtk::TreeModelColumn text; Gtk::TreeModelColumn visible; Gtk::TreeModelColumn rec_state; + Gtk::TreeModelColumn rec_safe; Gtk::TreeModelColumn mute_state; Gtk::TreeModelColumn solo_state; + /** true if the solo buttons are visible for this route, otherwise false */ + Gtk::TreeModelColumn solo_visible; + Gtk::TreeModelColumn solo_lock_iso_visible; Gtk::TreeModelColumn solo_isolate_state; Gtk::TreeModelColumn solo_safe_state; Gtk::TreeModelColumn is_track; Gtk::TreeModelColumn tv; - Gtk::TreeModelColumn > route; + Gtk::TreeModelColumn > stripable; Gtk::TreeModelColumn name_editable; + Gtk::TreeModelColumn is_input_active; + Gtk::TreeModelColumn is_midi; + Gtk::TreeModelColumn no_vca; // activatable + Gtk::TreeModelColumn active; }; Gtk::ScrolledWindow _scroller; - Gtkmm2ext::DnDTreeView > _display; + Gtk::TreeView _display; Glib::RefPtr _model; ModelColumns _columns; - + int _name_column; + int _visible_column; + int _active_column; + bool _ignore_reorder; + bool _ignore_selection_change; bool _no_redisplay; - bool _redisplay_does_not_sync_order_keys; - bool _redisplay_does_not_reset_order_keys; - + bool _adding_routes; + bool _route_deletion_in_progress; + bool _redisplay_on_resume; + volatile gint _redisplay_active; + volatile gint _queue_tv_update; + Gtk::Menu* _menu; + Gtk::Widget* old_focus; + Gtk::CellEditable* name_editable; + + bool key_press (GdkEventKey* ev); + bool focus_in (GdkEventFocus*); + bool focus_out (GdkEventFocus*); + bool enter_notify (GdkEventCrossing*); + bool leave_notify (GdkEventCrossing*); + void name_edit_started (Gtk::CellEditable*, const Glib::ustring&); - bool key_press (GdkEventKey* ev); + bool get_relevant_routes (boost::shared_ptr rl); }; #endif /* __ardour_gtk_editor_route_h__ */