コード例 #1
0
        private void mypanel_ContextMenuClosing(object sender, ContextMenuEventArgs e)
        {
            bool             deleteControl = false;
            FrameworkElement fe            = e.Source as FrameworkElement;

            #region find control type
            AUParagraph aup = fe as AUParagraph;
            if (aup != null)
            {
                deleteControl = aup.DeleteControl;
            }

            BSkyNotes bsn = fe as BSkyNotes;
            if (bsn != null)
            {
                deleteControl = bsn.DeleteControl;
            }
            BSkyGraphicControl bsgc = fe as BSkyGraphicControl;
            if (bsgc != null)
            {
                deleteControl = bsgc.DeleteControl;
            }

            AUXGrid auxg = fe as AUXGrid;
            if (auxg != null)
            {
                deleteControl = auxg.DeleteControl;
            }

            #endregion

            if (deleteControl)
            {
                MessageBox.Show("Delete is not allowed in the Output Viewer");
            }
        }
コード例 #2
0
        private void CreateDynamicClassFlexGrid(string header, string[] colheaders, string[] rowheaders, string[,] data, CommandOutput lst)
        {
            IList list;
            AUXGrid xgrid = new AUXGrid();
            AUGrid c1FlexGrid1 = xgrid.Grid;// new C1flexgrid.
            xgrid.Header.Text = header;//FlexGrid header as well as Tree leaf node text(ControlType)

            ///////////// merge and sizing /////
            c1FlexGrid1.AllowMerging = AllowMerging.ColumnHeaders | AllowMerging.RowHeaders;
            c1FlexGrid1.AllowSorting = false;

            //trying to fix the size of the grid so that rendering does not take much time calculating these
            c1FlexGrid1.MaxHeight = 800;// NoOfRows* EachRowHeight;
            c1FlexGrid1.MaxWidth = 1000;

            int nrows = data.GetLength(0);
            int ncols = data.GetLength(1);

            //// Dynamic class logic
            FGDataSource ds = new FGDataSource();
            ds.RowCount = nrows;
            ds.Data = data;
            foreach (string s in colheaders)
            {
                ds.Variables.Add(s.Trim());
            }
            list = new DynamicList(ds);
            if (list != null)
            {
                c1FlexGrid1.ItemsSource = list;
            }
            FillColHeaders(colheaders, c1FlexGrid1);
            FillRowHeaders(rowheaders, c1FlexGrid1);
            lst.Add(xgrid);
        }
コード例 #3
0
        private void createFlexGrid(XmlDocument xd, CommandOutput lst, string header)
        {
            AUXGrid xgrid = new AUXGrid();
            AUGrid c1FlexGrid1 = xgrid.Grid;// new C1flexgrid.
            xgrid.Header.Text = header;//FlexGrid header as well as Tree leaf node text(ControlType)
            //XmlDocument xd = new XmlDocument(); xd.LoadXml(xdoc);

            BSkyOutputGenerator bsog = new BSkyOutputGenerator();
            bsog.html2flex(xd, c1FlexGrid1);
            lst.Add(xgrid);
        }
コード例 #4
0
        //25Feb2015 exact copy of PopulateTree from OutputWindow.xaml. Not Sure if in future they will differ
        private void PopulateTree(CommandOutput output, bool synedtsession = false)
        {
            string treenocharscount = confService.GetConfigValueForKey("nooftreechars");//16Dec2013
            int    openbracketindex, max;
            string analysisName = string.Empty;

            if (output.NameOfAnalysis != null && output.NameOfAnalysis.Trim().Length > 0) // For shortening left tree parent node name.
            {
                openbracketindex = output.NameOfAnalysis.Contains("(") ? output.NameOfAnalysis.IndexOf('(') : output.NameOfAnalysis.Length;

                analysisName = output.NameOfAnalysis.Substring(0, openbracketindex); //18Nov2013 (0, max);
                if (output.NameOfAnalysis.Contains("BSkyFormat("))                   //it is output
                {
                    analysisName = "BSkyFormat-Output";
                }
            }
            else
            {
                analysisName = "Output";
            }


            //// Main logic to populate tree ////
            TreeViewItem MainItem = new TreeViewItem();

            MainItem.Header     = analysisName;
            MainItem.IsExpanded = true;
            List <string> Headers = new List <string>();

            if (MainItem.Header.ToString().Contains("Execution Started"))
            {
                MainItem.Background = Brushes.LawnGreen;
            }
            if (MainItem.Header.ToString().Contains("Execution Ended"))
            {
                MainItem.Background = Brushes.SkyBlue;
            }
            //bool setFocus = true;

            foreach (DependencyObject obj in output)
            {
                IAUControl control = obj as IAUControl;
                if (control == null)
                {
                    continue;                 //for non IAUControl
                }
                Headers.Add(control.ControlType);
                TreeViewItem tvi = new TreeViewItem();

                ////Setting common Excel sheet/////
                AUParagraph _aup = obj as AUParagraph;
                if (_aup != null)
                {
                    _aup.MSExcelObj = _MSExcelObj;
                }
                BSkyNotes _note = obj as BSkyNotes;
                if (_note != null)
                {
                    _note.MSExcelObj = _MSExcelObj;
                }
                AUXGrid _aux = obj as AUXGrid;
                if (_aux != null)
                {
                    _aux.MSExcelObj = _MSExcelObj;
                }


                ////23Oct2013. for show hide leaf nodes based on checkbox //
                StackPanel treenodesp = new StackPanel();
                treenodesp.Orientation = Orientation.Horizontal;

                int  treenodecharlen;
                bool result = Int32.TryParse(treenocharscount, out treenodecharlen);
                if (!result)
                {
                    treenodecharlen = 15;
                }

                TextBlock nodetb = new TextBlock();
                nodetb.Tag = control;
                int    maxlen = control.ControlType.Length < treenodecharlen ? control.ControlType.Length : (treenodecharlen);
                string dots   = maxlen <= treenodecharlen ? "..." : "...";
                nodetb.Text       = control.ControlType.Substring(0, maxlen) + dots;
                nodetb.Margin     = new Thickness(1);
                nodetb.GotFocus  += new RoutedEventHandler(nodetb_GotFocus);
                nodetb.LostFocus += new RoutedEventHandler(nodetb_LostFocus);
                nodetb.ToolTip    = "Click to bring the item in the view";

                CheckBox cbleaf = new CheckBox();
                cbleaf.Content = "";// control.ControlType;
                cbleaf.Tag     = control;

                cbleaf.Checked   += new RoutedEventHandler(cbleaf_Checked);
                cbleaf.Unchecked += new RoutedEventHandler(cbleaf_Checked);

                cbleaf.Visibility = System.Windows.Visibility.Visible;///unhide to see it on output window.
                cbleaf.ToolTip    = "Select/Unselect this node to show/hide in right pane";
                if (!(control is BSkyNotes))
                {
                    cbleaf.IsChecked = true;
                }

                treenodesp.Children.Add(cbleaf);
                treenodesp.Children.Add(nodetb);

                tvi.Header = treenodesp;// cbleaf;//.Substring(0,openbracketindex);/// Leaf Node Text
                tvi.Tag    = control;

                tvi.Selected   += new RoutedEventHandler(tvi_Selected);
                tvi.Unselected += new RoutedEventHandler(tvi_Unselected);//29Jan2013
                MainItem.Items.Add(tvi);
            }
            if (synedtsession)
            {
                SessionItem.Items.Add(MainItem);
            }
            else
            {
                NavTree.Items.Add(MainItem);
            }
        }
