public void KeepUpdated(Project project) { foreach (LibraryAsset asset in project.LibraryAssets) if (asset.UpdatePath != null) { string assetName = Path.GetFileName(asset.Path); string assetPath = project.GetAbsolutePath(asset.Path); string updatePath = project.GetAbsolutePath(asset.UpdatePath); if (File.Exists(updatePath)) { // check size/modified FileInfo source = new FileInfo(updatePath); FileInfo dest = new FileInfo(assetPath); if (source.LastWriteTime != dest.LastWriteTime || source.Length != dest.Length) { Console.WriteLine("Updating asset '" + assetName + "'"); File.Copy(updatePath, assetPath, true); } } else { Console.Error.WriteLine("Warning: asset '" + assetName + "' could " + " not be updated, as the source file could does not exist."); } } }
public BuildEventInfo[] GetVars() { List <BuildEventInfo> infos = new List <BuildEventInfo>(); infos.Add(new BuildEventInfo("BaseDir", BaseDir)); infos.Add(new BuildEventInfo("FDBuild", FDBuild)); infos.Add(new BuildEventInfo("ToolsDir", ToolsDir)); infos.Add(new BuildEventInfo("TimeStamp", DateTime.Now.ToString("g"))); if (project != null) { infos.Add(new BuildEventInfo("OutputFile", project.OutputPath)); infos.Add(new BuildEventInfo("OutputDir", Path.GetDirectoryName(project.GetAbsolutePath(project.OutputPath)))); infos.Add(new BuildEventInfo("OutputName", Path.GetFileName(project.OutputPath))); infos.Add(new BuildEventInfo("ProjectName", project.Name)); infos.Add(new BuildEventInfo("ProjectDir", project.Directory)); infos.Add(new BuildEventInfo("ProjectPath", project.ProjectPath)); infos.Add(new BuildEventInfo("BuildConfig", project.TraceEnabled ? "debug" : "release")); infos.Add(new BuildEventInfo("TargetPlatform", project.MovieOptions.Platform)); infos.Add(new BuildEventInfo("TargetVersion", project.MovieOptions.Version)); infos.Add(new BuildEventInfo("TargetBuild", project.TargetBuild ?? "")); infos.Add(new BuildEventInfo("CompilerPath", project.CurrentSDK)); if (project.Language == "as3") { infos.Add(new BuildEventInfo("FlexSDK", project.CurrentSDK)); } } infos.AddRange(additional); return(infos.ToArray()); }
public BuildEventInfo[] GetVars() { List <BuildEventInfo> infos = new List <BuildEventInfo>(); infos.Add(new BuildEventInfo("FDBuild", FDBuild)); infos.Add(new BuildEventInfo("ToolsDir", ToolsDir)); infos.Add(new BuildEventInfo("OutputDir", Path.GetDirectoryName(project.GetAbsolutePath(project.OutputPath)))); infos.Add(new BuildEventInfo("OutputName", Path.GetFileName(project.OutputPath))); infos.Add(new BuildEventInfo("ProjectName", project.Name)); infos.Add(new BuildEventInfo("ProjectDir", project.Directory)); infos.Add(new BuildEventInfo("ProjectPath", project.ProjectPath)); infos.Add(new BuildEventInfo("TimeStamp", DateTime.Now.ToString("g"))); infos.Add(new BuildEventInfo("BuildConfig", project.TraceEnabled ? "debug" : "release")); infos.AddRange(additional); return(infos.ToArray()); }
public void UpdateASCompletion(IMainForm mainForm, Project project) { List<string> classPaths = new List<string>(); List<string> hiddenPaths = new List<string>(); string version; string platform = ""; if (project != null) { BuildActions.GetCompilerPath(project); // refresh project's SDK project.UpdateVars(true); // platform/version platform = project.MovieOptions.Platform; version = project.MovieOptions.Version; if (platform != PlatformData.FLASHPLAYER_PLATFORM && project.MovieOptions.HasPlatformSupport && project.MovieOptions.PlatformSupport.IsFlashPlatform) version = PlatformData.ResolveFlashPlayerVersion(project.Language, platform, version); // add project classpaths foreach (string cp in project.AbsoluteClasspaths) if (Directory.Exists(cp)) classPaths.Add(cp); // add AS3 libraries string absPath; if (project is AS3Project) { MxmlcOptions options = (project as AS3Project).CompilerOptions; foreach (string relPath in options.IntrinsicPaths) { absPath = PathHelper.ResolvePath(relPath); if (absPath == null) absPath = project.GetAbsolutePath(relPath); if (absPath == null) continue; if (Directory.Exists(absPath)) classPaths.Add(absPath); } foreach (string relPath in options.LibraryPaths) { absPath = project.GetAbsolutePath(relPath); if (absPath == null) continue; if (File.Exists(absPath)) classPaths.Add(absPath); else if (Directory.Exists(absPath)) { string[] libs = Directory.GetFiles(absPath, "*.swc"); foreach (string lib in libs) classPaths.Add(lib); } } foreach (string relPath in options.IncludeLibraries) { absPath = project.GetAbsolutePath(relPath); if (absPath == null) continue; if (Directory.Exists(absPath) || File.Exists(absPath)) classPaths.Add(absPath); } foreach (string relPath in options.ExternalLibraryPaths) { absPath = project.GetAbsolutePath(relPath); if (absPath == null) continue; if (Directory.Exists(absPath) || File.Exists(absPath)) classPaths.Add(absPath); } foreach (string relPath in options.RSLPaths) { string[] parts = relPath.Split(','); if (parts.Length < 2) continue; absPath = project.GetAbsolutePath(relPath); if (absPath == null) continue; if (File.Exists(absPath)) classPaths.Add(absPath); } } string dir = project.Directory; foreach (string hidPath in project.HiddenPaths) { absPath = Path.Combine(dir, hidPath); foreach (string cp in classPaths) if (absPath.StartsWithOrdinal(cp)) { hiddenPaths.Add(absPath); break; } } } else if (PlatformData.SupportedLanguages.ContainsKey("as3")) { var targets = PlatformData.SupportedLanguages["as3"].Platforms; var flashPlatform = targets[PlatformData.FLASHPLAYER_PLATFORM]; version = flashPlatform.LastVersion.Value; } else version = "11.0"; DataEvent de; Hashtable info = new Hashtable(); // release old classpath if (currentLang != null && project == null) { info["lang"] = currentLang; info["platform"] = ""; info["targetBuild"] = ""; info["version"] = "0.0"; info["classpath"] = null; info["hidden"] = null; de = new DataEvent(EventType.Command, "ASCompletion.ClassPath", info); EventManager.DispatchEvent(this, de); } // set new classpath if (project != null) { currentLang = project.Language; info["platform"] = platform; info["version"] = version; info["targetBuild"] = project.TargetBuild; info["lang"] = currentLang; info["classpath"] = classPaths.ToArray(); info["hidden"] = hiddenPaths.ToArray(); de = new DataEvent(EventType.Command, "ASCompletion.ClassPath", info); EventManager.DispatchEvent(this, de); project.AdditionalPaths = info.ContainsKey("additional") ? info["additional"] as string[] : null; } else currentLang = null; }
public void ToggleAlwaysCompile(Project project, string[] paths) { foreach (string path in paths) { bool isTarget = project.IsCompileTarget(path); project.SetCompileTarget(path, !isTarget); } if (project.MaxTargetsCount > 0) { while (project.CompileTargets.Count > project.MaxTargetsCount) { int len = project.CompileTargets.Count; string relPath = project.CompileTargets[0]; project.SetCompileTarget(relPath, false); if (project.CompileTargets.Count == len) // safety if path is not removed project.CompileTargets.RemoveAt(0); string path = project.GetAbsolutePath(relPath); OnProjectModified(new string[] { path }); } } project.Save(); OnProjectModified(paths); }
public void UpdateASCompletion(IMainForm mainForm, Project project) { List<string> classPaths = new List<string>(); List<string> hiddenPaths = new List<string>(); int majorVersion = 0; int minorVersion = 0; string platform = ""; if (project != null) { BuildActions.GetCompilerPath(project); // refresh project's SDK project.UpdateVars(true); // platform/version platform = project.MovieOptions.Platform; majorVersion = project.MovieOptions.MajorVersion; minorVersion = project.MovieOptions.MinorVersion; if (project.MovieOptions.Platform == AS3MovieOptions.AIR_PLATFORM || project.MovieOptions.Platform == AS3MovieOptions.AIR_MOBILE_PLATFORM) AS3Project.GuessFlashPlayerForAIR(ref majorVersion, ref minorVersion); // add project classpaths foreach (string cp in project.AbsoluteClasspaths) if (Directory.Exists(cp)) classPaths.Add(cp); // add AS3 libraries string absPath; if (project is AS3Project) { MxmlcOptions options = (project as AS3Project).CompilerOptions; foreach (string relPath in options.IntrinsicPaths) { absPath = PathHelper.ResolvePath(relPath); if (absPath == null) absPath = project.GetAbsolutePath(relPath); if (absPath == null) continue; if (Directory.Exists(absPath)) classPaths.Add(absPath); } foreach (string relPath in options.LibraryPaths) { absPath = project.GetAbsolutePath(relPath); if (absPath == null) continue; if (File.Exists(absPath)) classPaths.Add(absPath); else if (Directory.Exists(absPath)) { string[] libs = Directory.GetFiles(absPath, "*.swc"); foreach (string lib in libs) classPaths.Add(lib); } } foreach (string relPath in options.IncludeLibraries) { absPath = project.GetAbsolutePath(relPath); if (absPath == null) continue; if (Directory.Exists(absPath) || File.Exists(absPath)) classPaths.Add(absPath); } foreach (string relPath in options.ExternalLibraryPaths) { absPath = project.GetAbsolutePath(relPath); if (absPath == null) continue; if (Directory.Exists(absPath) || File.Exists(absPath)) classPaths.Add(absPath); } foreach (string relPath in options.RSLPaths) { string[] parts = relPath.Split(','); if (parts.Length < 2) continue; absPath = project.GetAbsolutePath(relPath); if (absPath == null) continue; if (File.Exists(absPath)) classPaths.Add(absPath); } } string dir = project.Directory; foreach (string hidPath in project.HiddenPaths) { absPath = Path.Combine(dir, hidPath); foreach (string cp in classPaths) if (absPath.StartsWith(cp)) { hiddenPaths.Add(absPath); break; } } } DataEvent de; Hashtable info = new Hashtable(); // release old classpath if (currentLang != null && project == null) { info["lang"] = currentLang; info["platform"] = ""; info["targetBuild"] = ""; info["version"] = "0.0"; info["classpath"] = null; info["hidden"] = null; de = new DataEvent(EventType.Command, "ASCompletion.ClassPath", info); EventManager.DispatchEvent(this, de); } // set new classpath if (project != null) { currentLang = project.Language; info["platform"] = platform; info["version"] = majorVersion + "." + minorVersion; info["targetBuild"] = project.TargetBuild; info["lang"] = currentLang; info["classpath"] = classPaths.ToArray(); info["hidden"] = hiddenPaths.ToArray(); de = new DataEvent(EventType.Command, "ASCompletion.ClassPath", info); EventManager.DispatchEvent(this, de); project.AdditionalPaths = info.ContainsKey("additional") ? info["additional"] as string[] : null; } else currentLang = null; }
private void RebuildProjectNode(Project project) { activeProject = project; // create the top-level project node ProjectNode projectNode = new ProjectNode(project); Nodes.Add(projectNode); projectNode.Refresh(true); projectNode.Expand(); ArrayList projectClasspaths = new ArrayList(); ArrayList globalClasspaths = new ArrayList(); if (PluginMain.Settings.ShowProjectClasspaths) { projectClasspaths.AddRange(project.Classpaths); if (project.AdditionalPaths != null) projectClasspaths.AddRange(project.AdditionalPaths); } if (PluginMain.Settings.ShowGlobalClasspaths) globalClasspaths.AddRange(PluginMain.Settings.GlobalClasspaths); ReferencesNode refs = new ReferencesNode(project.Directory, "References"); projectNode.References = refs; ClasspathNode cpNode; foreach (string projectClasspath in projectClasspaths) { string absolute = projectClasspath; if (!Path.IsPathRooted(absolute)) absolute = project.GetAbsolutePath(projectClasspath); if ((absolute + "\\").StartsWith(project.Directory + "\\")) continue; cpNode = new ProjectClasspathNode(project, absolute, projectClasspath); refs.Nodes.Add(cpNode); cpNode.Refresh(true); } foreach (string globalClasspath in globalClasspaths) { string absolute = globalClasspath; if (!Path.IsPathRooted(absolute)) absolute = project.GetAbsolutePath(globalClasspath); if (absolute.StartsWith(project.Directory + Path.DirectorySeparatorChar.ToString())) continue; cpNode = new ClasspathNode(project, absolute, globalClasspath); refs.Nodes.Add(cpNode); cpNode.Refresh(true); } // add external libraries at the top level also if (project is AS3Project) foreach (LibraryAsset asset in (project as AS3Project).SwcLibraries) { if (!asset.IsSwc) continue; // check if SWC is inside the project or inside a classpath string absolute = asset.Path; if (!Path.IsPathRooted(absolute)) absolute = project.GetAbsolutePath(asset.Path); bool showNode = true; if (absolute.StartsWith(project.Directory)) showNode = false; foreach (string path in project.AbsoluteClasspaths) if (absolute.StartsWith(path)) { showNode = false; break; } foreach (string path in PluginMain.Settings.GlobalClasspaths) if (absolute.StartsWith(path)) { showNode = false; break; } if (showNode && File.Exists(absolute)) { SwfFileNode swcNode = new SwfFileNode(absolute); refs.Nodes.Add(swcNode); swcNode.Refresh(true); } } }
public void ToggleAlwaysCompile(Project project, string[] paths) { foreach (string path in paths) { bool isTarget = project.IsCompileTarget(path); project.SetCompileTarget(path, !isTarget); } if (project.MaxTargetsCount > 0) { while (project.CompileTargets.Count > project.MaxTargetsCount) { string relPath = project.CompileTargets[0]; string path = project.GetAbsolutePath(relPath); project.SetCompileTarget(path, false); OnProjectModified(new string[] { path }); } } project.Save(); OnProjectModified(paths); }
public void UpdateASCompletion(IMainForm mainForm, Project project) { List<string> classPaths = new List<string>(); if (project != null) { // add player version classPaths.Add(project.MovieOptions.Version.ToString()); // add special features if (project is AS3Project) { string[] additional = (project.CompilerOptions as MxmlcOptions).Additional; if (additional != null) foreach (string param in additional) { if (param.IndexOf("configname=air") >= 0) classPaths.Add("AIR"); } } // add project classpaths foreach (string cp in project.AbsoluteClasspaths) if (Directory.Exists(cp)) classPaths.Add(cp); // add AS3 libraries if (project is AS3Project) { MxmlcOptions options = (project as AS3Project).CompilerOptions; foreach (string relPath in options.IntrinsicPaths) { string absPath = PathHelper.ResolvePath(relPath, project.Directory); if (Directory.Exists(absPath)) classPaths.Add(absPath); } foreach (string relPath in options.LibraryPaths) { string absPath = project.GetAbsolutePath(relPath); if (File.Exists(absPath)) classPaths.Add(absPath); else if (Directory.Exists(absPath)) { string[] libs = Directory.GetFiles(absPath, "*.swc"); foreach (string lib in libs) classPaths.Add(lib); } } foreach (string relPath in options.IncludeLibraries) { string absPath = project.GetAbsolutePath(relPath); if (Directory.Exists(absPath) || File.Exists(absPath)) classPaths.Add(absPath); } foreach (string relPath in options.ExternalLibraryPaths) { string absPath = project.GetAbsolutePath(relPath); if (Directory.Exists(absPath) || File.Exists(absPath)) classPaths.Add(absPath); } foreach (string relPath in options.RSLPaths) { string[] parts = relPath.Split(','); if (parts.Length < 2) continue; string absPath = project.GetAbsolutePath(parts[0]); if (File.Exists(absPath)) classPaths.Add(absPath); } } } // release old classpath DataEvent de; if (currentLang != null && (project == null || currentLang != project.Language)) { de = new DataEvent(EventType.Command, "ASCompletion.ClassPath", currentLang + ";"); EventManager.DispatchEvent(this, de); } // set new classpath if (project != null) { currentLang = project.Language; string cps = currentLang + ";" + string.Join(";", classPaths.ToArray()); de = new DataEvent(EventType.Command, "ASCompletion.ClassPath", cps); EventManager.DispatchEvent(this, de); } else currentLang = null; }