]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkradiotoolbutton.c
Use gdk_threads_add_timeout to popup the selection window
[~andy/gtk] / gtk / gtkradiotoolbutton.c
index 0bdf033326997a71a603a7e260dcfef80ae12b72..ab849edab2f634a3df5e719c031372df286af42f 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include <config.h>
-#include "gtkalias.h"
+#include "config.h"
 #include "gtkradiotoolbutton.h"
 #include "gtkradiobutton.h"
 #include "gtkintl.h"
+#include "gtkprivate.h"
+
+
+/**
+ * SECTION:gtkradiotoolbutton
+ * @Short_description: A toolbar item that contains a radio button
+ * @Title: GtkRadioToolButton
+ * @See_also: #GtkToolbar, #GtkToolButton
+ *
+ * A #GtkRadioToolButton is a #GtkToolItem that contains a radio button,
+ * that is, a button that is part of a group of toggle buttons where only
+ * one button can be active at a time.
+ *
+ * Use gtk_radio_tool_button_new() to create a new
+ * #GtkRadioToolButton. Use gtk_radio_tool_button_new_from_widget() to
+ * create a new #GtkRadioToolButton that is part of the same group as an
+ * existing #GtkRadioToolButton. Use
+ * gtk_radio_tool_button_new_from_stock() or
+ * gtk_radio_tool_button_new_with_stock_from_widget() create a new
+ * #GtkRadioToolButton containing a stock item.
+ */
+
 
 enum {
   PROP_0,
   PROP_GROUP
 };
 
-static void gtk_radio_tool_button_init         (GtkRadioToolButton      *button);
-static void gtk_radio_tool_button_class_init   (GtkRadioToolButtonClass *klass);
 static void gtk_radio_tool_button_set_property (GObject         *object,
                                                guint            prop_id,
                                                const GValue    *value,
                                                GParamSpec      *pspec);
 
-GType
-gtk_radio_tool_button_get_type (void)
-{
-  static GType type = 0;
-
-  if (!type)
-    {
-      static const GTypeInfo type_info =
-       {
-         sizeof (GtkRadioToolButtonClass),
-         (GBaseInitFunc) NULL,
-         (GBaseFinalizeFunc) NULL,
-         (GClassInitFunc) gtk_radio_tool_button_class_init,
-         (GClassFinalizeFunc) NULL,
-         NULL,
-         sizeof (GtkRadioToolButton),
-         0, /* n_preallocs */
-         (GInstanceInitFunc) gtk_radio_tool_button_init
-       };
+G_DEFINE_TYPE (GtkRadioToolButton, gtk_radio_tool_button, GTK_TYPE_TOGGLE_TOOL_BUTTON)
 
-      type = g_type_register_static (GTK_TYPE_TOGGLE_TOOL_BUTTON,
-                                    "GtkRadioToolButton", &type_info, 0);
-    }
-  return type;
-}
-
-     
 static void
 gtk_radio_tool_button_class_init (GtkRadioToolButtonClass *klass)
 {
@@ -88,10 +80,10 @@ gtk_radio_tool_button_class_init (GtkRadioToolButtonClass *klass)
   g_object_class_install_property (object_class,
                                   PROP_GROUP,
                                   g_param_spec_object ("group",
-                                                       _("Group"),
-                                                       _("The radio tool button whose group this button belongs to."),
+                                                       P_("Group"),
+                                                       P_("The radio tool button whose group this button belongs to."),
                                                        GTK_TYPE_RADIO_TOOL_BUTTON,
-                                                       G_PARAM_WRITABLE));
+                                                       GTK_PARAM_WRITABLE));
 
 }
 
