summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-11-10 15:25:01 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-11-10 15:25:01 +0000
commit6449c2e5c8b027245fe5fb9942984243e4a653d7 (patch)
tree0441b7521bc04dec2f858c3ca836d1ce43b1dcb9
parentdbafe45a280cc6c33bb7dca72202c109012cd8eb (diff)
more ardour-button-ization; fix transparency of selection rects; use "correct" cursors when entering and leaving selection rect handles; color tweaks for a few buttons
git-svn-id: svn://localhost/ardour2/branches/3.0@10527 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/ardour3_ui_default.conf70
-rw-r--r--gtk2_ardour/ardour3_widget_list.rc14
-rw-r--r--gtk2_ardour/ardour_button.cc14
-rw-r--r--gtk2_ardour/ardour_button.h6
-rw-r--r--gtk2_ardour/ardour_ui.cc2
-rw-r--r--gtk2_ardour/ardour_ui.h8
-rw-r--r--gtk2_ardour/ardour_ui2.cc49
-rw-r--r--gtk2_ardour/ardour_ui_options.cc4
-rw-r--r--gtk2_ardour/canvas_vars.h4
-rw-r--r--gtk2_ardour/editor.cc27
-rw-r--r--gtk2_ardour/editor.h19
-rw-r--r--gtk2_ardour/editor_actions.cc88
-rw-r--r--gtk2_ardour/editor_mouse.cc20
-rw-r--r--gtk2_ardour/generic_pluginui.cc16
-rwxr-xr-xgtk2_ardour/lxvst_pluginui.cc6
-rw-r--r--gtk2_ardour/plugin_ui.cc48
-rw-r--r--gtk2_ardour/plugin_ui.h7
-rw-r--r--gtk2_ardour/time_info_box.cc20
-rw-r--r--gtk2_ardour/time_info_box.h6
19 files changed, 251 insertions, 177 deletions
diff --git a/gtk2_ardour/ardour3_ui_default.conf b/gtk2_ardour/ardour3_ui_default.conf
index 3b3323ed6c..f0267215f7 100644
--- a/gtk2_ardour/ardour3_ui_default.conf
+++ b/gtk2_ardour/ardour3_ui_default.conf
@@ -98,7 +98,7 @@
<Option name="selected region base" value="46465cff"/>
<Option name="selected waveform fill" value="bfbfbfff"/>
<Option name="selected waveform outline" value="000000ff"/>
- <Option name="selection rect" value="ffffffff"/>
+ <Option name="selection rect" value="9de4d57b"/>
<Option name="selection" value="636363b2"/>
<Option name="shuttle" value="6bb620ff"/>
<Option name="silence" value="9efffd7a"/>
@@ -416,7 +416,7 @@
<Option name="rude audition: text active" value="ffffffff"/>
<Option name="rude audition: text mid" value="00000000"/>
<Option name="mute button: border start" value="ffcb8bff"/>
- <Option name="mute button: border end" value="000000ff"/>
+ <Option name="mute button: border end" value="603600ff"/>
<Option name="mute button: border start selected" value="00000000"/>
<Option name="mute button: border end selected" value="00000000"/>
<Option name="mute button: fill start" value="ac8568ff"/>
@@ -432,7 +432,7 @@
<Option name="mute button: text active" value="191919ff"/>
<Option name="mute button: text mid" value="262626ff"/>
<Option name="solo button: border start" value="ffffffff"/>
- <Option name="solo button: border end" value="000000ff"/>
+ <Option name="solo button: border end" value="757500ff"/>
<Option name="solo button: border start selected" value="000000ff"/>
<Option name="solo button: border end selected" value="000000ff"/>
<Option name="solo button: fill start" value="b7ac6cff"/>
@@ -527,5 +527,69 @@
<Option name="transport option button: text" value="c7c7d8ff"/>
<Option name="transport option button: text active" value="c8c8d9ff"/>
<Option name="transport option button: text mid" value="000000ff"/>
+ <Option name="transport active option button: border start" value="b7b7d2ff"/>
+ <Option name="transport active option button: border end" value="000000ff"/>
+ <Option name="transport active option button: border start selected" value="9a908eff"/>
+ <Option name="transport active option button: border end selected" value="675c5bff"/>
+ <Option name="transport active option button: fill start" value="5d5856ff"/>
+ <Option name="transport active option button: fill end" value="564d48ff"/>
+ <Option name="transport active option button: fill start active" value="9dfc3dff"/>
+ <Option name="transport active option button: fill end active" value="90f927ff"/>
+ <Option name="transport active option button: fill start mid" value="5d5856ff"/>
+ <Option name="transport active option button: fill end mid" value="564d48ff"/>
+ <Option name="transport active option button: led" value="4f3300ff"/>
+ <Option name="transport active option button: led active" value="ffa500ff"/>
+ <Option name="transport active option button: led mid" value="b87700ff"/>
+ <Option name="transport active option button: text" value="c7c7d8ff"/>
+ <Option name="transport active option button: text active" value="000000ff"/>
+ <Option name="transport active option button: text mid" value="000000ff"/>
+ <Option name="plugin bypass button: border start" value="826669ff"/>
+ <Option name="plugin bypass button: border end" value="1b1a1dff"/>
+ <Option name="plugin bypass button: border start selected" value="00000000"/>
+ <Option name="plugin bypass button: border end selected" value="00000000"/>
+ <Option name="plugin bypass button: fill start" value="624848ff"/>
+ <Option name="plugin bypass button: fill end" value="523d3dff"/>
+ <Option name="plugin bypass button: fill start active" value="ff0202ff"/>
+ <Option name="plugin bypass button: fill end active" value="aa0101ff"/>
+ <Option name="plugin bypass button: fill start mid" value="00000000"/>
+ <Option name="plugin bypass button: fill end mid" value="00000000"/>
+ <Option name="plugin bypass button: led" value="510000ff"/>
+ <Option name="plugin bypass button: led active" value="ff0202ff"/>
+ <Option name="plugin bypass button: led mid" value="00000000"/>
+ <Option name="plugin bypass button: text" value="e5e5e5ff"/>
+ <Option name="plugin bypass button: text active" value="000000ff"/>
+ <Option name="plugin bypass button: text mid" value="00000000"/>
+ <Option name="punch button: border start" value="997171ff"/>
+ <Option name="punch button: border end" value="750d0dff"/>
+ <Option name="punch button: border start selected" value="000000ff"/>
+ <Option name="punch button: border end selected" value="00000000"/>
+ <Option name="punch button: fill start" value="684d4dff"/>
+ <Option name="punch button: fill end" value="513c3cff"/>
+ <Option name="punch button: fill start active" value="ff1f1fff"/>
+ <Option name="punch button: fill end active" value="991212ff"/>
+ <Option name="punch button: fill start mid" value="00000000"/>
+ <Option name="punch button: fill end mid" value="00000000"/>
+ <Option name="punch button: led" value="00000000"/>
+ <Option name="punch button: led active" value="00000000"/>
+ <Option name="punch button: led mid" value="00000000"/>
+ <Option name="punch button: text" value="969696ff"/>
+ <Option name="punch button: text active" value="e5e5e5ff"/>
+ <Option name="punch button: text mid" value="00000000"/>
+ <Option name="mouse mode button: border start" value="32baaeff"/>
+ <Option name="mouse mode button: border end" value="22827aff"/>
+ <Option name="mouse mode button: border start selected" value="9a908eff"/>
+ <Option name="mouse mode button: border end selected" value="675c5bff"/>
+ <Option name="mouse mode button: fill start" value="21847bff"/>
+ <Option name="mouse mode button: fill end" value="0c3330ff"/>
+ <Option name="mouse mode button: fill start active" value="9dfc3dff"/>
+ <Option name="mouse mode button: fill end active" value="90f927ff"/>
+ <Option name="mouse mode button: fill start mid" value="5d5856ff"/>
+ <Option name="mouse mode button: fill end mid" value="564d48ff"/>
+ <Option name="mouse mode button: led" value="4f3300ff"/>
+ <Option name="mouse mode button: led active" value="ffa500ff"/>
+ <Option name="mouse mode button: led mid" value="b87700ff"/>
+ <Option name="mouse mode button: text" value="c7c7d8ff"/>
+ <Option name="mouse mode button: text active" value="000000ff"/>
+ <Option name="mouse mode button: text mid" value="000000ff"/>
</Canvas>
</Ardour>
diff --git a/gtk2_ardour/ardour3_widget_list.rc b/gtk2_ardour/ardour3_widget_list.rc
index bfb9ae5bf8..9cf7625da8 100644
--- a/gtk2_ardour/ardour3_widget_list.rc
+++ b/gtk2_ardour/ardour3_widget_list.rc
@@ -2,6 +2,7 @@ class "GtkWidget" style:highest "default"
class "GtkScrollbar" style:highest "ardour_adjusters"
class "GtkLabel" style:highest "default_generic"
class "GtkButton" style:highest "ardour_button"
+class "GtkCheckButton" style:highest "ardour_button"
class "GtkArrow" style:highest "tearoff_arrow"
class "GtkProgressBar" style:highest "ardour_progressbars"
@@ -78,7 +79,6 @@ widget "*MixerSoloButton" style:highest "mixer_solo_button"
widget "*MixerSoloButton-alternate" style:highest "mixer_solo_button_alternate"
widget "*MixerSoloButton-alternate2" style:highest "mixer_solo_button_alternate2"
widget "*MixerSoloButton-active" style:highest "mixer_solo_button_active"
-widget "*monitor" style:highest "monitor"
widget "*TrackLoopButton*" style:highest "track_loop_button"
widget "*PanAutomationLineSelector*" style:highest "multiline_combo"
widget "*EditorTimeButton*" style:highest "time_button"
@@ -385,11 +385,17 @@ widget "*InsertTimeClock" style:highest "default_clock_display"
widget "*EditorRouteGroupsAllGroupButton" style:highest "default_toggle_button"
widget "*MidiSoundNotesButton" style:highest "default_toggle_button"
widget "*MeasureLatencyButton" style:highest "default_toggle_button"
+widget "*monitor" style:highest "monitor"
widget "*processor prefader" style:highest "processor"
widget "*processor fader" style:highest "processor"
widget "*processor postfader" style:highest "processor"
widget "*MonitorSectionLabel" style:highest "very_small_text"
-widget "*mute button" style:highest "small_text"
+widget "*mute button" style:highest "monitor"
widget "*send alert button" style:highest "small_text"
-widget "*solo button" style:highest "small_text"
-widget "*transport option button" style:highest "very_small_text"
+widget "*solo button" style:highest "monitor"
+widget "*rude solo" style:highest "small_text"
+widget "*rude audition" style:highest "small_text"
+widget "*transport option button" style:highest "small_text"
+widget "*transport active option button" style:highest "small_text"
+widget "*plugin bypass button" style:highest "small_text"
+widget "*punch button" style:highest "small_text"
diff --git a/gtk2_ardour/ardour_button.cc b/gtk2_ardour/ardour_button.cc
index c6b89e7b7c..1ba4de7535 100644
--- a/gtk2_ardour/ardour_button.cc
+++ b/gtk2_ardour/ardour_button.cc
@@ -612,6 +612,20 @@ ArdourButton::set_image (const RefPtr<Gdk::Pixbuf>& img)
}
void
+ArdourButton::set_active (bool yn)
+{
+ /* this is an API simplification for buttons
+ that only use the Active and Normal states.
+ */
+
+ if (yn) {
+ set_active_state (Gtkmm2ext::Active);
+ } else {
+ unset_active_state ();
+ }
+}
+
+void
ArdourButton::set_active_state (Gtkmm2ext::ActiveState s)
{
bool changed = (_active_state != s);
diff --git a/gtk2_ardour/ardour_button.h b/gtk2_ardour/ardour_button.h
index 0cee4092ae..9157cc81fd 100644
--- a/gtk2_ardour/ardour_button.h
+++ b/gtk2_ardour/ardour_button.h
@@ -59,6 +59,12 @@ class ArdourButton : public CairoWidget
void set_active_state (Gtkmm2ext::ActiveState);
void set_visual_state (Gtkmm2ext::VisualState);
+ /* this is an API simplification for buttons
+ that only use the Active and Normal active states.
+ */
+ void set_active (bool);
+ bool get_active () { return active_state() != Gtkmm2ext::ActiveState (0); }
+
void set_elements (Element);
Element elements() const { return _elements; }
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index e2da245499..0ebf07afe5 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -157,8 +157,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
, auto_play_button (ArdourButton::led_default_elements)
, auto_input_button (ArdourButton::led_default_elements)
- , time_master_button (_("time\nmaster"))
-
, auditioning_alert_button (_("AUDITION"))
, solo_alert_button (_("SOLO"))
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 720fa6c9e9..2f1ded27cd 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -439,11 +439,11 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
ArdourButton auto_play_button;
ArdourButton auto_input_button;
ArdourButton click_button;
- Gtkmm2ext::StatefulToggleButton time_master_button;
- Gtkmm2ext::StatefulToggleButton sync_button;
+ ArdourButton time_master_button;
+ ArdourButton sync_button;
- Gtk::ToggleButton auditioning_alert_button;
- Gtk::ToggleButton solo_alert_button;
+ ArdourButton auditioning_alert_button;
+ ArdourButton solo_alert_button;
Gtk::VBox alert_box;
diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc
index 8dc25f0004..76794d3e61 100644
--- a/gtk2_ardour/ardour_ui2.cc
+++ b/gtk2_ardour/ardour_ui2.cc
@@ -253,10 +253,14 @@ ARDOUR_UI::setup_transport ()
auto_return_button.set_name ("transport option button");
auto_play_button.set_name ("transport option button");
auto_input_button.set_name ("transport option button");
- click_button.set_name ("transport option button");
- time_master_button.set_name ("TransportButton");
- sync_button.set_name ("TransportSyncButton");
+ /* these have to provide a clear indication of active state */
+
+ click_button.set_name ("transport active option button");
+ time_master_button.set_name ("transport active option button");
+ sync_button.set_name ("transport active option button");
+
+ time_master_button.set_text (_("time master"));
stop_button.set_active_state (Active);
@@ -286,10 +290,9 @@ ARDOUR_UI::setup_transport ()
act = ActionManager::get_action (X_("Transport"), X_("ToggleTimeMaster"));
- act->connect_proxy (time_master_button);
+ time_master_button.set_related_action (act);
act = ActionManager::get_action (X_("Transport"), X_("ToggleExternalSync"));
- act->connect_proxy (sync_button);
-
+ sync_button.set_related_action (act);
/* clocks, etc. */
@@ -311,9 +314,9 @@ ARDOUR_UI::setup_transport ()
/* CANNOT sigc::bind these to clicked or toggled, must use pressed or released */
- solo_alert_button.set_name ("TransportSoloAlert");
+ solo_alert_button.set_name ("rude solo");
solo_alert_button.signal_button_press_event().connect (sigc::mem_fun(*this,&ARDOUR_UI::solo_alert_press), false);
- auditioning_alert_button.set_name ("TransportAuditioningAlert");
+ auditioning_alert_button.set_name ("rude audition");
auditioning_alert_button.signal_button_press_event().connect (sigc::mem_fun(*this,&ARDOUR_UI::audition_alert_press), false);
alert_box.pack_start (solo_alert_button, true, false);
@@ -402,20 +405,19 @@ ARDOUR_UI::setup_transport ()
}
transport_tearoff_hbox.pack_start (*toggle_box, false, false);
- Table* time_controls_table = manage (new Table (2, 2));
- time_controls_table->set_col_spacings (6);
- time_controls_table->attach (sync_button, 0, 1, 0, 1, Gtk::AttachOptions(FILL|EXPAND), Gtk::AttachOptions(0));
- time_controls_table->attach (time_master_button, 0, 1, 1, 2, Gtk::AttachOptions(FILL|EXPAND), Gtk::AttachOptions(0));
-
- time_controls_table->attach (click_button, 1, 2, 0, 2, Gtk::AttachOptions(FILL|EXPAND), FILL);
+ VBox* time_controls = manage (new VBox);
+ time_controls->set_spacing (2);
+ time_controls->set_homogeneous (true);
+ time_controls->pack_start (sync_button, true, false);
+ time_controls->pack_start (time_master_button, true, false);
transport_tearoff_hbox.pack_start (*clock_box, false, false);
- transport_tearoff_hbox.pack_start (*time_controls_table, false, false);
+ transport_tearoff_hbox.pack_start (*time_controls, false, false);
+ transport_tearoff_hbox.pack_start (click_button, false, false);
time_info_box = manage (new TimeInfoBox);
transport_tearoff_hbox.pack_start (*time_info_box, false, false);
-
if (Profile->get_small_screen()) {
transport_tearoff_hbox.pack_start (_editor_transport_box, false, false);
}
@@ -527,7 +529,7 @@ ARDOUR_UI::sync_blink (bool onoff)
{
if (_session == 0 || !_session->config.get_external_sync()) {
/* internal sync */
- sync_button.set_visual_state (0);
+ sync_button.unset_active_state ();
return;
}
@@ -535,13 +537,13 @@ ARDOUR_UI::sync_blink (bool onoff)
/* not locked, so blink on and off according to the onoff argument */
if (onoff) {
- sync_button.set_visual_state (1); // "-active"
+ sync_button.set_active_state (Gtkmm2ext::Active); // "-active"
} else {
- sync_button.set_visual_state (0); // normal
+ sync_button.unset_active_state (); // normal
}
} else {
/* locked */
- sync_button.set_visual_state (1); // "-active"
+ sync_button.set_active_state (Gtkmm2ext::Active); // "-active"
}
}
@@ -554,13 +556,12 @@ ARDOUR_UI::audition_blink (bool onoff)
if (_session->is_auditioning()) {
if (onoff) {
- auditioning_alert_button.set_state (STATE_ACTIVE);
+ auditioning_alert_button.set_active_state (Gtkmm2ext::Active);
} else {
- auditioning_alert_button.set_state (STATE_NORMAL);
+ auditioning_alert_button.unset_active_state();
}
} else {
- auditioning_alert_button.set_active (false);
- auditioning_alert_button.set_state (STATE_NORMAL);
+ auditioning_alert_button.unset_active_state ();
}
}
diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc
index 2a84d70c0e..866cb6afb4 100644
--- a/gtk2_ardour/ardour_ui_options.cc
+++ b/gtk2_ardour/ardour_ui_options.cc
@@ -307,11 +307,11 @@ ARDOUR_UI::parameter_changed (std::string p)
ActionManager::map_some_state ("Transport", "ToggleExternalSync", sigc::mem_fun (_session->config, &SessionConfiguration::get_external_sync));
if (!_session->config.get_external_sync()) {
- sync_button.set_label (_("Internal"));
+ sync_button.set_text (_("Internal"));
ActionManager::get_action ("Transport", "ToggleAutoPlay")->set_sensitive (true);
ActionManager::get_action ("Transport", "ToggleAutoReturn")->set_sensitive (true);
} else {
- sync_button.set_label (sync_source_to_string (_session->config.get_sync_source(), true));
+ sync_button.set_text (sync_source_to_string (_session->config.get_sync_source(), true));
/* XXX need to make auto-play is off as well as insensitive */
ActionManager::get_action ("Transport", "ToggleAutoPlay")->set_sensitive (false);
ActionManager::get_action ("Transport", "ToggleAutoReturn")->set_sensitive (false);
diff --git a/gtk2_ardour/canvas_vars.h b/gtk2_ardour/canvas_vars.h
index 77eb02f9ce..b186c8bf4b 100644
--- a/gtk2_ardour/canvas_vars.h
+++ b/gtk2_ardour/canvas_vars.h
@@ -180,4 +180,8 @@ BUTTON_VARS(SendButton, "send alert button")
BUTTON_VARS(TransportButton, "transport button")
BUTTON_VARS(TransportRecenableButton, "transport recenable button")
BUTTON_VARS(TransportOptionButton, "transport option button")
+BUTTON_VARS(TransportActiveOptionButton, "transport active option button")
+BUTTON_VARS(PluginBypassButton, "plugin bypass button")
+BUTTON_VARS(PunchButton, "punch button")
+BUTTON_VARS(MouseModeButton, "mouse mode button")
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 791357d517..05108eaf08 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -2759,6 +2759,7 @@ Editor::setup_toolbar ()
/* table containing mode buttons */
HBox* mouse_mode_button_box = manage (new HBox ());
+ mouse_mode_button_box->set_spacing (2);
if (Profile->get_sae()) {
mouse_mode_button_box->pack_start (mouse_move_button);
@@ -2808,32 +2809,6 @@ Editor::setup_toolbar ()
_mouse_mode_tearoff->Visible.connect (sigc::bind (sigc::mem_fun(*this, &Editor::reattach_tearoff), static_cast<Box*> (&toolbar_hbox),
&_mouse_mode_tearoff->tearoff_window(), 1));
- mouse_move_button.set_mode (false);
- mouse_select_button.set_mode (false);
- mouse_gain_button.set_mode (false);
- mouse_zoom_button.set_mode (false);
- mouse_timefx_button.set_mode (false);
- mouse_audition_button.set_mode (false);
- join_object_range_button.set_mode (false);
-
- mouse_move_button.set_name ("MouseModeButton");
- mouse_select_button.set_name ("MouseModeButton");
- mouse_gain_button.set_name ("MouseModeButton");
- mouse_zoom_button.set_name ("MouseModeButton");
- mouse_timefx_button.set_name ("MouseModeButton");
- mouse_audition_button.set_name ("MouseModeButton");
- internal_edit_button.set_name ("MouseModeButton");
- join_object_range_button.set_name ("MouseModeButton");
-
- mouse_move_button.unset_flags (CAN_FOCUS);
- mouse_select_button.unset_flags (CAN_FOCUS);
- mouse_gain_button.unset_flags (CAN_FOCUS);
- mouse_zoom_button.unset_flags (CAN_FOCUS);
- mouse_timefx_button.unset_flags (CAN_FOCUS);
- mouse_audition_button.unset_flags (CAN_FOCUS);
- internal_edit_button.unset_flags (CAN_FOCUS);
- join_object_range_button.unset_flags (CAN_FOCUS);
-
/* Zoom */
_zoom_box.set_spacing (1);
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 8114559fa8..f76a19ac0b 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -52,6 +52,7 @@
#include "ardour/types.h"
#include "gtk-custom-ruler.h"
+#include "ardour_button.h"
#include "ardour_dialog.h"
#include "public_editor.h"
#include "editing.h"
@@ -1532,20 +1533,20 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
Gtk::Label toolbar_selection_cursor_label;
Gtkmm2ext::TearOff* _mouse_mode_tearoff;
- Gtkmm2ext::StatefulToggleButton mouse_select_button;
- Gtkmm2ext::StatefulToggleButton mouse_move_button;
- Gtkmm2ext::StatefulToggleButton mouse_gain_button;
- Gtkmm2ext::StatefulToggleButton mouse_zoom_button;
- Gtkmm2ext::StatefulToggleButton mouse_timefx_button;
- Gtkmm2ext::StatefulToggleButton mouse_audition_button;
- Gtkmm2ext::StatefulToggleButton join_object_range_button;
+ ArdourButton mouse_select_button;
+ ArdourButton mouse_move_button;
+ ArdourButton mouse_gain_button;
+ ArdourButton mouse_zoom_button;
+ ArdourButton mouse_timefx_button;
+ ArdourButton mouse_audition_button;
+ ArdourButton join_object_range_button;
void mouse_mode_toggled (Editing::MouseMode m);
void mouse_mode_object_range_toggled () {}
bool ignore_mouse_mode_toggle;
- Gtkmm2ext::StatefulToggleButton internal_edit_button;
- void toggle_internal_editing ();
+ ArdourButton internal_edit_button;
+ void toggle_internal_editing ();
bool mouse_select_button_release (GdkEventButton*);
diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc
index 2687d05bef..321cb81b88 100644
--- a/gtk2_ardour/editor_actions.cc
+++ b/gtk2_ardour/editor_actions.cc
@@ -397,62 +397,46 @@ Editor::register_actions ()
RadioAction::Group mouse_mode_group;
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-object", _("Object Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseObject));
- act->connect_proxy (mouse_move_button);
- mouse_move_button.set_image (*(manage (new Image (::get_icon("tool_object")))));
- mouse_move_button.set_label ("");
- mouse_move_button.set_name ("MouseModeButton");
- mouse_move_button.get_image ()->show ();
-
- act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-range", _("Range Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseRange));
- act->connect_proxy (mouse_select_button);
- mouse_select_button.set_image (*(manage (new Image (::get_icon("tool_range")))));
- mouse_select_button.set_label ("");
- mouse_select_button.set_name ("MouseModeButton");
- mouse_select_button.get_image ()->show ();
-
- act = ActionManager::register_toggle_action (mouse_mode_actions, "set-mouse-mode-object-range", _("Link Object / Range Tools"), sigc::mem_fun (*this, &Editor::mouse_mode_object_range_toggled));
- act->connect_proxy (join_object_range_button);
- join_object_range_button.set_image (*(manage (new Image (::get_icon ("tool_object_range")))));
- join_object_range_button.set_label ("");
- join_object_range_button.set_name ("MouseModeButton");
- join_object_range_button.get_image ()->show ();
-
- act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-gain", _("Gain Tool"), sigc::bind (mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseGain));
- act->connect_proxy (mouse_gain_button);
- mouse_gain_button.set_image (*(manage (new Image (::get_icon("tool_gain")))));
- mouse_gain_button.set_label ("");
- mouse_gain_button.set_name ("MouseModeButton");
- mouse_gain_button.get_image ()->show ();
-
- act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-zoom", _("Zoom Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseZoom));
- act->connect_proxy (mouse_zoom_button);
- mouse_zoom_button.set_image (*(manage (new Image (::get_icon("tool_zoom")))));
- mouse_zoom_button.set_label ("");
- mouse_zoom_button.set_name ("MouseModeButton");
- mouse_zoom_button.get_image ()->show ();
-
- act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-audition", _("Audition Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseAudition));
- act->connect_proxy (mouse_audition_button);
- mouse_audition_button.set_image (*(manage (new Image (::get_icon("tool_audition")))));
- mouse_audition_button.set_label ("");
- mouse_audition_button.set_name ("MouseModeButton");
- mouse_audition_button.get_image ()->show ();
-
- act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-timefx", _("Time FX Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseTimeFX));
- act->connect_proxy (mouse_timefx_button);
- mouse_timefx_button.set_image (*(manage (new Image (::get_icon("tool_stretch")))));
- mouse_timefx_button.set_label ("");
- mouse_timefx_button.set_name ("MouseModeButton");
- mouse_timefx_button.get_image ()->show ();
+ mouse_move_button.set_related_action (act);
+ mouse_move_button.set_image (::get_icon("tool_object"));
+ mouse_move_button.set_name ("mouse mode button");
+
+ act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-range", _("Range Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseRange));
+ mouse_select_button.set_related_action (act);
+ mouse_select_button.set_image (::get_icon("tool_range"));
+ mouse_select_button.set_name ("mouse mode button");
+
+ act = ActionManager::register_toggle_action (mouse_mode_actions, "set-mouse-mode-object-range", _("Link Object / Range Tools"), sigc::mem_fun (*this, &Editor::mouse_mode_object_range_toggled));
+ join_object_range_button.set_related_action (act);
+ join_object_range_button.set_image (::get_icon ("tool_object_range"));
+ join_object_range_button.set_name ("mouse mode button");
+
+ act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-gain", _("Gain Tool"), sigc::bind (mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseGain));
+ mouse_gain_button.set_related_action (act);
+ mouse_gain_button.set_image (::get_icon("tool_gain"));
+ mouse_gain_button.set_name ("mouse mode button");
+
+ act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-zoom", _("Zoom Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseZoom));
+ mouse_zoom_button.set_related_action (act);
+ mouse_zoom_button.set_image (::get_icon("tool_zoom"));
+ mouse_zoom_button.set_name ("mouse mode button");
+
+ act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-audition", _("Audition Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseAudition));
+ mouse_audition_button.set_related_action (act);
+ mouse_audition_button.set_image (::get_icon("tool_audition"));
+ mouse_audition_button.set_name ("mouse mode button");
+
+ act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-timefx", _("Time FX Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseTimeFX));
+ mouse_timefx_button.set_related_action (act);
+ mouse_timefx_button.set_image (::get_icon("tool_stretch"));
+ mouse_timefx_button.set_name ("mouse mode button");
ActionManager::register_action (editor_actions, "step-mouse-mode", _("Step Mouse Mode"), sigc::bind (sigc::mem_fun(*this, &Editor::step_mouse_mode), true));
act = ActionManager::register_toggle_action (mouse_mode_actions, "toggle-internal-edit", _("Edit MIDI"), sigc::mem_fun(*this, &Editor::toggle_internal_editing));
- act->connect_proxy (internal_edit_button);
- internal_edit_button.set_image (*(manage (new Image (::get_icon("tool_note")))));
- internal_edit_button.set_label ("");
- internal_edit_button.set_name ("MouseModeButton");
- internal_edit_button.get_image ()->show ();
+ internal_edit_button.set_related_action (act);
+ internal_edit_button.set_image (::get_icon("tool_note"));
+ internal_edit_button.set_name ("mouse mode button");
RadioAction::Group edit_point_group;
ActionManager::register_radio_action (editor_actions, edit_point_group, X_("edit-at-playhead"), _("Playhead"), (sigc::bind (sigc::mem_fun(*this, &Editor::edit_point_chosen), Editing::EditAtPlayhead)));
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc
index 1ddf026af7..6419591716 100644
--- a/gtk2_ardour/editor_mouse.cc
+++ b/gtk2_ardour/editor_mouse.cc
@@ -1655,17 +1655,21 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
break;
case StartSelectionTrimItem:
- case EndSelectionTrimItem:
-
#ifdef WITH_CMT
case ImageFrameHandleStartItem:
- case ImageFrameHandleEndItem:
case MarkerViewHandleStartItem:
+#endif
+ if (is_drawable()) {
+ set_canvas_cursor (_cursors->left_side_trim);
+ }
+ break;
+ case EndSelectionTrimItem:
+#ifdef WITH_CMT
+ case ImageFrameHandleEndItem:
case MarkerViewHandleEndItem:
#endif
-
if (is_drawable()) {
- set_canvas_cursor (_cursors->trimmer);
+ set_canvas_cursor (_cursors->right_side_trim);
}
break;
@@ -2549,8 +2553,7 @@ Editor::set_internal_edit (bool yn)
_internal_editing = yn;
if (yn) {
- mouse_select_button.set_image (*(manage (new Image (::get_icon("midi_tool_pencil")))));
- mouse_select_button.get_image ()->show ();
+ mouse_select_button.set_image (::get_icon("midi_tool_pencil"));
ARDOUR_UI::instance()->set_tip (mouse_select_button, _("Draw/Edit MIDI Notes"));
mouse_mode_toggled (mouse_mode);
@@ -2562,8 +2565,7 @@ Editor::set_internal_edit (bool yn)
} else {
- mouse_select_button.set_image (*(manage (new Image (::get_icon("tool_range")))));
- mouse_select_button.get_image ()->show ();
+ mouse_select_button.set_image (::get_icon("tool_range"));
ARDOUR_UI::instance()->set_tip (mouse_select_button, _("Select/Move Ranges"));
mouse_mode_toggled (mouse_mode); // sets cursor
diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc
index 6bdd8314b9..30be93c140 100644
--- a/gtk2_ardour/generic_pluginui.cc
+++ b/gtk2_ardour/generic_pluginui.cc
@@ -126,7 +126,11 @@ GenericPluginUI::GenericPluginUI (boost::shared_ptr<PluginInsert> pi, bool scrol
pi->ActiveChanged.connect (active_connection, invalidator (*this), boost::bind (&GenericPluginUI::processor_active_changed, this, boost::weak_ptr<Processor>(pi)), gui_context());
- bypass_button.set_active (!pi->active());
+ if (!pi->active()) {
+ bypass_button.set_active_state (Gtkmm2ext::Active);
+ } else {
+ bypass_button.unset_active_state ();
+ }
prefheight = 0;
build ();
@@ -793,16 +797,6 @@ GenericPluginUI::control_combo_changed (ControlUI* cui)
}
}
-void
-GenericPluginUI::processor_active_changed (boost::weak_ptr<Processor> weak_processor)
-{
- ENSURE_GUI_THREAD (*this, &GenericPluginUI::processor_active_changed, weak_processor)
-
- boost::shared_ptr<Processor> processor = weak_processor.lock();
-
- bypass_button.set_active (!processor || !processor->active());
-}
-
bool
GenericPluginUI::start_updating (GdkEventAny*)
{
diff --git a/gtk2_ardour/lxvst_pluginui.cc b/gtk2_ardour/lxvst_pluginui.cc
index ec8a27a25d..b2a847488f 100755
--- a/gtk2_ardour/lxvst_pluginui.cc
+++ b/gtk2_ardour/lxvst_pluginui.cc
@@ -61,7 +61,11 @@ LXVSTPluginUI::LXVSTPluginUI (boost::shared_ptr<PluginInsert> pi, boost::shared_
lxvst_preset_combo.signal_changed().connect (mem_fun (*this, &LXVSTPluginUI::preset_chosen));
- bypass_button.set_active (!insert->active());
+ if (!insert->active()) {
+ bypass_button.set_active_state (Gtkmm2ext::Active);
+ } else {
+ bypass_button.unset_active_state ();
+ }
pack_start (preset_box, false, false);
pack_start (socket, true, true);
diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc
index b6189d200e..741fcbe631 100644
--- a/gtk2_ardour/plugin_ui.cc
+++ b/gtk2_ardour/plugin_ui.cc
@@ -455,7 +455,7 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
, add_button (_("Add"))
, save_button (_("Save"))
, delete_button (_("Delete"))
- , bypass_button (_("Bypass"))
+ , bypass_button (ArdourButton::led_default_elements)
, latency_gui (0)
, latency_dialog (0)
, plugin_analysis_expander (_("Plugin analysis"))
@@ -464,6 +464,11 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
_preset_combo.set_size_request (100, -1);
_preset_modified.set_size_request (16, -1);
_preset_combo.signal_changed().connect(sigc::mem_fun(*this, &PlugUIBase::preset_selected));
+ ARDOUR_UI::instance()->set_tip (_preset_combo, _("Presets (if any) for this plugin\n(Both factory and user-created)"));
+ ARDOUR_UI::instance()->set_tip (add_button, _("Save a new preset"));
+ ARDOUR_UI::instance()->set_tip (save_button, _("Save the current preset"));
+ ARDOUR_UI::instance()->set_tip (delete_button, _("Delete the current preset"));
+ ARDOUR_UI::instance()->set_tip (bypass_button, _("Disable signal processing by the plugin"));
_no_load_preset = 0;
_preset_box.pack_start (_preset_combo);
@@ -483,10 +488,16 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
insert->ActiveChanged.connect (active_connection, invalidator (*this), boost::bind (&PlugUIBase::processor_active_changed, this, boost::weak_ptr<Processor>(insert)), gui_context());
- bypass_button.set_active (!pi->active());
+ bypass_button.set_name ("plugin bypass button");
+ bypass_button.set_text (_("Bypass"));
- bypass_button.set_name ("PluginBypassButton");
- bypass_button.signal_toggled().connect (sigc::mem_fun(*this, &PlugUIBase::bypass_toggled));
+ if (!pi->active()) {
+ bypass_button.set_active_state (Gtkmm2ext::Active);
+ } else {
+ bypass_button.unset_active_state ();
+ }
+
+ bypass_button.signal_button_release_event().connect (sigc::mem_fun(*this, &PlugUIBase::bypass_button_release));
focus_button.add_events (Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK);
focus_button.signal_button_release_event().connect (sigc::mem_fun(*this, &PlugUIBase::focus_toggled));
@@ -561,10 +572,15 @@ PlugUIBase::latency_button_clicked ()
void
PlugUIBase::processor_active_changed (boost::weak_ptr<Processor> weak_p)
{
- ENSURE_GUI_THREAD (*this, &PlugUIBase::processor_active_changed, weak_p)
- boost::shared_ptr<Processor> p (weak_p);
+ ENSURE_GUI_THREAD (*this, &PlugUIBase::processor_active_changed, weak_p);
+ boost::shared_ptr<Processor> p (weak_p.lock());
+
if (p) {
- bypass_button.set_active (!p->active());
+ if (!p->active()) {
+ bypass_button.set_active_state (Gtkmm2ext::Active);
+ } else {
+ bypass_button.unset_active_state ();
+ }
}
}
@@ -626,18 +642,20 @@ PlugUIBase::delete_plugin_setting ()
plugin->remove_preset (_preset_combo.get_active_text ());
}
-void
-PlugUIBase::bypass_toggled ()
+bool
+PlugUIBase::bypass_button_release (GdkEventButton*)
{
- bool x;
-
- if ((x = bypass_button.get_active()) == insert->active()) {
- if (x) {
- insert->deactivate ();
- } else {
+ bool view_says_bypassed = (bypass_button.active_state() != 0);
+
+ if (view_says_bypassed != insert->active()) {
+ if (view_says_bypassed) {
insert->activate ();
+ } else {
+ insert->deactivate ();
}
}
+
+ return false;
}
bool
diff --git a/gtk2_ardour/plugin_ui.h b/gtk2_ardour/plugin_ui.h
index 20282c4cfa..5ee275c240 100644
--- a/gtk2_ardour/plugin_ui.h
+++ b/gtk2_ardour/plugin_ui.h
@@ -48,6 +48,7 @@
#include "ardour/types.h"
#include "automation_controller.h"
+#include "ardour_button.h"
namespace ARDOUR {
class PluginInsert;
@@ -110,7 +111,7 @@ class PlugUIBase : public virtual sigc::trackable, public PBD::ScopedConnectionL
Gtk::Button add_button;
Gtk::Button save_button;
Gtk::Button delete_button;
- Gtk::ToggleButton bypass_button;
+ ArdourButton bypass_button;
Gtk::EventBox focus_button;
Gtk::Label latency_label;
@@ -133,7 +134,7 @@ class PlugUIBase : public virtual sigc::trackable, public PBD::ScopedConnectionL
void save_plugin_setting ();
void delete_plugin_setting ();
bool focus_toggled(GdkEventButton*);
- void bypass_toggled();
+ bool bypass_button_release(GdkEventButton*);
void toggle_plugin_analysis ();
void processor_active_changed (boost::weak_ptr<ARDOUR::Processor> p);
void plugin_going_away ();
@@ -248,8 +249,6 @@ class GenericPluginUI : public PlugUIBase, public Gtk::VBox
void control_port_toggled (ControlUI* cui);
void control_combo_changed (ControlUI* cui);
- void processor_active_changed (boost::weak_ptr<ARDOUR::Processor>);
-
void astate_clicked (ControlUI*, uint32_t parameter);
void automation_state_changed (ControlUI*);
void set_automation_state (ARDOUR::AutoState state, ControlUI* cui);
diff --git a/gtk2_ardour/time_info_box.cc b/gtk2_ardour/time_info_box.cc
index fa092ea913..a34314c3cd 100644
--- a/gtk2_ardour/time_info_box.cc
+++ b/gtk2_ardour/time_info_box.cc
@@ -45,8 +45,6 @@ TimeInfoBox::TimeInfoBox ()
, right (2, 4)
, syncing_selection (false)
, syncing_punch (false)
- , punch_in_button (_("In"))
- , punch_out_button (_("Out"))
{
selection_start = new AudioClock ("selection-start", false, "SelectionClockDisplay", false, false, false, false);
selection_end = new AudioClock ("selection-end", false, "SelectionClockDisplay", false, false, false, false);
@@ -116,20 +114,24 @@ TimeInfoBox::TimeInfoBox ()
left.attach (*l, 0, 1, 3, 4, FILL);
left.attach (*selection_length, 1, 2, 3, 4);
- punch_in_button.set_name ("TimeInfoPunchButton");
- punch_out_button.set_name ("TimeInfoPunchButton");
+ punch_in_button.set_name ("punch button");
+ punch_out_button.set_name ("punch button");
+ punch_in_button.set_text (_("In"));
+ punch_out_button.set_text (_("Out"));
- ActionManager::get_action ("Transport", "TogglePunchIn")->connect_proxy (punch_in_button);
- ActionManager::get_action ("Transport", "TogglePunchOut")->connect_proxy (punch_out_button);
+ Glib::RefPtr<Action> act = ActionManager::get_action ("Transport", "TogglePunchIn");
+ punch_in_button.set_related_action (act);
+ act = ActionManager::get_action ("Transport", "TogglePunchOut");
+ punch_out_button.set_related_action (act);
Gtkmm2ext::UI::instance()->set_tip (punch_in_button, _("Start recording at auto-punch start"));
Gtkmm2ext::UI::instance()->set_tip (punch_out_button, _("Stop recording at auto-punch end"));
punch_title.set_name ("TimeInfoSelectionTitle");
right.attach (punch_title, 2, 4, 0, 1);
- right.attach (punch_in_button, 2, 3, 1, 2, FILL);
+ right.attach (punch_in_button, 2, 3, 1, 2, FILL, SHRINK);
right.attach (*punch_start, 3, 4, 1, 2);
- right.attach (punch_out_button, 2, 3, 2, 3, FILL);
+ right.attach (punch_out_button, 2, 3, 2, 3, FILL, SHRINK);
right.attach (*punch_end, 3, 4, 2, 3);
show_all ();
@@ -360,7 +362,7 @@ TimeInfoBox::on_expose_event (GdkEventExpose* ev)
#endif
translate_coordinates (*window_parent, 0, 0, x, y);
context->set_source_rgba (0.149, 0.149, 0.149, 1.0);
- Gtkmm2ext::rounded_rectangle (context, x, y, get_allocation().get_width(), get_allocation().get_height(), 5);
+ Gtkmm2ext::rounded_rectangle (context, x, y, get_allocation().get_width(), get_allocation().get_height(), 9);
context->fill ();
}
}
diff --git a/gtk2_ardour/time_info_box.h b/gtk2_ardour/time_info_box.h
index 7409d7631e..035cdb7e00 100644
--- a/gtk2_ardour/time_info_box.h
+++ b/gtk2_ardour/time_info_box.h
@@ -29,6 +29,8 @@
#include "ardour/ardour.h"
#include "ardour/session_handle.h"
+#include "ardour_button.h"
+
namespace ARDOUR {
class Session;
class Location;
@@ -69,8 +71,8 @@ class TimeInfoBox : public Gtk::HBox, public ARDOUR::SessionHandlePtr
PBD::ScopedConnectionList punch_connections;
PBD::ScopedConnectionList editor_connections;
- Gtkmm2ext::StatefulToggleButton punch_in_button;
- Gtkmm2ext::StatefulToggleButton punch_out_button;
+ ArdourButton punch_in_button;
+ ArdourButton punch_out_button;
void selection_changed ();