<Type Name="Main" FullName="Gtk.Main">
  <TypeSignature Language="C#" Value="public class Main" Maintainer="auto" />
  <AssemblyInfo>
    <AssemblyName>gtk-sharp</AssemblyName>
    <AssemblyPublicKey>
    </AssemblyPublicKey>
    <AssemblyVersion>0.0.0.0</AssemblyVersion>
    <AssemblyCulture>neutral</AssemblyCulture>
    <Attributes />
  </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>Main loop event processing class.
</summary>
    <remarks>
Like all GUI toolkits, GTK+ uses an event-driven programming model. When the user is doing nothing, GTK+ sits in the main loop and waits for input. If the user performs some action - say, a mouse click - then the main loop "wakes up" and delivers an event to GTK+. GTK+ forwards the event to one or more widgets.
<para>
When widgets receive an event, they frequently emit one or more signals. Signals notify your program that "something interesting happened" by invoking functions you've connected to the signal with g_signal_connect(). Functions connected to a signal are often termed callbacks.
</para><para>
When your callbacks are invoked, you would typically take some action - for example, when an Open button is clicked you might display a GtkFileSelectionDialog. After a callback finishes, GTK+ will return to the main loop and await more user input. 
</para></remarks>
  </Docs>
  <Base>
    <BaseTypeName>System.Object</BaseTypeName>
  </Base>
  <Interfaces />
  <Attributes />
  <Members>
    <Member MemberName="IterationDo">
      <MemberSignature Language="C#" Value="public static bool IterationDo (bool blocking);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="blocking" Type="System.Boolean" />
      </Parameters>
      <Docs>
        <summary>Runs one iteration of the main loop.</summary>
        <param name="blocking">
          <see langword="true" /> if you want Gtk# to block if no events are pending.</param>
        <returns>Returns <see langword="true" /> if the <see cref="M:Gtk.Main.Quit" /> method was invoked to terminate the innermost loop.</returns>
        <remarks>Runs a single iteration of the mainloop. If no events are available either return or block dependent on the value of blocking.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Level">
      <MemberSignature Language="C#" Value="public static uint Level ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.UInt32</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Returns the current main loop level.</summary>
        <returns>The nesting level of the current main loop.</returns>
        <remarks>Asks for the current nesting level of the main loop. This can be useful when calling the <see cref="T:Gtk.Main.Quit" /> method.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Iteration">
      <MemberSignature Language="C#" Value="public static bool Iteration ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Runs an iteration of the main loop: blocks until an event is received.</summary>
        <returns>
          <see langword="true" /> if the <see cref="M:Gtk.Main.Quit" /> method was called to terminate the innermost main loop.</returns>
        <remarks>Runs a single iteration of the main loop. If no events are waiting to be processed Gtk# will block until the next event is noticed. If you don't want to block look at <see cref="M:Gtk.Main.IterationDo()" /> or check if any events are pending with <see cref="M:Gtk.Global.EventsPending()" /> first. </remarks>
      </Docs>
    </Member>
    <Member MemberName="DoEvent">
      <MemberSignature Language="C#" Value="public static void DoEvent (Gdk.Event evnt);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="evnt" Type="Gdk.Event" />
      </Parameters>
      <Docs>
        <summary>Processes a single Gdk Event.</summary>
        <param name="evnt">	An event to process (normally) passed by GDK.</param>
        <remarks>Processes a single GDK event. This is public only to allow filtering of events between GDK and GTK+. You will not usually need to call this function directly.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Quit">
      <MemberSignature Language="C#" Value="public static void Quit ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Terminates the innermost main loop.</summary>
        <remarks>This terminates the innermost main loop.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public Main ();" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>Public constructor.</summary>
        <returns>a <see cref="T:Gtk.Main" /></returns>
        <remarks></remarks>
      </Docs>
    </Member>
  </Members>
</Type>
