summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-05-16 20:16:57 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-05-16 20:16:57 +0000
commit99aa8c6338e47b41143f799fdcb35d1699548076 (patch)
treea61140fd331b49a408894f00dcb8976cbb6543b8 /gtk2_ardour
parent4b848856ebc2856bf7ab10a000cc88bdd3bc4a4a (diff)
rename join regions op as combine regions; save and restore nested playlists, sources, regions; add undo/redo for combine; fixup peakfile use/discovery
git-svn-id: svn://localhost/ardour2/branches/3.0@9528 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour.menus.in2
-rw-r--r--gtk2_ardour/editor.h3
-rw-r--r--gtk2_ardour/editor_actions.cc2
-rw-r--r--gtk2_ardour/editor_ops.cc12
-rw-r--r--gtk2_ardour/editor_selection.cc3
-rw-r--r--gtk2_ardour/route_time_axis.cc13
-rw-r--r--gtk2_ardour/route_time_axis.h2
7 files changed, 26 insertions, 11 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in
index 62d637058b..d59fcc8f38 100644
--- a/gtk2_ardour/ardour.menus.in
+++ b/gtk2_ardour/ardour.menus.in
@@ -228,7 +228,7 @@
<menuitem action='play-selected-regions'/>
<menuitem action='export-region'/>
<menuitem action='bounce-region'/>
- <menuitem action='join-regions'/>
+ <menuitem action='combine-regions'/>
<menuitem action='analyze-region'/>
<menuitem action='toggle-region-lock'/>
<menuitem action='toggle-region-lock-style'/>
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 83d8b394c3..140235e890 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -1099,7 +1099,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void duplicate_some_regions (RegionSelection&, float times);
void duplicate_selection (float times);
void region_fill_selection ();
- void join_regions ();
+ void combine_regions ();
+ void uncombine_regions ();
void region_fill_track ();
void audition_playlist_region_standalone (boost::shared_ptr<ARDOUR::Region>);
diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc
index 0081a806aa..a45279b6bb 100644
--- a/gtk2_ardour/editor_actions.cc
+++ b/gtk2_ardour/editor_actions.cc
@@ -1372,7 +1372,7 @@ Editor::register_region_actions ()
reg_sens (_region_actions, "play-selected-regions", _("Play"), sigc::mem_fun(*this, &Editor::play_selected_region));
reg_sens (_region_actions, "bounce-region", _("Bounce"), sigc::mem_fun (*this, &Editor::bounce_region_selection));
- reg_sens (_region_actions, "join-regions", _("Join"), sigc::mem_fun (*this, &Editor::join_regions));
+ reg_sens (_region_actions, "combine-regions", _("Combine"), sigc::mem_fun (*this, &Editor::combine_regions));
reg_sens (_region_actions, "analyze-region", _("Spectral Analysis..."), sigc::mem_fun (*this, &Editor::analyze_region_selection));
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 07e68faf3d..a6bba7d76c 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -6403,7 +6403,7 @@ Editor::toggle_region_mute ()
}
void
-Editor::join_regions ()
+Editor::combine_regions ()
{
/* foreach track with selected regions, take all selected regions
and join them into a new region containing the subregions (as a
@@ -6413,6 +6413,10 @@ Editor::join_regions ()
typedef set<RouteTimeAxisView*> RTVS;
RTVS tracks;
+ if (selection->regions.empty()) {
+ return;
+ }
+
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(&(*i)->get_time_axis_view());
@@ -6421,8 +6425,12 @@ Editor::join_regions ()
}
}
+ begin_reversible_command (_("combine regions"));
+
for (RTVS::iterator i = tracks.begin(); i != tracks.end(); ++i) {
- (*i)->join_regions ();
+ (*i)->combine_regions ();
}
+
+ commit_reversible_command ();
}
diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc
index 7998a4bfa6..3ec11ea410 100644
--- a/gtk2_ardour/editor_selection.cc
+++ b/gtk2_ardour/editor_selection.cc
@@ -957,7 +957,6 @@ Editor::sensitize_the_right_region_actions ()
if (!selection->time.empty()) {
_region_actions->get_action("split-region")->set_sensitive (true);
}
-
return;
} else if (mouse_mode != MouseObject) {
@@ -1063,9 +1062,11 @@ Editor::sensitize_the_right_region_actions ()
_region_actions->get_action("show-region-list-editor")->set_sensitive (false);
_region_actions->get_action("show-region-properties")->set_sensitive (false);
_region_actions->get_action("rename-region")->set_sensitive (false);
+ _region_actions->get_action("combine-regions")->set_sensitive (true);
} else if (rs.size() == 1) {
_region_actions->get_action("add-range-markers-from-region")->set_sensitive (false);
_region_actions->get_action("close-region-gaps")->set_sensitive (false);
+ _region_actions->get_action("combine-regions")->set_sensitive (false);
}
if (!have_midi) {
diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc
index 81dbefcd29..119f1814d3 100644
--- a/gtk2_ardour/route_time_axis.cc
+++ b/gtk2_ardour/route_time_axis.cc
@@ -2486,7 +2486,7 @@ void add_region_to_list (RegionView* rv, Playlist::RegionList* l, uint32_t* max_
}
void
-RouteTimeAxisView::join_regions ()
+RouteTimeAxisView::combine_regions ()
{
assert (is_track());
@@ -2495,11 +2495,16 @@ RouteTimeAxisView::join_regions ()
}
Playlist::RegionList selected_regions;
+ boost::shared_ptr<Playlist> playlist = track()->playlist();
uint32_t max_level = 0;
_view->foreach_selected_regionview (sigc::bind (sigc::ptr_fun (add_region_to_list), &selected_regions, &max_level));
- uint32_t num_joined_regions = track()->playlist()->count_joined_regions();
- string name = string_compose (_("%1 combine-%2 (%3)"), track()->playlist()->name(), num_joined_regions+1, max_level+1);
- track()->playlist()->join (selected_regions, name);
+ uint32_t num_joined_regions = playlist->count_joined_regions();
+ string name = string_compose (_("%1 compound-%2 (%3)"), playlist->name(), num_joined_regions+1, max_level+1);
+
+
+ playlist->clear_changes ();
+ playlist->join (selected_regions, name);
+ _session->add_command (new StatefulDiffCommand (playlist));
}
diff --git a/gtk2_ardour/route_time_axis.h b/gtk2_ardour/route_time_axis.h
index d596de3df7..b06b56fc67 100644
--- a/gtk2_ardour/route_time_axis.h
+++ b/gtk2_ardour/route_time_axis.h
@@ -94,7 +94,7 @@ public:
/* Editing operations */
void cut_copy_clear (Selection&, Editing::CutCopyOp);
bool paste (ARDOUR::framepos_t, float times, Selection&, size_t nth);
- void join_regions ();
+ void combine_regions ();
void toggle_automation_track (const Evoral::Parameter& param);
/* The editor calls these when mapping an operation across multiple tracks */