+EditPopupOpenEDL::EditPopupOpenEDL(MWindow *mwindow, EditPopup *popup)
+ : BC_MenuItem(_("Open EDL"))
+{
+ this->mwindow = mwindow;
+ this->popup = popup;
+ set_ctrl(1);
+ set_shift(1);
+}
+
+int EditPopupOpenEDL::handle_event()
+{
+ Edit *edit = popup->edit;
+ if( !edit ) return 1;
+ EDL *edl = 0;
+ Indexable *idxbl = 0;
+ if( edit->asset && edit->asset->format == FILE_REF ) {
+ FileXML xml_file;
+ const char *filename = edit->asset->path;
+ if( xml_file.read_from_file(filename, 1) ) {
+ eprintf(_("Error: unable to open:\n %s"), filename);
+ return 1;
+ }
+ edl = new EDL;
+ edl->create_objects();
+ if( edl->load_xml(&xml_file, LOAD_ALL) ) {
+ eprintf(_("Error: unable to load:\n %s"), filename);
+ edl->remove_user();
+ return 1;
+ }
+ idxbl = edit->asset;
+ }
+ else if( edit->nested_edl ) {
+ edl = edit->nested_edl;
+ edl->add_user();
+ idxbl = edl;
+ }
+ else {
+ char edit_title[BCTEXTLEN];
+ edit->get_title(edit_title);
+ eprintf(_("Edit is not EDL: %s"), edit_title);
+ return 1;
+ }
+ mwindow->stack_push(edl, idxbl);
+ return 1;
+}
+