コード例 #5
0
        //AUGrid c1fg = null;
        /// Read .bso file and create all the displayable objects in allanalysis
        public List <SessionOutput> html2xml(string fullpathfilename)
        {
            #region read html and
            if (!File.Exists(fullpathfilename))
            {
                MessageBox.Show(BSky.GlobalResources.Properties.Resources.BSkyOutFileNotFound);
                return(null);
            }
            string fulltext = File.ReadAllText(fullpathfilename);
            string s        = Regex.Replace(fulltext, @"\0", "");
            //////////////Put <BSKYOUTPUT> check here //////////////
            if (Regex.Matches(s, "<bskyoutput>").Count < 1 || Regex.Matches(s, "</bskyoutput>").Count < 1)
            {
                MessageBox.Show(BSky.GlobalResources.Properties.Resources.BSkyOutFileBadFormat);
                return(null);
            }

            string r = Regex.Replace(s, @"<head>", "");
            string t = r;

            /// fixing class attribute with quotes
            string patternh = @"\bclass=h[0-9]+";
            string u        = Regex.Replace(t, patternh, " class='h'");
            string patternc = @"\bclass=c[0-9]+";
            string v        = Regex.Replace(u, patternc, " class='c'");

            List <SessionOutput> allSessions = new List <SessionOutput>();
            XmlDocument          sessXd      = new XmlDocument();
            //New Session tag which is parent of bskyanalysis tag
            ////// No of sessions/// ana is abbrivation for analysis
            MatchCollection sessmc  = Regex.Matches(v, "<sessoutput");
            MatchCollection sessmc2 = Regex.Matches(v, "</sessoutput>");
            for (int ss = 0; ss < sessmc.Count; ss++) ///loop on number of sessions
            {                                         ///
                int    sessStart  = sessmc[ss].Index;
                int    sessEnd    = sessmc2[ss].Index;
                string onesession = v.Substring(sessStart, sessEnd - sessStart + 14);
                ////// No of Analysis/// ana is abbrivation for analysis
                MatchCollection anamc  = Regex.Matches(onesession, "<bskyanalysis>");
                MatchCollection anamc2 = Regex.Matches(onesession, "</bskyanalysis>");

                sessXd.LoadXml(onesession);
                string sessionheader = sessXd.SelectSingleNode("sessoutput").Attributes["Header"] != null?sessXd.SelectSingleNode("sessoutput").Attributes["Header"].Value : string.Empty;

                string isRsession = sessXd.SelectSingleNode("sessoutput").Attributes["isRsession"] != null?sessXd.SelectSingleNode("sessoutput").Attributes["isRsession"].Value : "false";

                bool isrsessionoutput = false;
                if (isRsession.ToLower().Trim().Equals("true"))
                {
                    isrsessionoutput = true;
                }
                int           anaStart = 0; int anaEnd = 0;
                XmlDocument   anaXd       = new XmlDocument();
                CommandOutput lst         = null;
                SessionOutput allanalysis = new SessionOutput();
                allanalysis.NameOfSession    = sessionheader;
                allanalysis.isRSessionOutput = isrsessionoutput;

                AUParagraph AUP;                      //09Jul2013
                for (int j = 0; j < anamc.Count; j++) ///loop on number of analysis
                {
                    lst      = new CommandOutput();   ///for treeview. New analysis
                    anaStart = anamc[j].Index;
                    anaEnd   = anamc2[j].Index;
                    string oneAnalysis = onesession.Substring(anaStart, anaEnd - anaStart + 15);
                    anaXd.LoadXml(oneAnalysis);

                    lst.NameOfAnalysis = anaXd.SelectSingleNode("bskyanalysis/analysisname").InnerText.Trim(); //For Parent Node name 02Aug2012

                    int      noofaup   = anaXd.SelectNodes("bskyanalysis/aup").Count;                          // should be 2
                    int      leafcount = anaXd.ChildNodes.Item(0).ChildNodes.Count;                            //29Oct2013 no. of leaves in an analysis
                    string[] contTyp   = { "Header", "Dataset" };                                              // should be 2
                    int      noofnotes = anaXd.SelectNodes("bskyanalysis/bskynotes").Count;                    //06nov2012

                    foreach (XmlNode ln in anaXd.ChildNodes.Item(0).ChildNodes)
                    {
                        if (ln.Name.Trim().Equals("analysisname"))
                        {
                            continue;
                        }
                        XmlNode xn = null;
                        switch (ln.Name.Trim())
                        {
                        case "aup":
                            #region AUPara
                            AUP = createAUPara(ln, "", "");
                            if (AUP != null)
                            {
                                lst.Add(AUP);
                            }

                            #endregion
                            break;

                        case "bskynotes":
                            #region BSkyNotes
                            if (noofnotes >= 1)
                            {
                                BSkyNotes bsnotes = createBSkyNotes(ln, "", "Notes");
                                if (bsnotes != null)
                                {
                                    lst.Add(bsnotes);
                                }
                            }
                            #endregion
                            break;

                        case "graphic":
                            #region Graphic
                            string  tempDir             = System.IO.Path.GetDirectoryName(fullpathfilename);
                            string  fullpathimgfilename = string.Empty;
                            XmlNode imgxn           = ln;//anaXd.SelectSingleNode("bskyanalysis/graphic");
                            string  pathimgfilename = (imgxn != null) ? imgxn.InnerText.Trim() : "";

                            string imgfileNamewithExt = System.IO.Path.GetFileName(pathimgfilename);
                            string outputDir          = tempDir + "\\";// @"\temp2\";
                            fullpathimgfilename = System.IO.Path.Combine(outputDir + imgfileNamewithExt);

                            if (fullpathimgfilename.Trim().Length > 0)
                            {
                                lst.Add(CreateBSkyGraphicControl(fullpathimgfilename));
                            }
                            #endregion
                            break;

                        case "auxgrid":
                            #region FlexGrid

                            oneAnalysis = ln.OuterXml;
                            ////// No. of Grids in one analysis: for C1FlexGrid header/footer err/warning generation //////
                            MatchCollection aux1    = Regex.Matches(oneAnalysis, "<auxgrid>");
                            MatchCollection aux2    = Regex.Matches(oneAnalysis, "</auxgrid>");
                            XmlDocument     anagrid = new XmlDocument();//this will be used to get contents of auxgrid(excluding flexgrid)

                            ////// No. of FlexGrids in one analysis: for C1FlexGrid generation //////
                            MatchCollection mc = Regex.Matches(oneAnalysis, "<html>");
                            MatchCollection mc2 = Regex.Matches(oneAnalysis, "</html>");
                            int             start = 0; int end = 0;
                            XmlDocument     xd = new XmlDocument();
                            for (int k = 0; k < mc.Count; k++) /// loop till all C1FlexGrid in current Analysis get generated
                            {
                                AUXGrid xgrid = new AUXGrid();
                                AUGrid  c1fg  = xgrid.Grid;// new C1flexgrid.

                                anagrid.LoadXml(oneAnalysis.Substring(aux1[k].Index, aux2[k].Index - aux1[k].Index + 10));
                                //flexgrid header
                                xn = anagrid.SelectSingleNode("auxgrid/fgheader[1]");
                                xgrid.Header.Text = (xn != null) ? xn.InnerText : "";
                                ///AUXGrid  error/warning
                                Dictionary <char, string> Metadata = new Dictionary <char, string>();
                                char   ch = ' '; int erri = 2;
                                string mesg = "", fullmsg = "";
                                xn = anagrid.SelectSingleNode("auxgrid/errm[1]");
                                while (xn != null)
                                {
                                    /// err msg is like :-   "a:. Warning: ....
                                    fullmsg = xn.InnerText.ToString().Replace('"', ' ').Trim();
                                    ch      = fullmsg.Substring(0, xn.InnerText.ToString().IndexOf(':')).ToCharArray()[0];///extract key char.
                                    mesg    = fullmsg.Substring(fullmsg.IndexOf(':') + 1);
                                    Metadata.Add(ch, mesg);
                                    xn = anagrid.SelectSingleNode("auxgrid/errm[" + erri + "]");
                                    erri++; //error index. next line.
                                }
                                xgrid.Metadata = Metadata;
                                /////// AUXGrid Footer /////

                                bool templatedDialog = false;
                                if (templatedDialog)
                                {
                                    Dictionary <char, string> Footer = new Dictionary <char, string>();

                                    erri = 2;
                                    xn   = anagrid.SelectSingleNode("auxgrid/footermsg[1]");
                                    while (xn != null)
                                    {
                                        /// err msg is like :-   "a:. Warning: ....
                                        fullmsg = xn.InnerText.ToString().Replace('"', ' ').Trim();
                                        ch      = fullmsg.Substring(0, xn.InnerText.ToString().IndexOf(':')).ToCharArray()[0];///extract key char.
                                        mesg    = fullmsg.Substring(fullmsg.IndexOf(':') + 1);
                                        Footer.Add(ch, mesg);
                                        xn = anagrid.SelectSingleNode("auxgrid/errm[" + erri + "]");
                                        erri++;     //error index. next line.
                                    }
                                    xgrid.FootNotes = Footer;
                                }
                                else
                                {
                                    //This works for non-templated dialogs
                                    xn = anagrid.SelectSingleNode("auxgrid/footermsg[1]");
                                    if (xn != null)
                                    {
                                        fullmsg             = xn.InnerText.ToString().Replace('"', ' ').Trim();
                                        xgrid.StarFootNotes = fullmsg;
                                    }
                                }



                                ////////////get index of <html> and </html> //////
                                start = mc[k].Index;
                                end   = mc2[k].Index;

                                //// create xmldoc loaind string from <html> to </html> ////
                                xd.LoadXml(oneAnalysis.Substring(start, end - start + 7));

                                html2flex(xd, c1fg);//create rows/cols/headers and populate
                                ///////////// find C1Flexgrid Generate it //////E/////
                                xgrid.Margin = new Thickness(10);
                                lst.Add(xgrid);
                            }
                            #endregion
                            break;
                        } //switch
                    }     //for each leave

                    allanalysis.Add(lst);
                }
                allSessions.Add(allanalysis);
            }//for session
            #endregion

            return(allSessions);
        }
