diff --git a/Browser_IDE/IDEStartupMain.js b/Browser_IDE/IDEStartupMain.js index 367f683..64dace0 100644 --- a/Browser_IDE/IDEStartupMain.js +++ b/Browser_IDE/IDEStartupMain.js @@ -66,6 +66,15 @@ let CompileQueue = new ActionQueue("CompileQueue", { cancelOn: [InitializeProjectQueue], }); +// add loadUserProject!!!!!!!!!!!!!!!! +let LoadUserProjectQueue = new ActionQueue("LoadUserProjectQueue", { + cancelRunning: false, + replaceQueued: false, + maxQueued: 100, + waitOn: [ExecutionEnvironmentLoadQueue, InitializeProjectQueue], + cancelOn: [InitializeProjectQueue, ExecutionEnvironmentLoadQueue], +}); + // Whenever both execution environment and load project queue clear, mirror the project ActionQueue.OnClear([ExecutionEnvironmentLoadQueue, InitializeProjectQueue], async function(){ MirrorProjectQueue.Schedule("Mirror", async function(){ @@ -98,10 +107,18 @@ async function StartIDE() { setupIDEButtonEvents(); // uses current language // Create execution environment and project storage objects - // These constructors don't _do_ anything important. executionEnviroment = new ExecutionEnvironment(document.getElementById("ExecutionEnvironment"), activeLanguageSetup); appStorage = new AppStorage(); - storedProject = new IDBStoredProject(appStorage, activeLanguageSetup.getDefaultProject()); + + // Check if projectID exists in URL, if so, load that project + let projectID = SKO.projectID; + if (projectID) { + storedProject = new IDBStoredProject(appStorage, projectID); // Use project ID if available + } + else { + storedProject = new IDBStoredProject(appStorage, activeLanguageSetup.getDefaultProject()); // Default project + } + unifiedFS = new UnifiedFS(storedProject, executionEnviroment); // Setup callbacks/listeners @@ -116,6 +133,10 @@ async function StartIDE() { setupMinifiedInterface(); }); + // use LoadUserProjectQueue to load user projects!!!!!!!!! + LoadUserProjectQueue.Schedule("LoadUserProjects", async function() { + await ShowProjectLoader("Choose a project to load:", loadUserProjects); + }); CompilerInitQueue.Schedule("CompilerInit", async function CompilerInitQueue (isCanceled){ await initializeLanguageCompilerFiles(activeLanguageSetup); diff --git a/Browser_IDE/editorMain.js b/Browser_IDE/editorMain.js index e394281..00bb04d 100644 --- a/Browser_IDE/editorMain.js +++ b/Browser_IDE/editorMain.js @@ -906,7 +906,8 @@ function setupIDEButtonEvents() { setupProjectButton("DownloadProject", downloadProject); setupProjectButton("NewProject", () => scheduleProjectReInitialization(activeLanguageSetup.getDefaultProject())); setupProjectButton("LoadDemo", () => ShowProjectLoader("Choose a demo project:", LoadDemoProjects)); - + // Add the new "Load Project" button and its event!!!!!!!!!!!!!!!! + setupProjectButton("LoadProject", () => ShowProjectLoader("Choose a project to load:", loadUserProjects)); if (!activeLanguageSetup.supportHotReloading) document.getElementById("runOne").children[0].innerText = "Syntax Check File"; } diff --git a/Browser_IDE/index.html b/Browser_IDE/index.html index 6f4259b..42d7c6c 100644 --- a/Browser_IDE/index.html +++ b/Browser_IDE/index.html @@ -41,6 +41,7 @@
  • +