private Image getImage(bool large) { if (IsPluginButton) { if (PluginInfo.PluginType == PluginType.BackgroundMultiple) { Plugin plugin; if (PluginManager.TryGetStaticPluginInstance(PluginInfo.PluginID, out plugin)) { try { return(((IBarMultipleCustomItems)plugin.Instance).GetImage(large, Index)); } catch { } } } return(large ? PluginInfo.ImageLarge ?? Resources_Image.imgPlugin24 : PluginInfo.ImageSmall ?? Resources_Image.imgPlugin16); } else if (Index == 0 || Index >= QTButtonBar.BII_WINDOWOPACITY) { return(null); } else { return(large ? parent.imageStripLarge[Index - 1] : parent.imageStripSmall[Index - 1]); } }
public override void InitializeConfig() { int[] keys = WorkingConfig.keys.Shortcuts; HotkeyEntries = new List <HotkeyEntry>(); for (int i = 0; i < (int)BindAction.KEYBOARD_ACTION_COUNT; ++i) { HotkeyEntries.Add(new HotkeyEntry(keys, i)); } var PluginShortcuts = new Dictionary <string, int[]>(); foreach (var info in PluginManager.PluginInformations) { Plugin p; if (!PluginManager.TryGetStaticPluginInstance(info.PluginID, out p) || !p.PluginInformation.Enabled) { continue; } string[] actions = null; try { if (!p.Instance.QueryShortcutKeys(out actions)) { actions = null; } } catch { } if (actions == null) { continue; } if (WorkingConfig.keys.PluginShortcuts.TryGetValue(info.PluginID, out keys)) { Array.Resize(ref keys, actions.Length); PluginShortcuts[info.PluginID] = keys; } else { PluginShortcuts[info.PluginID] = new int[actions.Length]; } HotkeyEntries.AddRange(actions.Select((act, i) => new HotkeyEntry(keys, i, act, p.PluginInformation.Name))); } WorkingConfig.keys.PluginShortcuts = PluginShortcuts; ICollectionView view = CollectionViewSource.GetDefaultView(HotkeyEntries); PropertyGroupDescription groupDescription = new PropertyGroupDescription("PluginName"); view.GroupDescriptions.Add(groupDescription); lvwHotkeys.ItemsSource = view; }
public override void InitializeConfig() { // Initialize the button bar tab. imageStripLarge = new ImageStrip(new Size(24, 24)); imageStripSmall = new ImageStrip(new Size(16, 16)); if (null != WorkingConfig.bbar.ImageStripPath && WorkingConfig.bbar.ImageStripPath.Length > 0) { Bitmap bitmap; Bitmap bitmap2; if (LoadExternalImage(WorkingConfig.bbar.ImageStripPath, out bitmap, out bitmap2)) { imageStripLarge.AddStrip(bitmap); imageStripSmall.AddStrip(bitmap2); bitmap.Dispose(); bitmap2.Dispose(); if (Path.GetExtension(WorkingConfig.bbar.ImageStripPath).PathEquals(".bmp")) { imageStripLarge.TransparentColor = imageStripSmall.TransparentColor = Color.Magenta; } else { imageStripLarge.TransparentColor = imageStripSmall.TransparentColor = Color.Empty; } } } else { using (Bitmap b = Resources_Image.ButtonStrip24) { imageStripLarge.AddStrip(b); } imageStripSmall = new ImageStrip(new Size(16, 16)); using (Bitmap b = Resources_Image.ButtonStrip16) { imageStripSmall.AddStrip(b); } } ButtonPool = new ObservableCollection <ButtonEntry>(); CurrentButtons = new ObservableCollection <ButtonEntry>(); // Create a list of all the plugin buttons. int order = QTButtonBar.INTERNAL_BUTTON_COUNT; var lstPluginIDs = new List <string>(); var dicPluginButtons = new Dictionary <string, ButtonEntry[]>(); foreach (PluginInformation pi in PluginManager.PluginInformations.Where(pi => pi.Enabled).OrderBy(pi => pi.Name)) { if (pi.PluginType == PluginType.Interactive) { lstPluginIDs.Add(pi.PluginID); dicPluginButtons[pi.PluginID] = new ButtonEntry[] { new ButtonEntry(this, order++, 0, pi) }; } else if (pi.PluginType == PluginType.BackgroundMultiple) { Plugin plugin; if (PluginManager.TryGetStaticPluginInstance(pi.PluginID, out plugin)) { IBarMultipleCustomItems bmci = plugin.Instance as IBarMultipleCustomItems; try { if (bmci != null && bmci.Count > 0) { lstPluginIDs.Add(pi.PluginID); dicPluginButtons[pi.PluginID] = bmci.Count.RangeSelect(i => new ButtonEntry(this, order++, i, pi)).ToArray(); } } catch { } } } } // Add the current buttons (right pane) foreach (int i in WorkingConfig.bbar.ButtonIndexes) { int pluginIndex = i.HiWord() - 1; if (pluginIndex >= 0) { string id = WorkingConfig.bbar.ActivePluginIDs[pluginIndex]; ButtonEntry[] buttons; if (dicPluginButtons.TryGetValue(id, out buttons) && i.LoWord() < buttons.Length) { CurrentButtons.Add(buttons[i.LoWord()]); } } else { CurrentButtons.Add(new ButtonEntry(this, i, i)); } } // Add the rest of the buttons to the button pool (left pane) ButtonPool.Add(new ButtonEntry(this, 0, QTButtonBar.BII_SEPARATOR)); for (int i = 1; i < QTButtonBar.INTERNAL_BUTTON_COUNT; i++) { if (!WorkingConfig.bbar.ButtonIndexes.Contains(i)) { ButtonPool.Add(new ButtonEntry(this, i, i)); } } foreach (ButtonEntry entry in lstPluginIDs.SelectMany(pid => dicPluginButtons[pid]).Except(CurrentButtons)) { ButtonPool.Add(entry); } lstButtonBarPool.ItemsSource = ButtonPool; lstButtonBarCurrent.ItemsSource = CurrentButtons; }