コード例 #6
0
        private static void ExportFlexgrid(MigraDoc.DocumentObjectModel.Document Doc, string TblTitle, AUXGrid fgrid)
        {
            if ((fgrid) != null)
            {
                AUXGrid xgrid = fgrid;     //31Aug2012

                ////////// Printing Header //////////  <fgheader> means flexgrid header
                string      header  = xgrid.Header.Text;
                AUParagraph FGTitle = new AUParagraph();
                FGTitle.Text       = header;
                FGTitle.FontWeight = FontWeights.SemiBold;
                if (APAStyle)
                {
                    FGTitle.FontStyle = FontStyles.Italic;
                }

                MigraDoc.DocumentObjectModel.Paragraph PDFpara = BSky.ExportToPDF.ExportAUParagraph.ExportFormattedText(FGTitle.Text, FGTitle.FontWeight, FGTitle.FontSize, FGTitle.textcolor, FGTitle.FontStyle);     //FGTitle.ExportPDFParagraph();
                PDFpara.AddLineBreak();
                Doc.LastSection.Add(PDFpara.Clone());

                //////////////// Printing Errors ///////////
                if (xgrid.Metadata != null)    //// <errhd> means error heading
                {
                    // Error/Warning Title
                    AUParagraph ErrWarnTitle = new AUParagraph();
                    ErrWarnTitle.Text       = "Errors/Warnings: ";;
                    ErrWarnTitle.FontWeight = FontWeights.SemiBold;

                    MigraDoc.DocumentObjectModel.Paragraph PDFparaErrWarnTitle = BSky.ExportToPDF.ExportAUParagraph.ExportFormattedText(ErrWarnTitle.Text, ErrWarnTitle.FontWeight, ErrWarnTitle.FontSize, ErrWarnTitle.textcolor, ErrWarnTitle.FontStyle);     //ErrWarnTitle.ExportPDFParagraph();
                    PDFparaErrWarnTitle.AddLineBreak();
                    Doc.LastSection.Add(PDFparaErrWarnTitle.Clone());

                    // Error/Warning Messages
                    AUParagraph ErrWarnMsgPara = null;
                    foreach (KeyValuePair <char, string> keyval in xgrid.Metadata)
                    {
                        ErrWarnMsgPara      = new AUParagraph();
                        ErrWarnMsgPara.Text = keyval.Key.ToString() + ":" + keyval.Value;
                        MigraDoc.DocumentObjectModel.Paragraph PDFparaErrWarnMsg = BSky.ExportToPDF.ExportAUParagraph.ExportFormattedText(ErrWarnMsgPara.Text, ErrWarnMsgPara.FontWeight, ErrWarnMsgPara.FontSize, ErrWarnMsgPara.textcolor, ErrWarnMsgPara.FontStyle);     //ErrWarnMsgPara.ExportPDFParagraph();
                        PDFparaErrWarnMsg.AddLineBreak();
                        Doc.LastSection.Add(PDFparaErrWarnMsg.Clone());
                    }
                }

                //////// Printing  Grid ////////////

                AUGrid grid = xgrid.Grid;
                float  remainingpagesize = 0.0f;   //remaining page height
                float  currentTblHt      = 0.0f;
                float  PDFpageHeight     = Doc.DefaultPageSetup.PageHeight;
                BSky.ExportToPDF.ExportAUXGrid.APAStyle = APAStyle;
                List <MigraDoc.DocumentObjectModel.Tables.Table> TablePortions = BSky.ExportToPDF.ExportAUXGrid.ExportMultiHeaderFlexgridToPDF(PDFpageHeight, grid, strMaxTblCol, strMaxTblRow, strPDFfontsize);     //xgrid.ExportMultiHeaderFlexgridToPDF(PDFpageHeight);
                                                                                                                                                                                                                     // MigraDoc.DocumentObjectModel.Section sec = Doc.AddSection();

                foreach (MigraDoc.DocumentObjectModel.Tables.Table ptbl in TablePortions)
                {
                    if (ptbl == null)
                    {
                        continue;
                    }

                    //Add Partial Table ID (so that printouts can be arranged in proper order)
                    if (ptbl.Tag != null)
                    {
                        Doc.LastSection.AddParagraph(ptbl.Tag.ToString());
                    }

                    //add table part to doc
                    Doc.LastSection.Add(ptbl);     //table.Format.KeepWithNext = true;
                    //sec.AddParagraph();
                    Doc.LastSection.AddParagraph().AddLineBreak();
                }

                /////////////////Printing Footer  ///////////////
                string starfootnotes   = string.Empty;
                bool   templatedDialog = false;
                if (templatedDialog)
                {
                    //I think this works for templated dialogs
                    if (xgrid.FootNotes != null)
                    {
                        // Printing Foonotes Title
                        if (xgrid.FootNotes.Count > 0)
                        {
                            AUParagraph FooterTitle = new AUParagraph();
                            FooterTitle.Text       = "Footnotes: "; //Footnote Title
                            FooterTitle.FontWeight = FontWeights.SemiBold;
                            //FooterTitle.textcolor =
                            MigraDoc.DocumentObjectModel.Paragraph PDFparaFooterTitle = BSky.ExportToPDF.ExportAUParagraph.ExportFormattedText(FooterTitle.Text, FooterTitle.FontWeight, FooterTitle.FontSize, FooterTitle.textcolor, FooterTitle.FontStyle);     //FooterTitle.ExportPDFParagraph();
                            PDFparaFooterTitle.AddLineBreak();
                            Doc.LastSection.Add(PDFparaFooterTitle.Clone());
                        }
                        AUParagraph footnote = null;
                        foreach (KeyValuePair <char, string> keyval in xgrid.FootNotes)
                        {
                            footnote      = new AUParagraph();
                            footnote.Text = keyval.Key.ToString() + ":" + keyval.Value;
                            MigraDoc.DocumentObjectModel.Paragraph PDFparaFootnotesMsg = BSky.ExportToPDF.ExportAUParagraph.ExportFormattedText(footnote.Text, footnote.FontWeight, footnote.FontSize, footnote.textcolor, footnote.FontStyle);     //footnote.ExportPDFParagraph();
                            PDFparaFootnotesMsg.AddLineBreak();
                            Doc.LastSection.Add(PDFparaFootnotesMsg.Clone());
                        }
                    }
                }
                else     //This works for non-templated dialogs
                {
                    AUParagraph starfootnote = new AUParagraph();
                    starfootnote.Text     = xgrid.StarFootNotes;
                    starfootnote.FontSize = 9;                                                                                                                                                                                                                //table cell text(& R syntax) looks size 12. So I want it to be smaller than other text.

                    MigraDoc.DocumentObjectModel.Paragraph PDFparaStarFooterText = BSky.ExportToPDF.ExportAUParagraph.ExportFormattedText(starfootnote.Text, starfootnote.FontWeight, starfootnote.FontSize, starfootnote.textcolor, starfootnote.FontStyle); //FooterTitle.ExportPDFParagraph();
                    PDFparaStarFooterText.AddLineBreak();
                    Doc.LastSection.Add(PDFparaStarFooterText.Clone());
                }
            }
        }
