#include <gtkmm2ext/window_title.h>
#include <gtkmm2ext/choice.h>
-#include <ardour/audio_track.h>
#include <ardour/audio_diskstream.h>
-#include <ardour/plugin_manager.h>
-#include <ardour/location.h>
+#include <ardour/audio_track.h>
#include <ardour/audioplaylist.h>
#include <ardour/audioregion.h>
+#include <ardour/location.h>
#include <ardour/midi_region.h>
-#include <ardour/session_route.h>
+#include <ardour/plugin_manager.h>
+#include <ardour/profile.h>
+#include <ardour/route_group.h>
#include <ardour/session_directory.h>
+#include <ardour/session_route.h>
#include <ardour/session_state_utils.h>
#include <ardour/tempo.h>
#include <ardour/utils.h>
-#include <ardour/profile.h>
#include <control_protocol/control_protocol.h>
#include "actions.h"
#include "tempo_lines.h"
#include "analysis_window.h"
+#include "bundle_manager.h"
+#include "global_port_matrix.h"
#include "i18n.h"
select_new_marker = false;
zoomed_to_region = false;
rhythm_ferret = 0;
+ _bundle_manager = 0;
+ for (ARDOUR::DataType::iterator i = ARDOUR::DataType::begin(); i != ARDOUR::DataType::end(); ++i) {
+ _global_port_matrix[*i] = 0;
+ }
allow_vertical_scroll = false;
no_save_visual = false;
need_resize_line = false;
selection->TimeChanged.connect (mem_fun(*this, &Editor::time_selection_changed));
selection->TracksChanged.connect (mem_fun(*this, &Editor::track_selection_changed));
- selection->RegionsChanged.connect (mem_fun(*this, &Editor::region_selection_changed));
+ editor_regions_selection_changed_connection = selection->RegionsChanged.connect (mem_fun(*this, &Editor::region_selection_changed));
selection->PointsChanged.connect (mem_fun(*this, &Editor::point_selection_changed));
selection->MarkersChanged.connect (mem_fun(*this, &Editor::marker_selection_changed));
region_list_display.append_column (_("Used"), region_list_columns.used);
region_list_display.append_column (_("Path"), region_list_columns.path);
region_list_display.set_headers_visible (true);
- region_list_display.set_grid_lines (TREE_VIEW_GRID_LINES_BOTH);
+ //region_list_display.set_grid_lines (TREE_VIEW_GRID_LINES_BOTH);
CellRendererText* region_name_cell = dynamic_cast<CellRendererText*>(region_list_display.get_column_cell_renderer (0));
region_name_cell->property_editable() = true;
region_list_display.signal_key_release_event().connect (mem_fun(*this, &Editor::region_list_display_key_release));
region_list_display.signal_button_press_event().connect (mem_fun(*this, &Editor::region_list_display_button_press), false);
region_list_display.signal_button_release_event().connect (mem_fun(*this, &Editor::region_list_display_button_release));
- region_list_display.get_selection()->signal_changed().connect (mem_fun(*this, &Editor::region_list_selection_changed));
+ region_list_change_connection = region_list_display.get_selection()->signal_changed().connect (mem_fun(*this, &Editor::region_list_selection_changed));
// region_list_display.signal_popup_menu().connect (bind (mem_fun (*this, &Editor::show_region_list_display_context_menu), 1, 0));
//ARDOUR_UI::instance()->secondary_clock.mode_changed.connect (mem_fun(*this, &Editor::redisplay_regions));
-TimeAxisView *
+/** @param y y offset from the top of all trackviews.
+ * @return pair: TimeAxisView that y is over, layer index.
+ * TimeAxisView may be 0. Layer index is the layer number if the TimeAxisView is valid and is
+ * in stacked region display mode, otherwise 0.
+ */
+std::pair<TimeAxisView *, layer_t>
Editor::trackview_by_y_position (double y)
{
for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
- TimeAxisView *tv;
-
- if ((tv = (*iter)->covers_y_position (y)) != 0) {
- return tv;
+ std::pair<TimeAxisView*, int> const r = (*iter)->covers_y_position (y);
+ if (r.first) {
+ return r;
}
}
- return 0;
+ return std::make_pair ( (TimeAxisView *) 0, 0);
}
void
}
}
-void Editor::midi_sound_notes_toggled ()
-{
- cerr << "toggle sound notes" << endl;
-}
-
void
Editor::setup_midi_toolbar ()
{
midi_sound_notes.set_relief(Gtk::RELIEF_NONE);
ARDOUR_UI::instance()->tooltips().set_tip (midi_sound_notes, _("Sound Notes"));
midi_sound_notes.unset_flags (CAN_FOCUS);
- midi_sound_notes.signal_toggled().connect (mem_fun(*this,
- &Editor::midi_sound_notes_toggled));
/* Panic */
*selection = *state->selection;
time_selection_changed ();
- region_selection_changed ();
+ region_selection_changed ();
/* XXX other selection change handlers? */
}
struct EditorOrderTimeAxisSorter {
bool operator() (const TimeAxisView* a, const TimeAxisView* b) const {
- return a->order < b->order;
+ return a->order () < b->order ();
}
};
rhythm_ferret->present ();
}
+void
+Editor::show_bundle_manager ()
+{
+ if (_bundle_manager == 0) {
+ _bundle_manager = new BundleManager (*session);
+ }
+
+ _bundle_manager->show ();
+}
+
+void
+Editor::show_global_port_matrix (ARDOUR::DataType t)
+{
+ if (_global_port_matrix[t] == 0) {
+ _global_port_matrix[t] = new GlobalPortMatrixWindow (*session, t);
+ }
+
+ _global_port_matrix[t]->show ();
+}
+
void
Editor::first_idle ()
{