예제 #1
0
        internal MacroExecutor RunMacroModule(MacroModule module, ISession sessionToBind, IMacroEventListener listener)
        {
            try {
                Assembly      asm       = MacroUtil.LoadMacroAssembly(module);
                MacroExecutor macroExec = new MacroExecutor(module, asm);

                if (sessionToBind != null)
                {
                    bool bound = _sessionBinder.Bind(macroExec, sessionToBind);
                    if (!bound)
                    {
                        GUtil.Warning(null, Strings.GetString("Message.MacroPlugin.AnotherMacroIsRunningInThisSession"));
                        return(null);
                    }
                }

                if (listener != null)
                {
                    listener.IndicateMacroStarted();
                }
                macroExec.AsyncExec(listener);
                return(macroExec);
            }
            catch (Exception ex) {
                RuntimeUtil.ReportException(ex);
                return(null);
            }
        }
예제 #2
0
 public void IndicateMacroFinished()
 {
     _runningMacro = null;
     if (_macroListener != null)
     {
         _macroListener.IndicateMacroFinished();
     }
 }
예제 #3
0
 /// <summary>
 /// Binds MacroExecutor to a session.
 /// </summary>
 /// <param name="executor">macro executor</param>
 /// <param name="session">session bind to</param>
 /// <returns></returns>
 public bool Bind(MacroExecutor executor, ISession session) {
     lock (executorMap) {
         if (executorMap.ContainsKey(session))
             return false;
         executorMap.Add(session, executor);
         return true;
     }
 }
예제 #4
0
        public void Execute(Form parent, MacroModule mod)
        {
            StringResource sr = MacroPlugin.Instance.Strings;

            if (_runningMacro != null)
            {
                GUtil.Warning(parent, sr.GetString("Message.MacroModule.AlreadyRunning"));
                return;
            }

            if (mod.Type == MacroType.Unknown)
            {
                GUtil.Warning(parent, sr.GetString("Message.MacroModule.UnknownModuleType"));
                return;
            }
            else
            {
                _runningMacro = MacroPlugin.Instance.RunMacroModule(mod, null, this);
            }
        }
예제 #5
0
        internal MacroExecutor RunMacroModule(MacroModule module, ISession sessionToBind, IMacroEventListener listener) {
            try {
                Assembly asm = MacroUtil.LoadMacroAssembly(module);
                MacroExecutor macroExec = new MacroExecutor(module, asm);

                if (sessionToBind != null) {
                    bool bound = _sessionBinder.Bind(macroExec, sessionToBind);
                    if (!bound) {
                        GUtil.Warning(null, Strings.GetString("Message.MacroPlugin.AnotherMacroIsRunningInThisSession"));
                        return null;
                    }
                }

                if (listener != null)
                    listener.IndicateMacroStarted();
                macroExec.AsyncExec(listener);
                return macroExec;
            }
            catch (Exception ex) {
                RuntimeUtil.ReportException(ex);
                return null;
            }
        }
예제 #6
0
 public void IndicateMacroFinished()
 {
     _runningMacro = null;
     if (_macroListener != null)
         _macroListener.IndicateMacroFinished();
 }
예제 #7
0
        public void Execute(Form parent, MacroModule mod)
        {
            StringResource sr = MacroPlugin.Instance.Strings;
            if (_runningMacro != null) {
                GUtil.Warning(parent, sr.GetString("Message.MacroModule.AlreadyRunning"));
                return;
            }

            if (mod.Type == MacroType.Unknown) {
                GUtil.Warning(parent, sr.GetString("Message.MacroModule.UnknownModuleType"));
                return;
            }
            else {
                _runningMacro = MacroPlugin.Instance.RunMacroModule(mod, null, this);
            }
        }