<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"/>
+ <Option name="zoom button: border start" value="32baaeff"/>
+ <Option name="zoom button: border end" value="22827aff"/>
+ <Option name="zoom button: border start selected" value="9a908eff"/>
+ <Option name="zoom button: border end selected" value="675c5bff"/>
+ <Option name="zoom button: fill start" value="21847bff"/>
+ <Option name="zoom button: fill end" value="0c3330ff"/>
+ <Option name="zoom button: fill start active" value="9dfc3dff"/>
+ <Option name="zoom button: fill end active" value="90f927ff"/>
+ <Option name="zoom button: fill start mid" value="5d5856ff"/>
+ <Option name="zoom button: fill end mid" value="564d48ff"/>
+ <Option name="zoom button: led" value="4f3300ff"/>
+ <Option name="zoom button: led active" value="ffa500ff"/>
+ <Option name="zoom button: led mid" value="b87700ff"/>
+ <Option name="zoom button: text" value="c7c7d8ff"/>
+ <Option name="zoom button: text active" value="000000ff"/>
+ <Option name="zoom button: text mid" value="000000ff"/>
</Canvas>
</Ardour>
}
}
+
return false;
}
{
_action = act;
- Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (_action);
- if (tact) {
- tact->signal_toggled().connect (sigc::mem_fun (*this, &ArdourButton::action_toggled));
- }
+ if (_action) {
+
+ string str = _action->property_tooltip().get_value();
+ if (!str.empty()) {
+ ARDOUR_UI::instance()->set_tip (*this, str);
+ }
+
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (_action);
+ if (tact) {
+ tact->signal_toggled().connect (sigc::mem_fun (*this, &ArdourButton::action_toggled));
+ }
+
+ _action->connect_property_changed ("sensitive", sigc::mem_fun (*this, &ArdourButton::action_sensitivity_changed));
+ _action->connect_property_changed ("visible", sigc::mem_fun (*this, &ArdourButton::action_visibility_changed));
+ _action->connect_property_changed ("tooltip", sigc::mem_fun (*this, &ArdourButton::action_tooltip_changed));
+ }
}
void
queue_draw ();
}
}
+
+void
+ArdourButton::action_sensitivity_changed ()
+{
+ if (_action->property_sensitive ()) {
+ set_visual_state (Gtkmm2ext::VisualState (visual_state() & ~Gtkmm2ext::Insensitive));
+ } else {
+ set_visual_state (Gtkmm2ext::VisualState (visual_state() | Gtkmm2ext::Insensitive));
+ }
+
+}
+
+
+void
+ArdourButton::action_visibility_changed ()
+{
+ if (_action->property_visible ()) {
+ show ();
+ } else {
+ hide ();
+ }
+}
+
+void
+ArdourButton::action_tooltip_changed ()
+{
+ string str = _action->property_tooltip().get_value();
+ ARDOUR_UI::instance()->set_tip (*this, str);
+}
+
Glib::RefPtr<Gtk::Action> _action;
void action_activated ();
void action_toggled ();
+
+ void action_sensitivity_changed ();
+ void action_visibility_changed ();
+ void action_tooltip_changed ();
};
#endif /* __gtk2_ardour_ardour_button_h__ */
, auto_play_button (ArdourButton::led_default_elements)
, auto_input_button (ArdourButton::led_default_elements)
+ , time_master_button (ArdourButton::led_default_elements)
+
, auditioning_alert_button (_("AUDITION"))
, solo_alert_button (_("SOLO"))
play_selection_button.set_name ("transport button");
rec_button.set_name ("transport recenable button");
join_play_range_button.set_name ("transport button");
+ midi_panic_button.set_name ("transport button");
goto_start_button.set_tweaks (ArdourButton::ShowClick);
goto_end_button.set_tweaks (ArdourButton::ShowClick);
+ midi_panic_button.set_tweaks (ArdourButton::ShowClick);
last_configure_time= 0;
last_peak_grab = 0;
d.run ();
}
+
+void
+ARDOUR_UI::midi_panic ()
+{
+ if (_session) {
+ _session->midi_panic();
+ }
+}
ARDOUR::ProcessThread* _process_thread;
void feedback_detected ();
+
+ ArdourButton midi_panic_button;
+ void midi_panic ();
};
#endif /* __ardour_gui_h__ */
set_tip (goto_start_button, _("Go to start of session"));
set_tip (goto_end_button, _("Go to end of session"));
set_tip (auto_loop_button, _("Play loop range"));
+ set_tip (midi_panic_button, _("MIDI Panic\nSend note off and reset controller messages on all MIDI channels"));
set_tip (auto_return_button, _("Return to last playback start when stopped"));
set_tip (auto_play_button, _("Start playback after any locate"));
auto_return_button.set_name ("transport option button");
auto_play_button.set_name ("transport option button");
auto_input_button.set_name ("transport option button");
+ time_master_button.set_name ("transport option button");
/* 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"));
auto_loop_button.set_image (get_icon (X_("transport_loop")));
join_play_range_button.set_image (get_icon (X_("tool_object_range")));
+ midi_panic_button.set_image (get_icon (X_("midi_panic")));
+ /* the icon for this has an odd aspect ratio, so fatten up the button */
+ midi_panic_button.set_size_request (25, -1);
+
act = ActionManager::get_action (X_("Transport"), X_("Stop"));
stop_button.set_related_action (act);
act = ActionManager::get_action (X_("Transport"), X_("Roll"));
auto_loop_button.set_related_action (act);
act = ActionManager::get_action (X_("Transport"), X_("PlaySelection"));
play_selection_button.set_related_action (act);
-
+ act = ActionManager::get_action (X_("MIDI"), X_("panic"));
+ midi_panic_button.set_related_action (act);
act = ActionManager::get_action (X_("Transport"), X_("ToggleTimeMaster"));
time_master_button.set_related_action (act);
HBox* tbox = manage (new HBox);
tbox->set_spacing (2);
+ tbox->pack_start (midi_panic_button, false, false);
tbox->pack_start (goto_start_button, false, false);
tbox->pack_start (goto_end_button, false, false);
}
}
+ /* MIDI */
+
+ Glib::RefPtr<ActionGroup> midi_actions = ActionGroup::create (X_("MIDI"));
+ ActionManager::register_action (midi_actions, X_("panic"), _("Panic"), sigc::mem_fun(*this, &ARDOUR_UI::midi_panic));
+
ActionManager::add_action_group (shuttle_actions);
ActionManager::add_action_group (option_actions);
ActionManager::add_action_group (jack_actions);
ActionManager::add_action_group (transport_actions);
ActionManager::add_action_group (main_actions);
ActionManager::add_action_group (common_actions);
+ ActionManager::add_action_group (midi_actions);
}
void
BUTTON_VARS(PluginBypassButton, "plugin bypass button")
BUTTON_VARS(PunchButton, "punch button")
BUTTON_VARS(MouseModeButton, "mouse mode button")
+BUTTON_VARS(ZoomButton, "zoom button")
, automation_mode_button (_("mode"))
, _toolbar_viewport (*manage (new Gtk::Adjustment (0, 0, 1e10)), *manage (new Gtk::Adjustment (0, 0, 1e10)))
- , midi_panic_button (_("Panic"))
#ifdef WITH_CMT
, image_socket_listener(0)
_zoom_box.set_spacing (1);
_zoom_box.set_border_width (0);
- zoom_in_button.set_name ("EditorTimeButton");
- zoom_in_button.set_image (*(manage (new Image (::get_icon ("zoom_in")))));
- zoom_in_button.signal_clicked().connect (sigc::bind (sigc::mem_fun(*this, &Editor::temporal_zoom_step), false));
+ RefPtr<Action> act;
+
+ zoom_in_button.set_name ("zoom button");
+ zoom_in_button.set_image (::get_icon ("zoom_in"));
+ zoom_in_button.set_tweaks (ArdourButton::ShowClick);
+ act = ActionManager::get_action (X_("Editor"), X_("temporal-zoom-in"));
+ zoom_in_button.set_related_action (act);
- zoom_out_button.set_name ("EditorTimeButton");
- zoom_out_button.set_image (*(manage (new Image (::get_icon ("zoom_out")))));
- zoom_out_button.signal_clicked().connect (sigc::bind (sigc::mem_fun(*this, &Editor::temporal_zoom_step), true));
+ zoom_out_button.set_name ("zoom button");
+ zoom_out_button.set_image (::get_icon ("zoom_out"));
+ zoom_out_button.set_tweaks (ArdourButton::ShowClick);
+ act = ActionManager::get_action (X_("Editor"), X_("temporal-zoom-out"));
+ zoom_out_button.set_related_action (act);
- zoom_out_full_button.set_name ("EditorTimeButton");
- zoom_out_full_button.set_image (*(manage (new Image (::get_icon ("zoom_full")))));
- zoom_out_full_button.signal_clicked().connect (sigc::mem_fun(*this, &Editor::temporal_zoom_session));
+ zoom_out_full_button.set_name ("zoom button");
+ zoom_out_full_button.set_image (::get_icon ("zoom_full"));
+ zoom_out_full_button.set_tweaks (ArdourButton::ShowClick);
+ act = ActionManager::get_action (X_("Editor"), X_("zoom-to-session"));
+ zoom_out_full_button.set_related_action (act);
zoom_focus_selector.set_name ("ZoomFocusSelector");
set_popdown_strings (zoom_focus_selector, zoom_focus_strings, true);
tav_expand_button.set_name ("TrackHeightButton");
tav_expand_button.set_size_request (-1, 20);
tav_expand_button.add (*(manage (new Image (::get_icon ("tav_exp")))));
- RefPtr<Action> act = ActionManager::get_action (X_("Editor"), X_("expand-tracks"));
+ act = ActionManager::get_action (X_("Editor"), X_("expand-tracks"));
act->connect_proxy (tav_expand_button);
tav_shrink_button.set_name ("TrackHeightButton");
ARDOUR_UI::instance()->set_tip (snap_mode_selector, _("Snap/Grid Mode"));
ARDOUR_UI::instance()->set_tip (edit_point_selector, _("Edit point"));
ARDOUR_UI::instance()->set_tip (midi_sound_notes, _("Sound Notes"));
- ARDOUR_UI::instance()->set_tip (midi_panic_button, _("Send note off and reset controller messages on all MIDI channels"));
ARDOUR_UI::instance()->set_tip (edit_mode_selector, _("Edit Mode"));
}
-void
-Editor::midi_panic ()
-{
- cerr << "MIDI panic\n";
-
- if (_session) {
- _session->midi_panic();
- }
-}
void
Editor::setup_midi_toolbar ()
/* Panic */
- act = ActionManager::get_action (X_("MIDI"), X_("panic"));
- midi_panic_button.set_name("MidiPanicButton");
- act->connect_proxy (midi_panic_button);
-
panic_box.pack_start (midi_sound_notes , true, true);
- panic_box.pack_start (midi_panic_button, true, true);
+ // panic_box.pack_start (midi_panic_button, true, true);
}
int
void editor_list_button_toggled ();
AudioClock* zoom_range_clock;
- Gtk::Button zoom_in_button;
- Gtk::Button zoom_out_button;
- Gtk::Button zoom_out_full_button;
- Gtk::Button zoom_onetoone_button;
+ ArdourButton zoom_in_button;
+ ArdourButton zoom_out_button;
+ ArdourButton zoom_out_full_button;
Gtk::Button tav_expand_button;
Gtk::Button tav_shrink_button;
/* midi toolbar */
Gtk::HBox panic_box;
- Gtk::Button midi_panic_button;
Gtkmm2ext::StatefulToggleButton midi_sound_notes;
- void midi_panic ();
bool sound_notes () const { return midi_sound_notes.get_active(); }
void setup_midi_toolbar ();
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
tact->set_active (true);
- /* MIDI */
-
- Glib::RefPtr<ActionGroup> midi_actions = ActionGroup::create (X_("MIDI"));
- ActionManager::register_action (midi_actions, X_("panic"), _("Panic"), sigc::mem_fun(*this, &Editor::midi_panic));
-
ActionManager::add_action_group (rl_actions);
ActionManager::add_action_group (ruler_actions);
ActionManager::add_action_group (zoom_actions);
ActionManager::add_action_group (mouse_mode_actions);
ActionManager::add_action_group (snap_actions);
ActionManager::add_action_group (editor_actions);
- ActionManager::add_action_group (midi_actions);
}
void
, solo_in_place_button (_("SiP"), ArdourButton::led_default_elements)
, afl_button (_("AFL"), ArdourButton::led_default_elements)
, pfl_button (_("PFL"), ArdourButton::led_default_elements)
- , cut_all_button (ArdourButton::led_default_elements)
- , dim_all_button (ArdourButton::led_default_elements)
- , mono_button (ArdourButton::led_default_elements)
, exclusive_solo_button (ArdourButton::led_default_elements)
, solo_mute_override_button (ArdourButton::led_default_elements)
{
}
MonitorSection::ChannelButtonSet::ChannelButtonSet ()
- : cut (ArdourButton::just_led_default_elements)
- , dim (ArdourButton::just_led_default_elements)
- , solo (ArdourButton::just_led_default_elements)
- , invert (ArdourButton::just_led_default_elements)
{
cut.set_diameter (3);
dim.set_diameter (3);
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ inkscape:export-filename="midi_panic.png"
+ inkscape:export-xdpi="3.3178849"
+ inkscape:export-ydpi="3.3178849"
+ sodipodi:docname="midi_panic.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="-727.85714"
+ inkscape:cy="502.85714"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1436"
+ inkscape:window-height="949"
+ inkscape:window-x="137"
+ inkscape:window-y="86"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="opacity:0;color:#000000;fill:#ffffff;fill-opacity:1;stroke:#000500;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect2816"
+ width="74.285728"
+ height="448.57144"
+ x="242.85715"
+ y="118.07647" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.61851852"
+ id="path3600"
+ sodipodi:cx="121.42857"
+ sodipodi:cy="768.07648"
+ sodipodi:rx="38.57143"
+ sodipodi:ry="38.57143"
+ d="m 160,768.07648 a 38.57143,38.57143 0 1 1 -77.142857,0 38.57143,38.57143 0 1 1 77.142857,0 z"
+ transform="matrix(2.5060478,0,0,2.3125359,-112.56833,-836.59512)"
+ inkscape:export-filename="/usr/local/music/src/ardour/3.0/gtk2_ardour/icons/midi_panic.png"
+ inkscape:export-xdpi="2.6415093"
+ inkscape:export-ydpi="2.6415093" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.26678240000000009px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.61851852"
+ d="m 82.984333,281.07273 9.74369,328.04567 58.462137,220.48971 82.82135,0 48.71844,-223.1786 -4.87182,-322.66789 0,0 -194.873797,-2.68889 z"
+ id="path3602"
+ inkscape:export-xdpi="2.6415093"
+ inkscape:export-ydpi="2.6415093"
+ inkscape:export-filename="/usr/local/music/src/ardour/3.0/gtk2_ardour/icons/midi_panic.png" />
+ </g>
+</svg>