コード例 #7
0
        public static void ExportFlexGridToPDF(string fullpathzipcsvhtmfilename, string TblTitle, AUXGrid fgrid)
        {
            int           imgnamecounter = 0;
            List <string> filelist       = new List <string>();
            bool          fileExists     = File.Exists(fullpathzipcsvhtmfilename);

            double left, top, right, bottom;

            GetPDFpageMargins(strPDFPageMargin, out left, out top, out right, out bottom);

            //Creating a PDF doc to which we will add PDFTables
            MigraDoc.DocumentObjectModel.Document     Doc = new MigraDoc.DocumentObjectModel.Document();
            MigraDoc.DocumentObjectModel.Tables.Table pdfTable;

            //Set Page margins from configuration
            Doc.DefaultPageSetup.LeftMargin   = MigraDoc.DocumentObjectModel.Unit.FromMillimeter(left);   //left margin
            Doc.DefaultPageSetup.TopMargin    = MigraDoc.DocumentObjectModel.Unit.FromMillimeter(top);    //top margin
            Doc.DefaultPageSetup.RightMargin  = MigraDoc.DocumentObjectModel.Unit.FromMillimeter(right);  //right margin
            Doc.DefaultPageSetup.BottomMargin = MigraDoc.DocumentObjectModel.Unit.FromMillimeter(bottom); //bottom margin

            Doc.AddSection();

            ExportFlexgrid(Doc, TblTitle, fgrid);

            ////rendering doc
            MigraDoc.Rendering.PdfDocumentRenderer docrender = new MigraDoc.Rendering.PdfDocumentRenderer(false);
            docrender.Document = Doc;
            docrender.RenderDocument();
            docrender.PdfDocument.Save(fullpathzipcsvhtmfilename);
        }
