summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-12-05 10:31:26 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-12-05 10:31:26 +0000
commit302d88d60448753be8755192716e77cefdfb1187 (patch)
tree2359dc3289140d334702e474f6defd850baabff2
parentd572ed2ed4d867009a1ca365ca5316867c824690 (diff)
apply/merge/redo carl & colin's patches for making range markers from the region selection so that there are now 1 actions: 1 range for all selected regions, or 1 range per selected region; add these to the relevant menus
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@4291 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/ardour.menus.in5
-rw-r--r--gtk2_ardour/editor.cc7
-rw-r--r--gtk2_ardour/editor.h1
-rw-r--r--gtk2_ardour/editor_actions.cc7
-rw-r--r--gtk2_ardour/editor_ops.cc60
5 files changed, 72 insertions, 8 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in
index 542ba5d388..3f00dbcb2f 100644
--- a/gtk2_ardour/ardour.menus.in
+++ b/gtk2_ardour/ardour.menus.in
@@ -242,6 +242,11 @@
<menuitem action='duplicate-region'/>
<menuitem action='multi-duplicate-region'/>
<menuitem action='region-fill-track'/>
+ <separator/>
+ <menuitem action='loop-region'/>
+ <menuitem action='set-punch-from-region'/>
+ <menuitem action='add-range-marker-from-region'/>
+ <menuitem action='add-range-markers-from-region'/>
</menu>
<menu action='TrackMenu'>
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index fb58fc4a39..eee60e033b 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -1962,7 +1962,12 @@ Editor::add_region_context_items (AudioStreamView* sv, boost::shared_ptr<Region>
/* range related stuff */
- items.push_back (MenuElem (_("Add Range Markers"), mem_fun (*this, &Editor::add_location_from_audio_region)));
+ items.push_back (MenuElem (_("Add Single Range"), mem_fun (*this, &Editor::add_location_from_audio_region)));
+ items.push_back (MenuElem (_("Add Range Markers"), mem_fun (*this, &Editor::add_locations_from_audio_region)));
+ if (selection->regions.size() < 2) {
+ items.back().set_sensitive (false);
+ }
+
items.push_back (MenuElem (_("Set Range Selection"), mem_fun (*this, &Editor::set_selection_from_audio_region)));
items.push_back (SeparatorElem());
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index a7a275ff48..983f39d170 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -1261,6 +1261,7 @@ class Editor : public PublicEditor
void add_location_mark (nframes64_t where);
void add_location_from_audio_region ();
+ void add_locations_from_audio_region ();
void add_location_from_selection ();
void set_loop_from_selection (bool play);
void set_punch_from_selection ();
diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc
index 0312422e33..0776b91373 100644
--- a/gtk2_ardour/editor_actions.cc
+++ b/gtk2_ardour/editor_actions.cc
@@ -379,6 +379,7 @@ Editor::register_actions ()
ActionManager::region_selection_sensitive_actions.push_back (act);
act = ActionManager::register_action (editor_actions, "loop-region", _("Loop Region"), bind (mem_fun(*this, &Editor::set_loop_from_region), true));
ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::region_selection_sensitive_actions.push_back (act);
act = ActionManager::register_action (editor_actions, "set-punch-from-edit-range", _("Set Punch From Edit Range"), mem_fun(*this, &Editor::set_punch_from_edit_range));
ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_action (editor_actions, "set-punch-from-region", _("Set Punch From Region"), mem_fun(*this, &Editor::set_punch_from_region));
@@ -389,6 +390,12 @@ Editor::register_actions ()
act = ActionManager::register_action (editor_actions, "toggle-opaque-region", _("Toggle Opaque"), mem_fun(*this, &Editor::toggle_region_opaque));
ActionManager::session_sensitive_actions.push_back (act);
ActionManager::region_selection_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (editor_actions, "add-range-marker-from-region", _("Add 1 Range Marker"), mem_fun(*this, &Editor::add_location_from_audio_region));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::region_selection_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (editor_actions, "add-range-markers-from-region", _("Add Range Marker(s)"), mem_fun(*this, &Editor::add_locations_from_audio_region));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::region_selection_sensitive_actions.push_back (act);
act = ActionManager::register_action (editor_actions, "set-fade-in-length", _("Set Fade In Length"), bind (mem_fun(*this, &Editor::set_fade_length), true));
ActionManager::session_sensitive_actions.push_back (act);
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 6b867500ae..bc934ead1d 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -1991,7 +1991,7 @@ Editor::add_location_from_playhead_cursor ()
}
void
-Editor::add_location_from_audio_region ()
+Editor::add_locations_from_audio_region ()
{
RegionSelection rs;
@@ -2001,15 +2001,61 @@ Editor::add_location_from_audio_region ()
return;
}
- RegionView* rv = *(rs.begin());
- boost::shared_ptr<Region> region = rv->region();
+ session->begin_reversible_command (rs.size () > 1 ? _("add markers") : _("add marker"));
+ XMLNode &before = session->locations()->get_state();
- Location *location = new Location (region->position(), region->last_frame(), region->name(), Location::IsRangeMarker);
+ cerr << "Add locations\n";
+
+ for (RegionSelection::iterator i = rs.begin (); i != rs.end (); ++i) {
+
+ boost::shared_ptr<Region> region = (*i)->region ();
+
+ Location *location = new Location (region->position(), region->last_frame(), region->name(), Location::IsRangeMarker);
+
+ session->locations()->add (location, true);
+ }
+
+ XMLNode &after = session->locations()->get_state();
+ session->add_command (new MementoCommand<Locations>(*(session->locations()), &before, &after));
+ session->commit_reversible_command ();
+}
+
+void
+Editor::add_location_from_audio_region ()
+{
+ RegionSelection rs;
+
+ get_regions_for_action (rs);
+
+ if (rs.empty()) {
+ return;
+ }
+
session->begin_reversible_command (_("add marker"));
- XMLNode &before = session->locations()->get_state();
+ XMLNode &before = session->locations()->get_state();
+
+ string markername;
+
+ if (rs.size() > 1) { // more than one region selected
+ session->locations()->next_available_name(markername, "regions");
+ } else {
+ RegionView* rv = *(rs.begin());
+ boost::shared_ptr<Region> region = rv->region();
+ markername = region->name();
+ }
+
+ if (!choose_new_marker_name(markername)) {
+ return;
+ }
+
+ cerr << "Add location\n";
+
+ // single range spanning all selected
+ Location *location = new Location (rs.start(), rs.end_frame(), markername, Location::IsRangeMarker);
session->locations()->add (location, true);
- XMLNode &after = session->locations()->get_state();
- session->add_command(new MementoCommand<Locations>(*(session->locations()), &before, &after));
+
+ XMLNode &after = session->locations()->get_state();
+ session->add_command (new MementoCommand<Locations>(*(session->locations()), &before, &after));
session->commit_reversible_command ();
}