예제 #1
0
        /// <summary>
        /// Parses and resolves all variables in a string
        /// </summary>
        /// <param name="content">The string to parse.</param>
        /// <returns></returns>
        private string RenderTemplate(string content, string filename)
        {
            StringWriter writer = new StringWriter();

            Velocity.Evaluate(nvelocityContext, writer, filename, content);
            return(writer.GetStringBuilder().ToString());
        }
예제 #2
0
        /// <summary>
        /// Called when the add-in is loaded
        /// </summary>
        /// <param name="application">The application.</param>
        /// <param name="connectMode">The connect mode.</param>
        /// <param name="addInInst">The add in inst.</param>
        /// <param name="custom">The custom.</param>
        public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
        {
            try
            {
                if (connectMode == ext_ConnectMode.ext_cm_UISetup || connectMode == ext_ConnectMode.ext_cm_Solution)
                {
                    return;
                }

                // If the Add-In is already connected return
                if (m_connected)
                {
                    return;
                }

                m_applicationObject = (DTE)application;
                m_addInInstance     = (AddIn)addInInst;

                // Don't load the add-in if the following parameters were passed to the app
                string command_line = m_applicationObject.CommandLineArguments.ToLower();
                foreach (string sw in new string[] { "/build", "/rebuild", "/clean", "/deploy" })
                {
                    if (command_line.IndexOf(sw) != -1)
                    {
                        return;
                    }
                }

                m_addInSettings = new AddInSettings(m_applicationObject);

                if (m_addInSettings.ShowWelcomeWizard)
                {
                    Dialogs.WelcomeWizard welcome = new Dialogs.WelcomeWizard(m_addInSettings);
                    welcome.ShowDialog();
                    m_addInSettings.ShowWelcomeWizard = welcome.ShowWizardAgain;
                }

                m_solutionManager = new MDASolutionManager(m_applicationObject, m_addInSettings);
                BindEvents();
                CreateCommands();
                RegisterCommands();
                RegisterToolbar();
                Velocity.Init();
                m_connected = true;
            }
            catch (Exception e)
            {
                AddInUtils.ShowError("An exception occured while trying to instantiate the add-in: " + e.ToString());
            }
        }
예제 #3
0
        public void Process(String templateFile)
        {
            // Velocity 初始化.
            // 从配置文件读取配置信息.
            Velocity.Init("nvelocity.properties");


            // 创建 Velocity Context
            VelocityContext context = new VelocityContext();

            // 将列表的数据, 以 list 作为名称,放入 context.
            context.Put("list", Names);

            // 模版.
            Template template = null;


            // 尝试加载模版文件.
            try
            {
                template = Velocity.GetTemplate(templateFile);
            }
            catch (ResourceNotFoundException)
            {
                System.Console.Out.WriteLine("Example1 : error : cannot find template " + templateFile);
            }
            catch (ParseErrorException pee)
            {
                System.Console.Out.WriteLine("Example1 : Syntax error in template " + templateFile + ":" + pee);
            }

            // 处理模版信息.
            if (template != null)
            {
                template.Merge(context, System.Console.Out);
            }
        }
