]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkcolorseldialog.c
treeview: Add _gtk_rbtree_node_get_index()
[~andy/gtk] / gtk / gtkcolorseldialog.c
index 356e450b8cc8a9355b867f6a242076c45d3de40f..a8a77e7177adbb8be27f188802d4c3b9f5632c97 100644 (file)
  * files for a list of changes.  These files are distributed with
  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
  */
-#include <config.h>
+#include "config.h"
 #include <string.h>
 #include <glib.h>
 #include "gtkcolorseldialog.h"
 #include "gtkframe.h"
-#include "gtkhbbox.h"
 #include "gtkbutton.h"
 #include "gtkstock.h"
 #include "gtkintl.h"
 #include "gtkbuildable.h"
-#include "gtkalias.h"
+
+
+/**
+ * SECTION:gtkcolorseldlg
+ * @Short_description: A standard dialog box for selecting a color
+ * @Title: GtkColorSelectionDialog
+ *
+ * The #GtkColorSelectionDialog provides a standard dialog which
+ * allows the user to select a color much like the #GtkFileSelection
+ * provides a standard dialog for file selection.
+ *
+ * Use gtk_color_selection_dialog_get_color_selection() to get the
+ * #GtkColorSelection widget contained within the dialog. Use this widget
+ * and its gtk_color_selection_get_current_color()
+ * function to gain access to the selected color.  Connect a handler
+ * for this widget's #GtkColorSelection::color-changed signal to be notified
+ * when the color changes.
+ *
+ * <refsect2 id="GtkColorSelectionDialog-BUILDER-UI">
+ * <title>GtkColorSelectionDialog as GtkBuildable</title>
+ * The GtkColorSelectionDialog implementation of the GtkBuildable interface
+ * exposes the embedded #GtkColorSelection as internal child with the
+ * name "color_selection". It also exposes the buttons with the names
+ * "ok_button", "cancel_button" and "help_button".
+ * </refsect2>
+ */
+
+
+struct _GtkColorSelectionDialogPrivate
+{
+  GtkWidget *colorsel;
+  GtkWidget *ok_button;
+  GtkWidget *cancel_button;
+  GtkWidget *help_button;
+};
 
 enum {
   PROP_0,
@@ -66,23 +99,22 @@ gtk_color_selection_dialog_get_property (GObject         *object,
                                         GValue          *value,
                                         GParamSpec      *pspec)
 {
-  GtkColorSelectionDialog *colorsel;
-
-  colorsel = GTK_COLOR_SELECTION_DIALOG (object);
+  GtkColorSelectionDialog *colorsel = GTK_COLOR_SELECTION_DIALOG (object);
+  GtkColorSelectionDialogPrivate *priv = colorsel->priv;
 
   switch (prop_id)
     {
     case PROP_COLOR_SELECTION:
-      g_value_set_object (value, colorsel->colorsel);
+      g_value_set_object (value, priv->colorsel);
       break;
     case PROP_OK_BUTTON:
-      g_value_set_object (value, colorsel->ok_button);
+      g_value_set_object (value, priv->ok_button);
       break;
     case PROP_CANCEL_BUTTON:
-      g_value_set_object (value, colorsel->cancel_button);
+      g_value_set_object (value, priv->cancel_button);
       break;
     case PROP_HELP_BUTTON:
-      g_value_set_object (value, colorsel->help_button);
+      g_value_set_object (value, priv->help_button);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -94,6 +126,8 @@ static void
 gtk_color_selection_dialog_class_init (GtkColorSelectionDialogClass *klass)
 {
   GObjectClass   *gobject_class = G_OBJECT_CLASS (klass);
+  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
   gobject_class->get_property = gtk_color_selection_dialog_get_property;
 
   g_object_class_install_property (gobject_class,
@@ -124,43 +158,56 @@ gtk_color_selection_dialog_class_init (GtkColorSelectionDialogClass *klass)
                                                     P_("The help button of the dialog."),
                                                     GTK_TYPE_WIDGET,
                                                     G_PARAM_READABLE));
+
+  gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_COLOR_CHOOSER);
+
+  g_type_class_add_private (klass, sizeof (GtkColorSelectionDialogPrivate));
 }
 
 static void
 gtk_color_selection_dialog_init (GtkColorSelectionDialog *colorseldiag)
 {
+  GtkColorSelectionDialogPrivate *priv;
   GtkDialog *dialog = GTK_DIALOG (colorseldiag);
+  GtkWidget *action_area, *content_area;
+
+  colorseldiag->priv = G_TYPE_INSTANCE_GET_PRIVATE (colorseldiag,
+                                                    GTK_TYPE_COLOR_SELECTION_DIALOG,
+                                                    GtkColorSelectionDialogPrivate);
+  priv = colorseldiag->priv;
+
+  content_area = gtk_dialog_get_content_area (dialog);
+  action_area = gtk_dialog_get_action_area (dialog);
 
-  gtk_dialog_set_has_separator (dialog, FALSE);
   gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
-  gtk_box_set_spacing (GTK_BOX (dialog->vbox), 2); /* 2 * 5 + 2 = 12 */
-  gtk_container_set_border_width (GTK_CONTAINER (dialog->action_area), 5);
-  gtk_box_set_spacing (GTK_BOX (dialog->action_area), 6);
-
-  colorseldiag->colorsel = gtk_color_selection_new ();
-  gtk_container_set_border_width (GTK_CONTAINER (colorseldiag->colorsel), 5);
-  gtk_color_selection_set_has_palette (GTK_COLOR_SELECTION(colorseldiag->colorsel), FALSE); 
-  gtk_color_selection_set_has_opacity_control (GTK_COLOR_SELECTION(colorseldiag->colorsel), FALSE);
-  gtk_container_add (GTK_CONTAINER (GTK_DIALOG (colorseldiag)->vbox), colorseldiag->colorsel);
-  gtk_widget_show (colorseldiag->colorsel);
-  
-  colorseldiag->cancel_button = gtk_dialog_add_button (GTK_DIALOG (colorseldiag),
-                                                       GTK_STOCK_CANCEL,
-                                                       GTK_RESPONSE_CANCEL);
-
-  colorseldiag->ok_button = gtk_dialog_add_button (GTK_DIALOG (colorseldiag),
-                                                   GTK_STOCK_OK,
-                                                   GTK_RESPONSE_OK);
-                                                   
-  gtk_widget_grab_default (colorseldiag->ok_button);
-  
-  colorseldiag->help_button = gtk_dialog_add_button (GTK_DIALOG (colorseldiag),
-                                                     GTK_STOCK_HELP,
-                                                     GTK_RESPONSE_HELP);
+  gtk_box_set_spacing (GTK_BOX (content_area), 2); /* 2 * 5 + 2 = 12 */
+  gtk_container_set_border_width (GTK_CONTAINER (action_area), 5);
+  gtk_box_set_spacing (GTK_BOX (action_area), 6);
+
+  priv->colorsel = gtk_color_selection_new ();
+  gtk_container_set_border_width (GTK_CONTAINER (priv->colorsel), 5);
+  gtk_color_selection_set_has_palette (GTK_COLOR_SELECTION (priv->colorsel), FALSE);
+  gtk_color_selection_set_has_opacity_control (GTK_COLOR_SELECTION (priv->colorsel), FALSE);
+  gtk_container_add (GTK_CONTAINER (content_area), priv->colorsel);
+  gtk_widget_show (priv->colorsel);
+
+  priv->cancel_button = gtk_dialog_add_button (dialog,
+                                               GTK_STOCK_CANCEL,
+                                               GTK_RESPONSE_CANCEL);
+
+  priv->ok_button = gtk_dialog_add_button (dialog,
+                                           _("_Select"),
+                                           GTK_RESPONSE_OK);
 
-  gtk_widget_hide (colorseldiag->help_button);
+  gtk_widget_grab_default (priv->ok_button);
 
-  gtk_dialog_set_alternative_button_order (GTK_DIALOG (colorseldiag),
+  priv->help_button = gtk_dialog_add_button (dialog,
+                                             GTK_STOCK_HELP,
+                                             GTK_RESPONSE_HELP);
+
+  gtk_widget_hide (priv->help_button);
+
+  gtk_dialog_set_alternative_button_order (dialog,
                                           GTK_RESPONSE_OK,
                                           GTK_RESPONSE_CANCEL,
                                           GTK_RESPONSE_HELP,
@@ -168,10 +215,16 @@ gtk_color_selection_dialog_init (GtkColorSelectionDialog *colorseldiag)
 
   gtk_window_set_title (GTK_WINDOW (colorseldiag),
                         _("Color Selection"));
-
-  _gtk_dialog_set_ignore_separator (dialog, TRUE);
 }
 
+/**
+ * gtk_color_selection_dialog_new:
+ * @title: a string containing the title text for the dialog.
+ *
+ * Creates a new #GtkColorSelectionDialog.
+ *
+ * Returns: a #GtkColorSelectionDialog.
+ */
 GtkWidget*
 gtk_color_selection_dialog_new (const gchar *title)
 {
@@ -193,54 +246,16 @@ gtk_color_selection_dialog_new (const gchar *title)
  *
  * Retrieves the #GtkColorSelection widget embedded in the dialog.
  *
- * Since:  GSEAL-branch
- **/
-GtkWidget*
-gtk_color_selection_dialog_get_color_selection (GtkColorSelectionDialog *colorsel)
-{
-  return colorsel->colorsel;
-}
-
-/**
- * gtk_color_selection_dialog_get_ok_button:
- * @colorsel: a #GtkColorSelectionDialog
+ * Returns: (transfer none): the embedded #GtkColorSelection
  *
- * Retrieves the OK button of the dialog.
- *
- * Since:  GSEAL-branch
+ * Since: 2.14
  **/
 GtkWidget*
-gtk_color_selection_dialog_get_ok_button       (GtkColorSelectionDialog *colorsel)
-{
-  return colorsel->ok_button;
-}
-
-/**
- * gtk_color_selection_dialog_get_cancel_button:
- * @colorsel: a #GtkColorSelectionDialog
- *
- * Retrieves the cancel button of the dialog.
- *
- * Since:  GSEAL-branch
- **/
-GtkWidget*
-gtk_color_selection_dialog_get_cancel_button   (GtkColorSelectionDialog *colorsel)
+gtk_color_selection_dialog_get_color_selection (GtkColorSelectionDialog *colorsel)
 {
-  return colorsel->cancel_button;
-}
+  g_return_val_if_fail (GTK_IS_COLOR_SELECTION_DIALOG (colorsel), NULL);
 
-/**
- * gtk_color_selection_dialog_get_help_button:
- * @colorsel: a #GtkColorSelectionDialog
- *
- * Retrieves the help button of the dialog.
- *
- * Since:  GSEAL-branch
- **/
-GtkWidget*
-gtk_color_selection_dialog_get_help_button     (GtkColorSelectionDialog *colorsel)
-{
-  return colorsel->help_button;
+  return colorsel->priv->colorsel;
 }
 
 static void
@@ -255,18 +270,17 @@ gtk_color_selection_dialog_buildable_get_internal_child (GtkBuildable *buildable
                                                         GtkBuilder   *builder,
                                                         const gchar  *childname)
 {
-    if (strcmp(childname, "ok_button") == 0)
-       return G_OBJECT (GTK_COLOR_SELECTION_DIALOG (buildable)->ok_button);
-    else if (strcmp(childname, "cancel_button") == 0)
-       return G_OBJECT (GTK_COLOR_SELECTION_DIALOG (buildable)->cancel_button);
-    else if (strcmp(childname, "help_button") == 0)
-       return G_OBJECT (GTK_COLOR_SELECTION_DIALOG(buildable)->help_button);
-    else if (strcmp(childname, "color_selection") == 0)
-       return G_OBJECT (GTK_COLOR_SELECTION_DIALOG(buildable)->colorsel);
-
-    return parent_buildable_iface->get_internal_child (buildable, builder, childname);
+  GtkColorSelectionDialog *selection_dialog = GTK_COLOR_SELECTION_DIALOG (buildable);
+  GtkColorSelectionDialogPrivate *priv = selection_dialog->priv;
+
+  if (g_strcmp0 (childname, "ok_button") == 0)
+    return G_OBJECT (priv->ok_button);
+  else if (g_strcmp0 (childname, "cancel_button") == 0)
+    return G_OBJECT (priv->cancel_button);
+  else if (g_strcmp0 (childname, "help_button") == 0)
+    return G_OBJECT (priv->help_button);
+  else if (g_strcmp0 (childname, "color_selection") == 0)
+    return G_OBJECT (priv->colorsel);
+
+  return parent_buildable_iface->get_internal_child (buildable, builder, childname);
 }
-
-
-#define __GTK_COLOR_SELECTION_DIALOG_C__
-#include "gtkaliasdef.c"