* 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,
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);
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,
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,
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)
{
*
* 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
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"