From 5482990520d0d225bfa5a72073779fd8b0eb5929 Mon Sep 17 00:00:00 2001 From: Rejean Loyer Date: Fri, 2 Jan 2015 20:05:04 -0500 Subject: [PATCH 1/1] ide: add import folder projects feature. --- ide/src/ide.ec | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/ide/src/ide.ec b/ide/src/ide.ec index 673a1c5..d5ad5ab 100755 --- a/ide/src/ide.ec +++ b/ide/src/ide.ec @@ -44,6 +44,19 @@ import "about" import "FileSystemIterator" +class ImportFolderProjectsFSI : NormalFileSystemIterator +{ + bool noParsing; + char selfProjectPath[MAX_LOCATION]; + extensions = ProjectExtension; + bool OnFile(const char * filePath) + { + if(fstrcmp(filePath, selfProjectPath)) + ide.OpenFile(filePath, false, true, ProjectExtension, no, add, noParsing); + return true; + } +} + AVLTree binaryDocExt { [ "wav", "mp3", "flac", "ogg", @@ -135,6 +148,7 @@ static Array findInFilesFileFilters { $"All files", null } ] }; +FileDialog importFolderProjectsDialog { autoCreate = false, type = selectDir, text = $"Import Folder Projects" }; FileDialog ideFileDialog { type = multiOpen, text = $"Open"; @@ -893,6 +907,32 @@ class IDEWorkSpace : Window return true; } }; + MenuItem projectImportAddItem + { + projectMenu, $"Import projects into workspace...", a, Key { a, true, true }; + disabled = true; + bool NotifySelect(MenuItem selection, Modifiers mods) + { + char path[MAX_LOCATION]; + FileDialog fileDialog = importFolderProjectsDialog; + fileDialog.master = parent; + path[0] = '\0'; + StripLastDirectory(path, ide.workspace.workspaceDir); + MakeSystemPath(path); + fileDialog.currentDirectory = path; + fileDialog.filePath = path; + if(fileDialog.Modal() == ok) + { + ImportFolderProjectsFSI fsi { noParsing = mods.ctrl && mods.shift }; + ide.project.topNode.GetFullFilePath(fsi.selfProjectPath); + MakeSystemPath(fsi.selfProjectPath); + PrintLn("self: ", fsi.selfProjectPath); + fsi.Iterate(fileDialog.filePath); + delete fsi; + } + return true; + } + }; MenuItem projectCloseItem { projectMenu, $"Close", c, disabled = true; @@ -1983,6 +2023,7 @@ class IDEWorkSpace : Window bool unavailable = !project; projectAddItem.disabled = unavailable; + projectImportAddItem.disabled = unavailable; toolBar.buttonAddProject.disabled = unavailable; projectSettingsItem.disabled = unavailable; -- 1.8.3.1