private void SetupMainDirListener() { if (Directory.Exists(GH_ComponentServer.GHA_AppDataDirectory)) { var watcher = GH_FileWatcher.CreateDirectoryWatcher(GH_ComponentServer.GHA_AppDataDirectory, "*.ghpy", GH_FileWatcherEvents.Created, (sender, filePath, change) => { try { if (change == WatcherChangeTypes.Created) { if (LoadOneAddon(_gha_environment, filePath)) { GH_ComponentServer.UpdateRibbonUI(); } } } catch (Exception ex) { Global_Proc.ASSERT(Guid.Empty, "GhPython last exception boundary", ex); } }); watcher.Active = true; } }
static bool LoadGrasshopperComponents() { var LoadGHAProc = Instances.ComponentServer.GetType().GetMethod("LoadGHA", BindingFlags.NonPublic | BindingFlags.Instance); if (LoadGHAProc == null) { return(false); } var bCoff = Instances.Settings.GetValue("Assemblies:COFF", true); Instances.Settings.SetValue("Assemblies:COFF", false); var rc = (bool)LoadGHAProc.Invoke ( Instances.ComponentServer, new object[] { new GH_ExternalFile(Assembly.GetExecutingAssembly().Location), false } ); Instances.Settings.SetValue("Assemblies:COFF", bCoff); if (rc) { GH_ComponentServer.UpdateRibbonUI(); } return(rc); }
bool LoadRhinoInsideNXGHComponent() { { var bCoff = Instances.Settings.GetValue("Assemblies:COFF", false); try { Instances.Settings.SetValue("Assemblies:COFF", false); var location = Path.Combine(RhinoInsideDirectory, "Application", "RhinoInside.NX.GH.dll"); if (!LoadGHA(location)) { if (!File.Exists(location)) { throw new FileNotFoundException("File Not Found.", location); } if (CentralSettings.IsLoadProtected(location)) { throw new InvalidOperationException($"Assembly '{location}' is load protected."); } return(false); } } finally { Instances.Settings.SetValue("Assemblies:COFF", bCoff); } } GH_ComponentServer.UpdateRibbonUI(); return(true); }
static bool LoadGrasshopperComponents() { var LoadGHAProc = Instances.ComponentServer.GetType().GetMethod("LoadGHA", BindingFlags.NonPublic | BindingFlags.Instance); if (LoadGHAProc == null) { return(false); } var bCoff = Instances.Settings.GetValue("Assemblies:COFF", true); Instances.Settings.SetValue("Assemblies:COFF", false); var rc = (bool)LoadGHAProc.Invoke ( Instances.ComponentServer, new object[] { new GH_ExternalFile(Assembly.GetExecutingAssembly().Location), false } ); // Load all the gha installed under the %APPDATA%\Grasshopper\Libraries-Autodesk-Revit-20XX //Load all the gha installed under ProgramData\Grasshopper\Libraries-Autodesk-Revit-20XX var schemeName = ApplicationUI.ControlledApplication.VersionName.Replace(' ', '-'); var revitAssemblyFolders = new List <string>() { Grasshopper.Folders.DefaultAssemblyFolder.Substring(0, Grasshopper.Folders.DefaultAssemblyFolder.Length - 1) + '-' + schemeName, Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Grasshopper", "Libraries" + '-' + schemeName) }; foreach (string revitAssemblyFolder in revitAssemblyFolders) { var assemblyFolder = new DirectoryInfo(revitAssemblyFolder); try { foreach (var file in assemblyFolder.EnumerateFiles("*.gha")) { LoadGHAProc.Invoke(Instances.ComponentServer, new object[] { new GH_ExternalFile(file.FullName), false }); } } catch (System.IO.DirectoryNotFoundException) { } } Instances.Settings.SetValue("Assemblies:COFF", bCoff); if (rc) { GH_ComponentServer.UpdateRibbonUI(); } return(rc); }
bool LoadComponents() { var LoadGHAProc = Instances.ComponentServer.GetType().GetMethod("LoadGHA", BindingFlags.NonPublic | BindingFlags.Instance); if (LoadGHAProc == null) { return(false); } var bCoff = Instances.Settings.GetValue("Assemblies:COFF", true); Instances.Settings.SetValue("Assemblies:COFF", false); var rc = (bool)LoadGHAProc.Invoke ( Instances.ComponentServer, new object[] { new GH_ExternalFile(Assembly.GetExecutingAssembly().Location), false } ); var assemblyFolders = new DirectoryInfo[] { // %ProgramData%\Grasshopper\Libraries-Inside-Revit-20XX new DirectoryInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Grasshopper", $"Libraries-{Rhinoceros.SchemeName}")), // %APPDATA%\Grasshopper\Libraries-Inside-Revit-20XX new DirectoryInfo(Folders.DefaultAssemblyFolder.Substring(0, Folders.DefaultAssemblyFolder.Length - 1) + '-' + Rhinoceros.SchemeName) }; foreach (var folder in assemblyFolders) { IEnumerable <FileInfo> assemblyFiles; try { assemblyFiles = folder.EnumerateFiles("*.gha"); } catch (System.IO.DirectoryNotFoundException) { continue; } foreach (var assemblyFile in assemblyFiles) { LoadGHAProc.Invoke(Instances.ComponentServer, new object[] { new GH_ExternalFile(assemblyFile.FullName), false }); } } Instances.Settings.SetValue("Assemblies:COFF", bCoff); if (rc) { GH_ComponentServer.UpdateRibbonUI(); } return(rc); }
bool LoadComponents() { var bCoff = Instances.Settings.GetValue("Assemblies:COFF", true); Instances.Settings.SetValue("Assemblies:COFF", false); var rc = LoadGHA(Assembly.GetExecutingAssembly().Location); var assemblyFolders = new DirectoryInfo[] { // %ProgramData%\Grasshopper\Libraries-Inside-Revit-20XX new DirectoryInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Grasshopper", $"Libraries-{Rhinoceros.SchemeName}")), // %APPDATA%\Grasshopper\Libraries-Inside-Revit-20XX new DirectoryInfo(Folders.DefaultAssemblyFolder.Substring(0, Folders.DefaultAssemblyFolder.Length - 1) + '-' + Rhinoceros.SchemeName) }; foreach (var folder in assemblyFolders) { IEnumerable <FileInfo> assemblyFiles; try { assemblyFiles = folder.EnumerateFiles("*.gha"); } catch (System.IO.DirectoryNotFoundException) { continue; } foreach (var assemblyFile in assemblyFiles) { bool loaded = false; string mainContent = string.Empty; string expandedContent = string.Empty; try { loaded = LoadGHA(assemblyFile.FullName); } catch (Exception e) { mainContent = e.Message; expandedContent = e.Source; } if (!loaded) { using ( var taskDialog = new TaskDialog(MethodBase.GetCurrentMethod().DeclaringType.FullName) { Title = "Grasshopper Assembly Failure", MainIcon = TaskDialogIcons.IconError, TitleAutoPrefix = false, AllowCancellation = false, MainInstruction = $"Grasshopper cannot load the external assembly {assemblyFile.Name}. Please contact the provider for assistance.", MainContent = mainContent, ExpandedContent = expandedContent, FooterText = assemblyFile.FullName } ) { taskDialog.Show(); } } } } Instances.Settings.SetValue("Assemblies:COFF", bCoff); if (rc) { GH_ComponentServer.UpdateRibbonUI(); } return(rc); }
bool LoadStartupAssemblies() { // Load This Assembly as a GHA in Grasshopper { var bCoff = Instances.Settings.GetValue("Assemblies:COFF", false); try { Instances.Settings.SetValue("Assemblies:COFF", false); var location = Assembly.GetExecutingAssembly().Location; location = Path.Combine(Path.GetDirectoryName(location), Path.GetFileNameWithoutExtension(location) + ".GH.gha"); if (!LoadGHA(location)) { if (!File.Exists(location)) { throw new FileNotFoundException("File Not Found.", location); } if (CentralSettings.IsLoadProtected(location)) { throw new InvalidOperationException($"Assembly '{location}' is load protected."); } return(false); } } finally { Instances.Settings.SetValue("Assemblies:COFF", bCoff); } } var assemblyList = GetAssembliesList(); foreach (var assemblyFile in assemblyList) { bool loaded = false; string mainContent = string.Empty; string expandedContent = string.Empty; try { loaded = LoadGHA(assemblyFile); } catch (Exception e) { mainContent = e.Message; expandedContent = e.Source; } if (!loaded) { using ( var taskDialog = new TaskDialog(MethodBase.GetCurrentMethod().DeclaringType.FullName) { Title = "Grasshopper Assembly Failure", MainIcon = External.UI.TaskDialogIcons.IconError, TitleAutoPrefix = false, AllowCancellation = false, MainInstruction = $"Grasshopper cannot load the external assembly {Path.GetFileName(assemblyFile)}. Please contact the provider for assistance.", MainContent = mainContent, ExpandedContent = expandedContent, FooterText = assemblyFile } ) { taskDialog.Show(); } } } GH_ComponentServer.UpdateRibbonUI(); return(true); }