示例#1
0
        public override Object Evaluate(EvaluateParams evaluateParams)
        {
            var scriptArgs = new ScriptArgs();
            var bindings   = new Dictionary <string, object>();

            bindings.Put(ExprNodeScript.CONTEXT_BINDING_NAME, evaluateParams.ExprEvaluatorContext.AgentInstanceScriptContext);
            for (int i = 0; i < Names.Length; i++)
            {
                bindings.Put(Names[i], Parameters[i].Evaluate(evaluateParams));
            }

            scriptArgs.Bindings = bindings;

            try
            {
                var result = _scriptAction.Invoke(scriptArgs);

                if (Coercer != null)
                {
                    result = Coercer.Invoke(result);
                }

                return(result);
            }
            catch (Exception e)
            {
                String message = "Unexpected exception executing script '" + ScriptName + "' for statement '" + StatementName + "' : " + e.Message;
                Log.Error(message, e);
                throw new EPException(message, e);
            }
        }
示例#2
0
        private void PreviewClose(object sender, ScriptArgs e)
        {
            FormPreview formPreview = (FormPreview)sender;

            if (formPreview.GroupBoxText.Equals("sp_configure Preview", StringComparison.OrdinalIgnoreCase))
            {
                Sp_configure = e.Script;
            }
            if (formPreview.GroupBoxText.Equals("PowerShell Preview", StringComparison.OrdinalIgnoreCase))
            {
                psTemplateChanged = e.Script;
            }
        }
示例#3
0
        private object ExecuteWithScriptArgs(ScriptSource script, ScriptArgs args)
        {
            var engine = new ScriptEngine();

            foreach (var binding in args.Bindings)
            {
                engine.SetGlobalValue(binding.Key, binding.Value);
            }

            engine.SetGlobalValue("clr", new ClrBinding());
            engine.SetGlobalFunction("print", new Action <object>(value => Console.Out.WriteLine(value)));
            engine.SetGlobalFunction("render", new Action <object>(value => value.Render()));

            return(engine.Evaluate(script));
        }
示例#4
0
		public void FromVegas(Vegas Vegas, String ScriptFile, XmlDocument ScriptSettings, ScriptArgs Args)
		{
			if (ArgsHasSetup(Args)) // config mode
			{
				RunSetup(Vegas);
			}
			else
			{
				var renderset = new RenderSet();
				var form = new RegionRenderForm(Vegas, renderset);

				if (DialogResult.OK != form.ShowDialog())
					return;
				//renderset.Render(Vegas);
			}
		}
示例#5
0
        private object ExecuteWithScriptArgs(ScriptSource script, ScriptArgs args)
        {
            var engine = new ScriptEngine();

            engine.EnableExposedClrTypes = true;
            engine.CompatibilityMode     = CompatibilityMode.Latest;

            foreach (var binding in args.Bindings)
            {
                engine.SetGlobalValue(binding.Key, binding.Value);
            }

            engine.SetGlobalValue("clr", new ClrBinding());
            engine.SetGlobalFunction("print", new Action <object>(value => Console.Out.WriteLine(value)));
            engine.SetGlobalFunction("render", new Action <object>(value => CompatExtensions.RenderAny(value)));

            return(engine.Evaluate(script));
        }
示例#6
0
        public object EvaluateInternal(ScriptArgs scriptArgs)
        {
            try
            {
                var result = _scriptAction.Invoke(scriptArgs);

                if (Coercer != null)
                {
                    result = Coercer.Invoke(result);
                }

                return(result);
            }
            catch (Exception e)
            {
                string message = "Unexpected exception executing script '" + ScriptName + "' for statement '" + StatementName + "' : " + e.Message;
                Log.Error(message, e);
                throw new EPException(message, e);
            }
        }
