public static Project doOpen(SplashScreen monitor, File source,
Map<File,File> substitutions) throws LoadFailedException {
if (monitor != null) monitor.setProgress(SplashScreen.FILE_LOAD);
Loader loader = new Loader(monitor);
LogisimFile file = loader.openLogisimFile(source, substitutions);
AppPreferences.updateRecentFile(source);
return completeProject(monitor, loader, file, false);
}