X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_routes.h;h=6297f906bbe806921364a36982e7b35fe89a4e2e;hb=b691ba816f3080d0f8029beac6d0ff4c4c3a1900;hp=b493b0a90597217e4308d396e0d0b300e6338b0e;hpb=b233455b3fd00789e4f8a951f9fe205de92f94e2;p=ardour.git diff --git a/gtk2_ardour/editor_routes.h b/gtk2_ardour/editor_routes.h index b493b0a905..6297f906bb 100644 --- a/gtk2_ardour/editor_routes.h +++ b/gtk2_ardour/editor_routes.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2009 Paul Davis + Copyright (C) 2009 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 @@ -17,85 +17,138 @@ */ -class EditorRoutes : public EditorComponent +#ifndef __ardour_gtk_editor_route_h__ +#define __ardour_gtk_editor_route_h__ + +#include "pbd/signals.h" +#include "editor_component.h" + +class EditorRoutes : public EditorComponent, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr { public: EditorRoutes (Editor *); + void set_session (ARDOUR::Session *); + Gtk::Widget& widget () { return _scroller; } void move_selected_tracks (bool); - void initial_display (); void show_track_in_display (TimeAxisView &); + void suspend_redisplay () { _no_redisplay = true; } + void resume_redisplay () { _no_redisplay = false; redisplay (); } + void redisplay (); void update_visibility (); void routes_added (std::list routes); + 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 &); private: - void on_tv_rec_enable_toggled (Glib::ustring const &); + void initial_display (); + void on_tv_rec_enable_changed (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 changed (Gtk::TreeModel::Path const &, Gtk::TreeModel::iterator const &); + void visible_changed (std::string const &); void reordered (Gtk::TreeModel::Path const &, Gtk::TreeModel::iterator const &, int *); bool button_press (GdkEventButton *); - void route_name_changed (boost::weak_ptr); - void sync_order_keys (char const *); - void route_removed (TimeAxisView *); + void route_property_changed (const PBD::PropertyChange&, boost::weak_ptr); void handle_gui_changes (std::string const &, void *); void update_rec_display (); + void update_mute_display (); + void update_solo_display (bool); + void update_solo_isolate_display (); + void update_solo_safe_display (); void set_all_tracks_visibility (bool); - void set_all_audio_visibility (int, bool); + void set_all_audio_midi_visibility (int, bool); void show_all_routes (); void hide_all_routes (); void show_all_audiotracks (); void hide_all_audiotracks (); void show_all_audiobus (); void hide_all_audiobus (); + 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); 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 (); struct ModelColumns : public Gtk::TreeModel::ColumnRecord { - ModelColumns() { + ModelColumns() { add (text); add (visible); - add (rec_enabled); + add (rec_state); + add (mute_state); + add (solo_state); + add (solo_isolate_state); + add (solo_safe_state); add (is_track); add (tv); add (route); + add (name_editable); } - Gtk::TreeModelColumn text; + + Gtk::TreeModelColumn text; Gtk::TreeModelColumn visible; - Gtk::TreeModelColumn rec_enabled; + Gtk::TreeModelColumn rec_state; + Gtk::TreeModelColumn mute_state; + Gtk::TreeModelColumn solo_state; + Gtk::TreeModelColumn solo_isolate_state; + Gtk::TreeModelColumn solo_safe_state; Gtk::TreeModelColumn is_track; Gtk::TreeModelColumn tv; Gtk::TreeModelColumn > route; + Gtk::TreeModelColumn name_editable; }; Gtk::ScrolledWindow _scroller; - Gtkmm2ext::DnDTreeView > _display; + Gtkmm2ext::DnDTreeView > _display; Glib::RefPtr _model; ModelColumns _columns; + bool _ignore_reorder; bool _no_redisplay; bool _redisplay_does_not_sync_order_keys; bool _redisplay_does_not_reset_order_keys; + Gtk::Menu* _menu; + Gtk::Widget* old_focus; + uint32_t selection_countdown; + 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 get_relevant_routes (boost::shared_ptr rl); }; + +#endif /* __ardour_gtk_editor_route_h__ */