예제 #1
0
 public void DeleteSelectedControl()
 {
     if (selectedControl != null)
     {
         SelectedControl.ParentSection.RemoveControlView(selectedControl);
         SelectedControl.ControlModel = null;
         SelectedControl = null;
         WorkspaceService.InvalidateDesignArea();
     }
 }
예제 #2
0
        public void ButtonRelease(double x, double y)
        {
            EndPressPoint = new Cairo.PointD(x / Zoom, y / Zoom);
            IsPressed     = false;
            IsMoving      = false;
            if (SelectedTool != null)
            {
                SelectedTool.OnMouseUp();
            }

            if (SelectedControl != null)
            {
                WorkspaceService.ShowInPropertyGrid(SelectedControl.ControlModel);
            }

            WorkspaceService.InvalidateDesignArea();
        }
예제 #3
0
        public void MouseMove(double x, double y)
        {
            MousePoint = new Cairo.PointD(x / Zoom, y / Zoom);
            IsMoving   = true;
            if (SelectedTool != null)
            {
                SelectedTool.OnMouseMove();
            }
            DeltaPoint = new PointD(-PreviousMousePoint.X + MousePoint.X, -PreviousMousePoint.Y + MousePoint.Y);


            if (!IsPressed)
            {
                bool isOnGripper = false;
                foreach (SectionView sectionView in SectionViews)
                {
                    if (sectionView.GripperAbsoluteBound.ContainsPoint(MousePoint))
                    {
                        sectionView.SectionGripperHighlighted = true;
                        isOnGripper = true;
                    }
                    else
                    {
                        sectionView.SectionGripperHighlighted = false;
                    }
                }
                if (isOnGripper)
                {
                    WorkspaceService.SetCursor(Gdk.CursorType.BottomSide);
                }
                else
                {
                    WorkspaceService.SetCursor(Gdk.CursorType.LeftPtr);
                }
            }


            WorkspaceService.InvalidateDesignArea();
            PreviousMousePoint = MousePoint;
        }
예제 #4
0
 public void ZoomChanged(double zoom)
 {
     Zoom = zoom;
     WorkspaceService.InvalidateDesignArea();
 }
예제 #5
0
        public void ButtonPress(double x, double y, int clicks)
        {
            StartPressPoint = new Cairo.PointD(x / Zoom, y / Zoom);

            IsPressed = true;
            IsMoving  = false;

            if (!IsMoving)
            {
                PreviousMousePoint = StartPressPoint;
                DeltaPoint         = new PointD(0, 0);
                for (int i = 0; i < SectionViews.Count; i++)
                {
                    var sectionView = SectionViews [i];

                    if (sectionView.AbsoluteBound.ContainsPoint(StartPressPoint.X, StartPressPoint.Y))
                    {
                        if (sectionView.HeaderAbsoluteBound.ContainsPoint(StartPressPoint.X, StartPressPoint.Y))
                        {
                            SelectedControl = sectionView;
                            SelectedTool    = null;
                            continue;
                        }
                        else if (sectionView.GripperAbsoluteBound.ContainsPoint(StartPressPoint.X, StartPressPoint.Y))
                        {
                            SelectedControl = sectionView;
                        }
                        else
                        {
                            if (SelectedTool != null && SelectedTool.CreateMode)
                            {
                                SelectedTool.CreateNewControl(sectionView);
                                SelectedTool.CreateMode = false;
                            }
                            else
                            {
                                SelectedControl = null;

                                for (int j = 0; j < sectionView.Controls.Count; j++)
                                {
                                    var controlView = sectionView.Controls [j];
                                    if (controlView.ContainsPoint(StartPressPoint.X, StartPressPoint.Y))
                                    {
                                        SelectedControl = controlView;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            }


            if (SelectedTool != null)
            {
                if (clicks == 1)
                {
                    SelectedTool.OnMouseDown();
                }
                else
                {
                    SelectedTool.OnDoubleClick();
                }
            }

            WorkspaceService.InvalidateDesignArea();
        }
        public MonoreportsDesignerControl()
        {
            Build ();
              		MonoReports.Model.Engine.ReportEngine.EvaluatorInit();

            Report startReport = newReportTemplate();

            double resolutionX = ((double)  Gdk.Screen.Default.Width) / ((double) Gdk.Screen.Default.WidthMm) * 25.4;

            compilerService = new CompilerService(ReportExtensions.ScriptTemplateForDataSourceEvaluation);

            pixbufRepository = new PixbufRepository () { Report = startReport };
            workspaceService = new WorkspaceService (this,maindesignview1.DesignDrawingArea,maindesignview1.PreviewDrawingArea,mainPropertygrid, StatusBarLabel);
            var reportRenderer = new ReportRenderer(){ ResolutionX =  resolutionX};
            reportRenderer.RegisterRenderer(typeof(Controls.TextBlock), new TextBlockRenderer());
            reportRenderer.RegisterRenderer(typeof(Controls.Line), new LineRenderer());
            reportRenderer.RegisterRenderer(typeof(MonoReports.Model.Controls.Image),
                new ImageRenderer(){ PixbufRepository = pixbufRepository});
            SectionRenderer sr = new SectionRenderer();
            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);
            designService = new DesignService (workspaceService,reportRenderer,pixbufRepository,compilerService, startReport);

            toolBoxService = new ToolBoxService ();
            designService.ToolBoxService = toolBoxService;
            maindesignview1.DesignService = designService;
            maindesignview1.WorkSpaceService = workspaceService;
            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));
            //TODO 3tk: currently not supported
            //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",Catalog.GetString("Export to pdf"));
            exportPdfToolButton.Clicked += delegate(object sender, EventArgs e) {
            designService.ExportToPdf();
            };

            var sep = new Gtk.SeparatorToolItem();

            mainToolbar.Insert (sep,mainToolbar.NItems);
            mainToolbar.Insert (exportPdfToolButton,mainToolbar.NItems);

            //ToolBarButton btn = new ToolBarButton("gtk-media-play","execute","Execute report");
            //mainToolbar.Insert (btn,mainToolbar.NItems);

            mainPropertygrid.LoadMonoreportsExtensions();
             		designService.Report = startReport;
        }
        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();
        }