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); } }
public void CallMacroRunning(EventType_e eventType, MacroRunningArguments args) => RequestMacroRunning?.Invoke(eventType, args);
private void OnRequestMacroRunning(EventType_e eventType, MacroRunningArguments args) => MacroRunning?.Invoke(eventType, args);