#include "bcsignals.h" #include "edl.h" #include "filexml.h" #include "indexstate.h" #include "nestededls.h" NestedEDLs::NestedEDLs() { } NestedEDLs::~NestedEDLs() { for(int i = 0; i < nested_edls.size(); i++) nested_edls.get(i)->Garbage::remove_user(); nested_edls.remove_all(); } int NestedEDLs::size() { return nested_edls.size(); } EDL* NestedEDLs::get(int number) { return nested_edls.get(number); } EDL* NestedEDLs::get_copy(EDL *src) { if(!src) return 0; for(int i = 0; i < nested_edls.size(); i++) { EDL *dst = nested_edls.get(i); if(!strcmp(dst->path, src->path)) return dst; } EDL *dst = new EDL; dst->create_objects(); dst->copy_all(src); nested_edls.append(dst); return dst; } EDL* NestedEDLs::get(char *path) { for(int i = 0; i < nested_edls.size(); i++) { EDL *dst = nested_edls.get(i); if(!strcmp(dst->path, path)) return dst; } EDL *dst = new EDL; dst->create_objects(); FileXML xml_file; xml_file.read_from_file(path); //printf("NestedEDLs::get %d %s\n", __LINE__, path); dst->load_xml(&xml_file, LOAD_ALL); // Override path EDL was saved to with the path it was loaded from. dst->set_path(path); nested_edls.append(dst); return dst; } void NestedEDLs::clear() { for(int i = 0; i < nested_edls.size(); i++) nested_edls.get(i)->Garbage::remove_user(); nested_edls.remove_all(); } void NestedEDLs::update_index(EDL *nested_edl) { for(int i = 0; i < nested_edls.size(); i++) { EDL *current = nested_edls.get(i); if(!strcmp(current->path, nested_edl->path)) { // printf("NestedEDLs::update_index %d %p %d\n", // __LINE__, // current->index_state, // nested_edl->index_state->index_status); current->update_index(nested_edl); } } } void NestedEDLs::remove_edl(EDL *nested_edl) { nested_edls.remove(nested_edl); nested_edl->Garbage::remove_user(); }