示例#7
0
        private object ExecuteWithScriptArgs(ExpressionScriptProvided expressionScript, ScriptArgs args)
        {
            using (var engine = new Microsoft.ClearScript.Windows.JScriptEngine())
            {
                var primitives             = new ExpandoObject();
                var primitivesAsDictionary = (IDictionary <string, object>)primitives;

                foreach (var binding in args.Bindings)
                {
                    if (IsPrimitive(binding.Value))
                    {
                        primitivesAsDictionary.Add(binding.Key, binding.Value);
                    }
                    else
                    {
                        engine.AddHostObject(binding.Key, binding.Value);
                    }
                }

                ExposeTypesToEngine(engine);

                engine.AddHostObject("__variables", primitives);
                engine.AddHostObject("host", new XHostFunctions());
                engine.AddHostObject("debug", new DebugFunctions(this));

                var writer = new StringWriter();
                WritePolyfills(writer);
                writer.WriteLine("var __result = (function() {");

                foreach (var binding in primitivesAsDictionary)
                {
                    writer.WriteLine("var {0} = __variables.{0};", binding.Key);
                }

                writer.WriteLine(expressionScript.Expression);
                writer.WriteLine("})();");

                engine.Execute(writer.ToString());

                var result = engine.Script.__result;
                if ((result is VoidResult) || (result is Undefined))
                {
                    return(null);
                }

                return(result);
            }
        }
        public void FromVegas(Vegas vegas)
        {
            try
            {
                _vegas = vegas;

                ScriptArgs args = Script.Args;
                if (args.Count > 0)
                {
                    _closeonfinish = System.Convert.ToBoolean(args.ValueOf("closeonfinish") ?? "false");
                    _savewhendone  = System.Convert.ToBoolean(args.ValueOf("savewhendone") ?? "false");
                    _makeveg       = System.Convert.ToBoolean(args.ValueOf("makeveg") ?? "false");
                    _file          = args.ValueOf("file");
                }
                else
                {
                    var dialog = new OpenFileDialog {
                        Filter = ".srt files (*.srt)|*.srt", CheckPathExists = true, InitialDirectory = vegas.Project.FilePath
                    };
                    DialogResult result = dialog.ShowDialog();
                    vegas.UpdateUI();

                    if (result == DialogResult.OK)
                    {
                        _file = Path.GetFullPath(dialog.FileName);
                    }
                    else
                    {
                        return;
                    }
                }

                if (_makeveg)
                {
                    Media media = vegas.Project.MediaPool.AddMedia(Script.Args.ValueOf("media"));

                    foreach (MediaStream stream in media.Streams)
                    {
                        if (stream is VideoStream)
                        {
                            VideoTrack t = vegas.Project.AddVideoTrack();
                            VideoEvent e = t.AddVideoEvent(new Timecode(), media.Length);
                            e.ResampleMode = VideoResampleMode.Disable;
                            e.AddTake(stream);
                        }
                        else if (stream is AudioStream)
                        {
                            AudioTrack t = vegas.Project.AddAudioTrack();
                            AudioEvent e = t.AddAudioEvent(new Timecode(), media.Length);
                            e.AddTake(stream);
                        }
                    }

                    vegas.SaveProject(Script.Args.ValueOf("output"));
                }

                using (FileStream fs = new FileStream(_file, FileMode.Open, FileAccess.Read))
                    using (StreamReader stream = new StreamReader(fs))
                    {
                        while (!stream.EndOfStream)
                        {
                            string line = stream.ReadLine();

                            if (Regex.IsMatch(line, "^[0-9]+$"))
                            {
                                line = stream.ReadLine();

                                if (Regex.IsMatch(line, "^" + SRT_TIME_PATTERN + " --> " + SRT_TIME_PATTERN + "$"))
                                {
                                    MatchCollection stamps = Regex.Matches(line, SRT_TIME_PATTERN);

                                    TimeSpan s = TimeSpan.ParseExact(stamps[0].Value, SRT_TIME_FORMAT, null);
                                    TimeSpan e = TimeSpan.ParseExact(stamps[1].Value, SRT_TIME_FORMAT, null);
                                    string   t = string.Empty;

                                    while (!stream.EndOfStream)
                                    {
                                        line = stream.ReadLine();
                                        if (!string.IsNullOrEmpty(line))
                                        {
                                            if (!string.IsNullOrEmpty(t))
                                            {
                                                t += "[br]";
                                            }

                                            t += line;
                                        }
                                        else
                                        {
                                            break;
                                        }
                                    }

                                    Region r = Convert(s, e, t);
                                    if (r != null)
                                    {
                                        vegas.Project.Regions.Add(r);
                                    }
                                }
                            }
                        }
                    }

                if (_savewhendone)
                {
                    vegas.SaveProject();
                }
                if (_closeonfinish)
                {
                    vegas.Exit();
                }
            }
            catch (VegasException e)
            {
                Vegas.COM.ShowError(e.Title, e.Message);
            }
        }
示例#9
0
 private static bool ArgsHasSetup(ScriptArgs args)
 {
     return(args.Cast <ScriptArg>().Any(derp => string.Equals(derp.Value, RegionRenderStrings.ScriptSetupArg, StringComparison.InvariantCultureIgnoreCase)));
 }
示例#10
0
        public void FromVegas(Vegas Vegas, String ScriptFile, XmlDocument ScriptSettings, ScriptArgs Args)
        {
            if (ArgsHasSetup(Args))             // config mode
            {
                RunSetup(Vegas);
            }
            else
            {
                var renderset = new RenderSet();
                var form      = new RegionRenderForm(Vegas, renderset);

                if (DialogResult.OK != form.ShowDialog())
                {
                    return;
                }
                //renderset.Render(Vegas);
            }
        }
示例#11
0
 private async void PreviewActionCompleted(object sender, ScriptArgs e)
 {
     await ResponseFileDbSave(e.Script);
 }
示例#12
0
        private object ExecuteWithScriptArgs(ExpressionScriptProvided expressionScript, ScriptArgs args)
        {
#if X86 || X64
            using (var context = new JavascriptContext())
            {
                foreach (var binding in args.Bindings)
                {
                    context.SetParameter(binding.Key, binding.Value);
                }

                context.SetParameter("clr", new ClrBinding());
                context.SetParameter("print", new Action <object>(value => Console.Out.WriteLine(value)));
                context.SetParameter("render", new Action <object>(value => value.Render()));
                return(context.Run(expressionScript.Expression));
            }
#else
            throw new UnsupportedOperationException("noesis engine is not supported outside of x86 and x64 builds");
#endif
        }
示例#13
0
		private static bool ArgsHasSetup(ScriptArgs args)
		{
			return args.Cast<ScriptArg>().Any(derp => string.Equals(derp.Value, RegionRenderStrings.ScriptSetupArg, StringComparison.InvariantCultureIgnoreCase));
		}
示例#14
0
 private void ModifyClose(object sender, ScriptArgs e)
 {
     buttonReload.PerformClick();
 }
示例#15
0
        public override string ToString()
        {
            var scriptArgs = ScriptArgs == null ? "" : string.Join(", ", ScriptArgs.Select(a => a.Key + ": " + a.Value));

            return($"{ScriptPath}({scriptArgs})");
        }