示例#1
0
        public static Size DrawFixedWidthHelpTip(Control control, Graphics graphics, Font font, string countMessage, string basicDescription, string documentation)
        {
            if (IsVisibleText(countMessage) || IsVisibleText(basicDescription) || IsVisibleText(documentation))
            {
                // Create all the TipSection objects.
                CountTipText countMessageTip = new CountTipText(graphics, font, countMessage);

                TipSpacer countSpacer = new TipSpacer(graphics, new SizeF(IsVisibleText(countMessage) ? 4 : 0, 0));

                TipText descriptionTip = new TipText(graphics, font, basicDescription);

                TipSpacer docSpacer = new TipSpacer(graphics, new SizeF(0, IsVisibleText(documentation) ? 4 : 0));

                TipText docTip = new TipText(graphics, font, documentation);

                // Now put them together.
                TipSplitter descSplitter = new TipSplitter(graphics, false, descriptionTip, docSpacer);

                TipSplitter mainSplitter = new TipSplitter(graphics, true, countMessageTip, countSpacer, descSplitter);

                TipSplitter mainSplitter2 = new TipSplitter(graphics, false, mainSplitter, docTip);

                // Show it.
                Size size = TipPainter.DrawFixedWidthTip(control, graphics, mainSplitter2);
                DrawingRectangle1 = countMessageTip.DrawingRectangle1;
                DrawingRectangle2 = countMessageTip.DrawingRectangle2;
                return(size);
            }

            return(Size.Empty);
        }
        public static Size DrawTip(Control control, Graphics graphics, TipSection tipData)
        {
            Size       empty        = Size.Empty;
            SizeF      requiredSize = SizeF.Empty;
            PointF     screen       = control.PointToScreen(Point.Empty);
            RectangleF workingArea  = TipPainter.GetWorkingArea(control);
            SizeF      sizeF        = new SizeF(workingArea.Right - screen.X - 4f, workingArea.Bottom - screen.Y - 2f);

            if (sizeF.Width > 0f && sizeF.Height > 0f)
            {
                graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
                tipData.SetMaximumSize(sizeF);
                requiredSize = tipData.GetRequiredSize();
                tipData.SetAllocatedSize(requiredSize);
                requiredSize += new SizeF(4f, 2f);
                empty         = Size.Ceiling(requiredSize);
            }
            if (control.ClientSize != empty)
            {
                control.ClientSize = empty;
            }
            if (empty != Size.Empty)
            {
                Rectangle  rectangle  = new Rectangle(Point.Empty, empty - new Size(1, 1));
                RectangleF rectangleF = new RectangleF(2f, 1f, requiredSize.Width - 4f, requiredSize.Height - 2f);
                graphics.DrawRectangle(SystemPens.WindowFrame, rectangle);
                tipData.Draw(new PointF(2f, 1f));
            }
            return(empty);
        }
        public static Size DrawHelpTip(Control control,
                                       Graphics graphics, Font font,
                                       string countMessage,
                                       string basicDescription,
                                       string documentation)
        {
            if (IsVisibleText(countMessage) ||
                IsVisibleText(basicDescription) ||
                IsVisibleText(documentation))
            {
                // Create all the TipSection objects.
                CountTipText countMessageTip = new CountTipText(graphics, font, countMessage);

                TipSpacer countSpacer = new TipSpacer(graphics, new SizeF(IsVisibleText(countMessage) ? 4 : 0, 0));

                Font boldfont = font;
                if (boldTile && documentation != null)
                {
                    boldfont = new Font(font.FontFamily, 9.75f, FontStyle.Bold);
                }

                TipText descriptionTip = new TipText(graphics, boldfont, basicDescription);

                if (boldTile && documentation != null)
                {
                    descriptionTip.Color = (TipPainter.darkScheme) ? Color.WhiteSmoke : Color.FromArgb(50, 50, 50);
                }

                TipSpacer docSpacer = new TipSpacer(graphics, new SizeF(0, IsVisibleText(documentation) ? 4 : 0));

                TipText docTip = new TipText(graphics, font, documentation);

                // Now put them together.
                TipSplitter descSplitter = new TipSplitter(graphics, false,
                                                           descriptionTip,
                                                           docSpacer
                                                           );

                TipSplitter mainSplitter = new TipSplitter(graphics, true,
                                                           countMessageTip,
                                                           countSpacer,
                                                           descSplitter);

                TipSplitter mainSplitter2 = new TipSplitter(graphics, false,
                                                            mainSplitter,
                                                            docTip);

                // Show it.
                Size size = TipPainter.DrawTip(control, graphics, mainSplitter2);
                DrawingRectangle1 = countMessageTip.DrawingRectangle1;
                DrawingRectangle2 = countMessageTip.DrawingRectangle2;
                return(size);
            }
            return(Size.Empty);
        }
