Example #1
0
        private bool ExecuteTemplateOverride(TemplateOperations operation, ZeusTemplate template, ZeusSavedInput input, ShowGUIEventHandler guiEventHandler)
        {
            switch (operation)
            {
            case TemplateOperations.Execute:
                this._mdi.PerformMdiFuntion(this, "ExecutionQueueStart");
                ZeusProcessManager.ExecuteTemplate(template.FullFileName, _executionCallback);
                break;

            case TemplateOperations.ExecuteLoadedInput:
                this._mdi.PerformMdiFuntion(this, "ExecutionQueueStart");
                ZeusProcessManager.ExecuteSavedInput(input.FilePath, _executionCallback);
                break;

            case TemplateOperations.SaveInput:
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter           = "Zues Input Files (*.zinp)|*.zinp";
                saveFileDialog.FilterIndex      = 0;
                saveFileDialog.RestoreDirectory = true;
                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    this._mdi.PerformMdiFuntion(this, "ExecutionQueueStart");
                    ZeusProcessManager.RecordTemplateInput(template.FullFileName, saveFileDialog.FileName, _executionCallback);
                }
                break;
            }
            return(true);
        }
Example #2
0
        protected void buildChildren(SortedTreeNode rootNode, DirectoryInfo rootInfo)
        {
            ZeusTemplate template;

            foreach (DirectoryInfo dirInfo in rootInfo.GetDirectories())
            {
                FolderTreeNode node = new FolderTreeNode(dirInfo.Name);
                rootNode.AddSorted(node);

                this.buildChildren(node, dirInfo);
            }

            foreach (FileInfo fileInfo in rootInfo.GetFiles())
            {
                if ((fileInfo.Extension == ".jgen") ||
                    (fileInfo.Extension == ".vbgen") ||
                    (fileInfo.Extension == ".csgen") ||
                    (fileInfo.Extension == ".zeus"))
                {
                    string filename = fileInfo.FullName;

                    try
                    {
                        template = new ZeusTemplate(filename);
                    }
                    catch
                    {
                        continue;
                    }

                    TemplateTreeNode node = new TemplateTreeNode(template, true);
                    rootNode.AddSorted(node);
                }
            }
        }
Example #3
0
 private void toolBarToolbar_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
 {
     if ((e.Button == this.toolBarButtonRefresh) || (e.Button == this.toolBarButtonMode))
     {
         if (this.toolBarButtonMode.Pushed)
         {
             this.LoadTemplatesByFile();
         }
         else
         {
             this.LoadTemplates();
         }
     }
     else if (e.Button == this.toolBarButtonOpen)
     {
         if (this.treeViewTemplates.SelectedNode is TemplateTreeNode)
         {
             OnTemplateOpen(this.treeViewTemplates.SelectedNode.Tag.ToString());
         }
     }
     else if (e.Button == this.toolBarButtonExecute)
     {
         if (this.treeViewTemplates.SelectedNode is TemplateTreeNode)
         {
             ZeusTemplate template = new ZeusTemplate(this.treeViewTemplates.SelectedNode.Tag.ToString());
             ExecuteTemplate(template);
         }
     }
 }
Example #4
0
        protected void buildChildren(DirectoryInfo rootInfo, ArrayList templates)
        {
            ZeusTemplate template;

            foreach (DirectoryInfo dirInfo in rootInfo.GetDirectories())
            {
                this.buildChildren(dirInfo, templates);
            }

            foreach (FileInfo fileInfo in rootInfo.GetFiles())
            {
                if ((fileInfo.Extension == ".jgen") ||
                    (fileInfo.Extension == ".vbgen") ||
                    (fileInfo.Extension == ".csgen") ||
                    (fileInfo.Extension == ".zeus"))
                {
                    string filename = fileInfo.FullName;

                    if (!templates.Contains(filename))
                    {
                        try
                        {
                            template = new ZeusTemplate(filename);
                        }
                        catch
                        {
                            continue;
                        }

                        templates.Add(template);
                    }
                }
            }
        }
 public void SaveInput()
 {
     if (this.treeViewTemplates.SelectedNode is TemplateTreeNode)
     {
         ZeusTemplate template = new ZeusTemplate(this.treeViewTemplates.SelectedNode.Tag.ToString());
         SaveInput(template);
     }
 }
 public void Execute()
 {
     if (this.treeViewTemplates.SelectedNode is TemplateTreeNode)
     {
         ZeusTemplate template = new ZeusTemplate(this.treeViewTemplates.SelectedNode.Tag.ToString());
         ExecuteTemplate(template);
     }
 }
        protected ZeusTemplate LoadIntoTemplate(Stream stream, string filepath, ZeusTemplate template)
        {
            StreamReader reader = new StreamReader(stream, Encoding.UTF8);

            LoadIntoTemplate(reader, filepath, template);
            reader.Close();
            return(template);
        }
