<Type Name="OptionMenu" FullName="Gtk.OptionMenu">
  <TypeSignature Language="C#" Maintainer="John Luke" Value="public class OptionMenu : Gtk.Button" />
  <AssemblyInfo>
    <AssemblyName>gtk-sharp</AssemblyName>
    <AssemblyPublicKey>
    </AssemblyPublicKey>
    <AssemblyVersion>2.12.0.0</AssemblyVersion>
  </AssemblyInfo>
  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
  <Docs>
    <summary>A widget used to choose from a list of valid choices.</summary>
    <remarks>
      <para>
		A <see cref="T:Gtk.OptionMenu" /> is a widget that allows the user to choose from a list of valid choices.
		The <see cref="T:Gtk.OptionMenu" /> displays the selected choice.
		When activated the <see cref="T:Gtk.OptionMenu" /> displays a popup <see cref="T:Gtk.Menu" /> which allows the user to make a new choice.    
	  </para>
      <para>
	    Using a <see cref="T:Gtk.OptionMenu" /> is simple; build a <see cref="T:Gtk.Menu" />, by calling <see cref="C:Gtk.Menu()" />, then appending <see cref="T:Gtk.MenuItem" />s to it with <see cref="M:Gtk.MenuShell.Append()" />.
		Set that menu on the <see cref="T:Gtk.OptionMenu" /> with <see cref="P:Gtk.OptionMenu.Menu" />.
		Set the selected <see cref="T:Gtk.MenuItem" /> with <see cref="M:Gtk.OptionMenu.SetHistory(System.UInt32)" />; connect to the event <see cref="E:Gtk.OptionMenu.Changed" />; when the <see cref="E:Gtk.OptionMenu.Changed" /> event occurs, check the new selected <see cref="T:Gtk.MenuItem" /> with <see cref="P:Gtk.OptionMenu.History" />.
	  </para>
    </remarks>
    <example>
      <code language="C#">
using System;
using Gtk;

class OptionMenuSample
{
	OptionMenu opt;
	
	static void Main ()
	{
		new OptionMenuSample ();
	}
	
	OptionMenuSample ()
	{
		Application.Init ();
		
		Window win = new Window ("OptionMenuSample");
		win.DeleteEvent += new DeleteEventHandler (OnWinDelete);
		
		// set up the OptionMenu
		opt = new OptionMenu ();
		opt.Changed += new EventHandler (OnOptionChanged);
		Menu m = new Menu ();
		MenuItem miOne = new MenuItem ("One");
		m.Append (miOne);
		MenuItem miTwo = new MenuItem ("Two");
		m.Append (miTwo);
		MenuItem miThree = new MenuItem ("Three");
		m.Append (miThree);
		
		// add children widgets to their parents
		opt.Menu = m;
		win.Add (opt);
		
		
		// set the OptionMenu to a value
		opt.SetHistory (2);
		
		win.ShowAll ();
		
		Application.Run ();
	}
	
	void OnOptionChanged (object o, EventArgs args)
	{
		Console.WriteLine (opt.History);
	}
	
	void OnWinDelete (object o, DeleteEventArgs args)
	{
		Application.Quit ();
	}
}
	  </code>
    </example>
  </Docs>
  <Base>
    <BaseTypeName>Gtk.Button</BaseTypeName>
  </Base>
  <Interfaces>
  </Interfaces>
  <Attributes>
    <Attribute>
      <AttributeName>System.Obsolete</AttributeName>
    </Attribute>
  </Attributes>
  <Members>
    <Member MemberName="RemoveMenu">
      <MemberSignature Language="C#" Value="public void RemoveMenu ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Removes the menu from the <see cref="T:Gtk.OptionMenu" />.</summary>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public OptionMenu (IntPtr raw);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="raw" Type="System.IntPtr" />
      </Parameters>
      <Docs>
        <summary>Internal constructor</summary>
        <param name="raw">Pointer to the C object.</param>
        <remarks>
          <para>This is an internal constructor, and should not be used by user code.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public OptionMenu ();" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>Creates a new <see cref="T:Gtk.OptionMenu" /></summary>
        <remarks>This is the default constructor for <see cref="T:Gtk.OptionMenu" /></remarks>
      </Docs>
    </Member>
    <Member MemberName="History">
      <MemberSignature Language="C#" Value="public int History { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Retrieves the index of the currently selected <see cref="T:Gtk.MenuItem" />.</summary>
        <value>an object of type <see cref="T:System.Int32" /></value>
        <remarks>The <see cref="T:Gtk.MenuItem" />s are numbered from top to bottom, starting with 0.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Menu">
      <MemberSignature Language="C#" Value="public Gtk.Widget Menu { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.Widget</ReturnType>
      </ReturnValue>
      <Parameters>
      </Parameters>
      <Docs>
        <summary>The menu of options.</summary>
        <value>an object of type <see cref="T:Gtk.Widget" /></value>
        <remarks />
      </Docs>
      <Attributes>
        <Attribute>
          <AttributeName>GLib.Property("menu")</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="Changed">
      <MemberSignature Language="C#" Value="public event EventHandler Changed;" />
      <MemberType>Event</MemberType>
      <ReturnValue>
        <ReturnType>System.EventHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Emitted when the <see cref="T:Gtk.OptionMenu" /> selection is changed.</summary>
        <remarks />
      </Docs>
      <Attributes>
        <Attribute>
          <AttributeName>GLib.Signal("changed")</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="SetHistory">
      <MemberSignature Language="C#" Value="public void SetHistory (uint index_);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="index_" Type="System.UInt32" />
      </Parameters>
      <Docs>
        <summary>Selects the menu item specified by <paramref name="index_" /> making it the newly selected value for the <see cref="T:Gtk.OptionMenu" />.</summary>
        <param name="index_">a <see cref="T:System.UInt32" /></param>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="GType">
      <MemberSignature Language="C#" Value="public static GLib.GType GType { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>GLib.GType</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>GType Property.</summary>
        <value>a <see cref="T:GLib.GType" /></value>
        <remarks>Returns the native <see cref="T:GLib.GType" /> value for <see cref="T:Gtk.OptionMenu" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="OnChanged">
      <MemberSignature Language="C#" Value="protected virtual void OnChanged ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Default handler for the <see cref="M:Gtk.OptionMenu.Changed" /> event.</summary>
        <remarks>Override this method in a subclass to provide a default handler for the <see cref="M:Gtk.OptionMenu.Changed" /> event.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected OptionMenu (GLib.GType gtype);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="gtype" Type="GLib.GType" />
      </Parameters>
      <Docs>
        <summary>Protected Constructor.</summary>
        <param name="gtype">a <see cref="T:GLib.GType" /></param>
        <remarks>Chain to this constructor if you have manually registered a native <see cref="T:GLib.GType" /> value for your subclass.</remarks>
      </Docs>
      <Attributes>
        <Attribute>
          <AttributeName>System.Obsolete</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
  </Members>
</Type>