예제 #4
0
        private void BuildOneFile(string className)
        {
            Type modelType = allTypeList.FirstOrDefault(p => p.FullName == className);

            if (modelType == null)
            {
                return;
            }


            //// 取得对象的所有属性.
            //PropertyInfo[] propArray = modelType.GetProperties();
            //foreach (PropertyInfo prop in propArray)
            //{
            //    Console.WriteLine("属性名{0}, CanRead={1}, CanWrite={2}, 数据类型={3}",
            //        prop.Name, prop.CanRead, prop.CanWrite, prop.PropertyType.Name);

            //    Console.WriteLine("是否是抽象类{0}, 是否是类{1}", prop.PropertyType.IsAbstract, prop.PropertyType.IsClass);
            //    Console.WriteLine("是否是数组{0}, 是否是枚举{1}", prop.PropertyType.IsArray, prop.PropertyType.IsEnum);

            //    foreach (var attr in prop.GetCustomAttributes(true))
            //    {
            //        Console.WriteLine("定义在属性上面的自定义特性: {0}", attr);

            //        if (attr is System.ComponentModel.DataAnnotations.DisplayAttribute)
            //        {
            //            System.ComponentModel.DataAnnotations.DisplayAttribute displayAttr = attr as System.ComponentModel.DataAnnotations.DisplayAttribute;
            //            Console.WriteLine("属性显示的标题:{0}", displayAttr.Name);
            //        }
            //    }

            //    Console.WriteLine();
            //}

            //var keyInfo = modelType.GetKeyInfo();
            //Console.WriteLine("keyInfo = {0}", keyInfo);



            // Velocity 初始化.
            // 从配置文件读取配置信息.
            Velocity.Init("nvelocity.properties");
            // 创建 Velocity Context
            VelocityContext context = new VelocityContext();

            // 将数据, 以 Model 作为名称,放入 context.
            context.Put("Model", modelType);



            // 模版.
            Template template = null;


            string templateFile = this.cboTemplate.Text;



            // 尝试加载模版文件.
            try
            {
                template = Velocity.GetTemplate(templateFile, "utf-8");
            }
            catch (ResourceNotFoundException)
            {
                MyMessage.Fail(String.Format("未能找到模板文件:{0}", templateFile));
            }
            catch (ParseErrorException pee)
            {
                MyMessage.Fail(String.Format("解析模板文件 {0} 发生了异常!\n{1}", templateFile, pee));
            }



            // 输出文件名, 去掉最后的 .vm
            string outputFileName = templateFile.Substring(0, templateFile.Length - 3);

            // 移除 template 目录.
            outputFileName = outputFileName.Replace("template\\", "");
            // # 替换为类名.
            outputFileName = outputFileName.Replace("#", modelType.Name);


            try
            {
                // 处理模版信息.
                if (template != null)
                {
                    string fileName = String.Format("{0}\\{1}", this.txtOutputPath.Text, outputFileName);

                    using (StreamWriter sw = new StreamWriter(fileName, false, Encoding.UTF8))
                    {
                        template.Merge(context, sw);
                    }
                }
            }
            catch (Exception ex)
            {
                MyMessage.Fail(String.Format("根据模板文件 {0} 生成文档的过程中,发生了异常!\n{1}", templateFile, ex));
            }
        }
예제 #5
0
        private void BuildAllFile(List <Chapter> cList)
        {
            List <Chapter> chapterList = new List <Chapter>();

            foreach (var c in cList)
            {
                Chapter myChapter = new Chapter();
                myChapter.BookCode    = c.BookCode;
                myChapter.ChapterCode = c.ChapterCode;
                myChapter.ChapterName = c.ChapterName;


                // 取得行列表.
                myChapter.Lines = lineService.GetChapterLineList(c.ChapterCode);

                chapterList.Add(myChapter);
            }

            // Velocity 初始化.
            // 从配置文件读取配置信息.
            Velocity.Init("nvelocity.properties");
            // 创建 Velocity Context
            VelocityContext context = new VelocityContext();

            // 将列表的数据, 以 ChapterList 作为名称,放入 context.
            context.Put("ChapterList", chapterList);



            // 模版.
            Template template = null;

            string templateFile = this.cboTemplate.Text;


            // 尝试加载模版文件.
            try
            {
                template = Velocity.GetTemplate(templateFile);
            }
            catch (ResourceNotFoundException)
            {
                MyMessage.Fail(String.Format("未能找到模板文件:{0}", templateFile));
            }
            catch (ParseErrorException pee)
            {
                MyMessage.Fail(String.Format("解析模板文件 {0} 发生了异常!\n{1}", templateFile, pee));
            }


            try
            {
                // 处理模版信息.
                if (template != null)
                {
                    string fileName = String.Format("{0}\\{1}.{2}", this.txtOutputPath.Text, this.cboBooks.SelectedValue, this.cboTemplate.SelectedFileType);

                    using (StreamWriter sw = new StreamWriter(fileName, false, Encoding.UTF8))
                    {
                        template.Merge(context, sw);
                    }
                }
            }
            catch (Exception ex)
            {
                MyMessage.Fail(String.Format("根据模板文件 {0} 生成文档的过程中,发生了异常!\n{1}", templateFile, ex));
            }
        }