<Type Name="SizeGroup" FullName="Gtk.SizeGroup">
  <TypeSignature Language="C#" Value="public class SizeGroup : GLib.Object, IWrapper, IDisposable" Maintainer="Lee Mallabone" />
  <AssemblyInfo>
    <AssemblyName>gtk-sharp</AssemblyName>
    <AssemblyVersion>0.0.0.0</AssemblyVersion>
    <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>Group widgets so they request the same size.</summary>
    <remarks>
      <para>
    		A SizeGroup provides a mechanism for grouping a number of widgets together so they all request the same amount of space. This is typically useful when you want a column of widgets to have the same size, but you can't use a <see cref="T:Gtk.Table" /> widget. Its use is effectively demonstrated by the Human Interface Guidelines of the Gnome project.
    	</para>
      <para>
    		In detail, the size requested for each widget in a SizeGroup is the maximum of the sizes that would have been requested for each widget in the SizeGroup without a SizeGroup. The <see cref="P:Gtk.SizeGroup.Mode" /> of the size group determines whether this applies to the horizontal size, the vertical size, or both sizes.
    	</para>
      <para>
			Note that SizeGroups only affect the amount of space requested, not the size that the widgets finally receive. If you want the widgets in a SizeGroup to actually be the same size, you need to pack them in such a way that they get the size they request and not more. For example, if you are packing your widgets into a table, you would not include the Fill flag.
		</para>
      <para>
			SizeGroup objects are referenced by each widget in the size group, so once you have added all widgets to a SizeGroup, you can drop the initial reference to the SizeGroup by calling <see cref="M:GLib.Object.Unref" />. If the widgets in the SizeGroup are subsequently destroyed, then they will be removed from the SizeGroup and drop their references on the SizeGroup; when all widgets have been removed, the size group will be freed.
		</para>
      <para>
			Widgets can be part of multiple size groups; GTK will compute the horizontal size of a widget from the horizontal requisition of all widgets that can be reached from the widget by a chain of size groups of type <see cref="P:Gtk.SizeGroupMode.Horizontal" /> or <see cref="P:Gtk.SizeGroupMode.Both" />. Likewise, the vertical size is computed from the vertical requisition of all widgets that can be reached from the widget by a chain of size groups of type <see cref="P:Gtk.SizeGroupMode.Vertical" /> or <see cref="P:Gtk.SizeGroupMode.Both" />.
    	</para>
    </remarks>
  </Docs>
  <Base>
    <BaseTypeName>GLib.Object</BaseTypeName>
  </Base>
  <Interfaces>
    <Interface>
      <InterfaceName>GLib.IWrapper</InterfaceName>
    </Interface>
    <Interface>
      <InterfaceName>System.IDisposable</InterfaceName>
    </Interface>
  </Interfaces>
  <Attributes />
  <Members>
    <Member MemberName="AddWidget">
      <MemberSignature Language="C#" Value="public void AddWidget (Gtk.Widget widget);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
		<Parameter Name="widget" Type="Gtk.Widget" />
	</Parameters>
      <Docs>
        <summary>Places a widget in this SizeGroup</summary>
        <param name="widget">A Widget whose size should be tied to widgets in a group.</param>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="RemoveWidget">
      <MemberSignature Language="C#" Value="public void RemoveWidget (Gtk.Widget widget);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
		<Parameter Name="widget" Type="Gtk.Widget" />
	</Parameters>
      <Docs>
        <summary>Removes a widget from this SizeGroup</summary>
        <param name="widget">A Widget whose size should no longer be tied to the widgets in this group.</param>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="Finalize">
      <MemberSignature Language="C#" Value="protected virtual void Finalize ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Disposes the resources associated with the object.</summary>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public SizeGroup (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>
        <returns>An instance of SizeGroup, wrapping the C object.</returns>
        <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 SizeGroup (Gtk.SizeGroupMode mode);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
		<Parameter Name="mode" Type="Gtk.SizeGroupMode" />
	</Parameters>
      <Docs>
        <summary>Create a new SizeGroup.</summary>
        <param name="mode">The mode to indicate direction(s) that should have their sizes tied together.</param>
        <returns>A new SizeGroup</returns>
        <remarks>
          <para>The direction that size is tied can be altered later using the <see cref="P:Gtk.SizeGroup.Mode" /> property.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected SizeGroup ();" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>Internal constructor</summary>
        <returns />
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="GType">
      <MemberSignature Language="C#" Value="public static uint GType { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.UInt32</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The GLib Type for Gtk.SizeGroup</summary>
        <returns>The GLib Type for the Gtk.SizeGroup class.</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="Mode">
      <MemberSignature Language="C#" Value="public Gtk.SizeGroupMode Mode { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.SizeGroupMode</ReturnType>
      </ReturnValue>
      <Parameters>
	</Parameters>
      <Docs>
        <summary>Sets a mode to determine which direction this SizeGroup controls.</summary>
        <param name="value">A new direction 'mode' for this SizeGroup to tie together.</param>
        <returns>The current 'mode' that indicates the direction this SizeGroup ties together.</returns>
        <remarks>
          <para>
        			The mode of the size group determines whether the widgets in the SizeGroup should all have the same <see cref="P:Gtk.SizeGroupMode.Horizontal" /> or <see cref="P:Gtk.SizeGroupMode.Vertical" /> requisition, or should all have the same requisition in <see cref="P:Gtk.SizeGroupMode.Both" /> directions.	
        		</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected SizeGroup (GLib.Type gtype);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
		<Parameter Name="gtype" Type="GLib.Type" />
	</Parameters>
      <Docs>
        <summary>Internal constructor</summary>
        <param name="gtype">GLib type for the type</param>
        <returns>Creates a new instance of SizeGroup, using the GLib-provided type</returns>
        <remarks>
          <para>This is a constructor used by derivative types of <see cref="T:Gtk.SizeGroup" /> that would have their own GLib type assigned to it.  This is not typically used by C# code.</para>
        </remarks>
      </Docs>
    </Member>
  </Members>
</Type>
