void UpdateTools(MacroContainer container, bool supressMessage = false) { container.MainForm.SuspendLayout(); container.Reset(); RunTravers(container, supressMessage); container.MainForm.ResumeLayout(); }
void RunTravers(MacroContainer container, bool supressMessage = false) { if (IsValidDirectory(out string message)) { var menu = container.MainForm.GetMacrosMenu(); if (menu != null) { var button = menu.InsertCommandbarButton(1, ButtonKey_OpenInExplorer, Properties.Resources.OpenInExplorerCommand); container.Tools.Add(button.Tool, "OpenInExplorerCommand"); } var macrosDirectory = Path2.GetFullPathFromPathWithVariables(Settings[SettingsKey]); int folderCounter = 1; int fileCounter = 1; if (Directory.Exists(macrosDirectory)) { DirectoryConverter.Travers(menu, 3, ref folderCounter, ref fileCounter, macrosDirectory, container, true); } } else { if (!supressMessage) { MessageBox.Show(container.MainForm, message, container.MainForm.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
public override void OnHostingFormLoaded(MainForm mainForm) { var container = new MacroContainer(mainForm); mainForm.FormClosed += Form_FormClosed; _containers.Add(container); var toolsMenu = mainForm.GetMainCommandbarManager()?.GetReferenceEditorCommandbar(MainFormReferenceEditorCommandbarId.Menu)?.GetCommandbarMenu(MainFormReferenceEditorCommandbarMenuId.Tools); var oldMacroEditorTool = toolsMenu.GetCommandbarButton("ShowMacroEditorForm"); if (oldMacroEditorTool != null) { toolsMenu?.Tool?.Tools?.Remove(oldMacroEditorTool.Tool); oldMacroEditorTool.Tool.ToolbarsManager.Tools.Remove(oldMacroEditorTool.Tool); } var menu = mainForm .GetMainCommandbarManager() .GetReferenceEditorCommandbar(MainFormReferenceEditorCommandbarId.Menu) .InsertCommandbarMenu(17, MenuKey_Macros, Properties.Resources.MacroCommand); if (menu != null) { menu.AddCommandbarButton(ButtonKey_Configurate, Properties.Resources.ConfigurateCommand); UpdateTools(container, true); var button = menu.InsertCommandbarButton(2, ButtonKey_ShowMacroEditor, Properties.Resources.MacroEditorCommand); button.Shortcut = (Shortcut)(Keys.Alt | Keys.F11); button.HasSeparator = true; button = menu.AddCommandbarButton(ButtonKey_Refresh, Properties.Resources.RefreshCommand, image: Properties.Resources.Refresh); button.Tool.InstanceProps.IsFirstInGroup = true; } }
public static void Travers(CommandbarMenu commandbarMenu, int index, ref int folderCounter, ref int fileCounter, string path, MacroContainer container, bool isFirst) { try { foreach (var directoryInfo in Directory.GetDirectories(path).Select(directory => new DirectoryInfo(directory))) { if (directoryInfo.GetFiles("*.cs", SearchOption.AllDirectories).Length == 0) { continue; } folderCounter++; var menu = commandbarMenu.InsertCommandbarMenu(index, Addon.MenuKey.FormatString(folderCounter), directoryInfo.Name); index += 1; if (isFirst) { menu.Tool.InstanceProps.IsFirstInGroup = true; isFirst = false; } container.Tools.Add(menu.Tool, null); Travers(menu, 0, ref folderCounter, ref fileCounter, directoryInfo.FullName, container, isFirst); } foreach (var file in Directory.GetFiles(path, "*.cs")) { fileCounter++; var key = Addon.MenuKey.FormatString(folderCounter) + "." + fileCounter; var menu = commandbarMenu.InsertCommandbarMenu(index, key, Path.GetFileName(file), image: Properties.Resources.Macro); index += 1; if (isFirst) { menu.Tool.InstanceProps.IsFirstInGroup = true; isFirst = false; } container.Tools.Add(menu.Tool, null); key = Addon.ButtonKey + "." + fileCounter + ".1"; var button = menu.AddCommandbarButton(key, Properties.Resources.EditCommand); container.Macros.Add(button.Tool.Key, new Macro(file, MacroAction.Edit)); container.Tools.Add(button.Tool, "EditCommand"); key = Addon.ButtonKey + "." + fileCounter + ".2"; button = menu.AddCommandbarButton(Addon.ButtonKey + "." + fileCounter + ".2", Properties.Resources.RunCommand); container.Macros.Add(button.Tool.Key, new Macro(file, MacroAction.Run)); container.Tools.Add(button.Tool, "RunCommand"); } } catch (Exception) { } }