private void buttonAddProjectScreensFunction_Click(object sender, EventArgs e)
        {
            FunctionInfo function = new FunctionInfo(TemplateHelper.CustomNewProjectScreensFunctionName, null, "", false,
                                                     SyntaxEditorHelper.ScriptLanguageTypes.CSharp,
                                                     "Creates a list of custom screens that should be shown during the creation of new Workbench projects.",
                                                     "C#", "General");

            function.AddParameter(new ParamInfo("screens", typeof(List<INewProjectScreen>), "out"));

            Project.Instance.AddFunction(function);

            Controller.Instance.MainForm.ShowFunction(function, this);
            RibbonBarController.RefreshButtonStatus(this);
        }
        private void buttonAddLoadFunction_Click(object sender, EventArgs e)
        {
            FunctionInfo function = new FunctionInfo(TemplateHelper.LoadFunctionName, null, "", false,
                                                     SyntaxEditorHelper.ScriptLanguageTypes.CSharp,
                                                     "Loads any additional information from an existing Workbench project",
                                                     "C#", "General");

            function.AddParameter(new ParamInfo("outputFolder", typeof(string)));
            function.AddParameter(new ParamInfo("provider", typeof(IEnumerable<ProviderInfo>)));
            function.AddParameter(new ParamInfo("extraData", typeof(TemplateData)));

            Project.Instance.AddFunction(function);

            Controller.Instance.MainForm.ShowFunction(function, this);
            RibbonBarController.RefreshButtonStatus(this);
        }
        private void buttonAddPreGenerationFunction_Click(object sender, EventArgs e)
        {
            FunctionInfo function = new FunctionInfo(TemplateHelper.PreGenerationModelProcessingFunctionName, null, "", false,
                                                     SyntaxEditorHelper.ScriptLanguageTypes.CSharp,
                                                     "Initialises the Provider from the template before generation of the files",
                                                     "C#", "General");

            function.AddParameter(new ParamInfo("providerInfo", typeof(ProviderInfo)));
            function.AddParameter(new ParamInfo("data", typeof(PreGenerationData)));

            Project.Instance.AddFunction(function);

            Controller.Instance.MainForm.ShowFunction(function, this);
            RibbonBarController.RefreshButtonStatus(this);
        }
        protected virtual void ProcessFunctionParameters(FunctionInfo info, XmlNode functionNode)
        {
            var parametersNode = functionNode["Parameters"];
            if (parametersNode == null) throw new DeserialisationException("Could not find Parameters node");

            var parameterNodes = parametersNode.SelectNodes("Parameter");
            if (parameterNodes == null) return;

            foreach (XmlNode paramNode in parameterNodes)
            {
                var name = paramNode.Attributes["name"].Value;
                var typeName = paramNode.Attributes["type"].Value;
                var modifiers = paramNode.Attributes["modifiers"].Value;
                var paramType = GetTypeNamed(typeName);

                ParamInfo pi = new ParamInfo(name, paramType) { Modifiers = modifiers };
                info.AddParameter(pi);
            }
        }