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
This commit is contained in:
parent
dbafe45a28
commit
6449c2e5c8
@ -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>
|
||||
|
@ -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"
|
||||
|
@ -611,6 +611,20 @@ ArdourButton::set_image (const RefPtr<Gdk::Pixbuf>& img)
|
||||
queue_draw ();
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
@ -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; }
|
||||
|
||||
|
@ -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"))
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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 ();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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*);
|
||||
|
||||
|
@ -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 ();
|
||||
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));
|
||||
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_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));
|
||||
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_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));
|
||||
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-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));
|
||||
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-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));
|
||||
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-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));
|
||||
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 ();
|
||||
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)));
|
||||
|
@ -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
|
||||
|
||||
|
@ -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*)
|
||||
{
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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 ();
|
||||
}
|
||||
}
|
||||
|
@ -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 ();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user