Example #8
0
        public void ExecuteTemplate(ZeusTemplate template)
        {
            Cursor.Current = Cursors.WaitCursor;

            DefaultSettings settings = DefaultSettings.Instance;

            IZeusContext    context       = new ZeusContext();
            IZeusGuiControl guiController = context.Gui;
            IZeusOutput     zout          = context.Output;

            settings.PopulateZeusContext(context);

            bool exceptionOccurred = false;
            bool result            = false;

            try
            {
                template.GuiSegment.ZeusScriptingEngine.ExecutionHelper.Timeout = settings.ScriptTimeout;
                template.GuiSegment.ZeusScriptingEngine.ExecutionHelper.SetShowGuiHandler(new ShowGUIEventHandler(DynamicGUI_Display));
                result = template.GuiSegment.Execute(context);
                template.GuiSegment.ZeusScriptingEngine.ExecutionHelper.Cleanup();

                if (result)
                {
                    template.BodySegment.ZeusScriptingEngine.ExecutionHelper.Timeout = settings.ScriptTimeout;
                    result = template.BodySegment.Execute(context);
                    template.BodySegment.ZeusScriptingEngine.ExecutionHelper.Cleanup();
                }
            }
            catch (Exception ex)
            {
                mdi.ErrorsOccurred(ex);
                //ZeusDisplayError formError = new ZeusDisplayError(ex);
                //formError.SetControlsFromException();
                //formError.ShowDialog(this);

                exceptionOccurred = true;
            }

            Cursor.Current = Cursors.Default;

            if (!exceptionOccurred && result)
            {
                if (settings.EnableClipboard)
                {
                    try
                    {
                        Clipboard.SetDataObject(zout.text, true);
                    }
                    catch
                    {
                        // HACK: For some reason, Clipboard.SetDataObject throws an error on some systems. I'm cathhing it and doing nothing for now.
                    }
                }

                MessageBox.Show("Successfully rendered Template: " + template.Title);
            }
        }
Example #9
0
 public TemplateTreeNode(ZeusTemplate template)
 {
     //this.NodeFont = new System.Drawing.Font(FontFamily.GenericSansSerif, 8, FontStyle.Bold, GraphicsUnit.Point);
     this.ForeColor  = Color.Blue;
     this.Text       = template.Title;
     this.Tag        = template.FilePath + template.FileName;
     this.Comments   = template.Comments;
     this.ImageIndex = this.SelectedImageIndex = 6;
 }
        public void LoadIntoTemplate(string filePath, ZeusTemplate template)
        {
            template.BodySegment.Engine   = template.GuiSegment.Engine = ENGINE_MICROSOFT_SCRIPT;
            template.BodySegment.Language = template.GuiSegment.Language = LANGUAGE_JSCRIPT;

            StreamReader reader = new StreamReader(filePath, Encoding.UTF8);

            LoadIntoTemplate(reader, filePath, template);
            reader.Close();
        }
        public void SaveInput(ZeusTemplate template)
        {
            bool overridden = false;

            if (ExecuteTemplateOverride != null)
            {
                overridden = ExecuteTemplateOverride(TemplateOperations.SaveInput, template, null, _guiHandler);
            }

            if (!overridden)
            {
                try
                {
                    DefaultSettings settings = DefaultSettings.Instance;

                    ZeusSimpleLog log     = new ZeusSimpleLog();
                    ZeusContext   context = new ZeusContext();
                    context.Log = log;

                    ZeusSavedInput collectedInput = new ZeusSavedInput();
                    collectedInput.InputData.TemplateUniqueID = template.UniqueID;
                    collectedInput.InputData.TemplatePath     = template.FilePath + template.FileName;

                    settings.PopulateZeusContext(context);
                    template.Collect(context, settings.ScriptTimeout, collectedInput.InputData.InputItems);

                    if (log.HasExceptions)
                    {
                        throw log.Exceptions[0];
                    }
                    else
                    {
                        SaveFileDialog saveFileDialog = new SaveFileDialog();
                        saveFileDialog.Filter           = "Zues Input Files (*.zinp)|*.zinp";
                        saveFileDialog.FilterIndex      = 0;
                        saveFileDialog.RestoreDirectory = true;
                        if (saveFileDialog.ShowDialog() == DialogResult.OK)
                        {
                            Cursor.Current = Cursors.WaitCursor;

                            collectedInput.FilePath = saveFileDialog.FileName;
                            collectedInput.Save();
                        }
                    }

                    MessageBox.Show(this, "Input collected and saved to file: \r\n" + collectedInput.FilePath);
                }
                catch (Exception ex)
                {
                    OnErrorsOccurred(ex);
                }

                Cursor.Current = Cursors.Default;
            }
        }
