2006-09-12 Michael Dominic Kostrzewa <michael.kostrzewa@nokia.com>
[hildon] / hildon-widgets / hildon-color-popup.c
index 2911a62..2d52b29 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * This file is part of hildon-libs
  *
- * Copyright (C) 2005 Nokia Corporation.
+ * Copyright (C) 2005, 2006 Nokia Corporation, all rights reserved.
  *
- * Contact: Luc Pionchon <luc.pionchon@nokia.com>
+ * Contact: Michael Dominic Kostrzewa <michael.kostrzewa@nokia.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
+ * as published by the Free Software Foundation; version 2.1 of
+ * the License or any later version.
  *
  * This library is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  *
  */
 
-/*
- * @file hildon-color-popup.c
+/**
+ * SECTION:hildon-color-popup
+ * @short_description: A popup dialog for editing a color and showing the 
+ * edited result
+ * @see_also: #HildonColorButton, #HildonColorSelector
  *
- * This file contains the implementation of Hildon Color Selector Popup
- * widget containing the custom color palette selector popup for selecting 
- * different colors based on RGB values.
+ * #HildonColorPopup is only used inside #HildonColorButton. It is a
+ * popup dialog for editing a color. The color can be changed using
+ * three control bars that are used to adjust the red, green and blue
+ * color channels. The display is updated in real time when the bars are
+ * moved.
  */
 
 #ifdef HAVE_CONFIG_H
@@ -65,9 +70,9 @@ hildon_popup_palette_expose (GtkWidget * widget,
                              gpointer data);
 /**
  * hildon_color_popup_new:
- * @parent: the parent window of the dialog.
- * @initial_color: a #GdkColor with the initial values to be used.
- * @popup_data: a #HildonColorPopup.
+ * @parent: the parent window of the dialog
+ * @initial_color: a #GdkColor with the initial values to be used
+ * @popup_data: a #HildonColorPopup
  *
  * This function creates a new popup dialog with three controlbars
  * (red, green, blue) and a drawing area with the current color.
@@ -75,20 +80,17 @@ hildon_popup_palette_expose (GtkWidget * widget,
  * Used as normal GtkDialog (run with gtk_dialog_run() and read 
  * stardard responses (GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL). 
  *
- * Returns: the newly created popup dialog. 
+ * Returns: the newly created popup dialog 
  */
 
 GtkWidget *
-hildon_color_popup_new(GtkWindow *parent, GdkColor *initial_color, 
+hildon_color_popup_new(GtkWindow *parent, const GdkColor *initial_color, 
                HildonColorPopup *popup_data)
 {
   GtkWidget *popup;
   GtkTable *layout;
   GtkWidget *area;
   GtkWidget *l_red, *l_green, *l_blue;
-  GdkColor  *current_color;
-
-  current_color = initial_color;
 
   /* Create control bars for HildonColorPopup */
   popup_data->ctrlbar_red   = hildon_controlbar_new (); 
@@ -109,9 +111,9 @@ hildon_color_popup_new(GtkWindow *parent, GdkColor *initial_color,
                                HILDON_COLOR_BAR_WIDTH, -1); 
 
   /* Create labels for three kinds of color */
-  l_red = gtk_label_new( _("Ecdg_fi_5bit_colour_selector_red"));
-  l_green = gtk_label_new(_("Ecdg_fi_5bit_colour_selector_green"));
-  l_blue = gtk_label_new(_("Ecdg_fi_5bit_colour_selector_blue"));
+  l_red   = gtk_label_new(_("ecdg_fi_5bit_colour_selector_red"));
+  l_green = gtk_label_new(_("ecdg_fi_5bit_colour_selector_green"));
+  l_blue  = gtk_label_new(_("ecdg_fi_5bit_colour_selector_blue"));
   
   /* Position the labels to start about the same label as the controlbars */
   gtk_misc_set_alignment(GTK_MISC(l_red), 0.08f, 0.5f);
@@ -141,11 +143,11 @@ hildon_color_popup_new(GtkWindow *parent, GdkColor *initial_color,
 
   /* Give the initial values for each control bar */
   hildon_controlbar_set_value (HILDON_CONTROLBAR(popup_data->ctrlbar_red),   
-                                 (current_color->red >> 11)&0x1F);
+                                 (initial_color->red >> 11)&0x1F);
   hildon_controlbar_set_value (HILDON_CONTROLBAR(popup_data->ctrlbar_green),
-                                 (current_color->green >> 11)&0x1F);
+                                 (initial_color->green >> 11)&0x1F);
   hildon_controlbar_set_value (HILDON_CONTROLBAR(popup_data->ctrlbar_blue),
-                                 (current_color->blue >> 11)&0x1F);
+                                 (initial_color->blue >> 11)&0x1F);
 
   /* Register controlbar callbacks */
   g_signal_connect_swapped(popup_data->ctrlbar_red, "value-changed",
@@ -166,11 +168,12 @@ hildon_color_popup_new(GtkWindow *parent, GdkColor *initial_color,
                                        GTK_DIALOG_DESTROY_WITH_PARENT |
                                        GTK_DIALOG_NO_SEPARATOR,
                                        _("ecdg_bd_5bit_colour_selector_ok"), GTK_RESPONSE_OK,
-                                       _("Ecdg_bd_5bit_colour_selector_cancel"),
+                                       _("ecdg_bd_5bit_colour_selector_cancel"),
                                        GTK_RESPONSE_CANCEL,
                                        NULL);
 
-  gtk_dialog_set_default_response(GTK_DIALOG(popup), GTK_RESPONSE_OK);
+  /* Select-key shouldn't do anything unless dialog's button is focused */
+  gtk_dialog_set_default_response(GTK_DIALOG(popup), GTK_RESPONSE_NONE);
 
   /* Add layout table to the Vbox of the popup dialog */
   gtk_box_pack_start (GTK_BOX(GTK_DIALOG(popup)->vbox), 
@@ -184,13 +187,11 @@ hildon_color_popup_new(GtkWindow *parent, GdkColor *initial_color,
 
 /**
  * hildon_color_popup_set_color_from_sliders:
- * @color: a pointer to #GdkColor to which the new values will be put.
- * @popup_data: a #HildonColorPopup.
+ * @color: a pointer to #GdkColor to which the new values will be put
+ * @popup_data: a #HildonColorPopup
  *
- * This function sets the values of the given #GdkColor to the values
- * in the sliders of controlbars.
- * 
- * Returns: void. 
+ * Sets the values in the given #GdkColor to the values of the
+ * controlbars.
  */
 
 void