summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_mouse.cc
diff options
context:
space:
mode:
authorHans Fugal <hans@fugal.net>2006-07-29 03:17:11 +0000
committerHans Fugal <hans@fugal.net>2006-07-29 03:17:11 +0000
commit1f1c4981de73b13d0b7617d8ebe89d9f22dddec3 (patch)
tree90ab3942960de1af673d8d2b4423f0b09dd839b4 /gtk2_ardour/editor_mouse.cc
parent277b771a978b10580a46e19f19ae0cf2d8819f46 (diff)
Compiles, but doesn't link. The link errors are mostly expected and are
tomorrow's task. git-svn-id: svn://localhost/ardour2/branches/undo@719 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_mouse.cc')
-rw-r--r--gtk2_ardour/editor_mouse.cc118
1 files changed, 54 insertions, 64 deletions
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc
index 4b17c9e6b0..c7199984a8 100644
--- a/gtk2_ardour/editor_mouse.cc
+++ b/gtk2_ardour/editor_mouse.cc
@@ -27,6 +27,7 @@
#include <pbd/error.h>
#include <gtkmm2ext/utils.h>
+#include <pbd/memento_command.h>
#include "ardour_ui.h"
#include "editor.h"
@@ -1812,15 +1813,14 @@ Editor::fade_in_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* even
}
begin_reversible_command (_("change fade in length"));
- XMLNode &before, &after;
- before = arv->region.get_state();
+ XMLNode &before = arv->region.get_state();
arv->region.set_fade_in_length (fade_length);
- after = arv->region.get_state();
- session->add_command(MementoCommand<ARDOUR::AudioRegion>(arv->region,
- before,
- after));
+ XMLNode &after = arv->region.get_state();
+ session->add_command(new MementoCommand<ARDOUR::AudioRegion>(arv->region,
+ before,
+ after));
commit_reversible_command ();
fade_in_drag_motion_callback (item, event);
}
@@ -1910,13 +1910,12 @@ Editor::fade_out_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* eve
}
begin_reversible_command (_("change fade out length"));
- XMLNode &before, &after;
- before = arv->region.get_state();
+ XMLNode &before = arv->region.get_state();
arv->region.set_fade_out_length (fade_length);
- after = arv->region.get_state();
- session->add_command(MementoCommand<ARDOUR::AudioRegion>(arv->region, before, after));
+ XMLNode &after = arv->region.get_state();
+ session->add_command(new MementoCommand<ARDOUR::AudioRegion>(arv->region, before, after));
commit_reversible_command ();
fade_out_drag_motion_callback (item, event);
@@ -2150,8 +2149,7 @@ Editor::marker_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
begin_reversible_command ( _("move marker") );
- XMLNode &before, &after;
- before = session->locations()->get_state();
+ XMLNode &before = session->locations()->get_state();
Location * location = find_location_from_marker (marker, is_start);
@@ -2159,8 +2157,8 @@ Editor::marker_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
location->set (drag_info.copied_location->start(), drag_info.copied_location->end());
}
- after = session->locations()->get_state();
- session->add_command(MementoCommand<Locations>(session->locations(), before, after));
+ XMLNode &after = session->locations()->get_state();
+ session->add_command(new MementoCommand<Locations>(*(session->locations()), before, after));
commit_reversible_command ();
marker_drag_line->hide();
@@ -2272,14 +2270,12 @@ Editor::meter_marker_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent*
TempoMap& map (session->tempo_map());
map.bbt_time (drag_info.last_pointer_frame, when);
- XMLNode &before, &after;
-
if (drag_info.copy == true) {
begin_reversible_command (_("copy meter mark"));
- before = map.get_state();
+ XMLNode &before = map.get_state();
map.add_meter (marker->meter(), when);
- after = map.get_state();
- session->add_command(MementoCommand<TempoMap>(map, before, after));
+ XMLNode &after = map.get_state();
+ session->add_command(new MementoCommand<TempoMap>(map, before, after));
commit_reversible_command ();
// delete the dummy marker we used for visual representation of copying.
@@ -2287,10 +2283,10 @@ Editor::meter_marker_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent*
delete marker;
} else {
begin_reversible_command (_("move meter mark"));
- before = map.get_state();
+ XMLNode &before = map.get_state();
map.move_meter (marker->meter(), when);
- after = map.get_state();
- session->add_command(MementoCommand<TempoMap>(map, before, after));
+ XMLNode &after = map.get_state();
+ session->add_command(new MementoCommand<TempoMap>(map, before, after));
commit_reversible_command ();
}
}
@@ -2406,14 +2402,12 @@ Editor::tempo_marker_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent*
TempoMap& map (session->tempo_map());
map.bbt_time (drag_info.last_pointer_frame, when);
- XMLNode &before, &after;
-
if (drag_info.copy == true) {
begin_reversible_command (_("copy tempo mark"));
- before = map.get_state();
+ XMLNode &before = map.get_state();
map.add_tempo (marker->tempo(), when);
- after = map.get_state();
- session->add_command (MementoCommand<TempoMap>(map, before, after));
+ XMLNode &after = map.get_state();
+ session->add_command (new MementoCommand<TempoMap>(map, before, after));
commit_reversible_command ();
// delete the dummy marker we used for visual representation of copying.
@@ -2421,10 +2415,10 @@ Editor::tempo_marker_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent*
delete marker;
} else {
begin_reversible_command (_("move tempo mark"));
- before = map.get_state();
+ XMLNode &before = map.get_state();
map.move_tempo (marker->tempo(), when);
- after = map.get_state();
- session->add_command (MementoCommand<TempoMap>(map, before, after));
+ XMLNode &after = map.get_state();
+ session->add_command (new MementoCommand<TempoMap>(map, before, after));
commit_reversible_command ();
}
}
@@ -2787,7 +2781,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
insert_result = affected_playlists.insert (to_playlist);
if (insert_result.second) {
- session->add_command (MementoUndoCommand<Playlist>(*to_playlist, to_playlist->get_state()));
+ session->add_command (new MementoUndoCommand<Playlist>(*to_playlist, to_playlist->get_state()));
}
latest_regionview = 0;
@@ -3225,7 +3219,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
insert_result = motion_frozen_playlists.insert (pl);
if (insert_result.second) {
pl->freeze();
- session->add_command(MementoUndoCommand<Playlist>(*pl, pl->get_state()));
+ session->add_command(new MementoUndoCommand<Playlist>(*pl, pl->get_state()));
}
}
}
@@ -3353,7 +3347,7 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
insert_result = motion_frozen_playlists.insert(to_playlist);
if (insert_result.second) {
to_playlist->freeze();
- session->add_command(MementoUndoCommand<Playlist>(*to_playlist, to_playlist->get_state()));
+ session->add_command(new MementoUndoCommand<Playlist>(*to_playlist, to_playlist->get_state()));
}
}
@@ -3435,7 +3429,7 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
out:
for (set<Playlist*>::iterator p = motion_frozen_playlists.begin(); p != motion_frozen_playlists.end(); ++p) {
(*p)->thaw ();
- session->add_command (MementoRedoCommand<Playlist>(*(*p), (*p)->get_state()));
+ session->add_command (new MementoRedoCommand<Playlist>(*(*p), (*p)->get_state()));
}
motion_frozen_playlists.clear ();
@@ -3630,10 +3624,10 @@ Editor::start_selection_grab (ArdourCanvas::Item* item, GdkEvent* event)
Playlist* playlist = clicked_trackview->playlist();
- before = playlist->get_state();
+ before = &(playlist->get_state());
clicked_trackview->playlist()->add_region (*region, selection->time[clicked_selection].start);
- after = playlist->get_state();
- session->add_command(MementoCommand<Playlist>(*playlist, before, after));
+ XMLNode &after = playlist->get_state();
+ session->add_command(new MementoCommand<Playlist>(*playlist, *before, after));
commit_reversible_command ();
@@ -3997,7 +3991,7 @@ Editor::trim_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
Playlist * pl = (*i)->region.playlist();
insert_result = motion_frozen_playlists.insert (pl);
if (insert_result.second) {
- session->add_command(MementoUndoCommand<Playlist>(*pl, pl->get_state()));
+ session->add_command(new MementoUndoCommand<Playlist>(*pl, pl->get_state()));
}
}
}
@@ -4187,7 +4181,7 @@ Editor::trim_finished_callback (ArdourCanvas::Item* item, GdkEvent* event)
for (set<Playlist*>::iterator p = motion_frozen_playlists.begin(); p != motion_frozen_playlists.end(); ++p) {
//(*p)->thaw ();
- session->add_command (MementoRedoCommand<Playlist>(*(*p), (*p)->get_state()));
+ session->add_command (new MementoRedoCommand<Playlist>(*(*p), (*p)->get_state()));
}
motion_frozen_playlists.clear ();
@@ -4221,24 +4215,22 @@ Editor::point_trim (GdkEvent* event)
i != selection->audio_regions.by_layer().end(); ++i)
{
if (!(*i)->region.locked()) {
- XMLNode &before, &after;
Playlist *pl = (*i)->region.playlist();
- before = pl->get_state();
+ XMLNode &before = pl->get_state();
(*i)->region.trim_front (new_bound, this);
- after = pl->get_state();
- session->add_command(MementoCommand<Playlist>(*pl, before, after));
+ XMLNode &after = pl->get_state();
+ session->add_command(new MementoCommand<Playlist>(*pl, before, after));
}
}
} else {
if (!rv->region.locked()) {
- XMLNode &before, &after;
Playlist *pl = rv->region.playlist();
- before = pl->get_state();
+ XMLNode &before = pl->get_state();
rv->region.trim_front (new_bound, this);
- after = pl->get_state();
- session->add_command(MementoCommand<Playlist>(*pl, before, after));
+ XMLNode &after = pl->get_state();
+ session->add_command(new MementoCommand<Playlist>(*pl, before, after));
}
}
@@ -4254,24 +4246,22 @@ Editor::point_trim (GdkEvent* event)
for (list<AudioRegionView*>::const_iterator i = selection->audio_regions.by_layer().begin(); i != selection->audio_regions.by_layer().end(); ++i)
{
if (!(*i)->region.locked()) {
- XMLNode &before, &after;
Playlist *pl = (*i)->region.playlist();
- before = pl->get_state();
+ XMLNode &before = pl->get_state();
(*i)->region.trim_end (new_bound, this);
- after = pl->get_state();
- session->add_command(MementoCommand<Playlist>(*pl, before, after));
+ XMLNode &after = pl->get_state();
+ session->add_command(new MementoCommand<Playlist>(*pl, before, after));
}
}
} else {
if (!rv->region.locked()) {
- XMLNode &before, &after;
Playlist *pl = rv->region.playlist();
- before = pl->get_state();
+ XMLNode &before = pl->get_state();
rv->region.trim_end (new_bound, this);
- after = pl->get_state();
- session->add_command (MementoCommand<Playlist>(*pl, before, after));
+ XMLNode &after = pl->get_state();
+ session->add_command (new MementoCommand<Playlist>(*pl, before, after));
}
}
@@ -4294,7 +4284,7 @@ Editor::thaw_region_after_trim (AudioRegionView& rv)
region.thaw (_("trimmed region"));
XMLNode &after = region.playlist()->get_state();
- session->add_command (MementoRedoCommand<Playlist>(*(region.playlist()), after));
+ session->add_command (new MementoRedoCommand<Playlist>(*(region.playlist()), after));
rv.unhide_envelope ();
}
@@ -4431,18 +4421,19 @@ Editor::end_range_markerbar_op (ArdourCanvas::Item* item, GdkEvent* event)
switch (range_marker_op) {
case CreateRangeMarker:
+ {
begin_reversible_command (_("new range marker"));
- XMLNode &before, &after;
- before = session->locations()->get_state();
+ XMLNode &before = session->locations()->get_state();
newloc = new Location(temp_location->start(), temp_location->end(), "unnamed", Location::IsRangeMarker);
session->locations()->add (newloc, true);
- after = session->locations()->get_state();
- session->add_command(MementoCommand<Locations>(session->locations(), before, after));
+ XMLNode &after = session->locations()->get_state();
+ session->add_command(new MementoCommand<Locations>(*(session->locations()), before, after));
commit_reversible_command ();
range_bar_drag_rect->hide();
range_marker_drag_rect->hide();
break;
+ }
case CreateTransportMarker:
// popup menu to pick loop or punch
@@ -4812,11 +4803,10 @@ Editor::mouse_brush_insert_region (AudioRegionView* rv, jack_nframes_t pos)
Playlist* playlist = atv->playlist();
double speed = atv->get_diskstream()->speed();
- XMLNode &before, &after;
- before = playlist->get_state();
+ XMLNode &before = playlist->get_state();
playlist->add_region (*(new AudioRegion (rv->region)), (jack_nframes_t) (pos * speed));
- after = playlist->get_state();
- session->add_command(MementoCommand<Playlist>(*playlist, before, after));
+ XMLNode &after = playlist->get_state();
+ session->add_command(new MementoCommand<Playlist>(*playlist, before, after));
// playlist is frozen, so we have to update manually