<Type Name="SizeGroup" FullName="Gtk.SizeGroup">
  <TypeSignature Language="C#" Maintainer="Lee Mallabone" Value="public class SizeGroup : GLib.Object" />
  <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>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>
  </Interfaces>
  <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=".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>
        <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>
        <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="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>
        <value>The current 'mode' that indicates the direction this SizeGroup ties together.</value>
        <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>
      <Attributes>
        <Attribute>
          <AttributeName>GLib.Property("mode")</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.SizeGroup" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected SizeGroup (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>
    <Member MemberName="IgnoreHidden">
      <MemberSignature Language="C#" Value="public bool IgnoreHidden { set; get; };" />
      <MemberType>Property</MemberType>
      <Attributes>
        <Attribute>
          <AttributeName>GLib.Property("ignore-hidden")</AttributeName>
        </Attribute>
      </Attributes>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Indicates if hidden widgets are ignored when calculating size.</summary>
        <value>
          <see langword="true" /> if hidden widgets are to be ignored.</value>
        <remarks />
        <since version="Gtk# 2.8" />
      </Docs>
    </Member>
    <Member MemberName="Widgets">
      <MemberSignature Language="C#" Value="public Gtk.Widget[] Widgets { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.Widget[]</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The Widgets associated with the group.</summary>
        <value>an array of widgets.</value>
        <remarks />
        <since version="Gtk# 2.10" />
      </Docs>
    </Member>
  </Members>
</Type>
