示例#1
0
 public static void ExportToPdf(this Report report, string path)
 {
     using (PdfSurface pdfSurface = new PdfSurface(
                path, report.WidthWithMargins, report.HeightWithMargins)) {
         Cairo.Context cr = new Cairo.Context(pdfSurface);
         cr.Translate(report.Margin.Left, report.Margin.Top);
         ReportRenderer renderer = new ReportRenderer()
         {
             Context = cr
         };
         renderer.RegisterRenderer(typeof(TextBlock), new TextBlockRenderer());
         renderer.RegisterRenderer(typeof(Line), new LineRenderer());
         renderer.RegisterRenderer(typeof(Image), new ImageRenderer()
         {
             PixbufRepository = new PixbufRepository(report.ResourceRepository)
         });
         SectionRenderer sr = new SectionRenderer();
         renderer.RegisterRenderer(typeof(ReportHeaderSection), sr);
         renderer.RegisterRenderer(typeof(ReportFooterSection), sr);
         renderer.RegisterRenderer(typeof(DetailSection), sr);
         renderer.RegisterRenderer(typeof(PageHeaderSection), sr);
         renderer.RegisterRenderer(typeof(PageFooterSection), sr);
         MonoReports.Model.Engine.ReportEngine engine = new MonoReports.Model.Engine.ReportEngine(report, renderer);
         engine.Process();
         for (int i = 0; i < report.Pages.Count; ++i)
         {
             renderer.RenderPage(report.Pages [i]);
             cr.ShowPage();
         }
         pdfSurface.Finish();
         (cr as IDisposable).Dispose();
     }
 }
示例#2
0
        private static MvcHtmlString RegisterResource(HttpContextBase httpContext, string resourcePath, ResourceType resourceType, string sectionName, bool throwException)
        {
            throwException = throwException && httpContext.CurrentHandler != null;

            var registerName = string.Empty;

            if (resourceType == ResourceType.Js)
            {
                registerName = ResourceHelper.JsRegisterName;
            }
            else if (resourceType == ResourceType.Css)
            {
                registerName = ResourceHelper.CssRegisterName;
            }

            var register = new ResourceRegister(registerName, httpContext);

            MvcHtmlString result = MvcHtmlString.Empty;

            // No section name renders the script inline if it hasn't been rendered
            if (string.IsNullOrEmpty(sectionName) || !SectionRenderer.IsAvailable(httpContext.Handler.GetPageHandler(), sectionName))
            {
                if (!register.IsRegistered(resourcePath, sectionName: null))
                {
                    result = MvcHtmlString.Create(ResourceHelper.BuildSingleResourceMarkup(resourcePath, resourceType));
                }
            }

            // Register the resource even if it had to be rendered inline (avoid repetitions).
            register.Register(resourcePath, sectionName, throwException);

            return(result);
        }
        private static SectionRenderer GetSection(string section, bool create = false)
        {
            Dictionary<string, SectionRenderer> sections;
            lock (globalSections) {
                HttpContext httpContext = HttpContext.Current;

                if (!globalSections.TryGetValue(httpContext, out sections)) {
                    sections = new Dictionary<string, SectionRenderer>();

                    globalSections.Add(httpContext, sections);
                    httpContext.DisposeOnPipelineCompleted(new RemoveContext(httpContext));
                }
            }

            if (string.IsNullOrEmpty(section))
                section = string.Empty;

            SectionRenderer sectionObj;
            if (!sections.TryGetValue(section, out sectionObj))
                if (create)
                {
                    sectionObj = new SectionRenderer();
                    sections.Add(section, sectionObj);
                }
                else
                    sectionObj = null;

            return sectionObj;
        }
示例#4
0
 public void Init(ChunkManager chunk, int y)
 {
     Y                = y;
     _chunk           = chunk;
     _sectionRenderer = new SectionRenderer(this);
     MeshRenderer     = GetComponent <MeshRenderer>();
 }
