void ImportProject(ImportProjectEvent e)
{
ProjectLongoMatch project;
ProjectImporter importer;
IStorage DB = App.Current.DatabaseManager.ActiveDB;
Log.Debug ("Importing project");
/* try to import the project and show a message error is the file
* is not a valid project */
try {
if (ProjectImporters.Count () == 0) {
throw new Exception (Catalog.GetString ("Plugin not found"));
} else if (ProjectImporters.Count () == 1) {
importer = ProjectImporters.First ();
} else {
importer = ChooseImporter (ProjectImporters);
}
if (importer == null) {
return;
}
project = importer.ImportFunction () as ProjectLongoMatch;
if (project == null) {
return;
}
if (importer.NeedsEdition) {
App.Current.StateController.MoveTo (NewProjectState.NAME, project);
} else {
/* If the project exists ask if we want to overwrite it */
if (!importer.CanOverwrite && DB.Exists (project)) {
var res = App.Current.Dialogs.QuestionMessage (Catalog.GetString ("A project already exists for this ID:") +
project.ID + "\n" +
Catalog.GetString ("Do you want to overwrite it?"), null).Result;
if (!res)
return;
}
DB.Store<ProjectLongoMatch> (project, true);
App.Current.EventsBroker.Publish<OpenProjectIDEvent> (
new OpenProjectIDEvent {
ProjectID = project.ID,
Project = project
}
);
}
} catch (Exception ex) {
App.Current.Dialogs.ErrorMessage (Catalog.GetString ("Error importing project:") +
"\n" + ex.Message);
Log.Exception (ex);
return;
}
}