Separate route list code from Editor into its own object, EditorRouteList. Hopefully makes things a bit better.
git-svn-id: svn://localhost/ardour2/branches/3.0@5302 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
236868761c
commit
5b97b13766
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 Paul Davis
|
||||
Copyright (C) 2000-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
|
||||
@ -36,6 +36,7 @@
|
||||
#include "pbd/error.h"
|
||||
#include "pbd/enumwriter.h"
|
||||
#include "pbd/memento_command.h"
|
||||
#include "pbd/unknown_type.h"
|
||||
|
||||
#include <glibmm/miscutils.h>
|
||||
#include <gtkmm/image.h>
|
||||
@ -97,6 +98,9 @@
|
||||
#include "editor_drag.h"
|
||||
#include "editor_group_tabs.h"
|
||||
#include "automation_time_axis.h"
|
||||
#include "editor_route_list.h"
|
||||
#include "midi_time_axis.h"
|
||||
#include "mixer_strip.h"
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
@ -298,9 +302,6 @@ Editor::Editor ()
|
||||
_show_measures = true;
|
||||
_show_waveforms_recording = true;
|
||||
show_gain_after_trim = false;
|
||||
route_redisplay_does_not_sync_order_keys = false;
|
||||
route_redisplay_does_not_reset_order_keys = false;
|
||||
no_route_list_redisplay = false;
|
||||
verbose_cursor_on = true;
|
||||
route_removal = false;
|
||||
show_automatic_regions_in_region_list = true;
|
||||
@ -314,7 +315,6 @@ Editor::Editor ()
|
||||
editor_ruler_menu = 0;
|
||||
no_ruler_shown_update = false;
|
||||
route_group_menu = 0;
|
||||
route_list_menu = 0;
|
||||
region_list_menu = 0;
|
||||
marker_menu = 0;
|
||||
start_end_marker_menu = 0;
|
||||
@ -531,51 +531,6 @@ Editor::Editor ()
|
||||
bottom_hbox.set_border_width (2);
|
||||
bottom_hbox.set_spacing (3);
|
||||
|
||||
|
||||
CellRendererPixbufToggle* rec_col_renderer = Gtk::manage( new CellRendererPixbufToggle() );
|
||||
|
||||
rec_col_renderer->set_active_pixbuf(::get_icon("record_normal_red"));
|
||||
rec_col_renderer->set_inactive_pixbuf(::get_icon("record_disabled_grey"));
|
||||
|
||||
rec_col_renderer->signal_toggled().connect(mem_fun(*this, &Editor::on_tv_rec_enable_toggled));
|
||||
|
||||
Gtk::TreeViewColumn* rec_state_column = Gtk::manage(new Gtk::TreeViewColumn("Rec", *rec_col_renderer));
|
||||
rec_state_column->add_attribute(rec_col_renderer->property_active(), route_display_columns.rec_enabled);
|
||||
rec_state_column->add_attribute(rec_col_renderer->property_visible(), route_display_columns.is_track);
|
||||
|
||||
route_display_model = ListStore::create(route_display_columns);
|
||||
route_list_display.set_model (route_display_model);
|
||||
|
||||
route_list_display.append_column (*rec_state_column);
|
||||
route_list_display.append_column (_("Show"), route_display_columns.visible);
|
||||
route_list_display.append_column (_("Name"), route_display_columns.text);
|
||||
|
||||
route_list_display.get_column (0)->set_data (X_("colnum"), GUINT_TO_POINTER(0));
|
||||
route_list_display.get_column (1)->set_data (X_("colnum"), GUINT_TO_POINTER(1));
|
||||
route_list_display.get_column (2)->set_data (X_("colnum"), GUINT_TO_POINTER(2));
|
||||
|
||||
route_list_display.set_headers_visible (true);
|
||||
route_list_display.set_name ("TrackListDisplay");
|
||||
route_list_display.get_selection()->set_mode (SELECTION_NONE);
|
||||
route_list_display.set_reorderable (true);
|
||||
route_list_display.set_rules_hint (true);
|
||||
route_list_display.set_size_request (100,-1);
|
||||
route_list_display.add_object_drag (route_display_columns.route.index(), "routes");
|
||||
|
||||
CellRendererToggle* route_list_visible_cell = dynamic_cast<CellRendererToggle*>(route_list_display.get_column_cell_renderer (1));
|
||||
|
||||
route_list_visible_cell->property_activatable() = true;
|
||||
route_list_visible_cell->property_radio() = false;
|
||||
|
||||
route_display_model->signal_row_deleted().connect (mem_fun (*this, &Editor::route_list_delete));
|
||||
route_display_model->signal_row_changed().connect (mem_fun (*this, &Editor::route_list_change));
|
||||
route_display_model->signal_rows_reordered().connect (mem_fun (*this, &Editor::route_list_reordered));
|
||||
|
||||
route_list_display.signal_button_press_event().connect (mem_fun (*this, &Editor::route_list_display_button_press), false);
|
||||
|
||||
route_list_scroller.add (route_list_display);
|
||||
route_list_scroller.set_policy (POLICY_NEVER, POLICY_AUTOMATIC);
|
||||
|
||||
group_model = ListStore::create(group_columns);
|
||||
route_group_display.set_model (group_model);
|
||||
|
||||
@ -648,6 +603,7 @@ Editor::Editor ()
|
||||
|
||||
group_model->signal_row_changed().connect (mem_fun (*this, &Editor::route_group_row_change));
|
||||
|
||||
_route_list = new EditorRouteList (this);
|
||||
|
||||
route_group_display.set_name ("EditGroupList");
|
||||
route_group_display.get_selection()->set_mode (SELECTION_SINGLE);
|
||||
@ -792,7 +748,7 @@ Editor::Editor ()
|
||||
the_notebook.append_page (region_list_scroller, *nlabel);
|
||||
nlabel = manage (new Label (_("Tracks/Busses")));
|
||||
nlabel->set_angle (-90);
|
||||
the_notebook.append_page (route_list_scroller, *nlabel);
|
||||
the_notebook.append_page (_route_list->widget (), *nlabel);
|
||||
nlabel = manage (new Label (_("Snapshots")));
|
||||
nlabel->set_angle (-90);
|
||||
the_notebook.append_page (snapshot_display_scroller, *nlabel);
|
||||
@ -916,7 +872,6 @@ Editor::Editor ()
|
||||
BasicUI::AccessAction.connect (mem_fun (*this, &Editor::access_action));
|
||||
|
||||
Config->ParameterChanged.connect (mem_fun (*this, &Editor::parameter_changed));
|
||||
Route::SyncOrderKeys.connect (mem_fun (*this, &Editor::sync_order_keys));
|
||||
|
||||
_last_normalization_value = 0;
|
||||
|
||||
@ -938,25 +893,11 @@ Editor::~Editor()
|
||||
}
|
||||
#endif
|
||||
|
||||
delete _route_list;
|
||||
delete track_canvas;
|
||||
delete _drag;
|
||||
}
|
||||
|
||||
void
|
||||
Editor::on_tv_rec_enable_toggled(const Glib::ustring& path_string){
|
||||
|
||||
// Get the model row that has been toggled.
|
||||
Gtk::TreeModel::Row row = *route_display_model->get_iter(Gtk::TreeModel::Path(path_string));
|
||||
|
||||
TimeAxisView *tv = row[route_display_columns.tv];
|
||||
AudioTimeAxisView *atv = dynamic_cast<AudioTimeAxisView*> (tv);
|
||||
|
||||
if(atv != 0 && atv->is_audio_track()){
|
||||
atv->get_diskstream()->set_record_enabled(!atv->get_diskstream()->record_enabled());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
Editor::add_toplevel_controls (Container& cont)
|
||||
{
|
||||
@ -1434,7 +1375,7 @@ Editor::connect_to_session (Session *t)
|
||||
//tempo_map_changed (Change (0));
|
||||
session->tempo_map().apply_with_metrics (*this, &Editor::draw_metric_marks);
|
||||
|
||||
initial_route_list_display ();
|
||||
_route_list->initial_display ();
|
||||
|
||||
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
|
||||
(static_cast<TimeAxisView*>(*i))->set_samples_per_unit (frames_per_unit);
|
||||
@ -1442,30 +1383,6 @@ Editor::connect_to_session (Session *t)
|
||||
|
||||
start_scrolling ();
|
||||
|
||||
/* don't show master bus in a new session */
|
||||
|
||||
if (ARDOUR_UI::instance()->session_is_new ()) {
|
||||
|
||||
TreeModel::Children rows = route_display_model->children();
|
||||
TreeModel::Children::iterator i;
|
||||
|
||||
no_route_list_redisplay = true;
|
||||
|
||||
for (i = rows.begin(); i != rows.end(); ++i) {
|
||||
TimeAxisView *tv = (*i)[route_display_columns.tv];
|
||||
RouteTimeAxisView *rtv;
|
||||
|
||||
if ((rtv = dynamic_cast<RouteTimeAxisView*>(tv)) != 0) {
|
||||
if (rtv->route()->is_master()) {
|
||||
route_list_display.get_selection()->unselect (i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
no_route_list_redisplay = false;
|
||||
redisplay_route_list ();
|
||||
}
|
||||
|
||||
switch (snap_type) {
|
||||
case SnapToRegionStart:
|
||||
case SnapToRegionEnd:
|
||||
@ -4697,7 +4614,8 @@ void
|
||||
Editor::use_visual_state (VisualState& vs)
|
||||
{
|
||||
no_save_visual = true;
|
||||
no_route_list_redisplay = true;
|
||||
|
||||
_route_list->suspend_redisplay ();
|
||||
|
||||
vertical_adjustment.set_value (vs.y_position);
|
||||
|
||||
@ -4717,11 +4635,10 @@ Editor::use_visual_state (VisualState& vs)
|
||||
|
||||
|
||||
if (!vs.track_states.empty()) {
|
||||
update_route_visibility ();
|
||||
_route_list->update_visibility ();
|
||||
}
|
||||
|
||||
no_route_list_redisplay = false;
|
||||
redisplay_route_list ();
|
||||
_route_list->resume_redisplay ();
|
||||
|
||||
no_save_visual = false;
|
||||
}
|
||||
@ -5219,7 +5136,7 @@ Editor::first_idle ()
|
||||
}
|
||||
|
||||
// first idle adds route children (automation tracks), so we need to redisplay here
|
||||
redisplay_route_list();
|
||||
_route_list->redisplay ();
|
||||
|
||||
delete dialog;
|
||||
|
||||
@ -5328,3 +5245,139 @@ Editor::axis_views_from_routes (list<Route*> r) const
|
||||
return t;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
Editor::handle_new_route (RouteList& routes)
|
||||
{
|
||||
ENSURE_GUI_THREAD (bind (mem_fun (*this, &Editor::handle_new_route), routes));
|
||||
|
||||
RouteTimeAxisView *rtv;
|
||||
list<RouteTimeAxisView*> new_views;
|
||||
|
||||
for (RouteList::iterator x = routes.begin(); x != routes.end(); ++x) {
|
||||
boost::shared_ptr<Route> route = (*x);
|
||||
|
||||
if (route->is_hidden()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
DataType dt = route->input()->default_type();
|
||||
|
||||
if (dt == ARDOUR::DataType::AUDIO) {
|
||||
rtv = new AudioTimeAxisView (*this, *session, route, *track_canvas);
|
||||
} else if (dt == ARDOUR::DataType::MIDI) {
|
||||
rtv = new MidiTimeAxisView (*this, *session, route, *track_canvas);
|
||||
} else {
|
||||
throw unknown_type();
|
||||
}
|
||||
|
||||
new_views.push_back (rtv);
|
||||
track_views.push_back (rtv);
|
||||
|
||||
rtv->effective_gain_display ();
|
||||
|
||||
rtv->view()->RegionViewAdded.connect (mem_fun (*this, &Editor::region_view_added));
|
||||
rtv->view()->HeightChanged.connect (mem_fun (*this, &Editor::streamview_height_changed));
|
||||
|
||||
rtv->GoingAway.connect (bind (mem_fun(*this, &Editor::remove_route), rtv));
|
||||
}
|
||||
|
||||
_route_list->routes_added (new_views);
|
||||
|
||||
if (show_editor_mixer_when_tracks_arrive) {
|
||||
show_editor_mixer (true);
|
||||
}
|
||||
|
||||
editor_list_button.set_sensitive (true);
|
||||
|
||||
_summary->set_dirty ();
|
||||
}
|
||||
|
||||
void
|
||||
Editor::remove_route (TimeAxisView *tv)
|
||||
{
|
||||
ENSURE_GUI_THREAD(bind (mem_fun(*this, &Editor::remove_route), tv));
|
||||
|
||||
TrackViewList::iterator i;
|
||||
boost::shared_ptr<Route> route;
|
||||
TimeAxisView* next_tv;
|
||||
|
||||
if (tv == entered_track) {
|
||||
entered_track = 0;
|
||||
}
|
||||
|
||||
if ((i = find (track_views.begin(), track_views.end(), tv)) != track_views.end()) {
|
||||
|
||||
i = track_views.erase (i);
|
||||
|
||||
if (track_views.empty()) {
|
||||
next_tv = 0;
|
||||
} else if (i == track_views.end()) {
|
||||
next_tv = track_views.front();
|
||||
} else {
|
||||
next_tv = (*i);
|
||||
}
|
||||
}
|
||||
|
||||
if (current_mixer_strip && current_mixer_strip->route() == route) {
|
||||
|
||||
if (next_tv) {
|
||||
set_selected_mixer_strip (*next_tv);
|
||||
} else {
|
||||
/* make the editor mixer strip go away setting the
|
||||
* button to inactive (which also unticks the menu option)
|
||||
*/
|
||||
|
||||
ActionManager::uncheck_toggleaction ("<Actions>/Editor/show-editor-mixer");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Editor::hide_track_in_display (TimeAxisView& tv, bool temponly)
|
||||
{
|
||||
RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (&tv);
|
||||
|
||||
if (rtv && current_mixer_strip && (rtv->route() == current_mixer_strip->route())) {
|
||||
// this will hide the mixer strip
|
||||
set_selected_mixer_strip (tv);
|
||||
}
|
||||
|
||||
_route_list->hide_track_in_display (tv);
|
||||
}
|
||||
|
||||
bool
|
||||
Editor::sync_track_view_list_and_route_list ()
|
||||
{
|
||||
track_views = TrackSelection (_route_list->views ());
|
||||
|
||||
_summary->set_dirty ();
|
||||
_group_tabs->set_dirty ();
|
||||
|
||||
return false; // do not call again (until needed)
|
||||
}
|
||||
|
||||
void
|
||||
Editor::foreach_time_axis_view (sigc::slot<void,TimeAxisView&> theslot)
|
||||
{
|
||||
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
|
||||
theslot (**i);
|
||||
}
|
||||
}
|
||||
|
||||
RouteTimeAxisView*
|
||||
Editor::get_route_view_by_id (PBD::ID& id)
|
||||
{
|
||||
RouteTimeAxisView* v;
|
||||
|
||||
for(TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
|
||||
if((v = dynamic_cast<RouteTimeAxisView*>(*i)) != 0) {
|
||||
if(v->route()->id() == id) {
|
||||
return v;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -116,6 +116,7 @@ class TimeFXDialog;
|
||||
class TimeSelection;
|
||||
class TrackSelection;
|
||||
class EditorGroupTabs;
|
||||
class EditorRouteList;
|
||||
|
||||
/* <CMT Additions> */
|
||||
class ImageFrameView;
|
||||
@ -307,7 +308,6 @@ class Editor : public PublicEditor
|
||||
/* stuff that AudioTimeAxisView and related classes use */
|
||||
|
||||
PlaylistSelector& playlist_selector() const;
|
||||
void route_name_changed (TimeAxisView *);
|
||||
void clear_playlist (boost::shared_ptr<ARDOUR::Playlist>);
|
||||
|
||||
void new_playlists (TimeAxisView* v);
|
||||
@ -324,7 +324,6 @@ class Editor : public PublicEditor
|
||||
void show_editor_list (bool yn);
|
||||
void set_selected_mixer_strip (TimeAxisView&);
|
||||
void hide_track_in_display (TimeAxisView& tv, bool temporary = false);
|
||||
void show_track_in_display (TimeAxisView& tv);
|
||||
|
||||
/* nudge is initiated by transport controls owned by ARDOUR_UI */
|
||||
|
||||
@ -374,8 +373,6 @@ class Editor : public PublicEditor
|
||||
void scroll_tracks_down_line ();
|
||||
void scroll_tracks_up_line ();
|
||||
|
||||
void move_selected_tracks (bool up);
|
||||
|
||||
bool new_regionviews_display_gain () { return _new_regionviews_show_envelope; }
|
||||
void prepare_for_cleanup ();
|
||||
void finish_cleanup ();
|
||||
@ -402,8 +399,6 @@ class Editor : public PublicEditor
|
||||
void goto_visual_state (uint32_t);
|
||||
void save_visual_state (uint32_t);
|
||||
|
||||
void update_rec_display ();
|
||||
|
||||
protected:
|
||||
void map_transport_state ();
|
||||
void map_position_change (nframes64_t);
|
||||
@ -1394,11 +1389,8 @@ class Editor : public PublicEditor
|
||||
/// Snap threshold in pixels
|
||||
double snap_threshold;
|
||||
|
||||
void handle_gui_changes (const std::string &, void *);
|
||||
bool ignore_gui_changes;
|
||||
|
||||
void hide_all_tracks (bool with_select);
|
||||
|
||||
Drag* _drag;
|
||||
|
||||
void break_drag ();
|
||||
@ -1768,80 +1760,17 @@ public:
|
||||
|
||||
ArdourCanvas::SimpleRect *zoom_rect;
|
||||
void reposition_zoom_rect (nframes64_t start, nframes64_t end);
|
||||
|
||||
EditorRouteList* _route_list;
|
||||
|
||||
/* diskstream/route display management */
|
||||
Glib::RefPtr<Gdk::Pixbuf> rec_enabled_icon;
|
||||
Glib::RefPtr<Gdk::Pixbuf> rec_disabled_icon;
|
||||
|
||||
struct RouteDisplayModelColumns : public Gtk::TreeModel::ColumnRecord {
|
||||
RouteDisplayModelColumns() {
|
||||
add (text);
|
||||
add (visible);
|
||||
add (rec_enabled);
|
||||
add (temporary_visible);
|
||||
add (is_track);
|
||||
add (tv);
|
||||
add (route);
|
||||
}
|
||||
Gtk::TreeModelColumn<Glib::ustring> text;
|
||||
Gtk::TreeModelColumn<bool> visible;
|
||||
Gtk::TreeModelColumn<bool> rec_enabled;
|
||||
Gtk::TreeModelColumn<bool> temporary_visible;
|
||||
Gtk::TreeModelColumn<bool> is_track;
|
||||
Gtk::TreeModelColumn<TimeAxisView*> tv;
|
||||
Gtk::TreeModelColumn<boost::shared_ptr<ARDOUR::Route> > route;
|
||||
};
|
||||
|
||||
void on_tv_rec_enable_toggled(const Glib::ustring& path_string);
|
||||
|
||||
RouteDisplayModelColumns route_display_columns;
|
||||
Glib::RefPtr<Gtk::ListStore> route_display_model;
|
||||
Glib::RefPtr<Gtk::TreeSelection> route_display_selection;
|
||||
|
||||
Gtkmm2ext::DnDTreeView<boost::shared_ptr<ARDOUR::Route> > route_list_display;
|
||||
Gtk::ScrolledWindow route_list_scroller;
|
||||
Gtk::Menu* route_list_menu;
|
||||
|
||||
void update_route_visibility ();
|
||||
|
||||
void sync_order_keys (const char*);
|
||||
bool route_redisplay_does_not_sync_order_keys;
|
||||
bool route_redisplay_does_not_reset_order_keys;
|
||||
|
||||
bool route_list_display_button_press (GdkEventButton*);
|
||||
void route_list_display_drag_data_received (const Glib::RefPtr<Gdk::DragContext>& context,
|
||||
gint x,
|
||||
gint y,
|
||||
const Gtk::SelectionData& data,
|
||||
guint info,
|
||||
guint time);
|
||||
|
||||
bool route_list_selection_filter (const Glib::RefPtr<Gtk::TreeModel>& model, const Gtk::TreeModel::Path& path, bool yn);
|
||||
|
||||
void route_list_change (const Gtk::TreeModel::Path&,const Gtk::TreeModel::iterator&);
|
||||
void route_list_delete (const Gtk::TreeModel::Path&);
|
||||
void track_list_reorder (const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator& iter, int* new_order);
|
||||
|
||||
void initial_route_list_display ();
|
||||
void redisplay_route_list();
|
||||
void route_list_reordered (const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator& iter, int* what);
|
||||
bool ignore_route_list_reorder;
|
||||
bool no_route_list_redisplay;
|
||||
bool sync_track_view_list_and_route_list ();
|
||||
|
||||
void build_route_list_menu ();
|
||||
void show_route_list_menu ();
|
||||
|
||||
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 set_all_tracks_visibility (bool yn);
|
||||
void set_all_audio_visibility (int type, bool yn);
|
||||
|
||||
/* edit group management */
|
||||
|
||||
struct GroupListModelColumns : public Gtk::TreeModel::ColumnRecord {
|
||||
@ -2297,6 +2226,8 @@ public:
|
||||
|
||||
friend class EditorSummary;
|
||||
friend class EditorGroupTabs;
|
||||
|
||||
friend class EditorRouteList;
|
||||
};
|
||||
|
||||
#endif /* __ardour_editor_h__ */
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "i18n.h"
|
||||
#include "audio_time_axis.h"
|
||||
#include "editor_group_tabs.h"
|
||||
#include "editor_route_list.h"
|
||||
|
||||
using namespace Gtk;
|
||||
using namespace Glib;
|
||||
@ -312,9 +313,9 @@ Editor::register_actions ()
|
||||
act = ActionManager::register_action (editor_actions, "toggle-zoom", _("Toggle Zoom State"), mem_fun(*this, &Editor::swap_visual_state));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_action (editor_actions, "move-selected-tracks-up", _("Move Selected Tracks Up"), bind (mem_fun(*this, &Editor::move_selected_tracks), true));
|
||||
act = ActionManager::register_action (editor_actions, "move-selected-tracks-up", _("Move Selected Tracks Up"), bind (mem_fun(*_route_list, &EditorRouteList::move_selected_tracks), true));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
act = ActionManager::register_action (editor_actions, "move-selected-tracks-down", _("Move Selected Tracks Down"), bind (mem_fun(*this, &Editor::move_selected_tracks), false));
|
||||
act = ActionManager::register_action (editor_actions, "move-selected-tracks-down", _("Move Selected Tracks Down"), bind (mem_fun(*_route_list, &EditorRouteList::move_selected_tracks), false));
|
||||
ActionManager::session_sensitive_actions.push_back (act);
|
||||
|
||||
act = ActionManager::register_action (editor_actions, "scroll-tracks-up", _("Scroll Tracks Up"), mem_fun(*this, &Editor::scroll_tracks_up));
|
||||
|
@ -42,6 +42,7 @@
|
||||
#include "editor_drag.h"
|
||||
#include "region_view.h"
|
||||
#include "editor_group_tabs.h"
|
||||
#include "editor_route_list.h"
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
@ -373,20 +374,15 @@ Editor::track_canvas_size_allocated ()
|
||||
void
|
||||
Editor::controls_layout_size_request (Requisition* req)
|
||||
{
|
||||
TreeModel::Children rows = route_display_model->children();
|
||||
TreeModel::Children::iterator i;
|
||||
double pos;
|
||||
bool changed = false;
|
||||
|
||||
for (pos = 0, i = rows.begin(); i != rows.end(); ++i) {
|
||||
TimeAxisView *tv = (*i)[route_display_columns.tv];
|
||||
if (tv != 0) {
|
||||
pos += tv->effective_height ();
|
||||
tv->clip_to_viewport ();
|
||||
}
|
||||
double pos = 0;
|
||||
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
|
||||
pos += (*i)->effective_height ();
|
||||
(*i)->clip_to_viewport ();
|
||||
}
|
||||
|
||||
gint height = min ((gint) pos, (gint) (physical_screen_height - 600));
|
||||
|
||||
bool changed = false;
|
||||
|
||||
gint w = edit_controls_vbox.get_width();
|
||||
if (_group_tabs->is_mapped()) {
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "editor_group_tabs.h"
|
||||
#include "route_group_dialog.h"
|
||||
#include "route_time_axis.h"
|
||||
#include "editor_route_list.h"
|
||||
|
||||
#include "ardour/route.h"
|
||||
|
||||
@ -371,7 +372,7 @@ Editor::route_group_row_change (const Gtk::TreeModel::Path& path,const Gtk::Tree
|
||||
if ((*iter)[group_columns.is_visible]) {
|
||||
for (TrackViewList::iterator j = track_views.begin(); j != track_views.end(); ++j) {
|
||||
if ((*j)->route_group() == group) {
|
||||
show_track_in_display (**j);
|
||||
_route_list->show_track_in_display (**j);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "selection.h"
|
||||
#include "audio_time_axis.h"
|
||||
#include "actions.h"
|
||||
#include "editor_route_list.h"
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
@ -363,22 +364,20 @@ Editor::session_going_away ()
|
||||
|
||||
/* hide all tracks */
|
||||
|
||||
hide_all_tracks (false);
|
||||
_route_list->hide_all_tracks (false);
|
||||
|
||||
/* rip everything out of the list displays */
|
||||
|
||||
region_list_display.set_model (Glib::RefPtr<Gtk::TreeStore>(0));
|
||||
route_list_display.set_model (Glib::RefPtr<Gtk::TreeStore>(0));
|
||||
_route_list->clear ();
|
||||
named_selection_display.set_model (Glib::RefPtr<Gtk::TreeStore>(0));
|
||||
route_group_display.set_model (Glib::RefPtr<Gtk::TreeStore>(0));
|
||||
|
||||
region_list_model->clear ();
|
||||
route_display_model->clear ();
|
||||
named_selection_model->clear ();
|
||||
group_model->clear ();
|
||||
|
||||
region_list_display.set_model (region_list_model);
|
||||
route_list_display.set_model (route_display_model);
|
||||
named_selection_display.set_model (named_selection_model);
|
||||
route_group_display.set_model (group_model);
|
||||
|
||||
|
@ -77,6 +77,7 @@
|
||||
#include "utils.h"
|
||||
#include "editor_drag.h"
|
||||
#include "strip_silence_dialog.h"
|
||||
#include "editor_route_list.h"
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
@ -1743,8 +1744,8 @@ Editor::temporal_zoom_region (bool both_axes)
|
||||
}
|
||||
|
||||
/* hide irrelevant tracks */
|
||||
|
||||
no_route_list_redisplay = true;
|
||||
|
||||
_route_list->suspend_redisplay ();
|
||||
|
||||
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
|
||||
if (find (tracks.begin(), tracks.end(), (*i)) == tracks.end()) {
|
||||
@ -1752,8 +1753,7 @@ Editor::temporal_zoom_region (bool both_axes)
|
||||
}
|
||||
}
|
||||
|
||||
no_route_list_redisplay = false;
|
||||
redisplay_route_list ();
|
||||
_route_list->resume_redisplay ();
|
||||
|
||||
vertical_adjustment.set_value (0.0);
|
||||
no_save_visual = false;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -218,7 +218,6 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
|
||||
virtual Editing::ZoomFocus get_zoom_focus () const = 0;
|
||||
virtual gdouble get_current_zoom () const = 0;
|
||||
virtual PlaylistSelector& playlist_selector() const = 0;
|
||||
virtual void route_name_changed (TimeAxisView *) = 0;
|
||||
virtual void clear_playlist (boost::shared_ptr<ARDOUR::Playlist>) = 0;
|
||||
virtual void new_playlists (TimeAxisView*) = 0;
|
||||
virtual void copy_playlists (TimeAxisView*) = 0;
|
||||
@ -227,7 +226,6 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
|
||||
virtual void set_selected_track (TimeAxisView&, Selection::Operation op = Selection::Set, bool no_remove = false) = 0;
|
||||
virtual void set_selected_mixer_strip (TimeAxisView&) = 0;
|
||||
virtual void hide_track_in_display (TimeAxisView& tv, bool temporary = false) = 0;
|
||||
virtual void show_track_in_display (TimeAxisView& tv) = 0;
|
||||
|
||||
/** Set whether the editor should follow the playhead.
|
||||
* @param yn true to follow playhead, otherwise false.
|
||||
@ -324,8 +322,6 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
|
||||
virtual bool canvas_markerview_end_handle_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*) = 0;
|
||||
#endif
|
||||
|
||||
virtual void update_rec_display () = 0;
|
||||
|
||||
static const int window_border_width;
|
||||
static const int container_border_width;
|
||||
static const int vertical_spacing;
|
||||
|
@ -363,7 +363,6 @@ RouteTimeAxisView::label_view ()
|
||||
void
|
||||
RouteTimeAxisView::route_name_changed ()
|
||||
{
|
||||
_editor.route_name_changed (this);
|
||||
label_view ();
|
||||
}
|
||||
|
||||
|
@ -195,7 +195,6 @@ RouteUI::set_route (boost::shared_ptr<Route> rp)
|
||||
boost::shared_ptr<Track> t = boost::dynamic_pointer_cast<Track>(_route);
|
||||
|
||||
connections.push_back (t->diskstream()->RecordEnableChanged.connect (mem_fun (*this, &RouteUI::route_rec_enable_changed)));
|
||||
connections.push_back (t->diskstream()->RecordEnableChanged.connect (mem_fun (PublicEditor::instance(), &PublicEditor::update_rec_display)));
|
||||
connections.push_back (_session.RecordStateChanged.connect (mem_fun (*this, &RouteUI::session_rec_enable_changed)));
|
||||
|
||||
rec_enable_button->show();
|
||||
|
@ -3,6 +3,12 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
TrackSelection::TrackSelection (list<TimeAxisView*> const &t)
|
||||
: list<TimeAxisView*> (t)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
list<TimeAxisView*>
|
||||
TrackSelection::add (list<TimeAxisView*> const & t)
|
||||
{
|
||||
|
@ -27,6 +27,9 @@ class TimeAxisView;
|
||||
class TrackSelection : public std::list<TimeAxisView*>
|
||||
{
|
||||
public:
|
||||
TrackSelection () {}
|
||||
|
||||
TrackSelection (std::list<TimeAxisView*> const &);
|
||||
std::list<TimeAxisView*> add (std::list<TimeAxisView*> const &);
|
||||
bool contains (TimeAxisView const *) const;
|
||||
};
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <gtkmm/drawingarea.h>
|
||||
#include <gtkmm/adjustment.h>
|
||||
#include <gtkmm/widget.h>
|
||||
#include <gtkmm/cellrenderer.h>
|
||||
#include <gdkmm.h>
|
||||
|
||||
using namespace Gtk;
|
||||
|
Loading…
Reference in New Issue
Block a user