using FlashDevelop; using FlashDevelop.Docking; using PluginCore; using PluginCore.Managers; using ProjectManager.Controls.TreeView; using ProjectManager.Projects; public class AlwaysCompileShortcut { public static void Execute() { Project project = (Project)PluginBase.CurrentProject; TabbedDocument nowDoc = (TabbedDocument)Globals.CurrentDocument; // StartsWith で始まりに指定した文字列があるかを比較できる。 if (nowDoc.FileName.StartsWith(project.Directory)) { // 現在のプロジェクト内のファイル。 if (nowDoc.FileName.EndsWith(".as")) { // AS ToggleAlwaysCompile(project, nowDoc.FileName); } else { if (nowDoc.FileName.EndsWith(".mxml")) { // MXML ToggleAlwaysCompile(project, nowDoc.FileName); } else { ErrorManager.ShowWarning(nowDoc.FileName + " は、AS, MXMLファイルではありません。", null); } } } else { // 現在のプロジェクト外のファイル。 ErrorManager.ShowWarning(nowDoc.FileName + " は、現在の Project のファイルではありません。", null); } } public static void ToggleAlwaysCompile(Project project, string path) { bool isTarget = project.IsCompileTarget(project.GetAbsolutePath(path)); // 指定しようとしているファイルがコンパイルターゲットかどうかを判断する。 project.SetCompileTarget(path, !isTarget); // コンパイルターゲットに指定する。 if (project.MaxTargetsCount > 0) { while (project.CompileTargets.Count > project.MaxTargetsCount) { // 以前までのコンパイルターゲットをターゲットからはずす。 string relPath = project.CompileTargets[0]; string path2 = project.GetAbsolutePath(relPath); project.SetCompileTarget(path2, false); } } project.Save(); // project をセーブする。 ProjectTreeView.Instance.RefreshTree(); // ツリーを再描画させる。 TraceManager.Add("AlwaysCompile のターゲットを" + path + " に変更しました。"); } }