+ void edit_copy ()
+ {
+ ContentList const sel = _film_editor->content_panel()->selected();
+ DCPOMATIC_ASSERT (sel.size() == 1);
+ _clipboard = sel.front()->clone();
+ }
+
+ void edit_paste ()
+ {
+ DCPOMATIC_ASSERT (_clipboard);
+
+ PasteDialog* d = new PasteDialog (this, static_cast<bool>(_clipboard->video), static_cast<bool>(_clipboard->audio), !_clipboard->text.empty());
+ if (d->ShowModal() == wxID_OK) {
+ BOOST_FOREACH (shared_ptr<Content> i, _film_editor->content_panel()->selected()) {
+ if (d->video() && i->video) {
+ DCPOMATIC_ASSERT (_clipboard->video);
+ i->video->take_settings_from (_clipboard->video);
+ }
+ if (d->audio() && i->audio) {
+ DCPOMATIC_ASSERT (_clipboard->audio);
+ i->audio->take_settings_from (_clipboard->audio);
+ }
+
+ if (d->text()) {
+ list<shared_ptr<TextContent> >::iterator j = i->text.begin ();
+ list<shared_ptr<TextContent> >::const_iterator k = _clipboard->text.begin ();
+ while (j != i->text.end() && k != _clipboard->text.end()) {
+ (*j)->take_settings_from (*k);
+ ++j;
+ ++k;
+ }
+ }
+ }
+ }
+ d->Destroy ();
+ }
+