Example #12
0
 public void TestMethod1()
 {
     //
     // TODO: Add test logic here
     //
     //Assert.AreEqual(1, 3);
     string       dir        = TestContext.TestDir;
     string       directory  = @"E:\source code\codegenerate\mygeneration\MyGeneration.Test\Test.zeus";
     ZeusTemplate _template  = new ZeusTemplate(directory);
     string       sourceCode = _template.BodySegment.Code;
 }
Example #13
0
        private void SaveInput()
        {
            try
            {
                if (_collectInChildProcess)
                {
                    this.buttonCollectInput.Enabled = false;
                    this.Cursor = Cursors.WaitCursor;
                    ZeusProcessManager.RecordProjectItem(this._module.RootProject.FilePath, _module.ProjectPath + "/" + SavedObject.SavedObjectName, this.SelectedTemplate.Tag.ToString(), _executionCallback);
                }
                else
                {
                    //RecordProjectItem
                    ZeusTemplate    template = new ZeusTemplate(this.SelectedTemplate.Tag.ToString());
                    DefaultSettings settings = DefaultSettings.Instance;

                    ZeusSimpleLog log     = new ZeusSimpleLog();
                    ZeusContext   context = new ZeusContext();
                    context.Log = log;

                    SavedObject.TemplateUniqueID = template.UniqueID;
                    SavedObject.TemplatePath     = template.FilePath + template.FileName;

                    settings.PopulateZeusContext(context);
                    if (_module != null)
                    {
                        _module.PopulateZeusContext(context);
                        _module.OverrideSavedData(SavedObject.InputItems);
                    }

                    if (template.Collect(context, settings.ScriptTimeout, SavedObject.InputItems))
                    {
                        this._lastRecordedSelectedNode = this.SelectedTemplate;
                    }

                    if (log.HasExceptions)
                    {
                        throw log.Exceptions[0];
                    }
                }
            }
            catch (Exception ex)
            {
                mdi.ErrorsOccurred(ex);
                //ZeusDisplayError formError = new ZeusDisplayError(ex);
                //formError.SetControlsFromException();
                //formError.ShowDialog(this);
            }

            Cursor.Current = Cursors.Default;
        }
		private ZeusTemplate template;

		public TemplateEditorForm(ZeusTemplate template)
		{
			//
			// Required for Windows Form Designer support
			//
			InitializeComponent();

			this.template = template;

			scintillaTemplateCode = new ZeusScintillaControl(ScriptLanguage.JScript);
			scintillaTemplateCode.AddShortcutsFromForm(this);
			scintillaGUICode = new ZeusScintillaControl(ScriptLanguage.JScript);
Example #15
0
        public void LoadTemplates(string selectedid)
        {
            DefaultSettings settings  = DefaultSettings.Instance;
            ArrayList       filenames = new ArrayList();

            filenames.Add(settings.DefaultTemplateDirectory);
            ArrayList        templatePaths = FileTools.GetFilenamesRecursive(filenames, this._extensions);
            ZeusTemplate     template;
            TemplateListItem item;

            this.listBoxTemplates.Items.Clear();

            foreach (string path in templatePaths)
            {
                try
                {
                    template = new ZeusTemplate(FileTools.ResolvePath(path));
                    string ns    = template.NamespacePathString.Trim();
                    string title = template.Title.Trim();
                    title = (title.Length > 0) ? title : "<unnamed>";

                    if (ns.Length > 0)
                    {
                        ns = template.NamespacePathString + "." + title;
                    }
                    else
                    {
                        ns = title;
                    }

                    item = new TemplateListItem(template.UniqueID, path, ns);

                    this.listBoxTemplates.Items.Add(item);
                    if (item.ID == selectedid)
                    {
                        this.listBoxTemplates.SelectedItem = item;
                    }
                }
                catch
                {
                    continue;
                }
            }

            if ((this.listBoxTemplates.SelectedItem == null) &&
                (this.listBoxTemplates.Items.Count > 0))
            {
                this.listBoxTemplates.SelectedIndex = 0;
            }
        }
Example #16
0
        public void ExecuteLoadedInput()
        {
            try
            {
                DefaultSettings settings = DefaultSettings.Instance;
                ZeusSimpleLog   log      = new ZeusSimpleLog();

                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.Filter           = "Zues Input Files (*.zinp)|*.zinp";
                openFileDialog.FilterIndex      = 0;
                openFileDialog.RestoreDirectory = true;
                openFileDialog.Multiselect      = true;
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    Cursor.Current = Cursors.WaitCursor;

                    foreach (string filename in openFileDialog.FileNames)
                    {
                        ZeusSavedInput savedInput = new ZeusSavedInput(filename);
                        if (savedInput.Load())
                        {
                            ZeusContext context = new ZeusContext();
                            context.Input.AddItems(savedInput.InputData.InputItems);
                            context.Log = log;

                            ZeusTemplate template = new ZeusTemplate(savedInput.InputData.TemplatePath);
                            template.Execute(context, settings.ScriptTimeout, true);

                            if (log.HasExceptions)
                            {
                                throw log.Exceptions[0];
                            }
                        }
                    }

                    Cursor.Current = Cursors.Default;
                    MessageBox.Show(this, "Selected files have been executed.");
                }
            }
            catch (Exception ex)
            {
                mdi.ErrorsOccurred(ex);
                //ZeusDisplayError formError = new ZeusDisplayError(ex);
                //formError.SetControlsFromException();
                //formError.ShowDialog(this);
            }

            Cursor.Current = Cursors.Default;
        }