コード例 #8
0
        private static void ExportOutputPDF(CommandOutput output, MigraDoc.DocumentObjectModel.Document Doc, bool extratags, List <string> filelist, bool issessionout = false)//csv of excel
        {
            if (output.NameOfAnalysis == null)
            {
                output.NameOfAnalysis = string.Empty;
            }

            foreach (DependencyObject obj in output)
            {
                FrameworkElement element = obj as FrameworkElement;
                //31Aug2012 AUXGrid xgrid = element as AUXGrid;
                if ((element as AUParagraph) != null)
                {
                    AUParagraph aup = element as AUParagraph;

                    if (!aup.IsVisible)
                    {
                        continue;
                    }

                    if (aup.Text != null)                                                                                                                                                              ///// <aup> means AUParagraph
                    {
                        MigraDoc.DocumentObjectModel.Paragraph PDFpara = BSky.ExportToPDF.ExportAUParagraph.ExportFormattedText(aup.Text, aup.FontWeight, aup.FontSize, aup.textcolor, aup.FontStyle); //aup.ExportPDFParagraph();
                        PDFpara.AddLineBreak();
                        Doc.LastSection.Add(PDFpara.Clone());
                    }
                }
                else if ((element as AUXGrid) != null)
                {
                    AUXGrid xgrid = element as AUXGrid; //31Aug2012


                    if (!xgrid.IsVisible)
                    {
                        continue;
                    }
                    ////////// Printing Header //////////  <fgheader> means flexgrid header
                    string      header  = xgrid.Header.Text;
                    AUParagraph FGTitle = new AUParagraph();
                    FGTitle.Text       = header;
                    FGTitle.FontWeight = FontWeights.SemiBold;
                    if (APAStyle)
                    {
                        FGTitle.FontStyle = FontStyles.Italic;
                    }
                    //FGTitle.textcolor =
                    MigraDoc.DocumentObjectModel.Paragraph PDFpara = BSky.ExportToPDF.ExportAUParagraph.ExportFormattedText(FGTitle.Text, FGTitle.FontWeight, FGTitle.FontSize, FGTitle.textcolor, FGTitle.FontStyle); //FGTitle.ExportPDFParagraph();
                    PDFpara.AddLineBreak();
                    Doc.LastSection.Add(PDFpara.Clone());

                    //////////////// Printing Errors ///////////
                    if (xgrid.Metadata != null)//// <errhd> means error heading
                    {
                        // Error/Warning Title
                        AUParagraph ErrWarnTitle = new AUParagraph();
                        ErrWarnTitle.Text       = "Errors/Warnings: ";;
                        ErrWarnTitle.FontWeight = FontWeights.SemiBold;
                        //ErrWarnTitle.FontStyle = FontStyles.Normal;
                        //ErrWarnTitle.textcolor =
                        MigraDoc.DocumentObjectModel.Paragraph PDFparaErrWarnTitle = BSky.ExportToPDF.ExportAUParagraph.ExportFormattedText(ErrWarnTitle.Text, ErrWarnTitle.FontWeight, ErrWarnTitle.FontSize, ErrWarnTitle.textcolor, ErrWarnTitle.FontStyle); //ErrWarnTitle.ExportPDFParagraph();
                        PDFparaErrWarnTitle.AddLineBreak();
                        Doc.LastSection.Add(PDFparaErrWarnTitle.Clone());

                        // Error/Warning Messages
                        AUParagraph ErrWarnMsgPara = null;
                        foreach (KeyValuePair <char, string> keyval in xgrid.Metadata)
                        {
                            ErrWarnMsgPara      = new AUParagraph();
                            ErrWarnMsgPara.Text = keyval.Key.ToString() + ":" + keyval.Value;

                            MigraDoc.DocumentObjectModel.Paragraph PDFparaErrWarnMsg = BSky.ExportToPDF.ExportAUParagraph.ExportFormattedText(ErrWarnMsgPara.Text, ErrWarnMsgPara.FontWeight, ErrWarnMsgPara.FontSize, ErrWarnMsgPara.textcolor, ErrWarnMsgPara.FontStyle); //ErrWarnMsgPara.ExportPDFParagraph();
                            PDFparaErrWarnMsg.AddLineBreak();
                            Doc.LastSection.Add(PDFparaErrWarnMsg.Clone());
                        }
                    }

                    //////// Printing  Grid ////////////
                    AUGrid grid = xgrid.Grid;
                    float  remainingpagesize = 0.0f;//remaining page height
                    float  currentTblHt      = 0.0f;
                    float  PDFpageHeight     = Doc.DefaultPageSetup.PageHeight;

                    BSky.ExportToPDF.ExportAUXGrid.APAStyle = APAStyle;
                    List <MigraDoc.DocumentObjectModel.Tables.Table> TablePortions = BSky.ExportToPDF.ExportAUXGrid.ExportMultiHeaderFlexgridToPDF(PDFpageHeight, grid, strMaxTblCol, strMaxTblRow, strPDFfontsize);  //xgrid.ExportMultiHeaderFlexgridToPDF(PDFpageHeight);

                    foreach (MigraDoc.DocumentObjectModel.Tables.Table ptbl in TablePortions)
                    {
                        if (ptbl == null)
                        {
                            continue;
                        }

                        //Add Partial Table ID (so that printouts can be arranged in proper order)
                        if (ptbl.Tag != null)
                        {
                            Doc.LastSection.AddParagraph(ptbl.Tag.ToString());
                        }

                        //add table part to doc
                        Doc.LastSection.Add(ptbl);

                        Doc.LastSection.AddParagraph().AddLineBreak();
                    }

                    /////////////////Printing Footer  ///////////////
                    string starfootnotes   = string.Empty;
                    bool   templatedDialog = false;
                    if (templatedDialog)
                    {
                        //I think this works for templated dialogs
                        if (xgrid.FootNotes != null)
                        {
                            // Printing Foonotes Title
                            if (xgrid.FootNotes.Count > 0)
                            {
                                AUParagraph FooterTitle = new AUParagraph();
                                FooterTitle.Text       = "Footnotes: ";                                                                                                                                                                                           //Footnote Title
                                FooterTitle.FontWeight = FontWeights.SemiBold;
                                MigraDoc.DocumentObjectModel.Paragraph PDFparaFooterTitle = BSky.ExportToPDF.ExportAUParagraph.ExportFormattedText(FooterTitle.Text, FooterTitle.FontWeight, FooterTitle.FontSize, FooterTitle.textcolor, FooterTitle.FontStyle); //FooterTitle.ExportPDFParagraph();
                                PDFparaFooterTitle.AddLineBreak();
                                Doc.LastSection.Add(PDFparaFooterTitle.Clone());
                            }
                            AUParagraph footnote = null;
                            foreach (KeyValuePair <char, string> keyval in xgrid.FootNotes)
                            {
                                footnote      = new AUParagraph();
                                footnote.Text = keyval.Key.ToString() + ":" + keyval.Value;

                                MigraDoc.DocumentObjectModel.Paragraph PDFparaFootnotesMsg = BSky.ExportToPDF.ExportAUParagraph.ExportFormattedText(footnote.Text, footnote.FontWeight, footnote.FontSize, footnote.textcolor, footnote.FontStyle); //footnote.ExportPDFParagraph();
                                PDFparaFootnotesMsg.AddLineBreak();
                                Doc.LastSection.Add(PDFparaFootnotesMsg.Clone());
                            }
                        }
                    }
                    else //This works for non-templated dialogs
                    {
                        AUParagraph starfootnote = new AUParagraph();
                        starfootnote.Text     = xgrid.StarFootNotes;
                        starfootnote.FontSize = 9;                                                                                                                                                                                                                //table cell text(& R syntax) looks size 12. So I want it to be smaller than other text.

                        MigraDoc.DocumentObjectModel.Paragraph PDFparaStarFooterText = BSky.ExportToPDF.ExportAUParagraph.ExportFormattedText(starfootnote.Text, starfootnote.FontWeight, starfootnote.FontSize, starfootnote.textcolor, starfootnote.FontStyle); //FooterTitle.ExportPDFParagraph();
                        PDFparaStarFooterText.AddLineBreak();
                        Doc.LastSection.Add(PDFparaStarFooterText.Clone());
                    }
                }
                else if ((element as BSkyGraphicControl) != null)//Graphics 31Aug2012
                {
                    BSkyGraphicControl bsgc = element as BSkyGraphicControl;

                    //To only Export Graphics those are visible (checked in the left navigation tree, in output window)
                    if (!bsgc.IsVisible)
                    {
                        continue;
                    }
                    //Create image filename
                    string imgfilename = "PDF" + bsgc.ImageName + ".png";

                    string synedtimg = Path.Combine(tempDir, imgfilename);

                    //Saving Image separately
                    BSkyGraphicControlToImageFile(bsgc, synedtimg);                                                          //not imgfilename

                    MigraDoc.DocumentObjectModel.Paragraph imgPara = BSky.ExportToPDF.ExportGraphics.ExportToPDF(synedtimg); //bsgc.ExportToPDF(synedtimg);// not imgfilename

                    //finally add image to the PDF doc.
                    Doc.LastSection.Add(imgPara);
                }
                else if ((element as BSkyNotes) != null) // Notes Control 05Nov2012.
                {
                    BSkyNotes bsn = element as BSkyNotes;
                    //To only Export Notes those are visible (checked in the left navigation tree, in output window)
                    if (!bsn.IsVisible)
                    {
                        continue;
                    }

                    //Put a title
                    AUParagraph NotesTitle = new AUParagraph();
                    NotesTitle.Text       = "Notes"; //Footnote Title
                    NotesTitle.FontWeight = FontWeights.SemiBold;

                    MigraDoc.DocumentObjectModel.Paragraph PDFparaNotesTitle = BSky.ExportToPDF.ExportAUParagraph.ExportFormattedText(NotesTitle.Text, NotesTitle.FontWeight, NotesTitle.FontSize, NotesTitle.textcolor, NotesTitle.FontStyle); //NotesTitle.ExportPDFParagraph();
                    PDFparaNotesTitle.AddLineBreak();
                    Doc.LastSection.Add(PDFparaNotesTitle.Clone());

                    //Now Notes data in PdfPTable
                    MigraDoc.DocumentObjectModel.Tables.Table notestable = BSky.ExportToPDF.ExportNotes.ExportToPDF(bsn.NotesData, strPDFfontsize);// bsn.ExportToPDF();
                    Doc.LastSection.Add(notestable);
                    Doc.LastSection.AddParagraph().AddLineBreak();
                }
            }

            ////for export to excel////E
        }
        //05Sept2019 exact copy from OutputWindow.xaml. Not Sure if in future they will differ
        private Image GetImage(IAUControl ctrl)
        {
            Uri     imgUri      = null;
            string  controlType = ctrl.ControlType;
            string  tooltip     = string.Empty;
            AUXGrid _aux        = ctrl as AUXGrid;

            if (_aux != null)
            {
                controlType = "Table";
            }
            switch (controlType)
            {
            case "Title":
                imgUri  = new Uri("/Images/tree-title.png", UriKind.Relative);
                tooltip = "Title";
                break;

            case "Notes":
                imgUri  = new Uri("/Images/tree-notes.png", UriKind.Relative);
                tooltip = "Notes";
                break;

            case "Dataset Name":
                imgUri  = new Uri("/Images/tree-dataset.png", UriKind.Relative);
                tooltip = "Dataset Name";
                break;

            case "Graphic":
                imgUri  = new Uri("/Images/tree-graphs.png", UriKind.Relative);
                tooltip = "Plot";
                break;

            case "Error/Warnings":
                imgUri  = new Uri("/Images/tree-errorwarnings.png", UriKind.Relative);
                tooltip = "Error/Warnings";
                break;

            case "Command":
                imgUri  = new Uri("/Images/tree-syntax.png", UriKind.Relative);
                tooltip = "R Syntax";
                break;

            case "Table":
                imgUri  = new Uri("/Images/tree-tables.png", UriKind.Relative);
                tooltip = "Output Table";
                break;

            case "Toolbar":
                imgUri  = new Uri("/Images/tree-toolbar.png", UriKind.Relative);
                tooltip = "Analysis toolbar";
                break;

            default:
                imgUri  = new Uri("/Images/tree-info.png", UriKind.Relative);
                tooltip = "Info";
                break;
            }
            //Uri imgUri = new Uri("/Images/input.png", UriKind.Relative);
            Image img = new Image(); img.Source = new BitmapImage(imgUri);

            img.ToolTip = tooltip;
            return(img);
        }
        //05Sept2019 exact copy from OutputWindow.xaml. Not Sure if in future they will differ
        private void PopulateTree(CommandOutput output, bool synedtsession = false)
        {
            string treenocharscount = confService.GetConfigValueForKey("nooftreechars");//16Dec2013
            int    openbracketindex, max;
            string analysisName = string.Empty;


            if (output.NameOfAnalysis != null && output.NameOfAnalysis.Trim().Length > 0) // For shortening left tree parent node name.
            {
                openbracketindex = output.NameOfAnalysis.Contains("(") ? output.NameOfAnalysis.IndexOf('(') : output.NameOfAnalysis.Length;
                //if (output.NameOfAnalysis.Trim().Length > 15)
                //    max = 15;
                //else
                //    max = output.NameOfAnalysis.Trim().Length;
                analysisName = output.NameOfAnalysis.Substring(0, openbracketindex); //18Nov2013 (0, max);
                if (output.NameOfAnalysis.Contains("BSkyFormat("))                   //it is output
                {
                    analysisName = "BSkyFormat-Output";
                }
            }
            else
            {
                analysisName = "Output";
            }

            List <string> Headers  = new List <string>();
            TreeViewItem  MainItem = new TreeViewItem();

            if (!synedtsession)         ///\if (MainItem.Header.ToString().Contains("Execution Started"))
            {
                ///\MainItem.Background = Brushes.LawnGreen;
                MainItem.Header     = analysisName;
                MainItem.IsExpanded = true;

                if (MainItem.Header.ToString().Contains("Execution Started"))
                {
                    MainItem.Background = Brushes.LawnGreen;
                }
                if (MainItem.Header.ToString().Contains("Execution Ended"))
                {
                    MainItem.Background = Brushes.SkyBlue;
                }
                //bool setFocus = true;
            }
            ///\if (MainItem.Header.ToString().Contains("Execution Ended"))
            ///\MainItem.Background = Brushes.SkyBlue;
            //bool setFocus = true;

            foreach (DependencyObject obj in output)
            {
                IAUControl control = obj as IAUControl;
                if (control == null)
                {
                    continue;                 //for non IAUControl
                }
                Headers.Add(control.ControlType);
                TreeViewItem tvi = new TreeViewItem();

                ////Setting common Excel sheet/////
                AUParagraph _aup = obj as AUParagraph;
                if (_aup != null)
                {
                    _aup.MSExcelObj = _MSExcelObj;
                }
                BSkyNotes _note = obj as BSkyNotes;
                if (_note != null)
                {
                    _note.MSExcelObj = _MSExcelObj;
                }
                AUXGrid _aux = obj as AUXGrid;
                if (_aux != null)
                {
                    _aux.MSExcelObj = _MSExcelObj;
                }

                ///Toolbar delete icon saves reference of the analysis output controls ///
                BSkyOutputOptionsToolbar toolbar = obj as BSkyOutputOptionsToolbar;
                if (toolbar != null)
                {
                    toolbar.AnalysisOutput = output;
                }
                ////23Oct2013. for show hide leaf nodes based on checkbox //
                StackPanel treenodesp = new StackPanel();
                treenodesp.Orientation = Orientation.Horizontal;

                int  treenodecharlen;//for config char count
                bool result = Int32.TryParse(treenocharscount, out treenodecharlen);
                if (!result)
                {
                    treenodecharlen = 20;
                }

                TextBlock nodetb = new TextBlock();
                nodetb.Tag = control;

                string nodetext = control.ControlType;; // string.Empty;
                if (_aup != null && _aup.ControlType.Equals("Command"))
                {
                    nodetext = _aup.Text;
                }
                else
                {
                    nodetext = control.ControlType;
                }

                //maxlen is need to avoid indexoutofbounds when finding Substring()
                int maxlen = nodetext.Length < treenodecharlen ? nodetext.Length : (treenodecharlen);
                //if (maxlen > 20) maxlen = 20; //this could be used for putting restriction for max. length

                string dots = maxlen < nodetext.Length ? " ..." : "";//add dots only if text are getting trimmed.

                //Show node text with or without dots based on condition.
                if (maxlen >= nodetext.Length) //show full length
                {
                    nodetb.Text = nodetext.Replace("\n", " ").Replace("\r", " ");
                }
                else
                {
                    nodetb.Text = nodetext.Substring(0, maxlen).Replace("\n", " ").Replace("\r", " ") + dots;
                }

                nodetb.Margin     = new Thickness(1, 0, 0, 2);
                nodetb.GotFocus  += new RoutedEventHandler(nodetb_GotFocus);
                nodetb.LostFocus += new RoutedEventHandler(nodetb_LostFocus);
                nodetb.ToolTip    = BSky.GlobalResources.Properties.UICtrlResources.NavTreeNodeTBTooltip;

                CheckBox cbleaf = new CheckBox();
                cbleaf.Content = "";// control.ControlType;
                cbleaf.Tag     = control;
                //cbleaf.Click += new RoutedEventHandler(cbleaf_Checked);
                cbleaf.Checked   += new RoutedEventHandler(cbleaf_Checked);
                cbleaf.Unchecked += new RoutedEventHandler(cbleaf_Checked);
                //cbleaf.LostFocus +=new RoutedEventHandler(cbleaf_LostFocus);
                //cbleaf.GotFocus +=new RoutedEventHandler(cbleaf_GotFocus);
                cbleaf.Visibility = System.Windows.Visibility.Visible;///unhide to see it on output window.
                cbleaf.ToolTip    = BSky.GlobalResources.Properties.UICtrlResources.NavTreeCheckboxTooltip;

                ///if (!(control is BSkyNotes) && !((control is AUParagraph) && (control.ControlType.Equals("Header"))))
                if (isRunFromSyntaxEditor)
                {
                    //show/hide BSkyNote in the output if templated dialog syntax is run from the command editor
                    if (_note != null)
                    {
                        control.BSkyControlVisibility = Visibility.Collapsed;
                    }
                    else
                    {
                        control.BSkyControlVisibility = Visibility.Visible;
                    }
                }
                cbleaf.IsChecked = (control.BSkyControlVisibility == Visibility.Visible) ? true : false;

                #region putting icon in the tree
                Image img = GetImage(control);
                img.Margin = new Thickness(0, 0, 2, 2);
                #endregion

                treenodesp.Children.Add(cbleaf);
                treenodesp.Children.Add(img);
                treenodesp.Children.Add(nodetb);

                tvi.Header = treenodesp;// cbleaf;//.Substring(0,openbracketindex);/// Leaf Node Text
                tvi.Tag    = control;
                (control as FrameworkElement).Tag = tvi;

                ////following lines does not show any effect ///
                //FrameworkElement fe = obj as FrameworkElement;
                //fe.GotFocus += new RoutedEventHandler(delegate(object sender, RoutedEventArgs e) { tvi.IsSelected = true; /*Bold or background */ });

                tvi.Selected   += new RoutedEventHandler(tvi_Selected);
                tvi.Unselected += new RoutedEventHandler(tvi_Unselected);//29Jan2013

                ///\MainItem.Items.Add(tvi);
                if (synedtsession)                                                                   //analysis run
                {
                    if (control.ControlType.Equals("Title") || control.ControlType.Equals("Header")) // 'Header' for backward compatibilty
                    {
                        SessionItem.Tag = control;                                                   //SessionItem.Header= R-Session and SessionItem.Count==0
                        AddEventsAndContextMenu(SessionItem);
                    }
                    SessionItem.Items.Add(tvi);
                }
                else //dataset opened
                {
                    if (control.ControlType.Equals("Title") || control.ControlType.Equals("Header"))// 'Header' for backward compatibilty
                    {
                        MainItem.Tag = control;
                        AddEventsAndContextMenu(MainItem);
                    }
                    MainItem.Items.Add(tvi);
                }

                //if (setFocus) { fe.Focus();tvi.IsSelected = true; setFocus = false; }//setting focus to start time for each RUN
            }

            /*
             * if (synedtsession)
             *  SessionItem.Items.Add(MainItem);
             * else
             *  NavTree.Items.Add(MainItem);
             */
            if (!synedtsession)
            {
                NavTree.Items.Add(MainItem);
            }

            //follwing 'if' block could be commented because BringLastLeaf is doing its job. Test, if not scrolling to latest output then uncomment.
            //if (MainItem.Items.Count > 0)//if analysis has something //17Jan2013
            //{
            //    ((MainItem.Items.GetItemAt(0) as TreeViewItem).Tag as FrameworkElement).BringIntoView(); //bring to focus, the latest output.
            //}

            //if (NavTree!=null && NavTree.Items.Count > 0)//11Dec2014 scroll to bottom if there are items present
            //{
            //    int itcount = NavTree.Items.Count;
            //    (NavTree.Items.GetItemAt(itcount - 1) as TreeViewItem).BringIntoView();
            //}
        }