示例#5
0
        public static System.Web.Mvc.MvcHtmlString Section(this HtmlHelper helper, string name)
        {
            if (helper.ViewContext.HttpContext != null)
            {
                SectionRenderer.MarkAvailability(helper.ViewContext.HttpContext.Handler.GetPageHandler(), name);
            }

            return(new System.Web.Mvc.MvcHtmlString(LayoutsHelpers.SectionHtml.Arrange(name)));
        }
示例#6
0
        private static MvcHtmlString RegisterResource(HttpContextBase httpContext, string resourcePath, ResourceType resourceType, string sectionName, bool throwException, List <KeyValuePair <string, string> > attributes = null)
        {
            throwException = throwException && httpContext.CurrentHandler != null;

            var registerName = string.Empty;

            if (resourceType == ResourceType.Js)
            {
                registerName = ResourceHelper.JsRegisterName;
            }
            else if (resourceType == ResourceType.Css)
            {
                registerName = ResourceHelper.CssRegisterName;
            }

            var register = new ResourceRegister(registerName, httpContext);

            MvcHtmlString result = MvcHtmlString.Empty;

            if (!string.IsNullOrWhiteSpace(sectionName))
            {
                var pageHandler = httpContext.Handler.GetPageHandler();
                if (pageHandler != null && pageHandler.Master is MvcMasterPage)
                {
                    if (!throwException && !SectionRenderer.IsAvailable(pageHandler, sectionName))
                    {
                        sectionName = null;
                    }
                }
                else
                {
                    if (!SectionRenderer.IsAvailable(pageHandler, sectionName))
                    {
                        sectionName = null;
                    }
                }
            }
            else
            {
                sectionName = null;
            }

            // No section name renders the script inline if it hasn't been rendered
            if (sectionName == null ||
                ResourceHelper.RenderScriptSection)
            {
                if (!register.IsRegistered(resourcePath))
                {
                    result = MvcHtmlString.Create(ResourceHelper.BuildSingleResourceMarkup(resourcePath, resourceType, sectionName, attributes));
                }
            }

            // Register the resource even if it had to be rendered inline (avoid repetitions).
            register.Register(resourcePath, sectionName, throwException, attributes);

            return(result);
        }
示例#7
0
        /// <summary>
        /// Registers a client resource. A return value indicates whether the registration succeeded.
        /// </summary>
        /// <param name="resourceKey">The attributes associated with the resource.</param>
        /// <param name="sectionName">The section name in which the resource should be rendered.</param>
        /// <param name="throwException">The section name in which the resource should be rendered.</param>
        /// <returns>
        /// <value>true</value> if s was registered successfully; otherwise, <value>false</value>.
        /// </returns>
        public bool Register(string resourceKey, string sectionName = null, bool throwException = false)
        {
            if (sectionName != null && !ResourceHelper.RenderScriptSection)
            {
                var page = this.Context.Handler.GetPageHandler();
                if (throwException && page != null && (page.Master is MvcMasterPage) && !SectionRenderer.IsAvailable(page, sectionName))
                {
                    throw new ArgumentException("A section with name \"{0}\" could not be found.".Arrange(sectionName), sectionName);
                }
                else if (page == null)
                {
                    sectionName = null;
                }
            }

            if (string.IsNullOrEmpty(sectionName))
            {
                sectionName = ResourceRegister.DefaultSectionNameKey;
            }

            bool successfullyRegistered = true;

            if (this.Container.ContainsKey(sectionName))
            {
                if (this.Container[sectionName].Contains(resourceKey))
                {
                    successfullyRegistered = false;
                }
                else
                {
                    this.Container[sectionName].Add(resourceKey);
                }
            }
            else
            {
                this.Container.Add(sectionName, new List <string>()
                {
                    resourceKey
                });
            }

            return(successfullyRegistered);
        }
示例#8
0
 public BedRenderer(SectionRenderer renderer) : base(renderer)
 {
 }
示例#9
0
 public ARenderer(SectionRenderer renderer)
 {
     Renderer       = renderer;
     LightingHelper = renderer.LightingHelper;
 }
示例#10
0
 public FluidRenderer(SectionRenderer renderer) : base(renderer)
 {
 }
示例#11
0
 public GrassRenderer(SectionRenderer renderer) : base(renderer)
 {
 }
