Exemple #1
0
 protected override GH_GetterResult Prompt_Singular(ref Types.Hu_Font value)
 {
     System.Drawing.Font Font = GH_FontPicker.ShowFontPickerWindow(GH_FontServer.Standard);
     if (Font == null)
     {
         return(GH_GetterResult.cancel);
     }
     value = new Hu_Font(Font);
     return(GH_GetterResult.success);
 }
Exemple #2
0
        private void SelectFontHandler(object sender, EventArgs e)
        {
            var form = GH_FontPicker.CreateFontPickerWindow(Settings.Font);

            form.CreateControl();
            var picker = form.Controls.OfType <GH_FontPicker>().FirstOrDefault();

            if (picker == null)
            {
                return;
            }
            var panel = form.Controls.OfType <Panel>().FirstOrDefault();

            if (panel == null)
            {
                return;
            }

            var pickerType    = typeof(GH_FontPicker);
            var sizeScroller  = pickerType.GetField("_SizeScroller", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(picker) as GH_DigitScroller;
            var boldChecker   = pickerType.GetField("_BoldCheck", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(picker) as CheckBox;
            var italicChecker = pickerType.GetField("_ItalicCheck", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(picker) as CheckBox;
            var fontScroller  = pickerType.GetField("_FontList", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(picker) as GH_FontList;

            sizeScroller.ValueChanged    += PreviewFontChangedHandler;
            boldChecker.CheckedChanged   += PreviewFontChangedHandler;
            italicChecker.CheckedChanged += PreviewFontChangedHandler;
            fontScroller.MouseClick      += PreviewFontChangedHandler;

            var defaultButton = new Button()
            {
                Text         = "Default",
                Width        = Grasshopper.Global_Proc.UiAdjust(80),
                Dock         = DockStyle.Right,
                DialogResult = DialogResult.Yes
            };

            defaultButton.Click += DefaultFontHandler;
            panel.Controls.Add(defaultButton);

            var editor = Grasshopper.Instances.DocumentEditor;

            GH_WindowsFormUtil.CenterFormOnWindow(form, editor, true);
            var result = form.ShowDialog(editor);

            if (result == DialogResult.OK)
            {
                var font = form.Tag as Font;
                if (font != null)
                {
                    Settings.ResetFonts();
                    Settings.Font = font;
                }
            }
            else if (result == DialogResult.Yes)
            {
                Settings.ResetFonts();
                Settings.Font = GH_FontServer.StandardItalic;
            }
            Grasshopper.Instances.ActiveCanvas?.Refresh();
            sizeScroller.ValueChanged    -= PreviewFontChangedHandler;
            boldChecker.CheckedChanged   -= PreviewFontChangedHandler;
            italicChecker.CheckedChanged -= PreviewFontChangedHandler;
            fontScroller.MouseClick      -= PreviewFontChangedHandler;
            defaultButton.Click          -= DefaultFontHandler;

            void PreviewFontChangedHandler(object s, EventArgs args)
            {
                var font = picker.SelectedFont;

                if (font != null)
                {
                    var currentFont = Settings.Font;
                    Settings.Font = font;
                    Grasshopper.Instances.ActiveCanvas?.Refresh();
                    Settings.Font = currentFont;
                }
            }

            void DefaultFontHandler(object s, EventArgs args)
            {
            }
        }