private static void LoadInternal(IDisplay display, string installPath, string settingsPath) { string name = null; try { if (display != null) { name = display.Name; string typeName = display.GetType().FullName; LoadedDisplayStyle loadedDisplayStyle = new LoadedDisplayStyle(display); loadedDisplayStyle.SetGrowlApplicationPath(Application.StartupPath); loadedDisplayStyle.SetDisplayStylePath(installPath); if (loadedDisplayStyle.Display.SettingsPanel != null) { settingsPanels.Add(typeName, loadedDisplayStyle.Display.SettingsPanel); loadedDisplayStyle.Display.SettingsPanel.SetDirectories(installPath, settingsPath); loadedDisplayStyle.Display.SettingsCollection = loadedDisplayStyle.Display.SettingsPanel.GetSettings(); } loadedDisplayStyle.Load(); Utility.WriteDebugInfo(String.Format("Display '{0}' was loaded successfully", name)); // now that the display has been loaded, add it (and any subdisplays) the the list of available displays string[] displays = loadedDisplayStyle.Display.GetListOfAvailableDisplays(); foreach (string displayName in displays) { Growl.Display d = new Growl.Display(displayName, loadedDisplayStyle.Display); availableDisplays.Add(displayName, d); OnDisplayLoaded(d); Utility.WriteDebugInfo(String.Format("Display '{0}' handles the '{1}' display style", name, displayName)); } } } catch (Exception ex) { // suppress any per-display loading exceptions Utility.WriteDebugInfo(String.Format("Display failed to load: '{0}' - {1} - {2}", name, ex.Message, ex.StackTrace)); } }