示例#4
0
        public static Size DrawFixedWidthHelpTip(
            Control control,
            Graphics graphics, Font font,
            string countMessage,
            string basicDescription,
            string documentation)
        {
            if (!string.IsNullOrEmpty(countMessage) ||
                !string.IsNullOrEmpty(basicDescription) ||
                !string.IsNullOrEmpty(documentation))
            {
                // Create all the TipSection objects.
                var countMessageTip = new CountTipText(graphics, font, countMessage);

                var countSpacer = new TipSpacer(graphics, new SizeF(!string.IsNullOrEmpty(countMessage) ? 4 : 0, height: 0));

                var descriptionTip = new TipText(graphics, font, basicDescription);

                var docSpacer = new TipSpacer(graphics, new SizeF(width: 0, !string.IsNullOrEmpty(documentation) ? 4 : 0));

                var docTip = new TipText(graphics, font, documentation);

                // Now put them together.
                var descSplitter = new TipSplitter(
                    graphics, horizontal: false,
                    descriptionTip,
                    docSpacer
                    );

                var mainSplitter = new TipSplitter(
                    graphics, horizontal: true,
                    countMessageTip,
                    countSpacer,
                    descSplitter);

                var mainSplitter2 = new TipSplitter(
                    graphics, horizontal: false,
                    mainSplitter,
                    docTip);

                // Show it.
                var size = TipPainter.DrawFixedWidthTip(control, graphics, mainSplitter2);
                DrawingRectangle1 = countMessageTip.DrawingRectangle1;
                DrawingRectangle2 = countMessageTip.DrawingRectangle2;
                return(size);
            }

            return(Size.Empty);
        }
