#include "gui_thread.h"
#include "mixer_group_tabs.h"
#include "timers.h"
+#include "ui_config.h"
#include "i18n.h"
, in_group_row_change (false)
, track_menu (0)
, _monitor_section (0)
- , _strip_width (ARDOUR_UI::config()->get_default_narrow_ms() ? Narrow : Wide)
+ , _plugin_selector (0)
+ , _strip_width (UIConfiguration::instance().get_default_narrow_ms() ? Narrow : Wide)
, ignore_reorder (false)
, _in_group_rebuild_or_clear (false)
, _route_deletion_in_progress (false)
group_display.set_reorderable (true);
group_display.set_headers_visible (true);
group_display.set_rules_hint (true);
+ group_display.set_can_focus(false);
/* name is directly editable */
if (_monitor_section) {
delete _monitor_section;
}
+ delete _plugin_selector;
}
void
strip = new MixerStrip (*this, _session, route);
strips.push_back (strip);
- ARDOUR_UI::config()->get_default_narrow_ms() ? _strip_width = Narrow : _strip_width = Wide;
+ UIConfiguration::instance().get_default_narrow_ms() ? _strip_width = Narrow : _strip_width = Wide;
if (strip->width_owner() != strip) {
strip->set_width_enum (_strip_width, this);
void
Mixer_UI::follow_editor_selection ()
{
- if (!ARDOUR_UI::config()->get_link_editor_and_mixer_selection() || _following_editor_selection) {
+ if (_following_editor_selection) {
return;
}
/* primary-click: toggle selection state of strip */
if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
_selection.remove (strip);
- }
+ } else if (_selection.routes.size() > 1) {
+ /* de-select others */
+ _selection.set (strip);
+ }
} else {
if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
_selection.add (strip);
if (_visible) {
show_window();
-
- /* Bit of a hack; if we're here, we're opening the mixer because of our
- instant XML state having a show-mixer property. Fix up the corresponding
- action state.
- */
- ActionManager::check_toggleaction ("<Actions>/Common/toggle-mixer");
}
start_updating ();
void
-Mixer_UI::set_all_audio_visibility (int tracks, bool yn)
+Mixer_UI::set_all_audio_midi_visibility (int tracks, bool yn)
{
TreeModel::Children rows = track_model->children();
TreeModel::Children::iterator i;
}
boost::shared_ptr<AudioTrack> at = strip->audio_track();
+ boost::shared_ptr<MidiTrack> mt = strip->midi_track();
switch (tracks) {
case 0:
break;
case 2:
- if (!at) { /* bus */
+ if (!at && !mt) { /* bus */
+ (*i)[track_columns.visible] = yn;
+ }
+ break;
+
+ case 3:
+ if (mt) { /* midi-track */
(*i)[track_columns.visible] = yn;
}
break;
void
Mixer_UI::show_all_audiobus ()
{
- set_all_audio_visibility (2, true);
+ set_all_audio_midi_visibility (2, true);
}
void
Mixer_UI::hide_all_audiobus ()
{
- set_all_audio_visibility (2, false);
+ set_all_audio_midi_visibility (2, false);
}
void
Mixer_UI::show_all_audiotracks()
{
- set_all_audio_visibility (1, true);
+ set_all_audio_midi_visibility (1, true);
}
void
Mixer_UI::hide_all_audiotracks ()
{
- set_all_audio_visibility (1, false);
+ set_all_audio_midi_visibility (1, false);
}
+void
+Mixer_UI::show_all_miditracks()
+{
+ set_all_audio_midi_visibility (3, true);
+}
+void
+Mixer_UI::hide_all_miditracks ()
+{
+ set_all_audio_midi_visibility (3, false);
+}
+
+
void
Mixer_UI::track_list_reorder (const TreeModel::Path&, const TreeModel::iterator&, int* /*new_order*/)
{
items.push_back (MenuElem (_("Hide All Audio Tracks"), sigc::mem_fun(*this, &Mixer_UI::hide_all_audiotracks)));
items.push_back (MenuElem (_("Show All Audio Busses"), sigc::mem_fun(*this, &Mixer_UI::show_all_audiobus)));
items.push_back (MenuElem (_("Hide All Audio Busses"), sigc::mem_fun(*this, &Mixer_UI::hide_all_audiobus)));
+ items.push_back (MenuElem (_("Show All Midi Tracks"), sigc::mem_fun (*this, &Mixer_UI::show_all_miditracks)));
+ items.push_back (MenuElem (_("Hide All Midi Tracks"), sigc::mem_fun (*this, &Mixer_UI::hide_all_miditracks)));
}
int celly;
if (!group_display.get_path_at_pos ((int)ev->x, (int)ev->y, path, column, cellx, celly)) {
- return false;
+ _group_tabs->get_menu(0)->popup (1, ev->time);
+ return true;
}
TreeIter iter = group_model->get_iter (path);
if (!iter) {
- return false;
+ _group_tabs->get_menu(0)->popup (1, ev->time);
+ return true;
}
RouteGroup* group = (*iter)[group_columns.group];
_group_tabs->hide ();
}
} else if (p == "default-narrow_ms") {
- bool const s = ARDOUR_UI::config()->get_default_narrow_ms ();
+ bool const s = UIConfiguration::instance().get_default_narrow_ms ();
for (list<MixerStrip*>::iterator i = strips.begin(); i != strips.end(); ++i) {
(*i)->set_width_enum (s ? Narrow : Wide, this);
}
track_display.get_column (1)->set_data (X_("colnum"), GUINT_TO_POINTER(1));
track_display.get_column (0)->set_expand(true);
track_display.get_column (1)->set_expand(false);
+ track_display.get_column (0)->set_sizing (Gtk::TREE_VIEW_COLUMN_FIXED);
track_display.set_name (X_("EditGroupList"));
track_display.get_selection()->set_mode (Gtk::SELECTION_NONE);
track_display.set_reorderable (true);
track_display.set_headers_visible (true);
+ track_display.set_can_focus(false);
track_model->signal_row_deleted().connect (sigc::mem_fun (*this, &Mixer_UI::track_list_delete));
track_model->signal_rows_reordered().connect (sigc::mem_fun (*this, &Mixer_UI::track_list_reorder));