public void AddItem(IMusixMenuItem item) { Items.Add(item); MusixDynamicSidebarItem sidebarItem = new MusixDynamicSidebarItem(item); sidebarItem.SendStyle(Style); sidebarItem.OnSelect += SidebarItem_OnSelect; flowElements.Controls.Add(sidebarItem); }
public void SelectItem(IMusixMenuItem item) { MusixDynamicSidebarItem it = GetUIElement(item); if (it != null) { it.IsSelected = true; } }
public MusixDynamicSidebarItem GetUIElement(IMusixMenuItem item) { foreach (MusixDynamicSidebarItem sidebarItem in flowElements.Controls.OfType <MusixDynamicSidebarItem>()) { if (sidebarItem.MenuItem == item) { return(sidebarItem); } } return(null); }
public void RemoveItem(IMusixMenuItem item) { MusixDynamicSidebarItem UIElement = GetUIElement(item); if (UIElement != null) { UIElement.OnSelect -= SidebarItem_OnSelect; Items.Remove(item); flowElements.Controls.Remove(UIElement); return; } }
public void SelectItemAtIndex(int index) { IMusixMenuItem item = Items[index]; System.Console.WriteLine($"Index {index} > {item.Name}"); MusixDynamicSidebarItem menuItem = GetUIElement(item); System.Console.WriteLine($"Resolved entry index: {flowElements.Controls.IndexOf(menuItem)}"); if (menuItem != null) { System.Console.WriteLine("setselected"); menuItem.IsSelected = true; } }
public MusixDynamicSidebarItem(IMusixMenuItem item) { InitializeComponent(); MenuItem = item; Init(); LoadUI(); UITaskFactory = new TaskFactory(TaskScheduler); Visible = item.ShowWhenUnselected; if (typeof(IStatusIconProvider).IsAssignableFrom(item.GetType())) { StatusIconProvider = (IStatusIconProvider)item; StatusIconProvider.UpdateIcon += Provider_UpdateIcon; StatusIconProvider.Init(); } Load += MusixDynamicSidebarItem_Load; }
private void MainWindow_Load(object sender, EventArgs e) { Instance = this; DateTime Started = DateTime.Now; FileInfo AppBaseInfo = new FileInfo(Application.ExecutablePath); Environment.CurrentDirectory = AppBaseInfo.DirectoryName; ConfigManager.Init(); CheckFolders(); DateTime PStarted = DateTime.Now; foreach (string PluginFile in Directory.GetFiles("Plugins", "*.dll")) { FileInfo info = new FileInfo(PluginFile); try { Console.WriteLine($"Loading plugin {info.Name}..."); List <string> Deps = new List <string>(); if (Directory.Exists(Path.Combine("Plugins", info.Name))) { foreach (string Dependancy in Directory.GetFiles(Path.Combine("Plugins", info.Name), "*.dll")) { Deps.Add(Dependancy); } } Console.WriteLine($"Loading {Deps.Count} dependancies for plugin {info.Name}..."); Deps.ForEach(x => Assembly.LoadFrom(x)); Assembly Plugin = Assembly.LoadFrom(PluginFile); foreach (Type t in Plugin.GetTypes()) { if (typeof(IMusixPluginEntryPoint).IsAssignableFrom(t)) { Console.WriteLine($"Initializing plugin {info.Name}..."); IMusixPluginEntryPoint entryPoint = ((IMusixPluginEntryPoint)Activator.CreateInstance(t)); entryPoint.Load(); Plugins.Add(entryPoint.Name, entryPoint); Console.WriteLine($"Initialized plugin {entryPoint.Name}"); } } } catch (Exception ex) { Console.WriteLine($"Failed to load plugin {info.Name}; {ex.Message}"); Console.WriteLine(ex.Message); } } Console.WriteLine($"[Plugins Loaded] took {Math.Round(DateTime.Now.Subtract(PStarted).TotalMilliseconds),2} millisecond/s."); Client = new MusixClient("955b354ccd0e4270b6ad97f8b4003d9a", "5a008b85c33b499da7857fbdf05f08ef", "ImageCache", "AudioCache"); Client.OnClientReady += Client_OnClientReady; Client.StartClient(); AcceptButton = new Button(); Activated += MainWindow_Activated; Deactivate += MainWindow_Deactivate; ((Button)AcceptButton).Click += BtnAccept_Click; MenuItems.Add(typeof(SearchMenuItem), new SearchMenuItem()); MenuItems.Add(typeof(DownloadsMenuItem), new DownloadsMenuItem()); MenuItems.Add(typeof(SettingsMenuItem), new SettingsMenuItem()); MDSSideBar.AddItem(MenuItems[typeof(SearchMenuItem)]); MDSSideBar.AddItem(MenuItems[typeof(DownloadsMenuItem)]); MDSSideBar.AddItem(MenuItems[typeof(SettingsMenuItem)]); foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) { foreach (Type t in asm.GetTypes().Where(x => typeof(IMusixMenuItem).IsAssignableFrom(x) && !x.IsInterface)) { if (!MenuItems.ContainsKey(t)) { IMusixMenuItem newItem = (IMusixMenuItem)Activator.CreateInstance(t); MDSSideBar.AddItem(newItem); MenuItems.Add(t, newItem); } } } foreach (var item in MenuItems) { if (Attribute.GetCustomAttribute(item.Value.GetType(), typeof(AutoInitialize)) != null) { Control ct = item.Value.GetMenuControl(); ct.Visible = false; ct.Dock = DockStyle.Fill; if (!PNContent.Controls.Contains(ct)) { PNContent.Controls.Add(ct); } } } MDSSideBar.OnSelectionChanged += MDSSideBar_OnSelectionChanged; MDSSideBar.SelectItemAtIndex(0); SendStyle(EStyle.Blue); DateTime Finished = DateTime.Now; Console.WriteLine($"[Initialized] took {Math.Round(Finished.Subtract(Started).TotalMilliseconds), 3} millisecond/s."); }
private void MDSSideBar_OnSelectionChanged(IMusixMenuItem SelectedItem) { Console.WriteLine("SELECTION CHANGED"); ShowPanelItem(SelectedItem.GetMenuControl()); }