Пример #1
0
 public void Run()
 {
     MacroManager.Listener = this;
     try
     {
         PythonEngine engine = new PythonEngine();
         ScriptingEnv.InitializeEngine(engine);
         engine.Globals["root"]                  = m_window;
         engine.Globals["procedure"]             = m_mywindowproc;
         engine.Globals["GetLastOpenedWindow"]   = (Func <Form>) delegate() { return(MacroManager.LastOpenedWindow); };
         engine.Globals["DoEvents"]              = (Action)DoEvents;
         engine.Globals["SetWindowProc"]         = (Action <object>)SetWindowProc;
         engine.Globals["FindNodeByPath"]        = (Func <object, object, object>)FindNodeByPath;
         engine.Globals["RunPopupMenuCommand"]   = (Action <object, object>)DoRunPopupMenuCommand;
         engine.Globals["GetPropertyDescriptor"] = (Func <object, object, object>)GetPropertyDescriptor;
         engine.Globals["SetProperty"]           = (Action <object, object, object>)SetProperty;
         engine.Globals["GetProperty"]           = (Func <object, object, object>)GetProperty;
         foreach (string var in m_vars.Keys)
         {
             engine.Globals[var] = m_vars[var];
         }
         engine.ExecuteFile(m_pyfile);
     }
     finally
     {
         MacroManager.Listener = null;
     }
 }
Пример #2
0
 private NameTemplateEngine()
 {
     m_engine = new PythonEngine();
     ScriptingEnv.InitializeEngine(m_engine);
     m_engine.Globals["guid"]    = (Func <string>)GuidFunc;
     m_engine.Globals["date"]    = (Func <string, string>)DateFunc;
     m_engine.Globals["utcdate"] = (Func <string, string>)UtcDateFunc;
 }
Пример #3
0
 private void WantEngine()
 {
     if (m_engine != null)
     {
         return;
     }
     m_engine = new PythonEngine();
     ScriptingEnv.InitializeEngine(m_engine);
 }
Пример #4
0
        public static RunTextWriterDelegate CompileScript(string code, TextGeneratorLanguage language)
        {
            switch (language)
            {
            case TextGeneratorLanguage.Python:
                return(delegate(Stream fw, IDictionary <string, object> extnames, IDictionary <string, object> outnames)
                {
                    PythonEngine engine = new PythonEngine();
                    ScriptingEnv.InitializeEngine(engine);
                    engine.SetStandardOutput(fw);
                    CompiledCode compiled = engine.Compile(code);
                    //if (node != null) node.GetScriptingNS(engine.DefaultModule.Globals);
                    if (extnames != null)
                    {
                        foreach (string key in extnames.Keys)
                        {
                            engine.DefaultModule.Globals[key] = extnames[key];
                        }
                    }
                    compiled.Execute();
                    if (outnames != null)
                    {
                        foreach (string key in engine.DefaultModule.Globals.Keys)
                        {
                            outnames[key] = engine.DefaultModule.Globals[key];
                        }
                    }
                });

            case TextGeneratorLanguage.Template:
                return(delegate(Stream fw, IDictionary <string, object> extnames, IDictionary <string, object> outnames)
                {
                    PythonEngine engine = new PythonEngine();
                    engine.SetStandardOutput(fw);
                    ScriptingEnv.InitializeEngine(engine);
                    //if (node != null) node.GetScriptingNS(engine.DefaultModule.Globals);
                    if (extnames != null)
                    {
                        foreach (string key in extnames.Keys)
                        {
                            engine.DefaultModule.Globals[key] = extnames[key];
                        }
                    }
                    Template tpl = new Template(code, engine);
                    StreamWriter sw = new StreamWriter(fw);
                    TemplateEnviroment env = new TemplateEnviroment(sw);
                    tpl.Run(env);
                });
            }
            throw new Exception("DAE-00258 internal error");
        }