Example #17
0
        public void SaveInput(ZeusTemplate template)
        {
            try
            {
                DefaultSettings settings = DefaultSettings.Instance;

                ZeusSimpleLog log     = new ZeusSimpleLog();
                ZeusContext   context = new ZeusContext();
                context.Log = log;

                ZeusSavedInput collectedInput = new ZeusSavedInput();
                collectedInput.InputData.TemplateUniqueID = template.UniqueID;
                collectedInput.InputData.TemplatePath     = template.FilePath + template.FileName;

                settings.PopulateZeusContext(context);
                template.Collect(context, settings.ScriptTimeout, collectedInput.InputData.InputItems);

                if (log.HasExceptions)
                {
                    throw log.Exceptions[0];
                }
                else
                {
                    SaveFileDialog saveFileDialog = new SaveFileDialog();
                    saveFileDialog.Filter           = "Zues Input Files (*.zinp)|*.zinp";
                    saveFileDialog.FilterIndex      = 0;
                    saveFileDialog.RestoreDirectory = true;
                    if (saveFileDialog.ShowDialog() == DialogResult.OK)
                    {
                        Cursor.Current = Cursors.WaitCursor;

                        collectedInput.FilePath = saveFileDialog.FileName;
                        collectedInput.Save();
                    }
                }

                MessageBox.Show(this, "Input collected and saved to file: \r\n" + collectedInput.FilePath);
            }
            catch (Exception ex)
            {
                mdi.ErrorsOccurred(ex);
                //ZeusDisplayError formError = new ZeusDisplayError(ex);
                //formError.SetControlsFromException();
                //formError.ShowDialog(this);
            }

            Cursor.Current = Cursors.Default;
        }
        protected void AssignGroup(ZeusTemplate template, string key, StringBuilder builder)
        {
            switch (key)
            {
            case PPD_BODY_END:
                template.BodySegment.CodeUnparsed = builder.ToString().TrimEnd();
                break;

            case PPD_COMMENTS_END:
                template.Comments = builder.ToString().TrimEnd();
                break;

            case PPD_INTERFACE_END:
                template.GuiSegment.CodeUnparsed = builder.ToString().TrimEnd();
                break;
            }
        }
