diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2011-11-10 18:04:34 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2011-11-10 18:04:34 +0000 |
commit | f96ccb195828daeec03646ee4013531fe88c87fa (patch) | |
tree | 3da613868cbc350540de5f896c0f75cfff7c696f /gtk2_ardour | |
parent | 6449c2e5c8b027245fe5fb9942984243e4a653d7 (diff) |
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
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/ardour3_ui_default.conf | 16 | ||||
-rw-r--r-- | gtk2_ardour/ardour_button.cc | 51 | ||||
-rw-r--r-- | gtk2_ardour/ardour_button.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 12 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui2.cc | 11 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_ed.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/canvas_vars.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/editor.cc | 45 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 9 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/icons/midi_panic.png | bin | 0 -> 433 bytes | |||
-rw-r--r-- | gtk2_ardour/monitor_section.cc | 7 |
13 files changed, 120 insertions, 51 deletions
diff --git a/gtk2_ardour/ardour3_ui_default.conf b/gtk2_ardour/ardour3_ui_default.conf index f0267215f7..4b0643b3b5 100644 --- a/gtk2_ardour/ardour3_ui_default.conf +++ b/gtk2_ardour/ardour3_ui_default.conf @@ -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> diff --git a/gtk2_ardour/ardour_button.cc b/gtk2_ardour/ardour_button.cc index 1ba4de7535..5f6e1f8dc0 100644 --- a/gtk2_ardour/ardour_button.cc +++ b/gtk2_ardour/ardour_button.cc @@ -481,6 +481,7 @@ ArdourButton::on_button_release_event (GdkEventButton *ev) } } + return false; } @@ -543,10 +544,22 @@ 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)); + } } void @@ -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); +} + diff --git a/gtk2_ardour/ardour_button.h b/gtk2_ardour/ardour_button.h index 9157cc81fd..892c98cbff 100644 --- a/gtk2_ardour/ardour_button.h +++ b/gtk2_ardour/ardour_button.h @@ -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__ */ diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 0ebf07afe5..9c534c406a 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -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(); + } +} diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 2f1ded27cd..15975f29cf 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -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__ */ diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 76794d3e61..e7cac302f7 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -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); diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index e3cf8a2008..d31e348cc9 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -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 diff --git a/gtk2_ardour/canvas_vars.h b/gtk2_ardour/canvas_vars.h index b186c8bf4b..d35c8cad49 100644 --- a/gtk2_ardour/canvas_vars.h +++ b/gtk2_ardour/canvas_vars.h @@ -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") diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 05108eaf08..194a63a163 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -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_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); @@ -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 diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index f76a19ac0b..683cdc037a 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -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 (); diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index 321cb81b88..6cf215f76d 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -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 diff --git a/gtk2_ardour/icons/midi_panic.png b/gtk2_ardour/icons/midi_panic.png Binary files differnew file mode 100644 index 0000000000..9d0b9ef29a --- /dev/null +++ b/gtk2_ardour/icons/midi_panic.png diff --git a/gtk2_ardour/monitor_section.cc b/gtk2_ardour/monitor_section.cc index 0926794175..8a7e8ada92 100644 --- a/gtk2_ardour/monitor_section.cc +++ b/gtk2_ardour/monitor_section.cc @@ -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); |