Esempio n. 1
0
        //NOTE: running the macro while SW closing causes the issue when SW process hangs and not released
        //suppressing this functionality until resolved
        //private int OnSwAppClose()
        //{
        //    InvokeTrigger(Triggers_e.ApplicationClose);
        //    return 0;
        //}

        private void InvokeTrigger(Triggers_e trigger)
        {
            CommandMacroInfo[] cmds;

            if (m_Triggers.TryGetValue(trigger, out cmds))
            {
                cmds = cmds.Where(c => c.Scope.IsInScope(m_App)).ToArray();

                if (cmds != null && cmds.Any())
                {
                    m_Logger.Log($"Invoking {cmds.Length} command(s) for the trigger {trigger}");

                    foreach (var cmd in cmds)
                    {
                        try
                        {
                            m_MacroRunner.RunMacro(cmd.MacroPath, cmd.EntryPoint, false);
                        }
                        catch (Exception ex)
                        {
                            m_Logger.Log(ex);
                            m_Msg.ShowError(ex, $"Failed to run a macro on trigger: {trigger}");
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        private static EventType_e GetEventType(Triggers_e trigger)
        {
            EventType_e eventType;

            switch (trigger)
            {
            case Triggers_e.Button:
                eventType = EventType_e.ButtonClick;
                break;

            case Triggers_e.ToggleButton:
                eventType = EventType_e.ToggleButtonCheck;
                break;

            case Triggers_e.ApplicationStart:
                eventType = EventType_e.ApplicationStart;
                break;

            case Triggers_e.DocumentNew:
                eventType = EventType_e.DocumentNew;
                break;

            case Triggers_e.DocumentOpen:
                eventType = EventType_e.DocumentOpen;
                break;

            case Triggers_e.DocumentActivated:
                eventType = EventType_e.DocumentActivated;
                break;

            case Triggers_e.DocumentSave:
                eventType = EventType_e.DocumentSave;
                break;

            case Triggers_e.DocumentClose:
                eventType = EventType_e.DocumentClose;
                break;

            case Triggers_e.Selection:
                eventType = EventType_e.NewSelection;
                break;

            case Triggers_e.ConfigurationSheetChange:
                eventType = EventType_e.ConfigurationChange;
                break;

            case Triggers_e.Rebuild:
                eventType = EventType_e.Rebuild;
                break;

            default:
                throw new NotSupportedException($"{trigger} is not supported");
            }

            return(eventType);
        }
Esempio n. 3
0
        public bool TryRunMacroCommand(Triggers_e trigger, CommandMacroInfo macroInfo, IXDocument targetDoc, string workDir)
        {
            try
            {
                m_Logger.Log($"Invoking '{trigger}' trigger for '{macroInfo.Title}'", LoggerMessageSeverity_e.Debug);

                var eventType = GetEventType(trigger);

                var eventArgs = new MacroRunningArguments(macroInfo, targetDoc)
                {
                    Cancel = false
                };

                m_ToolbarModuleProxy.CallMacroRunning(eventType, eventArgs);

                if (!eventArgs.Cancel)
                {
                    var opts = eventArgs.MacroInfo.UnloadAfterRun ? MacroRunOptions_e.UnloadAfterRun : MacroRunOptions_e.Default;

                    var macroPath = m_FilePathResolver.Resolve(eventArgs.MacroInfo.MacroPath, workDir);

                    m_Logger.Log($"Running macro '{macroPath}' with arguments '{eventArgs.MacroInfo.Arguments}'", LoggerMessageSeverity_e.Debug);

                    var entryPoint = eventArgs.MacroInfo.EntryPoint;

                    if (entryPoint == null)
                    {
                        throw new UserException($"Entry point is not specified for macro '{macroInfo.Title}'");
                    }

                    m_Runner.RunMacro(m_App, macroPath,
                                      new MacroEntryPoint(entryPoint.ModuleName, entryPoint.SubName),
                                      opts, eventArgs.MacroInfo.Arguments, null);

                    return(true);
                }
                else
                {
                    m_Logger.Log($"Trigger '{trigger}' for '{macroInfo.Title}' invoking cancelled", LoggerMessageSeverity_e.Debug);
                    return(false);
                }
            }
            catch (Exception ex)
            {
                m_Logger.Log(ex);
                m_MsgSvc.ShowError(ex, $"Failed to run a macro '{macroInfo.Title}' on trigger '{trigger}'");
                return(false);
            }
        }
Esempio n. 4
0
        private void InvokeTrigger(Triggers_e trigger, IXDocument targetDoc)
        {
            CommandMacroInfo[] cmds;

            if (m_Triggers.TryGetValue(trigger, out cmds))
            {
                cmds = cmds.Where(c => c.Scope.IsInScope(m_App)).ToArray();

                if (cmds.Any())
                {
                    m_Logger.Log($"Invoking {cmds.Length} command(s) for the trigger {trigger}", LoggerMessageSeverity_e.Debug);

                    foreach (var cmd in cmds)
                    {
                        m_MacroRunner.TryRunMacroCommand(trigger, cmd, targetDoc, m_WorkDir);
                    }
                }
            }
        }