示例#5
0
        public static Size DrawHelpTip(Control control, Graphics graphics, Font font, string countMessage, string basicDescription, string documentation)
        {
            object obj;
            object obj1;

            if (!TipPainterTools.IsVisibleText(countMessage) && !TipPainterTools.IsVisibleText(basicDescription) && !TipPainterTools.IsVisibleText(documentation))
            {
                return(Size.Empty);
            }
            CountTipText countTipText = new CountTipText(graphics, font, countMessage);
            Graphics     graphic      = graphics;

            if (TipPainterTools.IsVisibleText(countMessage))
            {
                obj = 4;
            }
            else
            {
                obj = null;
            }
            TipSpacer tipSpacer = new TipSpacer(graphic, new SizeF((float)obj, 0f));
            TipText   tipText   = new TipText(graphics, font, basicDescription);
            Graphics  graphic1  = graphics;

            if (TipPainterTools.IsVisibleText(documentation))
            {
                obj1 = 4;
            }
            else
            {
                obj1 = null;
            }
            TipSpacer tipSpacer1 = new TipSpacer(graphic1, new SizeF(0f, (float)obj1));
            TipText   tipText1   = new TipText(graphics, font, documentation);

            TipSection[] tipSectionArray = new TipSection[] { tipText, tipSpacer1 };
            TipSplitter  tipSplitter     = new TipSplitter(graphics, false, tipSectionArray);

            TipSection[] tipSectionArray1 = new TipSection[] { countTipText, tipSpacer, tipSplitter };
            TipSplitter  tipSplitter1     = new TipSplitter(graphics, true, tipSectionArray1);

            TipSection[] tipSectionArray2 = new TipSection[] { tipSplitter1, tipText1 };
            TipSplitter  tipSplitter2     = new TipSplitter(graphics, false, tipSectionArray2);
            Size         size             = TipPainter.DrawTip(control, graphics, tipSplitter2);

            TipPainterTools.DrawingRectangle1 = countTipText.DrawingRectangle1;
            TipPainterTools.DrawingRectangle2 = countTipText.DrawingRectangle2;
            return(size);
        }
        public static Size GetLeftHandSideTipSize(Control control, Graphics graphics, TipSection tipData, Point p)
        {
            Size       empty        = Size.Empty;
            SizeF      requiredSize = SizeF.Empty;
            RectangleF workingArea  = TipPainter.GetWorkingArea(control);
            PointF     pointF       = p;
            SizeF      sizeF        = new SizeF(pointF.X - 4f, workingArea.Bottom - pointF.Y - 2f);

            if (sizeF.Width > 0f && sizeF.Height > 0f)
            {
                graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
                tipData.SetMaximumSize(sizeF);
                requiredSize = tipData.GetRequiredSize();
                tipData.SetAllocatedSize(requiredSize);
                requiredSize += new SizeF(4f, 2f);
                empty         = Size.Ceiling(requiredSize);
            }
            return(empty);
        }
        public static Size GetTipSize(Control control, Graphics graphics, TipSection tipData)
        {
            Size       empty        = Size.Empty;
            SizeF      requiredSize = SizeF.Empty;
            RectangleF workingArea  = TipPainter.GetWorkingArea(control);
            PointF     screen       = control.PointToScreen(Point.Empty);
            SizeF      sizeF        = new SizeF(workingArea.Right - screen.X - 4f, workingArea.Bottom - screen.Y - 2f);

            if (sizeF.Width > 0f && sizeF.Height > 0f)
            {
                graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
                tipData.SetMaximumSize(sizeF);
                requiredSize = tipData.GetRequiredSize();
                tipData.SetAllocatedSize(requiredSize);
                requiredSize += new SizeF(4f, 2f);
                empty         = Size.Ceiling(requiredSize);
            }
            if (control.ClientSize != empty)
            {
                control.ClientSize = empty;
            }
            return(empty);
        }
        public static Size DrawHelpTip(Control control,
                                       Graphics graphics, Font font,
                                       string countMessage,
                                       string basicDescription,
                                       string documentation,
                                       int beg_bold, int bold_len, int param_num, bool addit_info)
        {
            if (IsVisibleText(countMessage) ||
                IsVisibleText(basicDescription) ||
                IsVisibleText(documentation))
            {
                // Create all the TipSection objects.
                CountTipText countMessageTip = new CountTipText(graphics, font, countMessage);

                TipSpacer countSpacer = new TipSpacer(graphics, new SizeF(IsVisibleText(countMessage) ? 4 : 0, 0));

                TipText descriptionTip = new TipText(graphics, font, basicDescription);
                descriptionTip.insight_wnd = control is ICSharpCode.TextEditor.Gui.InsightWindow.PABCNETInsightWindow;
                descriptionTip.beg_bold    = beg_bold;
                descriptionTip.len_bold    = bold_len;
                TipText descriptionTip1 = new TipText(graphics, font, basicDescription.Substring(0, beg_bold));
                TipText descriptionTip2 = new TipText(graphics, new Font(font, FontStyle.Bold), basicDescription.Substring(beg_bold, bold_len));
                TipText descriptionTip3 = new TipText(graphics, font, basicDescription.Substring(beg_bold + bold_len));
                descriptionTip.desc1 = descriptionTip1;
                descriptionTip.desc2 = descriptionTip2;
                descriptionTip.desc3 = descriptionTip3;
                TipSpacer         docSpacer = new TipSpacer(graphics, new SizeF(0, IsVisibleText(documentation) ? 4 : 0));
                List <TipSection> sections  = new List <TipSection>();
                if (documentation != null)
                {
                    try
                    {
                        int     params_ind          = documentation.IndexOf("<params>");
                        TipText paramsTextTipHeader = null;
                        TipText paramsTextTip       = null;
                        if (params_ind != -1 && addit_info)
                        {
                            paramsTextTipHeader         = new TipText(graphics, new Font(font, FontStyle.Bold), PascalABCCompiler.StringResources.Get("CODE_COMPLETION_PARAMETERS"));
                            paramsTextTipHeader.is_head = true;
                            int    end_param = documentation.IndexOf("<returns>", params_ind);
                            string params_text;
                            if (end_param == -1)
                            {
                                params_text = documentation.Substring(params_ind + 8).Trim(' ', '\n', '\r', '\t');
                                //paramsTextTip = new TipText(graphics,font,params_text);
                            }
                            else
                            {
                                params_text = documentation.Substring(params_ind + 8, end_param - params_ind - 8).Trim(' ', '\n', '\r', '\t');
                                //paramsTextTip = new TipText(graphics,font,documentation.Substring(params_ind+8,end_param-params_ind-8).Trim(' ','\n','\r','\t'));
                            }
                            List <string> prms_list = new List <string>();
                            int           ind       = params_text.IndexOf("<param>", 0);
                            while (ind != -1)
                            {
                                int end_ind = params_text.IndexOf("</param>", ind + 1);
                                prms_list.Add(params_text.Substring(ind + 7, end_ind - ind - 7).Trim(' ', '\n', '\t', '\r'));
                                ind = params_text.IndexOf("<param>", end_ind);
                                if (ind != -1)
                                {
                                    if (ind - end_ind - 7 > 0)
                                    {
                                        prms_list.Add(params_text.Substring(end_ind + 8, ind - end_ind - 8).Trim(' ', '\n', '\t', '\r'));
                                    }
                                    else
                                    {
                                        prms_list.Add("");
                                    }
                                }
                                else
                                {
                                    prms_list.Add(params_text.Substring(end_ind + 8).Trim(' ', '\n', '\t', '\r'));
                                }
                            }

                            List <TipSection> prm_sections = new List <TipSection>();
                            int i = 0;
                            while (i < prms_list.Count)
                            {
                                TipText prm_name_sect = new TipText(graphics, font, prms_list[i]);
                                prm_name_sect.param_name = true;
                                TipText desc_param_sect = new TipText(graphics, font, prms_list[i + 1]);
                                desc_param_sect.need_tab   = true;
                                desc_param_sect.param_desc = true;
                                //TipSplitter spltr = new TipSplitter(graphics,true,prm_name_sect,desc_param_sect);
                                if (!string.IsNullOrEmpty(prms_list[i + 1]))
                                {
                                    prm_sections.Add(prm_name_sect);
                                    prm_sections.Add(desc_param_sect);
                                }
                                i += 2;
                            }
                            if (prm_sections.Count > 0)
                            {
                                sections.Add(new TipText(graphics, new Font(font.FontFamily, 3), " "));
                                sections.Add(paramsTextTipHeader);
                                sections.AddRange(prm_sections);
                            }
                        }
                        int return_ind = documentation.IndexOf("<returns>");

                        /*TipText returnTextTipHeader = null;
                         * TipText returnTextTip = null;
                         * if (return_ind != -1 && addit_info)
                         * {
                         *  returnTextTipHeader = new TipText(graphics,new Font(font, FontStyle.Bold),PascalABCCompiler.StringResources.Get("CODE_COMPLETION_RETURN"));
                         *  returnTextTipHeader.is_head = true;
                         *  int end_return = documentation.IndexOf("<params>",return_ind);
                         *  string return_text;
                         *  if (end_return == -1)
                         *      return_text = documentation.Substring(return_ind+9).Trim(' ','\n','\r','\t');
                         *  else
                         *      return_text = documentation.Substring(return_ind+9,end_return-return_ind-9).Trim(' ','\n','\r','\t');
                         *
                         *  if (!string.IsNullOrEmpty(return_text))
                         *  {
                         *      returnTextTip = new TipText(graphics,font,return_text);
                         *      sections.Add(new TipText(graphics,new Font(font.FontFamily,3)," "));
                         *      sections.Add(returnTextTipHeader);
                         *      sections.Add(returnTextTip);
                         *      returnTextTip.need_tab = true;
                         *  }
                         * }*/
                        if (params_ind != -1 && return_ind != -1)
                        {
                            documentation = documentation.Substring(0, Math.Min(params_ind, return_ind)).Trim(' ', '\n', '\t', '\r');
                        }
                        else
                        if (params_ind != -1)
                        {
                            documentation = documentation.Substring(0, params_ind).Trim(' ', '\n', '\t', '\r');
                        }
                        else
                        if (return_ind != -1)
                        {
                            documentation = documentation.Substring(0, return_ind).Trim(' ', '\n', '\t', '\r');
                        }
                    }
                    catch
                    {
                    }
                }
                TipText docTip = new TipText(graphics, font, documentation);
                //docTip.is_doc = true;
                docTip.need_tab = true;
                sections.Insert(0, docTip);
                if (!string.IsNullOrEmpty(documentation))
                {
                    TipText descr_head = new TipText(graphics, new Font(font, FontStyle.Bold), PascalABCCompiler.StringResources.Get("CODE_COMPLETION_DESCRIPTION"));
                    descr_head.is_head = true;
                    sections.Insert(0, descr_head);
                    sections.Insert(0, new TipText(graphics, new Font(font.FontFamily, 1), " "));
                }
                TipSplitter descSplitter = new TipSplitter(graphics, true,
                                                           descriptionTip,
                                                           docSpacer
                                                           );
                // Now put them together.

                /*TipSplitter descSplitter = new TipSplitter(graphics,true,
                 *                                         descriptionTip1,
                 *                                         descriptionTip2,
                 *                                         descriptionTip3,
                 *                                         docSpacer
                 *                                         );*/
                descSplitter.is_desc = true;

                /*TipSplitter descSplitter1 = new TipSplitter(graphics, false,
                 *                                         //descriptionTip,
                 *                                         descriptionTip1
                 *                                         );
                 *
                 * TipSplitter descSplitter2 = new TipSplitter(graphics, false,
                 *                                         //descriptionTip,
                 *                                         descriptionTip2
                 *                                         );
                 *
                 * TipSplitter descSplitter3 = new TipSplitter(graphics, false,
                 *                                         //descriptionTip,
                 *                                         descriptionTip3,
                 *                                         docSpacer
                 *                                         );*/

                TipSplitter mainSplitter = new TipSplitter(graphics, true,
                                                           countMessageTip,
                                                           countSpacer,
                                                           descSplitter);

                sections.Insert(0, mainSplitter);
                TipSplitter mainSplitter2 = new TipSplitter(graphics, false,
                                                            sections.ToArray());
                // Show it.
                Size size = TipPainter.DrawTip(control, graphics, mainSplitter2);
                DrawingRectangle1 = countMessageTip.DrawingRectangle1;
                DrawingRectangle2 = countMessageTip.DrawingRectangle2;
                return(size);
            }
            return(Size.Empty);
        }
 public static Size DrawTip(Control control, Graphics graphics, Font font, string description)
 {
     return(TipPainter.DrawTip(control, graphics, new TipText(graphics, font, description)));
 }