ReloadWidgetLibraries() public static method

public static ReloadWidgetLibraries ( ) : bool
return bool
Exemplo n.º 1
0
 void LoadLibraries(AssemblyResolver resolver, Hashtable visited, IEnumerable libraries)
 {
     // Convert all assembly names to assembly paths before registering the libraries.
     // The registry and the library cache will only handle full paths.
     foreach (string s in libraries)
     {
         string sr = resolver.Resolve(s, null);
         if (sr != null)
         {
             AddLibrary(resolver, visited, sr);
         }
     }
     Registry.ReloadWidgetLibraries();
 }
Exemplo n.º 2
0
        public bool UpdateLibraries(ArrayList libraries, ArrayList projects, bool allowBackendRestart, bool forceUnload)
        {
            try {
                Registry.BeginChangeSet();

                libraries.Add(Registry.CoreWidgetLibrary.Name);

                // Notify libraries that need to be unloaded and loaded again

                foreach (WidgetLibrary lib in Registry.RegisteredWidgetLibraries)
                {
                    if (lib.NeedsReload)
                    {
                        appFrontend.NotifyLibraryUnloaded(lib.Name);
                    }
                }

                if (!Registry.ReloadWidgetLibraries() && allowBackendRestart)
                {
                    return(false);
                }

                // Store a list of registered libraries, used later to know which
                // ones need to be unloaded

                ArrayList loaded = new ArrayList();
                foreach (WidgetLibrary alib in Registry.RegisteredWidgetLibraries)
                {
                    loaded.Add(alib.Name);
                }

                // Load required libraries

                Hashtable visited = new Hashtable();
                LoadLibraries(new AssemblyResolver(this), visited, libraries);

                foreach (ProjectBackend project in projects)
                {
                    LoadLibraries(project.Resolver, visited, project.WidgetLibraries);
                }

                // Unload libraries which are not required

                foreach (string name in loaded)
                {
                    if (!visited.Contains(name))
                    {
                        if (forceUnload && allowBackendRestart)
                        {
                            return(false);
                        }
                        appFrontend.NotifyLibraryUnloaded(name);
                        Registry.UnregisterWidgetLibrary(Registry.GetWidgetLibrary(name));
                    }
                }

                return(true);
            }
            finally {
                Registry.EndChangeSet();
            }
        }