diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2014-07-07 06:27:01 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2014-07-07 07:05:43 -0400 |
commit | 7ec397c0198674de782bfac083e59e3dc8390eb7 (patch) | |
tree | 13fdb32cb2a16d1a254b251f4df27d936e13b34b | |
parent | 8381c10b599f54d2be92fc00d5b5f009b079cb1a (diff) |
add basics of Cut mouse mode, no functionality yet. Icon images are still required
-rw-r--r-- | gtk2_ardour/editing_syms.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/editor.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 18 | ||||
-rw-r--r-- | gtk2_ardour/editor_canvas.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 17 | ||||
-rw-r--r-- | gtk2_ardour/mouse_cursors.cc | 7 | ||||
-rw-r--r-- | gtk2_ardour/mouse_cursors.h | 1 |
8 files changed, 44 insertions, 8 deletions
diff --git a/gtk2_ardour/editing_syms.h b/gtk2_ardour/editing_syms.h index fdbdc66811..318591293d 100644 --- a/gtk2_ardour/editing_syms.h +++ b/gtk2_ardour/editing_syms.h @@ -72,6 +72,7 @@ MOUSEMODE(MouseDraw) MOUSEMODE(MouseTimeFX) MOUSEMODE(MouseZoom) MOUSEMODE(MouseAudition) +MOUSEMODE(MouseCut) /* Changing this order will break the menu */ ZOOMFOCUS(ZoomFocusLeft) diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 02095f8954..9aff7083e0 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -2768,6 +2768,7 @@ Editor::setup_toolbar () Glib::RefPtr<SizeGroup> mouse_mode_size_group = SizeGroup::create (SIZE_GROUP_BOTH); // mouse_mode_size_group->add_widget (smart_mode_button); mouse_mode_size_group->add_widget (mouse_move_button); + mouse_mode_size_group->add_widget (mouse_cut_button); mouse_mode_size_group->add_widget (mouse_select_button); mouse_mode_size_group->add_widget (mouse_zoom_button); mouse_mode_size_group->add_widget (mouse_gain_button); @@ -2787,6 +2788,7 @@ Editor::setup_toolbar () mouse_mode_hbox->pack_start (mouse_move_button, false, false); mouse_mode_hbox->pack_start (mouse_select_button, false, false); + mouse_mode_hbox->pack_start (mouse_cut_button, false, false); mouse_mode_hbox->pack_start (mouse_zoom_button, false, false); if (!ARDOUR::Profile->get_trx()) { @@ -3076,6 +3078,7 @@ Editor::setup_tooltips () { ARDOUR_UI::instance()->set_tip (smart_mode_button, _("Smart Mode (add Range functions to Object mode)")); ARDOUR_UI::instance()->set_tip (mouse_move_button, _("Object Mode (select/move Objects)")); + ARDOUR_UI::instance()->set_tip (mouse_cut_button, _("Cut Mode (split Regions)")); ARDOUR_UI::instance()->set_tip (mouse_select_button, _("Range Mode (select/move Ranges)")); ARDOUR_UI::instance()->set_tip (mouse_draw_button, _("Draw/Edit MIDI Notes")); ARDOUR_UI::instance()->set_tip (mouse_gain_button, _("Draw Region Gain")); diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 9faaa4ded3..3875c4d0b8 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1603,6 +1603,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD ArdourButton mouse_zoom_button; ArdourButton mouse_timefx_button; ArdourButton mouse_audition_button; + ArdourButton mouse_cut_button; ArdourButton smart_mode_button; Glib::RefPtr<Gtk::ToggleAction> smart_mode_action; diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index 229a8ad39f..6fea7a1770 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -453,39 +453,45 @@ Editor::register_actions () 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.add_elements ( ArdourButton::Inset ); + mouse_select_button.add_elements (ArdourButton::Inset ); mouse_select_button.set_name ("mouse mode button"); act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-draw", _("Note Drawing Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseDraw)); mouse_draw_button.set_related_action (act); mouse_draw_button.set_image (::get_icon("midi_tool_pencil")); - mouse_draw_button.add_elements ( ArdourButton::Inset ); + mouse_draw_button.add_elements (ArdourButton::Inset ); mouse_draw_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.add_elements ( ArdourButton::Inset ); + mouse_gain_button.add_elements (ArdourButton::Inset ); 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.add_elements ( ArdourButton::Inset ); + mouse_zoom_button.add_elements (ArdourButton::Inset ); 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.add_elements ( ArdourButton::Inset ); + mouse_audition_button.add_elements (ArdourButton::Inset ); 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.add_elements ( ArdourButton::Inset ); + mouse_timefx_button.add_elements (ArdourButton::Inset ); mouse_timefx_button.set_name ("mouse mode button"); + act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-cut", _("Cut Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseCut)); + mouse_cut_button.set_related_action (act); + mouse_cut_button.set_image (::get_icon("tool_cut")); + mouse_cut_button.add_elements (ArdourButton::Inset ); + mouse_cut_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)); diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index 77f0bf6b21..4529284952 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -1107,6 +1107,10 @@ Editor::which_mode_cursor () const } break; + case MouseCut: + mode_cursor = _cursors->scissors; + break; + case MouseObject: /* don't use mode cursor, pick a grabber cursor based on the item */ break; diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 62cf89e35c..9586b9f8e1 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -239,6 +239,10 @@ Editor::set_mouse_mode (MouseMode m, bool force) act = ActionManager::get_action (X_("MouseMode"), X_("set-mouse-mode-range")); break; + case MouseCut: + act = ActionManager::get_action (X_("MouseCut"), X_("set-mouse-mode-cut")); + break; + case MouseObject: act = ActionManager::get_action (X_("MouseMode"), X_("set-mouse-mode-object")); break; @@ -291,6 +295,10 @@ Editor::mouse_mode_toggled (MouseMode m) act = ActionManager::get_action (X_("MouseMode"), X_("set-mouse-mode-object")); break; + case MouseCut: + act = ActionManager::get_action (X_("MouseMode"), X_("set-mouse-mode-cut")); + break; + case MouseDraw: act = ActionManager::get_action (X_("MouseMode"), X_("set-mouse-mode-draw")); break; @@ -410,11 +418,16 @@ Editor::step_mouse_mode (bool next) case MouseRange: if (next) set_mouse_mode (MouseDraw); - else set_mouse_mode (MouseObject); + else set_mouse_mode (MouseCut); + break; + + case MouseCut: + if (next) set_mouse_mode (MouseRange); + else set_mouse_mode (MouseDraw); break; case MouseDraw: - if (next) set_mouse_mode (MouseZoom); + if (next) set_mouse_mode (MouseCut); else set_mouse_mode (MouseRange); break; diff --git a/gtk2_ardour/mouse_cursors.cc b/gtk2_ardour/mouse_cursors.cc index 4ba5c66688..13cf74f780 100644 --- a/gtk2_ardour/mouse_cursors.cc +++ b/gtk2_ardour/mouse_cursors.cc @@ -26,6 +26,7 @@ using namespace ARDOUR_UI_UTILS; MouseCursors::MouseCursors () : cross_hair (0) + , scissors (0) , trimmer (0) , right_side_trim (0) , anchored_right_side_trim (0) @@ -70,6 +71,7 @@ void MouseCursors::drop_all () { delete cross_hair; cross_hair = 0; + delete scissors; scissors = 0; delete trimmer; trimmer = 0; delete right_side_trim; right_side_trim = 0; delete anchored_right_side_trim; anchored_right_side_trim = 0; @@ -158,6 +160,11 @@ MouseCursors::set_cursor_set (const std::string& name) } { + RefPtr<Pixbuf> p (::get_icon ("scissors", _cursor_set)); + scissors = new Cursor (Display::get_default(), p, 5, 0); + } + + { RefPtr<Pixbuf> p (::get_icon ("grabber", _cursor_set)); grabber = new Cursor (Display::get_default(), p, 5, 0); } diff --git a/gtk2_ardour/mouse_cursors.h b/gtk2_ardour/mouse_cursors.h index 30eca6acb8..14ce90347e 100644 --- a/gtk2_ardour/mouse_cursors.h +++ b/gtk2_ardour/mouse_cursors.h @@ -34,6 +34,7 @@ public: std::string cursor_set() const { return _cursor_set; } Gdk::Cursor* cross_hair; + Gdk::Cursor* scissors; Gdk::Cursor* trimmer; Gdk::Cursor* right_side_trim; Gdk::Cursor* anchored_right_side_trim; |