fg[PRELIGHT] = { 0, 0, 0 }
}
+style "mixer_invert_button" = "small_button"
+{
+ bg[ACTIVE] = { 1.0, 0.749, 0.247 }
+ fg[ACTIVE] = { 0, 0, 0 }
+}
+
style "mixer_solo_button" = "solo_button"
{
font_name = "@FONT_SMALLER@"
widget "*TrackLoopButton*" style:highest "track_loop_button"
widget "*PanAutomationLineSelector*" style:highest "multiline_combo"
widget "*EditorTimeButton*" style:highest "time_button"
-widget "*MixerPhaseInvertButton*" style:highest "very_small_button"
-widget "*MixerPhaseInvertButton.*" style:highest "very_small_button"
+widget "*MixerInvertButton*" style:highest "mixer_invert_button"
+widget "*MixerInvertButton.*" style:highest "mixer_invert_button"
widget "*MixerAutomationRecordingButton*" style:highest "very_small_button"
widget "*MixerAutomationRecordingButton.*" style:highest "very_small_button"
widget "*MixerAutomationModeButton*" style:highest "very_small_button"
, panners (sess)
, _mono_button (_("Mono"))
, button_table (3, 2)
- , middle_button_table (1, 2)
+ , middle_button_table (2, 2)
, bottom_button_table (1, 2)
, meter_point_label (_("pre"))
, comment_button (_("Comments"))
mute_button->set_name ("MixerMuteButton");
solo_button->set_name ("MixerSoloButton");
+ invert_button->set_name ("MixerInvertButton");
button_table.set_homogeneous (true);
button_table.set_spacings (0);
middle_button_table.set_spacings (0);
middle_button_table.attach (*mute_button, 0, 1, 0, 1);
middle_button_table.attach (*solo_button, 1, 2, 0, 1);
+ middle_button_table.attach (*invert_button, 0, 2, 1, 2);
bottom_button_table.set_col_spacings (0);
bottom_button_table.set_homogeneous (true);
void
MixerStrip::set_button_names ()
{
- switch (_width) {
+ invert_button_label.set_text (X_("Ø"));
+
+ switch (_width) {
case Wide:
rec_enable_button_label.set_text (_("Rec"));
mute_button_label.set_text (_("Mute"));
multiple_mute_change = false;
multiple_solo_change = false;
+ invert_button = manage (new BindableToggleButton ());
+ // mute_button->set_self_managed (true);
+ invert_button->set_name ("InvertButton");
+ invert_button->add (invert_button_label);
+ invert_button_label.show ();
+ UI::instance()->set_tip (invert_button, _("Invert (Phase reverse) this track"), "");
+
mute_button = manage (new BindableToggleButton ());
// mute_button->set_self_managed (true);
mute_button->set_name ("MuteButton");
solo_button->signal_button_release_event().connect (sigc::mem_fun(*this, &RouteUI::solo_release), false);
mute_button->signal_button_press_event().connect (sigc::mem_fun(*this, &RouteUI::mute_press), false);
mute_button->signal_button_release_event().connect (sigc::mem_fun(*this, &RouteUI::mute_release), false);
+ invert_button->signal_button_press_event().connect (sigc::mem_fun(*this, &RouteUI::invert_press), false);
+ invert_button->signal_button_release_event().connect (sigc::mem_fun(*this, &RouteUI::invert_release), false);
+
}
void
solo_button->unset_flags (Gtk::CAN_FOCUS);
mute_button->show();
+ invert_button->show ();
if (_route->is_monitor()) {
solo_button->hide ();
map_frozen ();
}
+bool
+RouteUI::invert_press (GdkEventButton* ev)
+{
+ return false;
+}
+
+bool
+RouteUI::invert_release (GdkEventButton* ev)
+{
+ return false;
+}
+
bool
RouteUI::mute_press (GdkEventButton* ev)
{
bool multiple_mute_change;
bool multiple_solo_change;
+ BindableToggleButton* invert_button;
BindableToggleButton* mute_button;
BindableToggleButton* solo_button;
BindableToggleButton* rec_enable_button; /* audio tracks */
Gtk::Label solo_button_label;
Gtk::Label mute_button_label;
+ Gtk::Label invert_button_label;
Gtk::Label rec_enable_button_label;
void send_blink (bool);
Gtk::Menu* solo_menu;
Gtk::Menu* sends_menu;
-
XMLNode *xml_node;
void ensure_xml_node ();
virtual XMLNode* get_automation_child_xml_node (Evoral::Parameter param);
+ bool invert_press(GdkEventButton*);
+ bool invert_release(GdkEventButton*);
bool mute_press(GdkEventButton*);
bool mute_release(GdkEventButton*);
bool solo_press(GdkEventButton*);