summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-07-07 06:27:01 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2014-07-07 07:05:43 -0400
commit7ec397c0198674de782bfac083e59e3dc8390eb7 (patch)
tree13fdb32cb2a16d1a254b251f4df27d936e13b34b
parent8381c10b599f54d2be92fc00d5b5f009b079cb1a (diff)
add basics of Cut mouse mode, no functionality yet. Icon images are still required
-rw-r--r--gtk2_ardour/editing_syms.h1
-rw-r--r--gtk2_ardour/editor.cc3
-rw-r--r--gtk2_ardour/editor.h1
-rw-r--r--gtk2_ardour/editor_actions.cc18
-rw-r--r--gtk2_ardour/editor_canvas.cc4
-rw-r--r--gtk2_ardour/editor_mouse.cc17
-rw-r--r--gtk2_ardour/mouse_cursors.cc7
-rw-r--r--gtk2_ardour/mouse_cursors.h1
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;