Example #19
0
        private void SaveInput()
        {
            try
            {
                /*if (_lastRecordedSelectedIndex != this.listBoxTemplates.SelectedIndex)
                 * {
                 *      this.SavedObject.InputItems.Clear();
                 * }*/

                ZeusTemplate    template = new ZeusTemplate(this.SelectedTemplate.Path);
                DefaultSettings settings = DefaultSettings.Instance;

                ZeusSimpleLog log     = new ZeusSimpleLog();
                ZeusContext   context = new ZeusContext();
                context.Log = log;

                SavedObject.TemplateUniqueID = template.UniqueID;
                SavedObject.TemplatePath     = template.FilePath + template.FileName;

                settings.PopulateZeusContext(context);
                if (_module != null)
                {
                    _module.PopulateZeusContext(context);
                }

                if (template.Collect(context, settings.ScriptTimeout, SavedObject.InputItems))
                {
                    _lastRecordedSelectedIndex = this.listBoxTemplates.SelectedIndex;
                }

                if (log.HasExceptions)
                {
                    throw log.Exceptions[0];
                }
            }
            catch (Exception ex)
            {
                mdi.ErrorsOccurred(ex);
                //ZeusDisplayError formError = new ZeusDisplayError(ex);
//formError.SetControlsFromException();
//formError.ShowDialog(this);
            }

            Cursor.Current = Cursors.Default;
        }
Example #20
0
        public TemplateEditorForm(ZeusTemplate template)
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            this.template = template;

            scintillaTemplateCode = new ZeusScintillaControl(ScriptLanguage.JScript);
            scintillaTemplateCode.AddShortcutsFromForm(this);

            scintillaGUICode = new ZeusScintillaControl(ScriptLanguage.JScript);
            scintillaGUICode.AddShortcutsFromForm(this);

            this.tabCode.Controls.Add(this.scintillaTemplateCode);
            this.tabInterface.Controls.Add(this.scintillaGUICode);
        }
