ardour-button-ize zoom buttons; move MIDI panic button to transport bar

git-svn-id: svn://localhost/ardour2/branches/3.0@10528 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2011-11-10 18:04:34 +00:00
parent 6449c2e5c8
commit f96ccb1958
14 changed files with 213 additions and 51 deletions

View file

@ -591,5 +591,21 @@
<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>

View file

@ -481,6 +481,7 @@ ArdourButton::on_button_release_event (GdkEventButton *ev)
}
}
return false;
}
@ -543,9 +544,21 @@ ArdourButton::set_related_action (RefPtr<Action> act)
{
_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));
}
}
@ -677,3 +690,33 @@ ArdourButton::set_tweaks (Tweaks t)
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);
}

View file

@ -143,6 +143,10 @@ class ArdourButton : public CairoWidget
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__ */

View file

@ -157,6 +157,8 @@ 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 (ArdourButton::led_default_elements)
, auditioning_alert_button (_("AUDITION"))
, solo_alert_button (_("SOLO"))
@ -234,9 +236,11 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
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;
@ -3884,3 +3888,11 @@ ARDOUR_UI::feedback_detected ()
d.run ();
}
void
ARDOUR_UI::midi_panic ()
{
if (_session) {
_session->midi_panic();
}
}

View file

@ -731,6 +731,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
ARDOUR::ProcessThread* _process_thread;
void feedback_detected ();
ArdourButton midi_panic_button;
void midi_panic ();
};
#endif /* __ardour_gui_h__ */

View file

@ -132,6 +132,7 @@ ARDOUR_UI::setup_tooltips ()
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"));
@ -253,11 +254,11 @@ 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");
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"));
@ -273,6 +274,10 @@ ARDOUR_UI::setup_transport ()
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"));
@ -287,7 +292,8 @@ ARDOUR_UI::setup_transport ()
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);
@ -325,6 +331,7 @@ ARDOUR_UI::setup_transport ()
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);

View file

@ -444,12 +444,18 @@ ARDOUR_UI::install_actions ()
}
}
/* 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

View file

@ -184,4 +184,5 @@ BUTTON_VARS(TransportActiveOptionButton, "transport active option button")
BUTTON_VARS(PluginBypassButton, "plugin bypass button")
BUTTON_VARS(PunchButton, "punch button")
BUTTON_VARS(MouseModeButton, "mouse mode button")
BUTTON_VARS(ZoomButton, "zoom button")

View file

@ -268,7 +268,6 @@ Editor::Editor ()
, 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)
@ -2814,17 +2813,25 @@ Editor::setup_toolbar ()
_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_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_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_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_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 ("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);
@ -2840,7 +2847,7 @@ Editor::setup_toolbar ()
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");
@ -2972,19 +2979,9 @@ Editor::setup_tooltips ()
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 ()
@ -2998,12 +2995,8 @@ 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

View file

@ -1519,10 +1519,9 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
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;
@ -1603,9 +1602,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
/* 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 ();

View file

@ -608,18 +608,12 @@ Editor::register_actions ()
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 B

View file

@ -43,9 +43,6 @@ MonitorSection::MonitorSection (Session* s)
, 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)
{
@ -404,10 +401,6 @@ MonitorSection::set_session (Session* s)
}
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);

93
icons/midi_panic.svg Normal file
View file

@ -0,0 +1,93 @@
<?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>

After

Width:  |  Height:  |  Size: 3.7 KiB