示例#12
0
 public RailRenderer(SectionRenderer renderer) : base(renderer)
 {
 }
示例#13
0
 public SaplingRenderer(SectionRenderer renderer) : base(renderer)
 {
 }
示例#14
0
 public BlockRenderer(SectionRenderer renderer) : base(renderer)
 {
 }
        public MonoreportsDesignerControl()
        {
            Build();
            dpi = Gdk.Screen.Default.Resolution;

            Report startReport = new Report()
            {
                DataScript = @"
datasource = new [] {
     new { Name=""Alfred"", Surname = ""Tarski"", Age = ""82"" },
     new { Name=""Saul"", Surname = ""Kripke"", Age = ""70"" },
     new { Name=""Gotlob"", Surname = ""Frege"", Age = ""85"" },
     new { Name=""Kurt"", Surname = ""Gödel"", Age = ""72"" }, 
};

parameters.Add(""Title"",new { Title = ""The Logicans"", SubTitle = ""...and philosophers...""});

"
            };


            string template = @"
using System;
using System.Collections.Generic;
{0}

public sealed class GenerateDataSource {{
    public object Generate()
    {{ 
		object datasource = null;
		Dictionary<string,object> parameters = new Dictionary<string,object>();
		 {1}
        return new object[] {{datasource,parameters}};
    }}
}}

";



            compilerService  = new CompilerService(template);
            workspaceService = new WorkspaceService(this, maindesignview1.DesignDrawingArea, maindesignview1.PreviewDrawingArea, mainPropertygrid, StatusBarLabel);

            designService  = new DesignService(workspaceService, compilerService, startReport);
            toolBoxService = new ToolBoxService();
            designService.ToolBoxService     = toolBoxService;
            maindesignview1.DesignService    = designService;
            maindesignview1.WorkSpaceService = workspaceService;
            maindesignview1.Compiler         = compilerService;

            var reportRenderer = new ReportRenderer();

            reportRenderer.RegisterRenderer(typeof(Controls.TextBlock), new TextBlockRenderer()
            {
                DPI = dpi
            });
            reportRenderer.RegisterRenderer(typeof(Controls.Line), new LineRenderer()
            {
                DPI = dpi
            });
            reportRenderer.RegisterRenderer(typeof(MonoReports.Model.Controls.Image), new ImageRenderer()
            {
                PixbufRepository = designService.PixbufRepository, DPI = dpi
            });
            SectionRenderer sr = new SectionRenderer()
            {
                DPI = dpi
            };

            reportRenderer.RegisterRenderer(typeof(Controls.ReportHeaderSection), sr);
            reportRenderer.RegisterRenderer(typeof(Controls.ReportFooterSection), sr);
            reportRenderer.RegisterRenderer(typeof(Controls.DetailSection), sr);
            reportRenderer.RegisterRenderer(typeof(Controls.PageHeaderSection), sr);
            reportRenderer.RegisterRenderer(typeof(Controls.PageFooterSection), sr);

            maindesignview1.ReportRenderer = reportRenderer;
            workspaceService.InvalidateDesignArea();
            reportExplorer.DesignService = designService;
            reportExplorer.Workspace     = workspaceService;
            toolBoxService.AddTool(new ZoomTool(designService));
            toolBoxService.AddTool(new LineTool(designService));
            toolBoxService.AddTool(new LineToolV(designService));
            toolBoxService.AddTool(new LineToolH(designService));

            toolBoxService.AddTool(new TextBlockTool(designService));
            toolBoxService.AddTool(new SubreportTool(designService));
            toolBoxService.AddTool(new SectionTool(designService));
            toolBoxService.AddTool(new ImageTool(designService));
            toolBoxService.AddTool(new RectTool(designService));
            toolBoxService.BuildToolBar(mainToolbar);


            ToolBarButton exportPdfToolButton = new ToolBarButton("pdf.png", "exportPdf", "export to pdf");

            exportPdfToolButton.Clicked += delegate(object sender, EventArgs e) {
                designService.ExportToPdf();
            };


            mainToolbar.Insert(exportPdfToolButton, 7);

            mainPropertygrid.LoadMonoreportsExtensions();
        }