Example #21
0
        private void SaveInput()
        {
            try
            {
                ZeusTemplate    template = new ZeusTemplate(this.SelectedTemplate.Tag.ToString());
                DefaultSettings settings = DefaultSettings.Instance;

                ZeusSimpleLog log     = new ZeusSimpleLog();
                ZeusContext   context = new ZeusContext();
                context.Log = log;

                SavedObject.TemplateUniqueID = template.UniqueID;
                SavedObject.TemplatePath     = template.FilePath + template.FileName;

                settings.PopulateZeusContext(context);
                if (_module != null)
                {
                    _module.PopulateZeusContext(context);
                }

                if (template.Collect(context, settings.ScriptTimeout, SavedObject.InputItems))
                {
                    this._lastRecordedSelectedNode = this.SelectedTemplate;
                }

                if (log.HasExceptions)
                {
                    throw log.Exceptions[0];
                }
            }
            catch (Exception ex)
            {
                ZeusDisplayError formError = new ZeusDisplayError(ex);
                formError.SetControlsFromException();
                formError.ShowDialog(this);
            }

            Cursor.Current = Cursors.Default;
        }
        public void ExecuteLoadedInput()
        {
            bool overridden = false;

            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter           = "Zues Input Files (*.zinp)|*.zinp";
            openFileDialog.FilterIndex      = 0;
            openFileDialog.RestoreDirectory = true;
            openFileDialog.Multiselect      = true;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                ZeusSavedInput savedInput = null;
                ZeusTemplate   template   = null;
                if (ExecuteTemplateOverride != null)
                {
                    try
                    {
                        foreach (string filename in openFileDialog.FileNames)
                        {
                            savedInput = new ZeusSavedInput(filename);
                            if (savedInput.Load())
                            {
                                template = new ZeusTemplate(savedInput.InputData.TemplatePath);

                                overridden = ExecuteTemplateOverride(TemplateOperations.ExecuteLoadedInput, template, savedInput, _guiHandler);
                                if (!overridden)
                                {
                                    break;
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        OnErrorsOccurred(ex);
                    }
                }


                if (!overridden)
                {
                    try
                    {
                        ZeusSimpleLog   log      = new ZeusSimpleLog();
                        DefaultSettings settings = DefaultSettings.Instance;

                        Cursor.Current = Cursors.WaitCursor;

                        foreach (string filename in openFileDialog.FileNames)
                        {
                            savedInput = new ZeusSavedInput(filename);
                            if (savedInput.Load())
                            {
                                ZeusContext context = new ZeusContext();
                                context.Input.AddItems(savedInput.InputData.InputItems);
                                context.Log = log;

                                template = new ZeusTemplate(savedInput.InputData.TemplatePath);
                                template.Execute(context, settings.ScriptTimeout, true);

                                foreach (string filePath in context.Output.SavedFiles)
                                {
                                    this.OnGeneratedFileSaved(filePath);
                                }

                                if (log.HasExceptions)
                                {
                                    throw log.Exceptions[0];
                                }
                            }
                        }

                        Cursor.Current = Cursors.Default;
                        MessageBox.Show(this, "Selected files have been executed.");
                    }
                    catch (Exception ex)
                    {
                        OnErrorsOccurred(ex);
                    }

                    Cursor.Current = Cursors.Default;
                }
            }
        }
        protected void AssignProperty(ZeusTemplate template, string key, string val)
        {
            template.AddDirective(key, val);

            switch (key.ToUpper())
            {
            case PPD_LANGUAGE:
                template.BodySegment.Language = template.GuiSegment.Language = val;
                break;

            case PPD_MODE:
                string tmp = val.ToLower();
                if (tmp == MODE_TAGGED_TEMPLATE)
                {
                    template.Type             = ZeusConstants.Types.TEMPLATE;
                    template.BodySegment.Mode = ZeusConstants.Modes.MARKUP;
                }
                else if (tmp == MODE_PURE_SCRIPTING)
                {
                    template.Type             = ZeusConstants.Types.TEMPLATE;
                    template.BodySegment.Mode = ZeusConstants.Modes.PURE;
                }
                else if (tmp == MODE_TEMPLATE_GROUP)
                {
                    template.Type             = ZeusConstants.Types.GROUP;
                    template.BodySegment.Mode = ZeusConstants.Modes.MARKUP;
                }
                else
                {
                    //TODO: *** Add custom error handling here!
                    throw new ZeusParseException(template, ZeusParseError.InvalidTemplateMode, "InvalidTemplateMode");
                }
                break;

            case PPD_ENGINE:
                if (val == "MicrosoftScript")
                {
                    val = ZeusConstants.Engines.MICROSOFT_SCRIPT;
                }
                template.BodySegment.Engine = val;
                template.GuiSegment.Engine  = val;
                break;

            case PPD_OUTPUT_LANGUAGE:
                template.OutputLanguage = val;
                break;

            case PPD_UNIQUEID:
                template.UniqueID = val;
                break;

            case PPD_TITLE:
                template.Title = val;
                break;

            case PPD_GROUP:
                template.NamespacePathString = val;
                break;

            case PPD_START_TAG:
                template.TagStart = val;
                break;

            case PPD_END_TAG:
                template.TagEnd = val;
                break;

            case PPD_TEMPLATE_INCLUDE:
                template.AddIncludedTemplatePath(val);
                break;

                /*case PPD_BODY_INCLUDE:
                 *      template.AddBodyIncludePath(val);
                 *      break;
                 * case PPD_INTERFACE_INCLUDE:
                 *      template.AddInterfaceIncludePath(val);
                 *      break;*/
            }
        }
        public void ExecuteTemplate(ZeusTemplate template)
        {
            bool overridden = false;

            if (ExecuteTemplateOverride != null)
            {
                overridden = ExecuteTemplateOverride(TemplateOperations.Execute, template, null, _guiHandler);
            }

            if (!overridden)
            {
                Cursor.Current = Cursors.WaitCursor;

                DefaultSettings settings = DefaultSettings.Instance;

                IZeusContext    context       = new ZeusContext();
                IZeusGuiControl guiController = context.Gui;
                IZeusOutput     zout          = context.Output;

                settings.PopulateZeusContext(context);

                bool exceptionOccurred = false;
                bool result            = false;

                try
                {
                    template.GuiSegment.ZeusScriptingEngine.ExecutionHelper.Timeout = settings.ScriptTimeout;
                    template.GuiSegment.ZeusScriptingEngine.ExecutionHelper.SetShowGuiHandler(_guiHandler);
                    result = template.GuiSegment.Execute(context);
                    template.GuiSegment.ZeusScriptingEngine.ExecutionHelper.Cleanup();

                    if (result)
                    {
                        template.BodySegment.ZeusScriptingEngine.ExecutionHelper.Timeout = settings.ScriptTimeout;
                        result = template.BodySegment.Execute(context);

                        foreach (string filePath in context.Output.SavedFiles)
                        {
                            this.OnGeneratedFileSaved(filePath);
                        }

                        template.BodySegment.ZeusScriptingEngine.ExecutionHelper.Cleanup();
                    }
                }
                catch (Exception ex)
                {
                    OnErrorsOccurred(ex);

                    exceptionOccurred = true;
                }

                Cursor.Current = Cursors.Default;

                if (!exceptionOccurred && result)
                {
                    if (settings.EnableClipboard)
                    {
                        try
                        {
                            Clipboard.SetDataObject(zout.text, true);
                        }
                        catch
                        {
                            // HACK: For some reason, Clipboard.SetDataObject throws an error on some systems. I'm cathhing it and doing nothing for now.
                        }
                    }

                    MessageBox.Show("Successfully rendered Template: " + template.Title);
                }
            }
        }
        protected void LoadIntoTemplate(StreamReader reader, string filepath, ZeusTemplate template)
        {
            char[] whitespace = new char[4] {
                '\n', '\r', '\t', ' '
            };
            string        key, val, line;
            int           tagLength = TAG_START_PPD.Length;
            int           x, y;
            bool          inGroupMode   = false;
            string        startGroupTag = string.Empty;
            StringBuilder builder       = null;

            if (filepath != null)
            {
                int lastIndex = filepath.LastIndexOf('\\');
                template.FileName = filepath.Substring(lastIndex + 1);
                template.FilePath = filepath.Substring(0, lastIndex + 1);
            }

            line = reader.ReadLine();
            while (line != null)
            {
                if (line.StartsWith(TAG_START_PPD))
                {
                    x = line.IndexOfAny(whitespace);
                    if (x < 0)
                    {
                        x = line.Length;
                    }
                    y = x - tagLength;

                    key = line.Substring(tagLength, y);

                    if (!inGroupMode)
                    {
                        if (IsGroupStartTag(key))
                        {
                            inGroupMode   = true;
                            startGroupTag = key;
                            builder       = new StringBuilder();
                        }
                        else
                        {
                            val = line.Substring(x).Trim();
                            AssignProperty(template, key, val);
                        }
                    }
                    else
                    {
                        if (IsGroupEndTag(key))
                        {
                            AssignGroup(template, key, builder);

                            inGroupMode   = false;
                            startGroupTag = string.Empty;
                        }
                        else
                        {
                            //TODO: *** Could put a warning here. Possibly have a warnings collection. Maybe a CompileInfo class?
                            builder.Append(line + "\r\n");
                        }
                    }
                }
                else if (inGroupMode)
                {
                    builder.Append(line + "\r\n");
                }

                line = reader.ReadLine();
            }
        }
Example #26
0
        private string IncludeFileCompile(string filename)
        {
            IZeusTemplate compilerTemplate = new ZeusTemplate(filename);

            return(compilerTemplate.BodySegment.Code);
        }
        private bool templateBrowserControl1_ExecuteOverride(TemplateOperations operation, ZeusTemplate template, ZeusSavedInput input, ShowGUIEventHandler guiEventHandler)
        {
            switch (operation)
            {
            case TemplateOperations.Execute:
                ZeusProcessManager.ExecuteTemplate(template.FullFileName, processCallback);
                break;

            case TemplateOperations.ExecuteLoadedInput:
                ZeusProcessManager.ExecuteSavedInput(input.FilePath, processCallback);
                break;

            case TemplateOperations.SaveInput:
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter           = "Zues Input Files (*.zinp)|*.zinp";
                saveFileDialog.FilterIndex      = 0;
                saveFileDialog.RestoreDirectory = true;
                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    ZeusProcessManager.RecordTemplateInput(template.FullFileName, saveFileDialog.FileName, processCallback);
                }
                break;
            }
            return(true);
        }
        static public void WebUpdate(string id, string path, bool isGrouped)
        {
            CultureInfo culture = new CultureInfo("en-US");

            string url = ZeusConfig.Current.WebUpdateUrl + "?action=update&id=" + id;

            XmlDocument xmldoc = Zeus.HttpTools.GetXmlFromUrl(url, DefaultSettings.Instance.WebProxy);
            XmlNodeList nodes  = xmldoc.GetElementsByTagName("template");

            if (nodes.Count > 0)
            {
                XmlNode  node       = nodes[0];
                DateTime updateDate = DateTime.MinValue;
                try
                {
                    updateDate = Convert.ToDateTime(node.Attributes["lastupdated"].Value, culture);
                }
                catch
                {
                    try
                    {
                        updateDate = Convert.ToDateTime(node.Attributes["lastupdated"].Value);
                    }
                    catch
                    {
                        updateDate = DateTime.MinValue;
                    }
                }

                long   length = Convert.ToInt64(node.Attributes["length"].Value) + 3;
                byte[] bytes  = Convert.FromBase64String(node.InnerText);

                FileInfo info                = new FileInfo(path);
                long     localFileSize       = 0;
                DateTime localFileUpdateDate = DateTime.MinValue;
                if (info.Exists)
                {
                    localFileSize       = info.Length;
                    localFileUpdateDate = info.LastWriteTime;
                }

                DialogResult result = DialogResult.Yes;
                if (!isGrouped && info.Exists)
                {
                    string msg = "The remote template was last updated on {0}\r\nand the local template was last updated on {1}.\r\nAre you sure you want to update?";

                    result = MessageBox.Show(String.Format(msg, updateDate, localFileUpdateDate),
                                             "Update Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                }

                if (result == DialogResult.Yes)
                {
                    MemoryStream memorystream = new MemoryStream(bytes);
                    ZeusTemplate template     = new ZeusTemplate(new StreamReader(memorystream), path);
                    template.Save();

                    // Save related files with the template
                    FileInfo finfo = new FileInfo(path);
                    GetRelatedFiles(id, template.FilePath);
                }
            }
            else
            {
                nodes = xmldoc.GetElementsByTagName("error");

                if (nodes.Count > 0)
                {
                    XmlNode node      = nodes[0];
                    string  errorText = node.InnerText;

                    if (!isGrouped)
                    {
                        MessageBox.Show(errorText);
                    }
                }
            }
        }
Example #29
0
        public void ExecuteTemplate(ZeusTemplate template)
        {
            this.Cursor = Cursors.WaitCursor;

            DefaultSettings settings = new DefaultSettings();

            ZeusInput           zin     = new ZeusInput();
            ZeusOutput          zout    = new ZeusOutput();
            Hashtable           objects = new Hashtable();
            ZeusGuiContext      guicontext;
            ZeusTemplateContext bodycontext = null;

            dbRoot myMeta = new dbRoot();

            // Set the global variables for the default template/output paths
            zin["defaultTemplatePath"] = settings.DefaultTemplateDirectory;
            zin["defaultOutputPath"]   = settings.DefaultOutputDirectory;

            string driver, connectionString;

            //if there is a connection string set, it in the input section here.
            if (settings.DbDriver != string.Empty)
            {
                driver           = settings.DbDriver;
                connectionString = settings.ConnectionString;

                zin["dbDriver"]           = driver;
                zin["dbConnectionString"] = connectionString;

                try
                {
                    // Try to connect to the DB with MyMeta (using default connection info)
                    myMeta.Connect(settings.DbDriver, settings.ConnectionString);

                    // Set DB global variables and also input variables

                    if (settings.DbTarget != string.Empty)
                    {
                        myMeta.DbTarget = settings.DbTarget;
                    }

                    if (settings.DbTargetMappingFile != string.Empty)
                    {
                        myMeta.DbTargetMappingFileName = settings.DbTargetMappingFile;
                    }

                    if (settings.LanguageMappingFile != string.Empty)
                    {
                        myMeta.LanguageMappingFileName = settings.LanguageMappingFile;
                    }

                    if (settings.DbTarget != string.Empty)
                    {
                        myMeta.DbTarget = settings.DbTarget;
                    }

                    if (settings.Language != string.Empty)
                    {
                        myMeta.Language = settings.Language;
                    }

                    if (settings.UserMetaDataFileName != string.Empty)
                    {
                        myMeta.UserMetaDataFileName = settings.UserMetaDataFileName;
                    }
                }
                catch
                {
                    // Give them an empty MyMeta
                    myMeta = new dbRoot();
                }
            }

            bool exceptionOccurred = false;

            bool result = false;

            try
            {
                // Add any objects here that need to be embedded in the script.
                objects.Add("MyMeta", myMeta);

                guicontext = new ZeusGuiContext(zin, new GuiController(), objects);

                template.GuiSegment.ZeusScriptingEngine.Executioner.ScriptTimeout = settings.ScriptTimeout;
                template.GuiSegment.ZeusScriptingEngine.Executioner.SetShowGuiHandler(new ShowGUIEventHandler(DynamicGUI_Display));
                result = template.GuiSegment.Execute(guicontext);

                if (result)
                {
                    bodycontext = new ZeusTemplateContext(guicontext);
                    result      = template.BodySegment.Execute(bodycontext);
                }
            }
            catch (Exception ex)
            {
                ZeusDisplayError formError = new ZeusDisplayError(ex);
                formError.SetControlsFromException();
                formError.ShowDialog(this);

                exceptionOccurred = true;
            }

            if (!exceptionOccurred && result)
            {
                MessageBox.Show("Successfully rendered template: " + template.Title);
            }

            this.Cursor = Cursors.Default;
        }
using System;
 private string IncludeFileCompile(string filename)
 {
     IZeusTemplate compilerTemplate = new ZeusTemplate(filename);
     return compilerTemplate.BodySegment.Code;
 }