//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}"); } } } } }
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); }
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); } }
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); } } } }