Example #1
0
 void UpdateTools(MacroContainer container, bool supressMessage = false)
 {
     container.MainForm.SuspendLayout();
     container.Reset();
     RunTravers(container, supressMessage);
     container.MainForm.ResumeLayout();
 }
Example #2
0
        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);
                }
            }
        }
Example #3
0
        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)
            {
            }
        }