@@ -135,7 +127,8 @@ gtk_radio_tool_button_set_property (GObject         *object,
 
 /**
  * gtk_radio_tool_button_new:
- * @group: An existing radio button group, or %NULL if you are creating a new group
+ * @group: (allow-none) (transfer none) (element-type GtkRadioButton): An
+ *   existing radio button group, or %NULL if you are creating a new group
  * 
  * Creates a new #GtkRadioToolButton, adding it to @group.
  * 
@@ -158,14 +151,15 @@ gtk_radio_tool_button_new (GSList *group)
 
 /**
  * gtk_radio_tool_button_new_from_stock:
- * @group: an existing radio button group, or %NULL if you are creating a new group
+ * @group: (allow-none) (element-type GtkRadioButton): an existing radio button
+ *   group, or %NULL if you are creating a new group
  * @stock_id: the name of a stock item
  * 
  * Creates a new #GtkRadioToolButton, adding it to @group. 
  * The new #GtkRadioToolButton will contain an icon and label from the
  * stock item indicated by @stock_id.
  * 
- * Return value: The new #GtkRadioToolItem
+ * Return value: The new #GtkRadioToolButton
  * 
  * Since: 2.4
  **/
@@ -178,7 +172,7 @@ gtk_radio_tool_button_new_from_stock (GSList      *group,
   g_return_val_if_fail (stock_id != NULL, NULL);
   
   button = g_object_new (GTK_TYPE_RADIO_TOOL_BUTTON,
-                        "stock_id", stock_id,
+                        "stock-id", stock_id,
                         NULL);
 
 
@@ -188,13 +182,13 @@ gtk_radio_tool_button_new_from_stock (GSList      *group,
 }
 
 /**
- * gtk_radio_tool_button_new_from_widget:
- * @group: An existing #GtkRadioToolButton
- * 
+ * gtk_radio_tool_button_new_from_widget: (constructor)
+ * @group: (allow-none): An existing #GtkRadioToolButton, or %NULL
+ *
  * Creates a new #GtkRadioToolButton adding it to the same group as @gruup
- * 
- * Return value: The new #GtkRadioToolButton
- * 
+ *
+ * Return value: (transfer none): The new #GtkRadioToolButton
+ *
  * Since: 2.4
  **/
 GtkToolItem *
@@ -202,25 +196,25 @@ gtk_radio_tool_button_new_from_widget (GtkRadioToolButton *group)
 {
   GSList *list = NULL;
   
-  g_return_val_if_fail (GTK_IS_RADIO_TOOL_BUTTON (group), NULL);
+  g_return_val_if_fail (group == NULL || GTK_IS_RADIO_TOOL_BUTTON (group), NULL);
 
-  if (group)
+  if (group != NULL)
     list = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (group));
   
   return gtk_radio_tool_button_new (list);
 }
 
 /**
- * gtk_radio_tool_button_new_with_stock_from_widget:
- * @group: An existing #GtkRadioToolButton.
- * @stock_id: the name of a stock item 
- * 
+ * gtk_radio_tool_button_new_with_stock_from_widget: (constructor)
+ * @group: (allow-none): An existing #GtkRadioToolButton.
+ * @stock_id: the name of a stock item
+ *
  * Creates a new #GtkRadioToolButton adding it to the same group as @group.
  * The new #GtkRadioToolButton will contain an icon and label from the
  * stock item indicated by @stock_id.
- * 
- * Return value: A new #GtkRadioToolButton
- * 
+ *
+ * Return value: (transfer none): A new #GtkRadioToolButton
+ *
  * Since: 2.4
  **/
 GtkToolItem *
@@ -229,9 +223,9 @@ gtk_radio_tool_button_new_with_stock_from_widget (GtkRadioToolButton *group,
 {
   GSList *list = NULL;
   
-  g_return_val_if_fail (GTK_IS_RADIO_TOOL_BUTTON (group), NULL);
+  g_return_val_if_fail (group == NULL || GTK_IS_RADIO_TOOL_BUTTON (group), NULL);
 
-  if (group)
+  if (group != NULL)
     list = gtk_radio_tool_button_get_group (group);
   
   return gtk_radio_tool_button_new_from_stock (list, stock_id);
@@ -248,11 +242,11 @@ get_radio_button (GtkRadioToolButton *button)
  * @button: a #GtkRadioToolButton
  *
  * Returns the radio button group @button belongs to.
- * 
- * Return value: The group @button belongs to.
- * 
+ *
+ * Return value: (transfer none) (element-type GtkRadioButton): The group @button belongs to.
+ *
  * Since: 2.4
- **/
+ */
 GSList *
 gtk_radio_tool_button_get_group (GtkRadioToolButton *button)
 {
@@ -264,7 +258,7 @@ gtk_radio_tool_button_get_group (GtkRadioToolButton *button)
 /**
  * gtk_radio_tool_button_set_group:
  * @button: a #GtkRadioToolButton
- * @group: an existing radio button group
+ * @group: (transfer none) (element-type GtkRadioButton): an existing radio button group
  * 
  * Adds @button to @group, removing it from the group it belonged to before.
  * 
@@ -278,4 +272,3 @@ gtk_radio_tool_button_set_group (GtkRadioToolButton *button,
 
   gtk_radio_button_set_group (get_radio_button (button), group);
 }
-