summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorBen Loftis <ben@harrisonconsoles.com>2014-07-02 16:56:30 -0500
committerBen Loftis <ben@harrisonconsoles.com>2014-07-02 17:35:37 -0500
commit0f1c7b1d71078a25c1df80e7c95d59229f613414 (patch)
tree45c55231f6bc28e0da22b14290475fbe596d1cb1 /gtk2_ardour
parent007664c3dbd62f81cc32b10f54240df5182ad103 (diff)
start-range and finish-range should graphically show the range being created. also add bindings for comma and period in addition to existing bindings which require a numpad. the old ones are now alternates. all primary functionality should appear on the qwerrty, and the numpad should be considered an ergonomic redundant alternative if you have one
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour.menus.in5
-rw-r--r--gtk2_ardour/editor.cc3
-rw-r--r--gtk2_ardour/editor_actions.cc6
-rw-r--r--gtk2_ardour/editor_keys.cc72
-rw-r--r--gtk2_ardour/editor_selection.cc14
-rw-r--r--gtk2_ardour/mnemonic-us.bindings.in8
6 files changed, 87 insertions, 21 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in
index 9d520b1df7..5ce4cf9736 100644
--- a/gtk2_ardour/ardour.menus.in
+++ b/gtk2_ardour/ardour.menus.in
@@ -13,6 +13,10 @@
<accelerator action='toggle-edit-mode'/>
<accelerator action='toggle-midi-input-active'/>
<accelerator action='escape'/>
+
+ <accelerator action='alt-start-range'/>
+ <accelerator action='alt-finish-range'/>
+
#ifdef GTKOSX
<accelerator action='Quit'/>
#endif
@@ -191,7 +195,6 @@
<menuitem action='move-range-end-to-next-region-boundary'/>
<menuitem action='start-range'/>
<menuitem action='finish-range'/>
- <menuitem action='finish-add-range'/>
<separator/>
<menuitem action='select-next-route'/>
<menuitem action='select-prev-route'/>
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index f1c3c1e702..053e285091 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -4546,11 +4546,8 @@ Editor::get_regions_from_selection_and_edit_point ()
if (_edit_point == EditAtMouse && entered_regionview && !selection->regions.contains (entered_regionview)) {
regions.add (entered_regionview);
- } else {
- regions = selection->regions;
}
-
if (regions.empty() && _edit_point != EditAtMouse) {
TrackViewList tracks = selection->tracks;
diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc
index f49fd06906..4570736617 100644
--- a/gtk2_ardour/editor_actions.cc
+++ b/gtk2_ardour/editor_actions.cc
@@ -333,7 +333,11 @@ Editor::register_actions ()
reg_sens (editor_actions, "start-range", _("Start Range"), sigc::mem_fun(*this, &Editor::keyboard_selection_begin));
reg_sens (editor_actions, "finish-range", _("Finish Range"), sigc::bind (sigc::mem_fun(*this, &Editor::keyboard_selection_finish), false));
- reg_sens (editor_actions, "finish-add-range", _("Finish Add Range"), sigc::bind (sigc::mem_fun(*this, &Editor::keyboard_selection_finish), true));
+
+ reg_sens (editor_actions, "alt-start-range", _("Start Range"), sigc::mem_fun(*this, &Editor::keyboard_selection_begin));
+ reg_sens (editor_actions, "alt-finish-range", _("Finish Range"), sigc::bind (sigc::mem_fun(*this, &Editor::keyboard_selection_finish), false));
+
+// reg_sens (editor_actions, "finish-add-range", _("Finish Add Range"), sigc::bind (sigc::mem_fun(*this, &Editor::keyboard_selection_finish), true));
reg_sens (
editor_actions,
diff --git a/gtk2_ardour/editor_keys.cc b/gtk2_ardour/editor_keys.cc
index 93eba4b79f..2900e28c2a 100644
--- a/gtk2_ardour/editor_keys.cc
+++ b/gtk2_ardour/editor_keys.cc
@@ -37,10 +37,80 @@
using namespace ARDOUR;
using namespace PBD;
+using namespace Editing;
void
Editor::keyboard_selection_finish (bool add)
{
+ if (_session) {
+
+ framepos_t start = selection->time.start();
+ framepos_t end;
+
+ if ((_edit_point == EditAtPlayhead) && _session->transport_rolling()) {
+ end = _session->audible_frame();
+ } else {
+ end = get_preferred_edit_position();
+ }
+
+ //snap the selection start/end
+ snap_to(start);
+
+ //if no tracks are selected and we're working from the keyboard, enable all tracks (_something_ has to be selected for any range selection)
+ if ( (_edit_point == EditAtPlayhead) && selection->tracks.empty() )
+ select_all_tracks();
+
+ selection->set (start, end);
+
+ //if session is playing a range, cancel that
+// if (_session->get_play_range())
+// _session->request_cancel_play_range();
+
+ }
+}
+
+void
+Editor::keyboard_selection_begin ()
+{
+ if (_session) {
+
+ framepos_t start;
+ framepos_t end = selection->time.end_frame(); //0 if no current selection
+
+ if ((_edit_point == EditAtPlayhead) && _session->transport_rolling()) {
+ start = _session->audible_frame();
+ } else {
+ start = get_preferred_edit_position();
+ }
+
+ //snap the selection start/end
+ snap_to(start);
+
+ //if there's not already a sensible selection endpoint, go "forever"
+ if ( start > end ) {
+ end = max_framepos;
+ }
+
+ //if no tracks are selected and we're working from the keyboard, enable all tracks (_something_ has to be selected for any range selection)
+ if ( selection->tracks.empty() )
+ select_all_tracks();
+
+ selection->set (start, end);
+
+ //if session is playing a range, cancel that
+ if (_session->get_play_range())
+ _session->request_transport_speed ( 1.0 );
+
+ //if join playhead, locate to the newly selected start
+// if ( !_session->transport_rolling() && Config->get_join_play_range() )
+// _session->request_cancel_play_range();
+ }
+}
+
+/*
+void
+Editor::keyboard_selection_finish (bool add)
+{
if (_session && have_pending_keyboard_selection) {
framepos_t end;
@@ -82,7 +152,7 @@ Editor::keyboard_selection_begin ()
}
}
-}
+}*/
void
Editor::keyboard_paste ()
diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc
index 01d3d3e418..203df9f322 100644
--- a/gtk2_ardour/editor_selection.cc
+++ b/gtk2_ardour/editor_selection.cc
@@ -1378,17 +1378,7 @@ Editor::select_all (Selection::Operation op)
{
list<Selectable *> touched;
- TrackViewList ts;
-
- if (selection->tracks.empty()) {
- if (entered_track) {
- ts.push_back (entered_track);
- } else {
- ts = track_views;
- }
- } else {
- ts = selection->tracks;
- }
+ TrackViewList ts = track_views;
if (_internal_editing) {
@@ -1418,8 +1408,10 @@ Editor::select_all (Selection::Operation op)
continue;
}
(*iter)->get_selectables (0, max_framepos, 0, DBL_MAX, touched);
+ selection->add (*iter);
}
+
begin_reversible_command (_("select all"));
switch (op) {
case Selection::Add:
diff --git a/gtk2_ardour/mnemonic-us.bindings.in b/gtk2_ardour/mnemonic-us.bindings.in
index 9b4479a4f7..8ab050e867 100644
--- a/gtk2_ardour/mnemonic-us.bindings.in
+++ b/gtk2_ardour/mnemonic-us.bindings.in
@@ -275,10 +275,10 @@ This mode provides many different operations on both regions and control points,
@rop|Region/nudge-forward|KP_Add|nudge forward
@-group|Editor/nudge-next-forward|<@PRIMARY@>KP_Add|some text
-@-group|Editor/start-range|<@PRIMARY@>KP_Down|some text
-
-@-group|Editor/finish-range|<@PRIMARY@>KP_Up|some text
-@-group|Editor/finish-add-range|<@TERTIARY@><@PRIMARY@>KP_Up|some text
+@-group|Editor/start-range|comma|some text
+@-group|Editor/finish-range|period|some text
+@-group|Editor/alt-start-range|<@PRIMARY@>KP_Down|some text
+@-group|Editor/alt-finish-range|<@PRIMARY@>KP_Up|some text
@markers|Editor/add-location-from-playhead|KP_Enter|add mark at playhead
@wvis|Transport/focus-on-clock|KP_Divide|focus on main clock