protected virtual void ManualExploration(PathModel path, IEnumerable<String> hideDirectories) { PathExplorer explorer = new PathExplorer(this, path); path.InUse = true; if (hideDirectories != null) explorer.HideDirectories(hideDirectories); explorer.OnExplorationDone += new PathExplorer.ExplorationDoneHandler(RefreshContextCache); explorer.OnExplorationProgress += new PathExplorer.ExplorationProgressHandler(ExplorationProgress); explorer.UseCache = !CommonSettings.DisableCache; explorer.Run(); }
/// <summary> /// Classpathes & classes cache initialisation /// </summary> public override void BuildClassPath() { ReleaseClasspath(); started = true; if (hxsettings == null) throw new Exception("BuildClassPath() must be overridden"); // external version definition // expected from project manager: "9;path;path..." flashVersion = hxsettings.DefaultFlashVersion; string exPath = externalClassPath ?? ""; if (exPath.Length > 0) { try { int p = exPath.IndexOf(';'); flashVersion = Convert.ToInt16(exPath.Substring(0, p)); exPath = exPath.Substring(p + 1).Trim(); } catch { } } // NOTE: version > 10 for non-Flash platforms string lang = null; features.Directives = new List<string>(); if (IsJavaScriptTarget) { lang = "js"; features.Directives.Add(lang); } else if (IsNekoTarget) { lang = "neko"; features.Directives.Add(lang); } else if (IsPhpTarget) { lang = "php"; features.Directives.Add(lang); } else if (IsCppTarget) { lang = "cpp"; features.Directives.Add(lang); } else { features.Directives.Add("flash"); features.Directives.Add("flash" + flashVersion); lang = (flashVersion >= 9) ? "flash9" : "flash"; } features.Directives.Add("true"); // // Class pathes // classPath = new List<PathModel>(); // haXe std if (hxsettings.HaXePath != null) { string haxeCP = Path.Combine(hxsettings.HaXePath, "std"); if (Directory.Exists(haxeCP)) { PathModel std = PathModel.GetModel(haxeCP, this); if (!std.WasExplored && !Settings.LazyClasspathExploration) { PathExplorer stdExplorer = new PathExplorer(this, std); stdExplorer.HideDirectories(new string[] { "flash", "flash9", "js", "neko", "php", "cpp" }); stdExplorer.OnExplorationDone += new PathExplorer.ExplorationDoneHandler(RefreshContextCache); stdExplorer.Run(); } AddPath(std); PathModel specific = PathModel.GetModel(Path.Combine(haxeCP, lang), this); if (!specific.WasExplored && !Settings.LazyClasspathExploration) { PathExplorer speExplorer = new PathExplorer(this, specific); speExplorer.OnExplorationDone += new PathExplorer.ExplorationDoneHandler(RefreshContextCache); speExplorer.Run(); } AddPath(specific); } } HaxeProject proj = PluginBase.CurrentProject as HaxeProject; // swf-libs if (IsFlashTarget && flashVersion >= 9 && proj != null ) { foreach(LibraryAsset asset in proj.LibraryAssets) if (asset.IsSwf) { string path = proj.GetAbsolutePath(asset.Path); if (File.Exists(path)) AddPath(path); } foreach( string p in proj.CompilerOptions.Additional ) if( p.IndexOf("-swf-lib ") == 0 ) { string path = proj.GetAbsolutePath(p.Substring(9)); if (File.Exists(path)) AddPath(path); } } // add haxe libraries if (proj != null) { foreach (string param in proj.BuildHXML(new string[0], "", false)) if (param.IndexOf("-lib ") == 0) AddPath(LookupLibrary(param.Substring(5))); } // add external pathes List<PathModel> initCP = classPath; classPath = new List<PathModel>(); string[] cpathes; if (exPath.Length > 0) { cpathes = exPath.Split(';'); foreach (string cpath in cpathes) AddPath(cpath.Trim()); } // add user pathes from settings if (settings.UserClasspath != null && settings.UserClasspath.Length > 0) { foreach (string cpath in settings.UserClasspath) AddPath(cpath.Trim()); } // add initial pathes foreach (PathModel mpath in initCP) AddPath(mpath); // parse top-level elements InitTopLevelElements(); if (cFile != null) UpdateTopLevelElements(); // add current temporaty path if (temporaryPath != null) { string tempPath = temporaryPath; temporaryPath = null; SetTemporaryPath(tempPath); } FinalizeClasspath(); }