<Type Name="Statusbar" FullName="Gtk.Statusbar">
  <TypeSignature Language="C#" Maintainer="Lee Mallabone" Value="public class Statusbar : Gtk.HBox" />
  <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>Report messages of minor importance to the user.</summary>
    <remarks>
      <para>The Statusbar widget displays textual messages to the user. Statusbars are typically placed at the bottom of application <see cref="T:Gtk.Window" />s.</para>
      <para>A Statusbar may provide a regular commentary of the application's status (as is usually the case in a web browser, for example), or may be used to simply output a message when the status changes, (when an upload is complete in an FTP client, for example).</para>
      <para>As a finishing touch to the StatusBar, it can have a "resize grip" added in the lower right corner. This is a triangular area that can be clicked on to resize the window containing the statusbar.</para>
      <para>Status bars in Gtk maintain a stack of messages. The message at the top of the each bar's stack is the one that will currently be displayed.</para>
      <para>Any messages added to a statusbar's stack must specify a <paramref name="context_id" /> that is used to uniquely identify the source of a message. This <paramref name="context_id" /> can be generated with <see cref="M:Gtk.Statusbar.GetContextId" />, given a message. Note that messages are stored in a stack, and when choosing which message to display, the stack structure is adhered to, regardless of the context identifier of a message.</para>
      <para>Messages are added to the bar's stack with <see cref="M:Gtk.Statusbar.Push" />, and the message at the top of the stack can be removed using <see cref="M:Gtk.Statusbar.Pop" />. A message can be removed from anywhere in the stack if it's <paramref name="message_id" /> was recorded at the time it was added. This is done using <see cref="M:Gtk.Statusbar.Remove" />.</para>
      <example>
        <code lang="C#">
using System;
using Gtk;

class StatusbarSample
{
	Statusbar sb;
	const int id = 1;
	int count;

	static void Main ()
	{
		new StatusbarSample ();
	}

	StatusbarSample ()
	{
		Application.Init ();
		count = 0;
		Window win = new Window ("StatusbarSample");
		win.DeleteEvent += new DeleteEventHandler (OnWinDelete);
		win.SetDefaultSize (150, 100);

		VBox vbox = new VBox (false, 1);
		win.Add (vbox);

		Button btn = new Button ("Add to counter");
		btn.Clicked += new EventHandler (OnButtonClicked);
		vbox.Add (btn);

		sb = new Statusbar ();
		sb.Push (id, "Welcome!");
		sb.HasResizeGrip = false;
		vbox.Add (sb);

		win.ShowAll ();
		Application.Run ();
	}

	void OnButtonClicked (object obj, EventArgs args)
	{
		count ++;
		string message = String.Format ("Pushed {0} times", count);
		sb.Pop (id);
		sb.Push (id, message);
	}

