a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
1329 lines
34 KiB
C#
1329 lines
34 KiB
C#
// Permission is hereby granted, free of charge, to any person obtaining
|
|
// a copy of this software and associated documentation files (the
|
|
// "Software"), to deal in the Software without restriction, including
|
|
// without limitation the rights to use, copy, modify, merge, publish,
|
|
// distribute, sublicense, and/or sell copies of the Software, and to
|
|
// permit persons to whom the Software is furnished to do so, subject to
|
|
// the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be
|
|
// included in all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
//
|
|
// Copyright (c) 2006, Alexander Olk
|
|
//
|
|
// Authors:
|
|
// Alexander Olk alex.olk@googlemail.com
|
|
//
|
|
//
|
|
|
|
// NOT COMPLETE - work in progress
|
|
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Text.RegularExpressions;
|
|
using System;
|
|
using System.Collections;
|
|
|
|
namespace System.Windows.Forms
|
|
{
|
|
[DefaultProperty( "Font" )]
|
|
[DefaultEvent("Apply")]
|
|
public class FontDialog : CommonDialog
|
|
{
|
|
protected static readonly object EventApply = new object ();
|
|
|
|
private Font font;
|
|
private Color color = Color.Black;
|
|
private bool allowSimulations = true;
|
|
private bool allowVectorFonts = true;
|
|
private bool allowVerticalFonts = true;
|
|
private bool allowScriptChange = true;
|
|
private bool fixedPitchOnly = false;
|
|
private int maxSize = 0;
|
|
private int minSize = 0;
|
|
private bool scriptsOnly = false;
|
|
private bool showApply = false;
|
|
private bool showColor = false;
|
|
private bool showEffects = true;
|
|
private bool showHelp = false;
|
|
|
|
private bool fontMustExist = false;
|
|
|
|
private Panel examplePanel;
|
|
|
|
private Button okButton;
|
|
private Button cancelButton;
|
|
private Button applyButton;
|
|
private Button helpButton;
|
|
|
|
private TextBox fontTextBox;
|
|
private TextBox fontstyleTextBox;
|
|
private TextBox fontsizeTextBox;
|
|
|
|
private MouseWheelListBox fontListBox;
|
|
private MouseWheelListBox fontstyleListBox;
|
|
private MouseWheelListBox fontsizeListBox;
|
|
|
|
private GroupBox effectsGroupBox;
|
|
private CheckBox strikethroughCheckBox;
|
|
private CheckBox underlinedCheckBox;
|
|
private ComboBox scriptComboBox;
|
|
|
|
private Label fontLabel;
|
|
private Label fontstyleLabel;
|
|
private Label sizeLabel;
|
|
private Label scriptLabel;
|
|
|
|
private GroupBox exampleGroupBox;
|
|
|
|
private ColorComboBox colorComboBox;
|
|
|
|
private string currentFontName;
|
|
|
|
private float currentSize;
|
|
|
|
private FontFamily currentFamily;
|
|
|
|
private FontStyle currentFontStyle;
|
|
|
|
private bool underlined = false;
|
|
private bool strikethrough = false;
|
|
|
|
private Hashtable fontHash = new Hashtable();
|
|
|
|
private int[] a_sizes = {
|
|
6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72
|
|
};
|
|
|
|
// char set stuff is only here to make me happy :-)
|
|
private string [] char_sets_names = {
|
|
"Western",
|
|
"Symbol",
|
|
"Shift Jis",
|
|
"Hangul",
|
|
"GB2312",
|
|
"BIG5",
|
|
"Greek",
|
|
"Turkish",
|
|
"Hebrew",
|
|
"Arabic",
|
|
"Baltic",
|
|
"Vietname",
|
|
"Cyrillic",
|
|
"East European",
|
|
"Thai",
|
|
"Johab",
|
|
"Mac",
|
|
"OEM",
|
|
"VISCII",
|
|
"TCVN",
|
|
"KOI-8",
|
|
"ISO-8859-3",
|
|
"ISO-8859-4",
|
|
"ISO-8859-10",
|
|
"Celtic"
|
|
};
|
|
|
|
private string [] char_sets = {
|
|
"AaBbYyZz",
|
|
"Symbol",
|
|
"Aa" + (char)0x3042 + (char)0x3041 + (char)0x30a2 + (char)0x30a1 + (char)0x4e9c + (char)0x5b87,
|
|
(char)0xac00 + (char)0xb098 + (char)0xb2e4 + "AaBYyZz",
|
|
new String(new Char [] {(char)0x5fae, (char)0x8f6f, (char)0x4e2d, (char)0x6587, (char)0x8f6f, (char)0x4ef6}),
|
|
new String(new Char [] {(char)0x4e2d, (char)0x6587, (char)0x5b57, (char)0x578b, (char)0x7bc4, (char)0x4f8b}),
|
|
"AaBb" + (char)0x0391 + (char)0x03b1 + (char)0x0392 + (char)0x03b2,
|
|
"AaBb" + (char)0x011e + (char)0x011f + (char)0x015e + (char)0x015f,
|
|
"AaBb" + (char)0x05e0 + (char)0x05e1 + (char)0x05e9 + (char)0x05ea,
|
|
"AaBb" + (char)0x0627 + (char)0x0628 + (char)0x062c + (char)0x062f + (char)0x0647 + (char)0x0648 + (char)0x0632,
|
|
"AaBbYyZz",
|
|
"AaBb" + (char)0x01a0 + (char)0x01a1 + (char)0x01af + (char)0x01b0,
|
|
"AaBb" + (char)0x0411 + (char)0x0431 + (char)0x0424 + (char)0x0444,
|
|
"AaBb" + (char)0xc1 + (char)0xe1 + (char)0xd4 + (char)0xf4,
|
|
"AaBb" + (char)0x0e2d + (char)0x0e31 + (char)0x0e01 + (char)0x0e29 + (char)0x0e23 + (char)0x0e44 + (char)0x0e17 +(char)0x0e22,
|
|
(char)0xac00 + (char)0xb098 + (char)0xb2e4 + "AaBYyZz",
|
|
"AaBbYyZz",
|
|
"AaBb" + (char)0xf8 + (char)0xf1 + (char)0xfd,
|
|
"",
|
|
"",
|
|
"",
|
|
"",
|
|
"",
|
|
"",
|
|
""
|
|
};
|
|
|
|
private string example_panel_text;
|
|
|
|
private bool internal_change = false;
|
|
|
|
#region Public Constructors
|
|
public FontDialog( )
|
|
{
|
|
form = new DialogForm (this);
|
|
example_panel_text = char_sets [0];
|
|
|
|
okButton = new Button( );
|
|
cancelButton = new Button( );
|
|
applyButton = new Button( );
|
|
helpButton = new Button( );
|
|
|
|
fontTextBox = new TextBox( );
|
|
fontstyleTextBox = new TextBox( );
|
|
fontsizeTextBox = new TextBox( );
|
|
|
|
fontListBox = new MouseWheelListBox ();
|
|
fontsizeListBox = new MouseWheelListBox ();
|
|
fontstyleListBox = new MouseWheelListBox ();
|
|
|
|
fontLabel = new Label( );
|
|
fontstyleLabel = new Label( );
|
|
sizeLabel = new Label( );
|
|
scriptLabel = new Label( );
|
|
|
|
exampleGroupBox = new GroupBox( );
|
|
|
|
effectsGroupBox = new GroupBox( );
|
|
underlinedCheckBox = new CheckBox( );
|
|
strikethroughCheckBox = new CheckBox( );
|
|
scriptComboBox = new ComboBox( );
|
|
|
|
examplePanel = new Panel( );
|
|
|
|
colorComboBox = new ColorComboBox( this );
|
|
|
|
exampleGroupBox.SuspendLayout( );
|
|
effectsGroupBox.SuspendLayout( );
|
|
form.SuspendLayout( );
|
|
|
|
form.FormBorderStyle = FormBorderStyle.FixedDialog;
|
|
form.MaximizeBox = false;
|
|
|
|
// fontsizeListBox
|
|
fontsizeListBox.Location = new Point( 284, 47 );
|
|
fontsizeListBox.Size = new Size( 52, 95 );
|
|
fontsizeListBox.TabIndex = 10;
|
|
fontListBox.Sorted = true;
|
|
// fontTextBox
|
|
fontTextBox.Location = new Point( 16, 26 );
|
|
fontTextBox.Size = new Size( 140, 21 );
|
|
fontTextBox.TabIndex = 5;
|
|
fontTextBox.Text = "";
|
|
// fontstyleLabel
|
|
fontstyleLabel.Location = new Point( 164, 10 );
|
|
fontstyleLabel.Size = new Size( 100, 16 );
|
|
fontstyleLabel.TabIndex = 1;
|
|
fontstyleLabel.Text = "Font Style:";
|
|
// typesizeTextBox
|
|
fontsizeTextBox.Location = new Point( 284, 26 );
|
|
fontsizeTextBox.Size = new Size( 52, 21 );
|
|
fontsizeTextBox.TabIndex = 7;
|
|
fontsizeTextBox.Text = "";
|
|
fontsizeTextBox.MaxLength = 2;
|
|
// schriftartListBox
|
|
fontListBox.Location = new Point( 16, 47 );
|
|
fontListBox.Size = new Size( 140, 95 );
|
|
fontListBox.TabIndex = 8;
|
|
fontListBox.Sorted = true;
|
|
// exampleGroupBox
|
|
exampleGroupBox.Controls.Add( examplePanel );
|
|
exampleGroupBox.FlatStyle = FlatStyle.System;
|
|
exampleGroupBox.Location = new Point( 164, 158 );
|
|
exampleGroupBox.Size = new Size( 172, 70 );
|
|
exampleGroupBox.TabIndex = 12;
|
|
exampleGroupBox.TabStop = false;
|
|
exampleGroupBox.Text = "Example";
|
|
// fontstyleListBox
|
|
fontstyleListBox.Location = new Point( 164, 47 );
|
|
fontstyleListBox.Size = new Size( 112, 95 );
|
|
fontstyleListBox.TabIndex = 9;
|
|
// schriftartLabel
|
|
fontLabel.Location = new Point( 16, 10 );
|
|
fontLabel.Size = new Size( 88, 16 );
|
|
fontLabel.TabIndex = 0;
|
|
fontLabel.Text = "Font:";
|
|
// effectsGroupBox
|
|
effectsGroupBox.Controls.Add( underlinedCheckBox );
|
|
effectsGroupBox.Controls.Add( strikethroughCheckBox );
|
|
effectsGroupBox.Controls.Add( colorComboBox );
|
|
effectsGroupBox.FlatStyle = FlatStyle.System;
|
|
effectsGroupBox.Location = new Point( 16, 158 );
|
|
effectsGroupBox.Size = new Size( 140, 116 );
|
|
effectsGroupBox.TabIndex = 11;
|
|
effectsGroupBox.TabStop = false;
|
|
effectsGroupBox.Text = "Effects";
|
|
// strikethroughCheckBox
|
|
strikethroughCheckBox.FlatStyle = FlatStyle.System;
|
|
strikethroughCheckBox.Location = new Point( 8, 16 );
|
|
strikethroughCheckBox.TabIndex = 0;
|
|
strikethroughCheckBox.Text = "Strikethrough";
|
|
// colorComboBox
|
|
colorComboBox.Location = new Point( 8, 70 );
|
|
colorComboBox.Size = new Size( 130, 21 );
|
|
// sizeLabel
|
|
sizeLabel.Location = new Point( 284, 10 );
|
|
sizeLabel.Size = new Size( 100, 16 );
|
|
sizeLabel.TabIndex = 2;
|
|
sizeLabel.Text = "Size:";
|
|
// scriptComboBox
|
|
scriptComboBox.Location = new Point( 164, 253 );
|
|
scriptComboBox.Size = new Size( 172, 21 );
|
|
scriptComboBox.TabIndex = 14;
|
|
scriptComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
|
|
// okButton
|
|
okButton.FlatStyle = FlatStyle.System;
|
|
okButton.Location = new Point( 352, 26 );
|
|
okButton.Size = new Size( 70, 23 );
|
|
okButton.TabIndex = 3;
|
|
okButton.Text = "OK";
|
|
// cancelButton
|
|
cancelButton.FlatStyle = FlatStyle.System;
|
|
cancelButton.Location = new Point( 352, 52 );
|
|
cancelButton.Size = new Size( 70, 23 );
|
|
cancelButton.TabIndex = 4;
|
|
cancelButton.Text = "Cancel";
|
|
// applyButton
|
|
applyButton.FlatStyle = FlatStyle.System;
|
|
applyButton.Location = new Point( 352, 78 );
|
|
applyButton.Size = new Size( 70, 23 );
|
|
applyButton.TabIndex = 5;
|
|
applyButton.Text = "Apply";
|
|
// helpButton
|
|
helpButton.FlatStyle = FlatStyle.System;
|
|
helpButton.Location = new Point( 352, 104 );
|
|
helpButton.Size = new Size( 70, 23 );
|
|
helpButton.TabIndex = 6;
|
|
helpButton.Text = "Help";
|
|
// underlinedCheckBox
|
|
underlinedCheckBox.FlatStyle = FlatStyle.System;
|
|
underlinedCheckBox.Location = new Point( 8, 36 );
|
|
underlinedCheckBox.TabIndex = 1;
|
|
underlinedCheckBox.Text = "Underlined";
|
|
// fontstyleTextBox
|
|
fontstyleTextBox.Location = new Point( 164, 26 );
|
|
fontstyleTextBox.Size = new Size( 112, 21 );
|
|
fontstyleTextBox.TabIndex = 6;
|
|
fontstyleTextBox.Text = "";
|
|
// scriptLabel
|
|
scriptLabel.Location = new Point( 164, 236 );
|
|
scriptLabel.Size = new Size( 100, 16 );
|
|
scriptLabel.TabIndex = 13;
|
|
scriptLabel.Text = "Script:";
|
|
// examplePanel
|
|
examplePanel.Location = new Point( 8, 20 );
|
|
examplePanel.TabIndex = 0;
|
|
examplePanel.Size = new Size( 156, 40 );
|
|
examplePanel.BorderStyle = BorderStyle.Fixed3D;
|
|
|
|
form.AcceptButton = okButton;
|
|
form.CancelButton = cancelButton;
|
|
|
|
form.Controls.Add( scriptComboBox );
|
|
form.Controls.Add( scriptLabel );
|
|
form.Controls.Add( exampleGroupBox );
|
|
form.Controls.Add( effectsGroupBox );
|
|
form.Controls.Add( fontsizeListBox );
|
|
form.Controls.Add( fontstyleListBox );
|
|
form.Controls.Add( fontListBox );
|
|
form.Controls.Add( fontsizeTextBox );
|
|
form.Controls.Add( fontstyleTextBox );
|
|
form.Controls.Add( fontTextBox );
|
|
form.Controls.Add( cancelButton );
|
|
form.Controls.Add( okButton );
|
|
form.Controls.Add( sizeLabel );
|
|
form.Controls.Add( fontstyleLabel );
|
|
form.Controls.Add( fontLabel );
|
|
form.Controls.Add( applyButton );
|
|
form.Controls.Add( helpButton );
|
|
|
|
exampleGroupBox.ResumeLayout( false );
|
|
effectsGroupBox.ResumeLayout( false );
|
|
|
|
form.Size = new Size( 430, 318 );
|
|
|
|
form.FormBorderStyle = FormBorderStyle.FixedDialog;
|
|
form.MaximizeBox = false;
|
|
|
|
form.Text = "Font";
|
|
|
|
form.ResumeLayout( false );
|
|
|
|
scriptComboBox.BeginUpdate ();
|
|
scriptComboBox.Items.AddRange (char_sets_names);
|
|
scriptComboBox.SelectedIndex = 0;
|
|
scriptComboBox.EndUpdate ();
|
|
|
|
applyButton.Hide( );
|
|
helpButton.Hide( );
|
|
colorComboBox.Hide( );
|
|
|
|
cancelButton.Click += new EventHandler( OnClickCancelButton );
|
|
okButton.Click += new EventHandler( OnClickOkButton );
|
|
applyButton.Click += new EventHandler (OnApplyButton);
|
|
examplePanel.Paint += new PaintEventHandler( OnPaintExamplePanel );
|
|
fontListBox.SelectedIndexChanged += new EventHandler( OnSelectedIndexChangedFontListBox );
|
|
fontsizeListBox.SelectedIndexChanged += new EventHandler( OnSelectedIndexChangedSizeListBox );
|
|
fontstyleListBox.SelectedIndexChanged += new EventHandler( OnSelectedIndexChangedFontStyleListBox );
|
|
underlinedCheckBox.CheckedChanged += new EventHandler( OnCheckedChangedUnderlinedCheckBox );
|
|
strikethroughCheckBox.CheckedChanged += new EventHandler( OnCheckedChangedStrikethroughCheckBox );
|
|
scriptComboBox.SelectedIndexChanged += new EventHandler (OnSelectedIndexChangedScriptComboBox);
|
|
|
|
fontTextBox.KeyPress += new KeyPressEventHandler (OnFontTextBoxKeyPress);
|
|
fontstyleTextBox.KeyPress += new KeyPressEventHandler (OnFontStyleTextBoxKeyPress);
|
|
fontsizeTextBox.KeyPress += new KeyPressEventHandler (OnFontSizeTextBoxKeyPress);
|
|
|
|
fontTextBox.TextChanged += new EventHandler (OnFontTextBoxTextChanged);
|
|
fontstyleTextBox.TextChanged += new EventHandler (OnFontStyleTextTextChanged);
|
|
fontsizeTextBox.TextChanged += new EventHandler (OnFontSizeTextBoxTextChanged);
|
|
|
|
fontTextBox.KeyDown += new KeyEventHandler (OnFontTextBoxKeyDown);
|
|
fontstyleTextBox.KeyDown += new KeyEventHandler (OnFontStyleTextBoxKeyDown);
|
|
fontsizeTextBox.KeyDown += new KeyEventHandler (OnFontSizeTextBoxKeyDown);
|
|
|
|
fontTextBox.MouseWheel += new MouseEventHandler (OnFontTextBoxMouseWheel);
|
|
fontstyleTextBox.MouseWheel += new MouseEventHandler (OnFontStyleTextBoxMouseWheel);
|
|
fontsizeTextBox.MouseWheel += new MouseEventHandler (OnFontSizeTextBoxMouseWheel);
|
|
|
|
PopulateFontList ();
|
|
}
|
|
#endregion // Public Constructors
|
|
|
|
#region Public Instance Properties
|
|
public Font Font
|
|
{
|
|
get {
|
|
return font;
|
|
}
|
|
|
|
set {
|
|
if (value != null) {
|
|
font = new Font(value, value.Style);
|
|
|
|
currentFontStyle = font.Style;
|
|
currentSize = font.SizeInPoints;
|
|
currentFontName = font.Name;
|
|
|
|
strikethroughCheckBox.Checked = font.Strikeout;
|
|
underlinedCheckBox.Checked = font.Underline;
|
|
|
|
int index = fontListBox.FindString (currentFontName);
|
|
|
|
if (index != -1) {
|
|
fontListBox.SelectedIndex = index;
|
|
} else {
|
|
fontListBox.SelectedIndex = 0;
|
|
}
|
|
|
|
UpdateFontSizeListBox ();
|
|
UpdateFontStyleListBox ();
|
|
|
|
fontListBox.TopIndex = fontListBox.SelectedIndex;
|
|
}
|
|
}
|
|
}
|
|
|
|
[DefaultValue(false)]
|
|
public bool FontMustExist
|
|
{
|
|
get {
|
|
return fontMustExist;
|
|
}
|
|
|
|
set {
|
|
fontMustExist = value;
|
|
}
|
|
}
|
|
|
|
[DefaultValue ("Color [Black]")]
|
|
public Color Color
|
|
{
|
|
set {
|
|
color = value;
|
|
examplePanel.Invalidate( );
|
|
}
|
|
|
|
get {
|
|
return color;
|
|
}
|
|
}
|
|
|
|
[DefaultValue(true)]
|
|
public bool AllowSimulations
|
|
{
|
|
set {
|
|
allowSimulations = value;
|
|
}
|
|
|
|
get {
|
|
return allowSimulations;
|
|
}
|
|
}
|
|
|
|
[DefaultValue(true)]
|
|
public bool AllowVectorFonts
|
|
{
|
|
set {
|
|
allowVectorFonts = value;
|
|
}
|
|
|
|
get {
|
|
return allowVectorFonts;
|
|
}
|
|
}
|
|
|
|
[DefaultValue(true)]
|
|
public bool AllowVerticalFonts
|
|
{
|
|
set {
|
|
allowVerticalFonts = value;
|
|
}
|
|
|
|
get {
|
|
return allowVerticalFonts;
|
|
}
|
|
}
|
|
|
|
[DefaultValue(true)]
|
|
public bool AllowScriptChange
|
|
{
|
|
set {
|
|
allowScriptChange = value;
|
|
}
|
|
|
|
get {
|
|
return allowScriptChange;
|
|
}
|
|
}
|
|
|
|
[DefaultValue(false)]
|
|
public bool FixedPitchOnly
|
|
{
|
|
set {
|
|
if (fixedPitchOnly != value) {
|
|
fixedPitchOnly = value;
|
|
PopulateFontList ();
|
|
}
|
|
}
|
|
|
|
get {
|
|
return fixedPitchOnly;
|
|
}
|
|
}
|
|
|
|
[DefaultValue(0)]
|
|
public int MaxSize
|
|
{
|
|
set {
|
|
maxSize = value;
|
|
|
|
if (maxSize < 0)
|
|
maxSize = 0;
|
|
|
|
if (maxSize < minSize)
|
|
minSize = maxSize;
|
|
|
|
CreateFontSizeListBoxItems ();
|
|
}
|
|
|
|
get {
|
|
return maxSize;
|
|
}
|
|
}
|
|
|
|
[DefaultValue(0)]
|
|
public int MinSize
|
|
{
|
|
set {
|
|
minSize = value;
|
|
|
|
if (minSize < 0)
|
|
minSize = 0;
|
|
|
|
if (minSize > maxSize)
|
|
maxSize = minSize;
|
|
|
|
CreateFontSizeListBoxItems ();
|
|
|
|
if (minSize > currentSize)
|
|
if (font != null) {
|
|
font.Dispose();
|
|
|
|
currentSize = minSize;
|
|
|
|
font = new Font( currentFamily, currentSize, currentFontStyle );
|
|
|
|
UpdateExamplePanel ();
|
|
|
|
fontsizeTextBox.Text = currentSize.ToString ();
|
|
}
|
|
}
|
|
|
|
get {
|
|
return minSize;
|
|
}
|
|
}
|
|
|
|
[DefaultValue(false)]
|
|
public bool ScriptsOnly
|
|
{
|
|
set {
|
|
scriptsOnly = value;
|
|
}
|
|
|
|
get {
|
|
return scriptsOnly;
|
|
}
|
|
}
|
|
|
|
[DefaultValue(false)]
|
|
public bool ShowApply
|
|
{
|
|
set {
|
|
if (value != showApply)
|
|
{
|
|
showApply = value;
|
|
if (showApply)
|
|
applyButton.Show ();
|
|
else
|
|
applyButton.Hide ();
|
|
|
|
form.Refresh();
|
|
}
|
|
|
|
}
|
|
|
|
get {
|
|
return showApply;
|
|
}
|
|
}
|
|
|
|
[DefaultValue(false)]
|
|
public bool ShowColor
|
|
{
|
|
set {
|
|
if (value != showColor)
|
|
{
|
|
showColor = value;
|
|
if (showColor)
|
|
colorComboBox.Show ();
|
|
else
|
|
colorComboBox.Hide ();
|
|
|
|
form.Refresh();
|
|
}
|
|
}
|
|
|
|
get {
|
|
return showColor;
|
|
}
|
|
}
|
|
|
|
[DefaultValue(true)]
|
|
public bool ShowEffects
|
|
{
|
|
set {
|
|
if (value != showEffects)
|
|
{
|
|
showEffects = value;
|
|
if (showEffects)
|
|
effectsGroupBox.Show ();
|
|
else
|
|
effectsGroupBox.Hide ();
|
|
|
|
form.Refresh();
|
|
}
|
|
}
|
|
|
|
get {
|
|
return showEffects;
|
|
}
|
|
}
|
|
|
|
[DefaultValue(false)]
|
|
public bool ShowHelp
|
|
{
|
|
set {
|
|
if (value != showHelp)
|
|
{
|
|
showHelp = value;
|
|
if (showHelp)
|
|
helpButton.Show ();
|
|
else
|
|
helpButton.Hide ();
|
|
|
|
form.Refresh();
|
|
}
|
|
}
|
|
|
|
get {
|
|
return showHelp;
|
|
}
|
|
}
|
|
|
|
#endregion // Public Instance Properties
|
|
|
|
#region Protected Instance Properties
|
|
protected int Options {
|
|
get { return 0; }
|
|
}
|
|
#endregion // Protected Instance Properties
|
|
|
|
#region Public Instance Methods
|
|
public override void Reset( )
|
|
{
|
|
color = Color.Black;
|
|
allowSimulations = true;
|
|
allowVectorFonts = true;
|
|
allowVerticalFonts = true;
|
|
allowScriptChange = true;
|
|
fixedPitchOnly = false;
|
|
|
|
maxSize = 0;
|
|
minSize = 0;
|
|
CreateFontSizeListBoxItems ();
|
|
|
|
scriptsOnly = false;
|
|
|
|
showApply = false;
|
|
applyButton.Hide ();
|
|
|
|
showColor = false;
|
|
colorComboBox.Hide ();
|
|
|
|
showEffects = true;
|
|
effectsGroupBox.Show ();
|
|
|
|
showHelp = false;
|
|
helpButton.Hide ();
|
|
|
|
form.Refresh ();
|
|
}
|
|
|
|
public override string ToString ()
|
|
{
|
|
if (font == null)
|
|
return base.ToString ();
|
|
return String.Concat (base.ToString (), ", Font: ", font.ToString ());
|
|
}
|
|
#endregion // Public Instance Methods
|
|
|
|
#region Protected Instance Methods
|
|
protected override IntPtr HookProc (IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam)
|
|
{
|
|
return base.HookProc (hWnd, msg, wparam, lparam);
|
|
}
|
|
|
|
protected override bool RunDialog( IntPtr hWndOwner )
|
|
{
|
|
form.Refresh();
|
|
|
|
return true;
|
|
}
|
|
|
|
internal void OnApplyButton (object sender, EventArgs e)
|
|
{
|
|
OnApply (e);
|
|
}
|
|
|
|
protected virtual void OnApply (EventArgs e)
|
|
{
|
|
EventHandler apply = (EventHandler) Events [EventApply];
|
|
if (apply != null)
|
|
apply (this, e);
|
|
}
|
|
#endregion // Protected Instance Methods
|
|
|
|
void OnClickCancelButton( object sender, EventArgs e )
|
|
{
|
|
form.DialogResult = DialogResult.Cancel;
|
|
}
|
|
|
|
void OnClickOkButton( object sender, EventArgs e )
|
|
{
|
|
form.DialogResult = DialogResult.OK;
|
|
}
|
|
|
|
void OnPaintExamplePanel( object sender, PaintEventArgs e )
|
|
{
|
|
SolidBrush brush = ThemeEngine.Current.ResPool.GetSolidBrush( color );
|
|
|
|
e.Graphics.FillRectangle( ThemeEngine.Current.ResPool.GetSolidBrush( SystemColors.Control ), 0, 0, 156, 40 );
|
|
|
|
SizeF fontSizeF = e.Graphics.MeasureString( example_panel_text, font );
|
|
|
|
int text_width = (int)fontSizeF.Width;
|
|
int text_height = (int)fontSizeF.Height;
|
|
|
|
int x = ( examplePanel.Width / 2 ) - ( text_width / 2 );
|
|
if ( x < 0 ) x = 0;
|
|
|
|
int y = ( examplePanel.Height / 2 ) - ( text_height / 2 );
|
|
|
|
e.Graphics.DrawString( example_panel_text, font, brush, new Point( x, y ) );
|
|
}
|
|
|
|
void OnSelectedIndexChangedFontListBox( object sender, EventArgs e )
|
|
{
|
|
if ( fontListBox.SelectedIndex != -1 )
|
|
{
|
|
currentFamily = FindByName( fontListBox.Items[ fontListBox.SelectedIndex ].ToString( ) );
|
|
|
|
fontTextBox.Text = currentFamily.Name;
|
|
|
|
internal_change = true;
|
|
|
|
UpdateFontStyleListBox( );
|
|
|
|
UpdateFontSizeListBox ();
|
|
|
|
UpdateExamplePanel ();
|
|
|
|
form.Select(fontTextBox);
|
|
|
|
internal_change = false;
|
|
}
|
|
}
|
|
|
|
void OnSelectedIndexChangedSizeListBox( object sender, EventArgs e )
|
|
{
|
|
if ( fontsizeListBox.SelectedIndex != -1 )
|
|
{
|
|
currentSize = (float)System.Convert.ToDouble( fontsizeListBox.Items[ fontsizeListBox.SelectedIndex ] );
|
|
|
|
fontsizeTextBox.Text = currentSize.ToString( );
|
|
|
|
UpdateExamplePanel( );
|
|
|
|
if (!internal_change)
|
|
form.Select(fontsizeTextBox);
|
|
}
|
|
}
|
|
|
|
void OnSelectedIndexChangedFontStyleListBox( object sender, EventArgs e )
|
|
{
|
|
if ( fontstyleListBox.SelectedIndex != -1 )
|
|
{
|
|
switch ( fontstyleListBox.SelectedIndex )
|
|
{
|
|
case 0:
|
|
currentFontStyle = FontStyle.Regular;
|
|
break;
|
|
case 1:
|
|
currentFontStyle = FontStyle.Bold;
|
|
break;
|
|
case 2:
|
|
currentFontStyle = FontStyle.Italic;
|
|
break;
|
|
case 3:
|
|
currentFontStyle = FontStyle.Bold | FontStyle.Italic;
|
|
break;
|
|
default:
|
|
currentFontStyle = FontStyle.Regular;
|
|
break;
|
|
}
|
|
|
|
if (underlined)
|
|
currentFontStyle = currentFontStyle | FontStyle.Underline;
|
|
|
|
if (strikethrough)
|
|
currentFontStyle = currentFontStyle | FontStyle.Strikeout;
|
|
|
|
fontstyleTextBox.Text = fontstyleListBox.Items[ fontstyleListBox.SelectedIndex ].ToString( );
|
|
|
|
if (!internal_change) {
|
|
UpdateExamplePanel( );
|
|
|
|
form.Select(fontstyleTextBox);
|
|
}
|
|
}
|
|
}
|
|
|
|
void OnCheckedChangedUnderlinedCheckBox( object sender, EventArgs e )
|
|
{
|
|
if ( underlinedCheckBox.Checked ) {
|
|
currentFontStyle = currentFontStyle | FontStyle.Underline;
|
|
underlined = true;
|
|
}
|
|
else {
|
|
currentFontStyle = currentFontStyle ^ FontStyle.Underline;
|
|
underlined = false;
|
|
}
|
|
|
|
UpdateExamplePanel( );
|
|
}
|
|
|
|
void OnCheckedChangedStrikethroughCheckBox( object sender, EventArgs e )
|
|
{
|
|
if ( strikethroughCheckBox.Checked ) {
|
|
currentFontStyle = currentFontStyle | FontStyle.Strikeout;
|
|
strikethrough = true;
|
|
}
|
|
else {
|
|
currentFontStyle = currentFontStyle ^ FontStyle.Strikeout;
|
|
strikethrough = false;
|
|
}
|
|
|
|
UpdateExamplePanel( );
|
|
}
|
|
|
|
bool internal_textbox_change = false;
|
|
|
|
void OnFontTextBoxMouseWheel (object sender, MouseEventArgs e)
|
|
{
|
|
fontListBox.SendMouseWheelEvent (e);
|
|
}
|
|
|
|
void OnFontStyleTextBoxMouseWheel (object sender, MouseEventArgs e)
|
|
{
|
|
fontstyleListBox.SendMouseWheelEvent (e);
|
|
}
|
|
|
|
void OnFontSizeTextBoxMouseWheel (object sender, MouseEventArgs e)
|
|
{
|
|
fontsizeListBox.SendMouseWheelEvent (e);
|
|
}
|
|
|
|
void OnFontTextBoxKeyDown (object sender, KeyEventArgs e)
|
|
{
|
|
// Forward these keys on to the font style listbox
|
|
switch (e.KeyCode) {
|
|
case Keys.Up:
|
|
case Keys.Down:
|
|
case Keys.PageDown:
|
|
case Keys.PageUp:
|
|
fontListBox.HandleKeyDown (e.KeyCode);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void OnFontStyleTextBoxKeyDown (object sender, KeyEventArgs e)
|
|
{
|
|
// Forward these keys on to the font style listbox
|
|
switch (e.KeyCode) {
|
|
case Keys.Up:
|
|
case Keys.Down:
|
|
case Keys.PageDown:
|
|
case Keys.PageUp:
|
|
fontstyleListBox.HandleKeyDown (e.KeyCode);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void OnFontSizeTextBoxKeyDown (object sender, KeyEventArgs e)
|
|
{
|
|
// Forward these keys on to the font size listbox
|
|
switch (e.KeyCode) {
|
|
case Keys.Up:
|
|
case Keys.Down:
|
|
case Keys.PageDown:
|
|
case Keys.PageUp:
|
|
fontsizeListBox.HandleKeyDown (e.KeyCode);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void OnFontTextBoxKeyPress (object sender, KeyPressEventArgs e)
|
|
{
|
|
internal_textbox_change = true;
|
|
|
|
if (fontListBox.SelectedIndex > -1)
|
|
fontListBox.SelectedIndex = -1;
|
|
}
|
|
|
|
void OnFontStyleTextBoxKeyPress (object sender, KeyPressEventArgs e)
|
|
{
|
|
internal_textbox_change = true;
|
|
|
|
if (fontstyleListBox.SelectedIndex > -1)
|
|
fontstyleListBox.SelectedIndex = -1;
|
|
}
|
|
|
|
void OnFontSizeTextBoxKeyPress (object sender, KeyPressEventArgs e)
|
|
{
|
|
if (Char.IsLetter (e.KeyChar) || Char.IsWhiteSpace (e.KeyChar) || Char.IsPunctuation (e.KeyChar) || e.KeyChar == ',') {
|
|
e.Handled = true;
|
|
return;
|
|
}
|
|
|
|
internal_textbox_change = true;
|
|
}
|
|
|
|
void OnFontTextBoxTextChanged (object sender, EventArgs e)
|
|
{
|
|
if (!internal_textbox_change)
|
|
return;
|
|
|
|
internal_textbox_change = false;
|
|
|
|
string search = fontTextBox.Text;
|
|
|
|
// Look for an exact match
|
|
int found = fontListBox.FindStringExact (search);
|
|
|
|
if (found != ListBox.NoMatches) {
|
|
fontListBox.SelectedIndex = found;
|
|
return;
|
|
}
|
|
|
|
// Look for a partial match
|
|
found = fontListBox.FindString (search);
|
|
|
|
if (found != ListBox.NoMatches) {
|
|
fontListBox.TopIndex = found;
|
|
return;
|
|
}
|
|
|
|
// No match, scroll to the top
|
|
if (fontListBox.Items.Count > 0)
|
|
fontListBox.TopIndex = 0;
|
|
}
|
|
|
|
void OnFontStyleTextTextChanged (object sender, EventArgs e)
|
|
{
|
|
if (!internal_textbox_change)
|
|
return;
|
|
|
|
internal_textbox_change = false;
|
|
|
|
// Look for an exact match
|
|
int found = fontstyleListBox.FindStringExact (fontstyleTextBox.Text);
|
|
|
|
if (found != ListBox.NoMatches)
|
|
fontstyleListBox.SelectedIndex = found;
|
|
}
|
|
|
|
void OnFontSizeTextBoxTextChanged (object sender, EventArgs e)
|
|
{
|
|
if (!internal_textbox_change)
|
|
return;
|
|
|
|
internal_textbox_change = false;
|
|
|
|
if (fontsizeTextBox.Text.Length == 0)
|
|
return;
|
|
|
|
for (int i = 0; i < fontsizeListBox.Items.Count; i++) {
|
|
string name = fontsizeListBox.Items [i] as string;
|
|
|
|
if (name.StartsWith(fontsizeTextBox.Text)) {
|
|
if (name == fontsizeTextBox.Text)
|
|
fontsizeListBox.SelectedIndex = i;
|
|
else
|
|
fontsizeListBox.TopIndex = i;
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void OnSelectedIndexChangedScriptComboBox (object sender, EventArgs e)
|
|
{
|
|
string tmp_str = char_sets [scriptComboBox.SelectedIndex];
|
|
|
|
if (tmp_str.Length > 0) {
|
|
example_panel_text = tmp_str;
|
|
|
|
UpdateExamplePanel ();
|
|
}
|
|
}
|
|
|
|
void UpdateExamplePanel( )
|
|
{
|
|
if (font != null)
|
|
font.Dispose();
|
|
|
|
font = new Font( currentFamily, currentSize, currentFontStyle );
|
|
|
|
examplePanel.Invalidate( );
|
|
}
|
|
|
|
void UpdateFontSizeListBox ()
|
|
{
|
|
int index = fontsizeListBox.FindString(((int)Math.Round ((currentSize))).ToString());
|
|
|
|
if (index != -1)
|
|
fontsizeListBox.SelectedIndex = index;
|
|
else
|
|
fontsizeListBox.SelectedIndex = 0;
|
|
}
|
|
|
|
void UpdateFontStyleListBox( )
|
|
{
|
|
// don't know if that works, IsStyleAvailable returns true for all styles under X
|
|
|
|
fontstyleListBox.BeginUpdate( );
|
|
|
|
fontstyleListBox.Items.Clear( );
|
|
|
|
int index = -1;
|
|
int to_select = 0;
|
|
|
|
if ( currentFamily.IsStyleAvailable( FontStyle.Regular ) )
|
|
{
|
|
index = fontstyleListBox.Items.Add( "Regular" );
|
|
|
|
if ((currentFontStyle & FontStyle.Regular) == FontStyle.Regular)
|
|
to_select = index;
|
|
}
|
|
|
|
if ( currentFamily.IsStyleAvailable( FontStyle.Bold ) )
|
|
{
|
|
index = fontstyleListBox.Items.Add( "Bold" );
|
|
|
|
if ((currentFontStyle & FontStyle.Bold) == FontStyle.Bold)
|
|
to_select = index;
|
|
}
|
|
|
|
if ( currentFamily.IsStyleAvailable( FontStyle.Italic ) )
|
|
{
|
|
index = fontstyleListBox.Items.Add( "Italic" );
|
|
|
|
if ((currentFontStyle & FontStyle.Italic) == FontStyle.Italic)
|
|
to_select = index;
|
|
}
|
|
|
|
if ( currentFamily.IsStyleAvailable( FontStyle.Bold ) && currentFamily.IsStyleAvailable( FontStyle.Italic ) )
|
|
{
|
|
index = fontstyleListBox.Items.Add( "Bold Italic" );
|
|
|
|
if ((currentFontStyle & (FontStyle.Bold | FontStyle.Italic)) == (FontStyle.Bold | FontStyle.Italic))
|
|
to_select = index;
|
|
}
|
|
|
|
if (fontstyleListBox.Items.Count > 0) {
|
|
fontstyleListBox.SelectedIndex = to_select;
|
|
|
|
switch ((string)fontstyleListBox.SelectedItem) {
|
|
case "Regular":
|
|
currentFontStyle = FontStyle.Regular;
|
|
break;
|
|
case "Bold":
|
|
currentFontStyle = FontStyle.Bold;
|
|
break;
|
|
case "Italic":
|
|
currentFontStyle = FontStyle.Italic;
|
|
break;
|
|
case "Bold Italic":
|
|
currentFontStyle = FontStyle.Bold | FontStyle.Italic;
|
|
break;
|
|
}
|
|
|
|
if (strikethroughCheckBox.Checked)
|
|
currentFontStyle |= FontStyle.Strikeout;
|
|
if (underlinedCheckBox.Checked)
|
|
currentFontStyle |= FontStyle.Underline;
|
|
}
|
|
|
|
fontstyleListBox.EndUpdate( );
|
|
}
|
|
|
|
FontFamily FindByName( string name )
|
|
{
|
|
return fontHash[ name ] as FontFamily;
|
|
}
|
|
|
|
void CreateFontSizeListBoxItems ()
|
|
{
|
|
fontsizeListBox.BeginUpdate ();
|
|
|
|
fontsizeListBox.Items.Clear();
|
|
|
|
if (minSize == 0 && maxSize == 0)
|
|
{
|
|
foreach (int i in a_sizes)
|
|
fontsizeListBox.Items.Add (i.ToString());
|
|
} else {
|
|
foreach (int i in a_sizes) {
|
|
if (i >= minSize && i <= maxSize)
|
|
fontsizeListBox.Items.Add (i.ToString());
|
|
}
|
|
}
|
|
|
|
fontsizeListBox.EndUpdate ();
|
|
}
|
|
|
|
#region Private Methods
|
|
private void PopulateFontList ()
|
|
{
|
|
fontListBox.Items.Clear ();
|
|
fontHash.Clear ();
|
|
|
|
fontListBox.BeginUpdate ();
|
|
|
|
foreach (FontFamily ff in FontFamily.Families) {
|
|
if (!fontHash.ContainsKey (ff.Name)) {
|
|
if (!fixedPitchOnly || (IsFontFamilyFixedPitch (ff))) {
|
|
fontListBox.Items.Add (ff.Name);
|
|
fontHash.Add (ff.Name, ff);
|
|
}
|
|
}
|
|
}
|
|
|
|
fontListBox.EndUpdate ();
|
|
CreateFontSizeListBoxItems ();
|
|
|
|
if (fixedPitchOnly)
|
|
this.Font = new Font (FontFamily.GenericMonospace, 8.25f);
|
|
else
|
|
this.Font = form.Font;
|
|
}
|
|
|
|
private bool IsFontFamilyFixedPitch (FontFamily family)
|
|
{
|
|
FontStyle fs;
|
|
|
|
if (family.IsStyleAvailable (FontStyle.Regular))
|
|
fs = FontStyle.Regular;
|
|
else if (family.IsStyleAvailable (FontStyle.Bold))
|
|
fs = FontStyle.Bold;
|
|
else if (family.IsStyleAvailable (FontStyle.Italic))
|
|
fs = FontStyle.Italic;
|
|
else if (family.IsStyleAvailable (FontStyle.Strikeout))
|
|
fs = FontStyle.Strikeout;
|
|
else if (family.IsStyleAvailable (FontStyle.Underline))
|
|
fs = FontStyle.Underline;
|
|
else
|
|
return false;
|
|
|
|
Font f = new Font (family.Name, 10, fs);
|
|
|
|
if (TextRenderer.MeasureString ("i", f).Width == TextRenderer.MeasureString ("w", f).Width)
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
#endregion
|
|
|
|
internal class ColorComboBox : ComboBox
|
|
{
|
|
internal class ColorComboBoxItem
|
|
{
|
|
private Color color;
|
|
private string name;
|
|
|
|
public ColorComboBoxItem( Color color, string name )
|
|
{
|
|
this.color = color;
|
|
this.name = name;
|
|
}
|
|
|
|
public Color Color
|
|
{
|
|
set {
|
|
color = value;
|
|
}
|
|
|
|
get {
|
|
return color;
|
|
}
|
|
}
|
|
|
|
public string Name
|
|
{
|
|
set {
|
|
name = value;
|
|
}
|
|
|
|
get {
|
|
return name;
|
|
}
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return this.Name;
|
|
}
|
|
}
|
|
|
|
private Color selectedColor;
|
|
|
|
private FontDialog fontDialog;
|
|
|
|
public ColorComboBox( FontDialog fontDialog )
|
|
{
|
|
this.fontDialog = fontDialog;
|
|
|
|
DropDownStyle = ComboBoxStyle.DropDownList;
|
|
DrawMode = DrawMode.OwnerDrawFixed;
|
|
|
|
Items.AddRange (new object[] {
|
|
new ColorComboBoxItem (Color.Black, "Black"),
|
|
new ColorComboBoxItem (Color.Maroon, "Maroon"),
|
|
new ColorComboBoxItem (Color.Green, "Green"),
|
|
new ColorComboBoxItem (Color.Olive, "Olive"),
|
|
new ColorComboBoxItem (Color.Navy, "Navy"),
|
|
new ColorComboBoxItem (Color.Purple, "Purple"),
|
|
new ColorComboBoxItem (Color.Teal, "Teal"),
|
|
new ColorComboBoxItem (Color.Gray, "Gray"),
|
|
new ColorComboBoxItem (Color.Silver, "Silver"),
|
|
new ColorComboBoxItem (Color.Red, "Red"),
|
|
new ColorComboBoxItem (Color.Lime, "Lime"),
|
|
new ColorComboBoxItem (Color.Yellow, "Yellow"),
|
|
new ColorComboBoxItem (Color.Blue, "Blue"),
|
|
new ColorComboBoxItem (Color.Fuchsia, "Fuchsia"),
|
|
new ColorComboBoxItem (Color.Aqua, "Aqua"),
|
|
new ColorComboBoxItem (Color.White, "White") }
|
|
);
|
|
|
|
SelectedIndex = 0;
|
|
MaxDropDownItems = 16;
|
|
}
|
|
|
|
protected override void OnDrawItem( DrawItemEventArgs e )
|
|
{
|
|
if ( e.Index == -1 )
|
|
return;
|
|
|
|
ColorComboBoxItem ccbi = Items[ e.Index ] as ColorComboBoxItem;
|
|
|
|
Rectangle r = e.Bounds;
|
|
r.X = r.X + 24;
|
|
|
|
if ( ( e.State & DrawItemState.Selected ) == DrawItemState.Selected )
|
|
{
|
|
e.Graphics.FillRectangle( ThemeEngine.Current.ResPool.GetSolidBrush( Color.Blue ), e.Bounds ); // bot blue
|
|
e.Graphics.FillRectangle( ThemeEngine.Current.ResPool.GetSolidBrush( ccbi.Color ), e.Bounds.X + 3, e.Bounds.Y + 3, e.Bounds.X + 16, e.Bounds.Bottom - 3 );
|
|
e.Graphics.DrawRectangle( ThemeEngine.Current.ResPool.GetPen( Color.Black ), e.Bounds.X + 2, e. Bounds.Y + 2, e.Bounds.X + 17, e.Bounds.Bottom - 3 );
|
|
e.Graphics.DrawString( ccbi.Name, this.Font, ThemeEngine.Current.ResPool.GetSolidBrush( Color.White ), r );
|
|
}
|
|
else
|
|
{
|
|
e.Graphics.FillRectangle( ThemeEngine.Current.ResPool.GetSolidBrush( Color.White ), e.Bounds );
|
|
e.Graphics.FillRectangle( ThemeEngine.Current.ResPool.GetSolidBrush( ccbi.Color ), e.Bounds.X + 3, e.Bounds.Y + 3, e.Bounds.X + 16, e.Bounds.Bottom - 3 );
|
|
e.Graphics.DrawRectangle( ThemeEngine.Current.ResPool.GetPen( Color.Black ), e.Bounds.X + 2, e. Bounds.Y + 2, e.Bounds.X + 17, e.Bounds.Bottom - 3 );
|
|
e.Graphics.DrawString( ccbi.Name, this.Font, ThemeEngine.Current.ResPool.GetSolidBrush( Color.Black ), r );
|
|
}
|
|
}
|
|
|
|
protected override void OnSelectedIndexChanged( EventArgs e )
|
|
{
|
|
ColorComboBoxItem ccbi = Items[ SelectedIndex ] as ColorComboBoxItem;
|
|
selectedColor = ccbi.Color;
|
|
|
|
fontDialog.Color = selectedColor;
|
|
}
|
|
}
|
|
|
|
public event EventHandler Apply {
|
|
add { Events.AddHandler (EventApply, value); }
|
|
remove { Events.RemoveHandler (EventApply, value); }
|
|
}
|
|
}
|
|
|
|
internal class MouseWheelListBox : ListBox
|
|
{
|
|
public void SendMouseWheelEvent(MouseEventArgs e)
|
|
{
|
|
OnMouseWheel (e);
|
|
}
|
|
}
|
|
}
|
|
|