}
-void MWindow::overwrite(EDL *source)
+void MWindow::overwrite(EDL *source, int all)
{
FileXML file;
- double src_start = source->local_session->get_selectionstart();
- double overwrite_len = source->local_session->get_selectionend() - src_start;
+ double src_start = all ? 0 :
+ source->local_session->get_selectionstart();
+ double overwrite_len = all ? source->tracks->total_length() :
+ source->local_session->get_selectionend() - src_start;
double dst_start = edl->local_session->get_selectionstart();
double dst_len = edl->local_session->get_selectionend() - dst_start;
EDL *new_edl = new EDL;
new_edl->create_objects();
new_edl->copy_session(edl);
- new_edls.append(new_edl);
-
if( !indexable->is_asset ) {
EDL *nested_edl = (EDL*)indexable;
- new_edl->to_nested(nested_edl);
- new_edl->local_session->set_clip_path(nested_edl);
+ new_edl->create_nested(nested_edl, indexable->path);
}
else {
Asset *asset = (Asset*)indexable;
asset_to_edl(new_edl, asset);
}
+ new_edls.append(new_edl);
if( labels ) {
for( RecordLabel *label=labels->first; label; label=label->next ) {
}
}
-void MWindow::splice(EDL *source)
+void MWindow::splice(EDL *source, int all)
{
FileXML file;
undo->update_undo_before();
- double source_start = source->local_session->get_selectionstart();
- double source_end = source->local_session->get_selectionend();
+ double source_start = all ? 0 :
+ source->local_session->get_selectionstart();
+ double source_end = all ? source->tracks->total_length() :
+ source->local_session->get_selectionend();
source->copy(source_start, source_end, 1, &file, "", 1);
//file.dump();
double start = edl->local_session->get_selectionstart();
}
time_t now; time(&now);
- struct tm *tm = localtime(&now);
+ struct tm dtm; localtime_r(&now, &dtm);
char *cp = new_edl->local_session->clip_notes;
int n, sz = sizeof(new_edl->local_session->clip_notes)-1;
if( txt && *txt ) {
}
n = snprintf(cp, sz,
"%02d/%02d/%02d %02d:%02d:%02d, +%s\n",
- tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
- tm->tm_hour, tm->tm_min, tm->tm_sec, duration);
+ dtm.tm_year+1900, dtm.tm_mon+1, dtm.tm_mday,
+ dtm.tm_hour, dtm.tm_min, dtm.tm_sec, duration);
cp += n; sz -= n;
if( path && *path ) {
FileSystem fs;
cp += n; sz -= n;
}
cp[n] = 0;
-
+ sprintf(new_edl->local_session->clip_icon,
+ "clip_%02d%02d%02d-%02d%02d%02d.png",
+ dtm.tm_year+1900, dtm.tm_mon+1, dtm.tm_mday,
+ dtm.tm_hour, dtm.tm_min, dtm.tm_sec);
edl->update_assets(new_edl);
int cur_x, cur_y;
gui->get_abs_cursor(cur_x, cur_y, 0);
save_backup();
}
-void MWindow::to_clip(EDL *edl, const char *txt)
+void MWindow::to_clip(EDL *edl, const char *txt, int all)
{
FileXML file;
double start, end;
gui->lock_window("MWindow::to_clip 1");
- start = edl->local_session->get_selectionstart();
- end = edl->local_session->get_selectionend();
+ start = all ? 0 :
+ edl->local_session->get_selectionstart();
+ end = all ? edl->tracks->total_length() :
+ edl->local_session->get_selectionend();
if( EQUIV(end, start) ) {
start = 0;
}
}
}
+ for( int j=0,m=edl->clips.size(); j<m; ++j ) {
+ EDL *clip = edl->clips[j];
+ for( Track *track=clip->tracks->first; track; track=track->next ) {
+ if( track->data_type != TRACK_VIDEO ) continue;
+ for( Edit *edit=track->edits->first; edit; edit=edit->next ) {
+ if( !edit->asset ) continue;
+ if( !strcmp(edit->asset->path, orig_assets->get(i)->path) ) {
+ edit->asset = proxy_asset;
+ }
+ }
+ }
+ }
}
}