	void OnWinDelete (object obj, DeleteEventArgs args)
	{
		Application.Quit ();
	}
}
  </code>
      </example>
    </remarks>
  </Docs>
  <Base>
    <BaseTypeName>Gtk.HBox</BaseTypeName>
  </Base>
  <Interfaces>
  </Interfaces>
  <Members>
    <Member MemberName="Push">
      <MemberSignature Language="C#" Value="public uint Push (uint context_id, string text);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.UInt32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="context_id" Type="System.UInt32" />
        <Parameter Name="text" Type="System.String" />
      </Parameters>
      <Docs>
        <summary>Pushes a new message onto the stack.</summary>
        <param name="context_id">The new message's context ID, as generated by <see cref="M:Gtk.Statusbar.GenerateContextId" />.</param>
        <param name="text">The message to display to the user.</param>
        <returns>The message's new message id for use with <see cref="M:Gtk.Statusbar.Remove" />.</returns>
        <remarks>
          <para>Note that the <paramref name="context_id" /> and the returned <paramref name="message_id" /> are equivalent and are both required for <see cref="M:Gtk.Statusbar.Remove" /> to work.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="Remove">
      <MemberSignature Language="C#" Value="public void Remove (uint context_id, uint message_id);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="context_id" Type="System.UInt32" />
        <Parameter Name="message_id" Type="System.UInt32" />
      </Parameters>
      <Docs>
        <summary>Forces the removal of a message from a statusbar's stack.</summary>
        <param name="context_id">A context identifier.</param>
        <param name="message_id">A message identifier.</param>
        <remarks>
          <para>The exact <paramref name="context_id" /> and <paramref name="message_id" /> must be specified.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="Pop">
      <MemberSignature Language="C#" Value="public void Pop (uint context_id);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="context_id" Type="System.UInt32" />
      </Parameters>
      <Docs>
        <summary>Removes the message at the top of the Statusbar's stack.</summary>
        <param name="context_id">A context identifier</param>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="GetContextId">
      <MemberSignature Language="C#" Value="public uint GetContextId (string context_description);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.UInt32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="context_description" Type="System.String" />
      </Parameters>
      <Docs>
        <summary>Generates an identifier based on the <paramref name="context_description" />.</summary>
        <param name="context_description">A description of the message you want to generate an identifier for.</param>
        <returns>An integer identifier</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public Statusbar (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 Statusbar ();" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>The main way to create a new status bar.</summary>
        <remarks>
          <para>Creates a new Statusbar with an empty message stack.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="HasResizeGrip">
      <MemberSignature Language="C#" Value="public bool HasResizeGrip { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
      </Parameters>
      <Docs>
        <summary>Manage whether this Statusbar has a resizable grip over its bottom right corner.</summary>
        <value>Whether or not there is currently a resize grip on the Statusbar.</value>
        <remarks />
      </Docs>
      <Attributes>
        <Attribute>
          <AttributeName>GLib.Property("has-resize-grip")</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="TextPushed">
      <MemberSignature Language="C#" Value="public event Gtk.TextPushedHandler TextPushed;" />
      <MemberType>Event</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.TextPushedHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>An event that is raised when a message is pushed onto the Statusbar's message stack using the <see cref="M:Gtk.Statusbar.Push" /> method.</summary>
        <remarks>
          <para>Connect to this event with a <see cref="T:Gtk.TextPushedHandler" />.</para>
        </remarks>
      </Docs>
      <Attributes>
        <Attribute>
          <AttributeName>GLib.Signal("text_pushed")</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="TextPopped">
      <MemberSignature Language="C#" Value="public event Gtk.TextPoppedHandler TextPopped;" />
      <MemberType>Event</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.TextPoppedHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>An event that is raised when a message is popped off the Statusbar's message stack using the <see cref="M:Gtk.Statusbar.Pop" /> method.</summary>
        <remarks>
          <para>Connect to this event with a <see cref="T:Gtk.TextPoppedHandler" />.</para>
        </remarks>
      </Docs>
      <Attributes>
        <Attribute>
          <AttributeName>GLib.Signal("text_popped")</AttributeName>
        </Attribute>
      </Attributes>
    </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.Statusbar" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="OnTextPopped">
      <MemberSignature Language="C#" Value="protected virtual void OnTextPopped (uint context_id, string text);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="context_id" Type="System.UInt32" />
        <Parameter Name="text" Type="System.String" />
      </Parameters>
      <Docs>
        <summary>Default handler for the <see cref="M:Gtk.Statusbar.TextPopped" /> event.</summary>
        <param name="context_id">a <see cref="T:System.UInt32" /></param>
        <param name="text">a <see cref="T:System.String" /></param>
        <remarks>Override this method in a subclass to provide a default handler for the <see cref="M:Gtk.Statusbar.TextPopped" /> event.</remarks>
      </Docs>
    </Member>
    <Member MemberName="OnTextPushed">
      <MemberSignature Language="C#" Value="protected virtual void OnTextPushed (uint context_id, string text);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="context_id" Type="System.UInt32" />
        <Parameter Name="text" Type="System.String" />
      </Parameters>
      <Docs>
        <summary>Default handler for the <see cref="M:Gtk.Statusbar.TextPushed" /> event.</summary>
        <param name="context_id">a <see cref="T:System.UInt32" /></param>
        <param name="text">a <see cref="T:System.String" /></param>
        <remarks>Override this method in a subclass to provide a default handler for the <see cref="M:Gtk.Statusbar.TextPushed" /> event.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected Statusbar (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>
