Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

121 lines (107 sloc) 3.412 kB
using System;
using Eto.Drawing;
namespace Eto.Forms
{
/// <summary>
/// Dialog for a user to pick a font and style
/// </summary>
/// <remarks>
/// The font dialog on some platforms may run asynchronously, and return immediately after
/// the <see cref="CommonDialog.ShowDialog(Control)"/> call. For example, on OS X the font dialog is a non-modal
/// shared tool window that stays on the screen until the user dismisses it.
///
/// You should always handle the <see cref="FontChanged"/> event to determine when the value has changed.
/// </remarks>
[Handler(typeof(FontDialog.IHandler))]
public class FontDialog : CommonDialog
{
new IHandler Handler { get { return (IHandler)base.Handler; } }
/// <summary>
/// Identifier for handlers when attaching the <see cref="FontChanged"/> event.
/// </summary>
public const string FontChangedEvent = "FontDialog.FontChanged";
/// <summary>
/// Occurs when the <see cref="Font"/> is changed.
/// </summary>
public event EventHandler<EventArgs> FontChanged
{
add { Properties.AddHandlerEvent(FontChangedEvent, value); }
remove { Properties.RemoveEvent(FontChangedEvent, value); }
}
/// <summary>
/// Raises the <see cref="FontChanged"/> event.
/// </summary>
/// <param name="e">E.</param>
protected virtual void OnFontChanged(EventArgs e)
{
Properties.TriggerEvent(FontChangedEvent, this, e);
}
static FontDialog()
{
EventLookup.Register<FontDialog>(c => c.OnFontChanged(null), FontDialog.FontChangedEvent);
}
/// <summary>
/// Initializes a new instance of the <see cref="Eto.Forms.FontDialog"/> class.
/// </summary>
public FontDialog()
{
}
/// <summary>
/// Initializes a new instance of the <see cref="Eto.Forms.FontDialog"/> class.
/// </summary>
/// <param name="generator">Generator.</param>
[Obsolete("Use default constructor instead")]
public FontDialog(Generator generator)
: base(generator, typeof(IHandler), true)
{
}
/// <summary>
/// Gets or sets the currently selected font.
/// </summary>
/// <value>The selected font.</value>
public Font Font
{
get { return Handler.Font; }
set { Handler.Font = value; }
}
/// <summary>
/// Gets an instance of an object used to perform callbacks to the widget from handler implementations
/// </summary>
/// <returns>The callback.</returns>
protected override object GetCallback() { return new Callback(); }
/// <summary>
/// Callback interface for handlers of the <see cref="FontDialog"/>.
/// </summary>
public new interface ICallback : CommonDialog.ICallback
{
/// <summary>
/// Raises the font changed event.
/// </summary>
void OnFontChanged(FontDialog widget, EventArgs e);
}
/// <summary>
/// Callback implementation for handlers of the <see cref="FontDialog"/>.
/// </summary>
protected class Callback : ICallback
{
/// <summary>
/// Raises the font changed event.
/// </summary>
public void OnFontChanged(FontDialog widget, EventArgs e)
{
widget.Platform.Invoke(() => widget.OnFontChanged(e));
}
}
/// <summary>
/// Handler interface for the <see cref="FontDialog"/>.
/// </summary>
public new interface IHandler : CommonDialog.IHandler
{
/// <summary>
/// Gets or sets the currently selected font.
/// </summary>
/// <value>The selected font.</value>
Font Font { get; set; }
}
}
}
Jump to Line
Something went wrong with that request. Please try again.