From: Rejean Loyer Date: Tue, 5 Mar 2013 07:26:07 +0000 (-0500) Subject: ide; fixed ide says ' file is not part of any project, it can't be compiled... X-Git-Tag: 0.44.04~54 X-Git-Url: http://ecere.com/cgi-bin/gitweb.cgi?a=commitdiff_plain;ds=sidebyside;h=a4fe0770139ca438a24869b13f6a38b7f8853eb8;p=sdk ide; fixed ide says ' file is not part of any project, it can't be compiled.' for .c files generated from .ec files. now able to modify a generated .c file for testing/debugging and hit CTRL+F7 to compile only the modfified .c file. --- diff --git a/ide/src/designer/CodeEditor.ec b/ide/src/designer/CodeEditor.ec index 1cad0f7..238b979 100644 --- a/ide/src/designer/CodeEditor.ec +++ b/ide/src/designer/CodeEditor.ec @@ -769,7 +769,7 @@ class CodeEditor : Window ProjectView projectView = ide.projectView; if(projectView) { - ProjectNode node = projectView.GetNodeFromWindow(this, null); + ProjectNode node = projectView.GetNodeFromWindow(this, null, false); if(node) { node.modified = modifiedDocument; @@ -1372,7 +1372,9 @@ class CodeEditor : Window { if(ide.projectView) { - ProjectNode node = ide.projectView.GetNodeFromWindow(this, null); + ProjectNode node = ide.projectView.GetNodeFromWindow(this, null, false); + if(!node) + node = ide.projectView.GetNodeFromWindow(this, null, true); if(!node) { char * s; @@ -2077,7 +2079,7 @@ class CodeEditor : Window ProjectView projectView = ide.projectView; if(projectView) { - ProjectNode node = projectView.GetNodeFromWindow(this, null); + ProjectNode node = projectView.GetNodeFromWindow(this, null, false); if(node && node.modified) { node.modified = false; diff --git a/ide/src/ide.ec b/ide/src/ide.ec index 3b6df9e..9877539 100644 --- a/ide/src/ide.ec +++ b/ide/src/ide.ec @@ -2552,11 +2552,17 @@ class IDEWorkSpace : Window if(projectView && projectView.project) { - ProjectNode node = projectView.GetNodeFromWindow(client, null); + bool isCObject = false; + ProjectNode node = projectView.GetNodeFromWindow(client, null, false); + if(!node && (node = projectView.GetNodeFromWindow(client, null, true))) + isCObject = true; if(node) { - char name[1024]; - sprintf(name, $"Compile %s", node.name); + char nodeName[MAX_FILENAME]; + char name[MAX_FILENAME+96]; + if(isCObject) + ChangeExtension(node.name, "c", nodeName); + sprintf(name, $"Compile %s", isCObject ? nodeName : node.name); projectCompileItem = { copyText = true, text = name, c, ctrlF7, disabled = projectView.buildInProgress; @@ -2566,16 +2572,19 @@ class IDEWorkSpace : Window if(projectView) { bool result = false; + bool isCObject = false; ProjectNode node = null; for(p : ide.workspace.projects) { - node = projectView.GetNodeFromWindow(activeClient, p); + node = projectView.GetNodeFromWindow(activeClient, p, false); //if(node && projectView.Compile(node.project, node, mods.ctrl && mods.shift)) + if(!node && (node = projectView.GetNodeFromWindow(activeClient, null, true))) + isCObject = true; if(node) { List nodes { }; nodes.Add(node); - projectView.Compile(node.project, nodes, mods.ctrl && mods.shift, normal); + projectView.Compile(node.project, nodes, mods.ctrl && mods.shift, isCObject ? cObject : normal); delete nodes; result = true; diff --git a/ide/src/project/Project.ec b/ide/src/project/Project.ec index 1943dd6..92fe195 100644 --- a/ide/src/project/Project.ec +++ b/ide/src/project/Project.ec @@ -726,7 +726,7 @@ char * GetConfigName(ProjectConfig config) return config ? config.name : "Common"; } -public enum SingleFileCompileMode { normal, debugPrecompile, debugCompile, debugGenerateSymbols }; +public enum SingleFileCompileMode { normal, debugPrecompile, debugCompile, debugGenerateSymbols, cObject }; class Project : struct { @@ -1800,7 +1800,7 @@ private: ide.outputView.buildBox.Logf($"File %s is excluded from current build configuration.\n", node.name); else { - node.DeleteIntermediateFiles(compiler, config, namesInfo); + node.DeleteIntermediateFiles(compiler, config, namesInfo, mode == cObject ? true : false); node.GetTargets(config, namesInfo, objDirExp.dir, makeTargets); } } @@ -1834,13 +1834,13 @@ private: GetIDECompilerConfigsDir(cfDir, true, true); sprintf(command, "%s %sCF_DIR=\"%s\"%s%s COMPILER=%s -j%d %s%s%s -C \"%s\"%s -f \"%s\"", compiler.makeCommand, - mode == normal ? "" : (mode == debugPrecompile ? "ECP_DEBUG=y " : mode == debugCompile ? "ECC_DEBUG=y " : mode == debugGenerateSymbols ? "ECS_DEBUG=y " : ""), + mode == debugPrecompile ? "ECP_DEBUG=y " : mode == debugCompile ? "ECC_DEBUG=y " : mode == debugGenerateSymbols ? "ECS_DEBUG=y " : "", cfDir, crossCompiling ? " TARGET_PLATFORM=" : "", targetPlatform, compilerName, numJobs, compiler.ccacheEnabled ? "CCACHE=y " : "", compiler.distccEnabled ? "DISTCC=y " : "", - (String)makeTargets, topNode.path, (justPrint || mode != normal) ? " -n" : "", makeFilePath); + (String)makeTargets, topNode.path, (justPrint || (mode != normal && mode != cObject)) ? " -n" : "", makeFilePath); if(justPrint) ide.outputView.buildBox.Logf("%s\n", command); if((f = DualPipeOpen(PipeOpenMode { output = true, error = true, input = true }, command))) @@ -1851,7 +1851,7 @@ private: ProcessPipeOutputRaw(f); result = true; } - else if(mode != normal) + else if(mode != normal && mode != cObject) { char line[65536]; while(!f.Eof()) diff --git a/ide/src/project/ProjectNode.ec b/ide/src/project/ProjectNode.ec index 6ac134c..37fcffd 100644 --- a/ide/src/project/ProjectNode.ec +++ b/ide/src/project/ProjectNode.ec @@ -2302,7 +2302,7 @@ private: } } - void DeleteIntermediateFiles(CompilerConfig compiler, ProjectConfig prjConfig, Map namesInfo) + void DeleteIntermediateFiles(CompilerConfig compiler, ProjectConfig prjConfig, Map namesInfo, bool onlyCObject) { if(type == file) { @@ -2324,7 +2324,7 @@ private: PathCatSlash(fileName, objDir.dir); PathCatSlash(fileName, name); - if(!strcmp(extension, "ec")) + if(!onlyCObject && !strcmp(extension, "ec")) { ChangeExtension(fileName, "c", fileName); if(FileExists(fileName)) DeleteFile(fileName); @@ -2350,7 +2350,7 @@ private: for(child : files) { if(child.type != resources && (child.type == folder || !child.GetIsExcluded(prjConfig))) - child.DeleteIntermediateFiles(compiler, prjConfig, namesInfo); + child.DeleteIntermediateFiles(compiler, prjConfig, namesInfo, onlyCObject); } } } diff --git a/ide/src/project/ProjectView.ec b/ide/src/project/ProjectView.ec index 7eff355..8d63cdf 100644 --- a/ide/src/project/ProjectView.ec +++ b/ide/src/project/ProjectView.ec @@ -547,19 +547,36 @@ class ProjectView : Window return project.GetRelativePath(filePath, relativePath); } - ProjectNode GetNodeFromWindow(Window document, Project project) + ProjectNode GetNodeFromWindow(Window document, Project project, bool isCObject) { if(document.fileName) { char winFileName[MAX_LOCATION]; char * documentFileName = GetSlashPathBuffer(winFileName, document.fileName); - for(p : ide.workspace.projects) + ProjectNode node; + Project prj; + if(isCObject) + { + char name[MAX_FILENAME]; + GetLastDirectory(documentFileName, name); + ChangeExtension(name, "ec", name); + for(p : ide.workspace.projects) + { + prj = project ? project : p; + if((node = prj.topNode.Find(name, false))) + return node; + if(project) break; + } + } + else { - Project prj = project ? project : p; - ProjectNode node; - if((node = prj.topNode.FindByFullPath(documentFileName, false))) - return node; - if(project) break; + for(p : ide.workspace.projects) + { + prj = project ? project : p; + if((node = prj.topNode.FindByFullPath(documentFileName, false))) + return node; + if(project) break; + } } } return null; @@ -712,7 +729,7 @@ class ProjectView : Window { if(document.modifiedDocument) { - ProjectNode node = GetNodeFromWindow(document, prj); + ProjectNode node = GetNodeFromWindow(document, prj, false); if(node && !document.MenuFileSave(null, 0)) { result = false; @@ -809,7 +826,7 @@ class ProjectView : Window } else { - ProjectNode node = GetNodeFromWindow(ide.activeClient, null); + ProjectNode node = GetNodeFromWindow(ide.activeClient, null, false); if(node) prj = node.project; } @@ -835,7 +852,7 @@ class ProjectView : Window } else { - ProjectNode node = GetNodeFromWindow(ide.activeClient, null); + ProjectNode node = GetNodeFromWindow(ide.activeClient, null, false); if(node) prj = node.project; } @@ -868,7 +885,7 @@ class ProjectView : Window } else { - ProjectNode node = GetNodeFromWindow(ide.activeClient, null); + ProjectNode node = GetNodeFromWindow(ide.activeClient, null, false); if(node) prj = node.project; } @@ -904,7 +921,7 @@ class ProjectView : Window } else { - ProjectNode node = GetNodeFromWindow(ide.activeClient, null); + ProjectNode node = GetNodeFromWindow(ide.activeClient, null, false); if(node) prj = node.project; } @@ -943,7 +960,7 @@ class ProjectView : Window } else { - ProjectNode node = GetNodeFromWindow(ide.activeClient, null); + ProjectNode node = GetNodeFromWindow(ide.activeClient, null, false); if(node) prj = node.project; } @@ -983,7 +1000,7 @@ class ProjectView : Window } else { - ProjectNode node = GetNodeFromWindow(ide.activeClient, null); + ProjectNode node = GetNodeFromWindow(ide.activeClient, null, false); if(node) prj = node.project; } @@ -1008,7 +1025,7 @@ class ProjectView : Window { if(document.modifiedDocument) { - ProjectNode n = GetNodeFromWindow(document, project); + ProjectNode n = GetNodeFromWindow(document, project, mode == cObject ? true : false); for(node : nodes) { if(n && n.IsInNode(node) && !document.MenuFileSave(null, 0)) @@ -1060,7 +1077,7 @@ class ProjectView : Window { if(document.modifiedDocument) { - ProjectNode n = GetNodeFromWindow(document, project); + ProjectNode n = GetNodeFromWindow(document, project, false); for(node : nodes) { if(n && n.IsInNode(node) && !document.MenuFileSave(null, 0)) @@ -1094,7 +1111,7 @@ class ProjectView : Window ide.outputView.buildBox.Logf($"Deleteing intermediate objects for %s %s in project %s...\n", node.type == file ? $"single file" : $"folder", node.name, project.name); - node.DeleteIntermediateFiles(compiler, config, namesInfo); + node.DeleteIntermediateFiles(compiler, config, namesInfo, false); result = true; } }