/// <summary> /// Finds all the available providers in the /// current directory, instantiates them, adds /// them to a list, and returns them. /// </summary> /// <returns>List of status providers in the /// current directory.</returns> public static IList <EXT.IStatusProvider> FindAllProviders() { List <EXT.IStatusProvider> retVal = new List <EXT.IStatusProvider>(); List <string> files = new List <string>(); files.AddRange(Directory.GetFiles(".", "*.dll")); files.AddRange(Directory.GetFiles(".", "*.exe")); // Try every file foreach (string file in files) { try { // Load the assembly. Try each type Assembly a = Assembly.LoadFile(Path.GetFullPath(file)); foreach (System.Type t in a.GetTypes()) { // See if this type is a status provider System.Type iFace = t.GetInterface(typeof(EXT.IStatusProvider).Name); if (iFace != null) { // Instantiate it and add it to the list EXT.IStatusProvider plugin = a.CreateInstance(t.FullName) as EXT.IStatusProvider; retVal.Add(plugin); } } } catch { // Silence load errors. } } return(retVal); }
/// <summary> /// Adds all the providers to the given menu /// </summary> /// <param name="root">Root menu item</param> /// <param name="side">Which side we're on</param> /// <param name="current">Current status provider on this side</param> void AddMenuItems( ToolStripMenuItem root, MenuTag.DisplaySide side, EXT.IStatusProvider current) { foreach (EXT.IStatusProvider provider in _providers) { ToolStripMenuItem item = new ToolStripMenuItem(provider.Name, provider.Image); item.Tag = new MenuTag(side, provider); item.Checked = ReferenceEquals(current, provider); item.Enabled = !item.Checked; item.Click += OnProviderToolStripItemClick; root.DropDownItems.Add(item); } }
/// <summary> /// Adds all the providers to the given menu /// </summary> /// <param name="root">Root menu item</param> /// <param name="side">Which side we're on</param> /// <param name="current">Current status provider on this side</param> void AddMenuItems( MenuItem root, MenuTag.DisplaySide side, EXT.IStatusProvider current) { foreach (EXT.IStatusProvider provider in _providers) { MenuItem item = new MenuItem(provider.Name); item.Tag = new MenuTag(side, provider); item.Checked = ReferenceEquals(current, provider); item.Enabled = !ReferenceEquals(current, provider); item.Click += OnProviderMenuItemClick; root.MenuItems.Add(item); } }
/// <summary> /// Handles the switch of a provider /// </summary> /// <param name="tag">Information about the requested new provider</param> void HandleProviderSwitch(MenuTag tag) { if (tag.Side == MenuTag.DisplaySide.Left) { _left = tag.Provider; _leftMax = _left.Type == EXT.StatusType.Percentage ? 100 : 10; _prefs.LeftProvider = _left.GetType().FullName; } else { _right = tag.Provider; _rightMax = _right.Type == EXT.StatusType.Percentage ? 100 : 10; _prefs.RightProvider = _right.GetType().FullName; } UpdatePreferences(); }
/// <summary> /// Finds the active providers based on the preferences object. /// </summary> void FindActiveProviders() { foreach (EXT.IStatusProvider provider in _providers) { if (provider.GetType().FullName == _prefs.LeftProvider) { _left = provider; } if (provider.GetType().FullName == _prefs.RightProvider) { _right = provider; } } // Handle the case of a provider missing if (_left == null) { _left = _providers[0]; } if (_right == null) { _right = _providers[1]; } }
public MenuTag(DisplaySide side, EXT.IStatusProvider provider) { _side = side; _provider = provider; }
public MenuTag(DisplaySide side, EXT.IStatusProvider provider) { _side = side; _provider = provider; }
/// <summary> /// Handles the switch of a provider /// </summary> /// <param name="tag">Information about the requested new provider</param> void HandleProviderSwitch(MenuTag tag) { if (tag.Side == MenuTag.DisplaySide.Left) { _left = tag.Provider; _leftMax = _left.Type == EXT.StatusType.Percentage ? 100 : 10; _prefs.LeftProvider = _left.GetType().FullName; } else { _right = tag.Provider; _rightMax = _right.Type == EXT.StatusType.Percentage ? 100 : 10; _prefs.RightProvider = _right.GetType().FullName; } UpdatePreferences(); }
/// <summary> /// Finds the active providers based on the preferences object. /// </summary> void FindActiveProviders() { foreach (EXT.IStatusProvider provider in _providers) { if (provider.GetType().FullName == _prefs.LeftProvider) { _left = provider; } if (provider.GetType().FullName == _prefs.RightProvider) { _right = provider; } } // Handle the case of a provider missing if (_left == null) { _left = _providers[0]; } if (_right == null) { _right = _providers[1]; } }