add basics of Cut mouse mode, no functionality yet. Icon images are still required

This commit is contained in:
Paul Davis 2014-07-07 06:27:01 -04:00
parent 8381c10b59
commit 7ec397c019
8 changed files with 44 additions and 8 deletions

View file

@ -72,6 +72,7 @@ MOUSEMODE(MouseDraw)
MOUSEMODE(MouseTimeFX)
MOUSEMODE(MouseZoom)
MOUSEMODE(MouseAudition)
MOUSEMODE(MouseCut)
/* Changing this order will break the menu */
ZOOMFOCUS(ZoomFocusLeft)

View file

@ -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"));

View file

@ -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;

View file

@ -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));

View file

@ -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;

View file

@ -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;

View file

@ -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;
@ -157,6 +159,11 @@ MouseCursors::set_cursor_set (const std::string& name)
transparent = new Cursor (bits, bits, c, c, 0, 0);
}
{
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);

View file

@ -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;