the notebook as known from the main color selection as new widget.

2002-10-28  Michael Natterer  <mitch@gimp.org>

	* libgimpwidgets/gimpcolornotebook.[ch]: the notebook as known
	from the main color selection as new widget.

	* libgimpwidgets/Makefile.am
	* libgimpwidgets/gimpcolorselector.h
	* libgimpwidgets/gimpwidgets.h
	* libgimpwidgets/gimpwidgetstypes.h: changed accordingly.

	* app/gui/color-notebook.c: use the new widget.

2002-10-28  Michael Natterer  <mitch@gimp.org>

	* libgimpwidgets/tmpl/gimpcolornotebook.sgml: added GimpColorNotebook.

	* libgimpwidgets/libgimpwidgets-docs.sgml
	* libgimpwidgets/libgimpwidgets-sections.txt
	* libgimpwidgets/libgimpwidgets.types
	* libgimpwidgets/tmpl/gimpcolordisplay.sgml: updated.
This commit is contained in:
Michael Natterer 2002-10-28 13:19:02 +00:00 committed by Michael Natterer
parent d34647e3a0
commit 5f750eae3c
16 changed files with 768 additions and 594 deletions

View File

@ -1,11 +1,23 @@
2002-10-28 Michael Natterer <mitch@gimp.org>
* libgimpwidgets/gimpcolornotebook.[ch]: the notebook as known
from the main color selection as new widget.
* libgimpwidgets/Makefile.am
* libgimpwidgets/gimpcolorselector.h
* libgimpwidgets/gimpwidgets.h
* libgimpwidgets/gimpwidgetstypes.h: changed accordingly.
* app/gui/color-notebook.c: use the new widget.
2002-10-25 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdock.[ch]: added "book_added" and "book_removed"
signals. Removed the "destroy_if_empty" flag and destroy empty
docks in book_removed's default implementation.
* app/widgets/gimptoolbox.c: implement "dock_added" and
"dock_removed" and set the window to freely resizable vertically
* app/widgets/gimptoolbox.c: implement "book_added" and
"book_removed" and set the window to freely resizable vertically
if it contains dockbooks, and to the current behaviour of snapping
to multiples of tool_button height otherwise. Fixes bug #93309.

View File

@ -47,9 +47,10 @@ typedef enum
{
UPDATE_NOTEBOOK = 1 << 0,
UPDATE_CHANNEL = 1 << 1,
UPDATE_NEW_COLOR = 1 << 2,
UPDATE_ORIG_COLOR = 1 << 3,
UPDATE_CALLER = 1 << 4
UPDATE_SCALES = 1 << 2,
UPDATE_NEW_COLOR = 1 << 3,
UPDATE_ORIG_COLOR = 1 << 4,
UPDATE_CALLER = 1 << 5
} ColorNotebookUpdateType;
@ -78,9 +79,6 @@ struct _ColorNotebook
gboolean wants_updates;
gboolean show_alpha;
GList *selectors;
GimpColorSelector *cur_page;
};
@ -106,10 +104,6 @@ static void color_notebook_update_callback (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv,
ColorNotebook *cnp);
static void color_notebook_page_switch (GtkWidget *widget,
GtkNotebookPage *page,
guint page_num,
ColorNotebook *cnp);
static void color_notebook_help_func (const gchar *help_data);
static void color_notebook_set_white (ColorNotebook *cnp);
@ -118,15 +112,11 @@ static void color_notebook_color_changed (GtkWidget *widget,
gpointer data);
static void color_notebook_update (ColorNotebook *cnp,
ColorNotebookUpdateType update);
static void color_notebook_update_notebook (ColorNotebook *cnp);
static void color_notebook_update_channel (ColorNotebook *cnp);
static void color_notebook_update_caller (ColorNotebook *cnp);
static void color_notebook_update_colors (ColorNotebook *cnp,
ColorNotebookUpdateType which);
static void color_notebook_update_rgb_values (ColorNotebook *cnp);
static void color_notebook_update_hsv_values (ColorNotebook *cnp);
static void color_notebook_update_scales (ColorNotebook *cnp,
gint skip);
static void color_notebook_update_scales (ColorNotebook *cnp,
gint skip);
static void color_notebook_toggle_update (GtkWidget *widget,
gpointer data);
@ -219,26 +209,24 @@ color_notebook_new_internal (GimpViewable *viewable,
gboolean wants_updates,
gboolean show_alpha)
{
ColorNotebook *cnp;
GtkWidget *main_vbox;
GtkWidget *main_hbox;
GtkWidget *left_vbox;
GtkWidget *right_vbox;
GtkWidget *color_frame;
GtkWidget *hbox;
GtkWidget *table;
GtkWidget *label;
GtkWidget *button;
GtkWidget *image;
GtkWidget *arrow;
GtkWidget *color_area;
GimpRGB bw;
GSList *group;
guchar r, g, b;
gchar buffer[8];
GType *selector_types;
gint n_selector_types;
gint i;
ColorNotebook *cnp;
GtkWidget *main_vbox;
GtkWidget *main_hbox;
GtkWidget *left_vbox;
GtkWidget *right_vbox;
GtkWidget *color_frame;
GtkWidget *hbox;
GtkWidget *table;
GtkWidget *label;
GtkWidget *button;
GtkWidget *image;
GtkWidget *arrow;
GtkWidget *color_area;
GimpRGB bw;
GSList *group;
guchar r, g, b;
gchar buffer[8];
gint i;
static gchar *toggle_titles[] =
{
@ -279,13 +267,11 @@ color_notebook_new_internal (GimpViewable *viewable,
cnp->client_data = client_data;
cnp->wants_updates = wants_updates;
cnp->show_alpha = show_alpha;
cnp->selectors = NULL;
cnp->cur_page = NULL;
cnp->rgb = *color;
cnp->orig_rgb = *color;
color_notebook_update_hsv_values (cnp);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
if (desc)
{
@ -355,58 +341,18 @@ color_notebook_new_internal (GimpViewable *viewable,
gtk_box_pack_start (GTK_BOX (main_hbox), right_vbox, TRUE, TRUE, 0);
gtk_widget_show (right_vbox);
selector_types = g_type_children (GIMP_TYPE_COLOR_SELECTOR, &n_selector_types);
cnp->notebook = gimp_color_notebook_new ();
gimp_color_notebook_set_channel (GIMP_COLOR_NOTEBOOK (cnp->notebook),
cnp->active_channel);
gimp_color_notebook_set_color (GIMP_COLOR_NOTEBOOK (cnp->notebook),
&cnp->rgb, &cnp->hsv);
gtk_box_pack_start (GTK_BOX (left_vbox), cnp->notebook,
TRUE, TRUE, 0);
gtk_widget_show (cnp->notebook);
/* do we actually need a notebook? */
if (n_selector_types > 1)
{
cnp->notebook = gtk_notebook_new ();
gtk_box_pack_start (GTK_BOX (left_vbox), cnp->notebook,
TRUE, TRUE, 0);
gtk_widget_show (cnp->notebook);
}
else /* only one selector */
{
cnp->notebook = NULL;
}
/* create each registered color selector */
for (i = 0; i < n_selector_types; i++)
{
GtkWidget *selector;
selector = gimp_color_selector_new (selector_types[i],
&cnp->rgb,
&cnp->hsv);
if (! selector)
continue;
if (cnp->notebook)
{
label = gtk_label_new (GIMP_COLOR_SELECTOR_GET_CLASS (selector)->name);
gtk_notebook_append_page (GTK_NOTEBOOK (cnp->notebook),
selector, label);
}
else
{
gtk_box_pack_start (GTK_BOX (left_vbox), selector, TRUE, TRUE, 0);
}
if (! cnp->cur_page)
cnp->cur_page = GIMP_COLOR_SELECTOR (selector);
cnp->selectors = g_list_append (cnp->selectors, selector);
gtk_widget_show (selector);
g_signal_connect (G_OBJECT (selector), "color_changed",
G_CALLBACK (color_notebook_update_callback),
cnp);
}
g_free (selector_types);
g_signal_connect (G_OBJECT (cnp->notebook), "color_changed",
G_CALLBACK (color_notebook_update_callback),
cnp);
/* The table for the color_areas */
table = gtk_table_new (2, 4, FALSE);
@ -641,17 +587,6 @@ color_notebook_new_internal (GimpViewable *viewable,
gtk_widget_show (cnp->shell);
/* this must come after showing the widget, otherwise we get a
* switch_page signal for a non-visible color selector, which is bad
* news.
*/
if (cnp->notebook)
{
g_signal_connect (G_OBJECT (cnp->notebook), "switch_page",
G_CALLBACK (color_notebook_page_switch),
cnp);
}
color_notebooks = g_list_prepend (color_notebooks, cnp);
return cnp;
@ -682,8 +617,6 @@ color_notebook_free (ColorNotebook *cnp)
gtk_widget_destroy (cnp->shell);
g_list_free (cnp->selectors);
g_free (cnp);
}
@ -697,11 +630,11 @@ color_notebook_set_color (ColorNotebook *cnp,
cnp->rgb = *color;
cnp->orig_rgb = *color;
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_ORIG_COLOR |
UPDATE_NEW_COLOR);
}
@ -720,13 +653,12 @@ static void
color_notebook_set_white (ColorNotebook *cnp)
{
gimp_rgb_set (&cnp->rgb, 1.0, 1.0, 1.0);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_NEW_COLOR |
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
@ -734,13 +666,12 @@ static void
color_notebook_set_black (ColorNotebook *cnp)
{
gimp_rgb_set (&cnp->rgb, 0.0, 0.0, 0.0);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_NEW_COLOR |
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
@ -753,13 +684,12 @@ color_notebook_color_changed (GtkWidget *widget,
cnp = (ColorNotebook *) data;
gimp_color_area_get_color (GIMP_COLOR_AREA (widget), &cnp->rgb);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_NEW_COLOR |
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
@ -775,9 +705,8 @@ color_notebook_update_callback (GimpColorSelector *selector,
cnp->hsv = *hsv;
cnp->rgb = *rgb;
color_notebook_update_scales (cnp, -1);
color_notebook_update (cnp,
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
@ -815,49 +744,28 @@ color_notebook_reset_callback (GtkWidget *widget,
ColorNotebook *cnp)
{
cnp->rgb = cnp->orig_rgb;
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
static void
color_notebook_page_switch (GtkWidget *widget,
GtkNotebookPage *page,
guint page_num,
ColorNotebook *cnp)
{
GtkWidget *page_widget;
gboolean set_channel;
gint i;
page_widget = gtk_notebook_get_nth_page (GTK_NOTEBOOK (widget), page_num);
cnp->cur_page = GIMP_COLOR_SELECTOR (page_widget);
set_channel =
(GIMP_COLOR_SELECTOR_GET_CLASS (page_widget)->set_channel != NULL);
for (i = 0; i < 6; i++)
gtk_widget_set_sensitive (cnp->toggles[i], set_channel);
color_notebook_update (cnp, UPDATE_CHANNEL | UPDATE_NOTEBOOK);
}
static void
color_notebook_help_func (const gchar *data)
{
ColorNotebook *cnp;
gchar *help_path;
ColorNotebook *cnp;
GimpColorNotebook *notebook;
gchar *help_path;
cnp = (ColorNotebook *) data;
notebook = GIMP_COLOR_NOTEBOOK (cnp->notebook);
help_path = g_strconcat ("dialogs/color_selectors/",
GIMP_COLOR_SELECTOR_GET_CLASS (cnp->cur_page)->help_page,
GIMP_COLOR_SELECTOR_GET_CLASS (notebook->cur_page)->help_page,
NULL);
gimp_standard_help_func (help_path);
g_free (help_path);
@ -871,10 +779,16 @@ color_notebook_update (ColorNotebook *cnp,
return;
if (update & UPDATE_NOTEBOOK)
color_notebook_update_notebook (cnp);
gimp_color_notebook_set_color (GIMP_COLOR_NOTEBOOK (cnp->notebook),
&cnp->rgb,
&cnp->hsv);
if (update & UPDATE_CHANNEL)
color_notebook_update_channel (cnp);
gimp_color_notebook_set_channel (GIMP_COLOR_NOTEBOOK (cnp->notebook),
cnp->active_channel);
if (update & UPDATE_SCALES)
color_notebook_update_scales (cnp, -1);
if (update & UPDATE_NEW_COLOR)
color_notebook_update_colors (cnp, UPDATE_NEW_COLOR);
@ -886,21 +800,6 @@ color_notebook_update (ColorNotebook *cnp,
color_notebook_update_caller (cnp);
}
static void
color_notebook_update_notebook (ColorNotebook *cnp)
{
gimp_color_selector_set_color (cnp->cur_page,
&cnp->rgb,
&cnp->hsv);
}
static void
color_notebook_update_channel (ColorNotebook *cnp)
{
gimp_color_selector_set_channel (cnp->cur_page,
cnp->active_channel);
}
static void
color_notebook_update_caller (ColorNotebook *cnp)
{
@ -945,24 +844,6 @@ color_notebook_update_colors (ColorNotebook *cnp,
}
}
static void
color_notebook_update_rgb_values (ColorNotebook *cnp)
{
if (! cnp)
return;
gimp_hsv_to_rgb (&cnp->hsv, &cnp->rgb);
}
static void
color_notebook_update_hsv_values (ColorNotebook *cnp)
{
if (! cnp)
return;
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
}
static void
color_notebook_update_scales (ColorNotebook *cnp,
gint skip)
@ -1087,11 +968,11 @@ color_notebook_scale_update (GtkAdjustment *adjustment,
if ((i >= GIMP_COLOR_SELECTOR_HUE) && (i <= GIMP_COLOR_SELECTOR_VALUE))
{
color_notebook_update_rgb_values (cnp);
gimp_hsv_to_rgb (&cnp->hsv, &cnp->rgb);
}
else if ((i >= GIMP_COLOR_SELECTOR_RED) && (i <= GIMP_COLOR_SELECTOR_BLUE))
{
color_notebook_update_hsv_values (cnp);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
}
color_notebook_update_scales (cnp, i);
@ -1141,8 +1022,8 @@ color_notebook_hex_entry_events (GtkWidget *widget,
(hex_rgb & 0xff0000) >> 16,
(hex_rgb & 0x00ff00) >> 8,
(hex_rgb & 0x0000ff));
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
color_notebook_update (cnp,
@ -1176,8 +1057,8 @@ color_history_color_clicked (GtkWidget *widget,
color_area = GIMP_COLOR_AREA (GTK_BIN (widget)->child);
gimp_color_area_get_color (color_area, &cnp->rgb);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
color_notebook_update (cnp,

View File

@ -47,9 +47,10 @@ typedef enum
{
UPDATE_NOTEBOOK = 1 << 0,
UPDATE_CHANNEL = 1 << 1,
UPDATE_NEW_COLOR = 1 << 2,
UPDATE_ORIG_COLOR = 1 << 3,
UPDATE_CALLER = 1 << 4
UPDATE_SCALES = 1 << 2,
UPDATE_NEW_COLOR = 1 << 3,
UPDATE_ORIG_COLOR = 1 << 4,
UPDATE_CALLER = 1 << 5
} ColorNotebookUpdateType;
@ -78,9 +79,6 @@ struct _ColorNotebook
gboolean wants_updates;
gboolean show_alpha;
GList *selectors;
GimpColorSelector *cur_page;
};
@ -106,10 +104,6 @@ static void color_notebook_update_callback (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv,
ColorNotebook *cnp);
static void color_notebook_page_switch (GtkWidget *widget,
GtkNotebookPage *page,
guint page_num,
ColorNotebook *cnp);
static void color_notebook_help_func (const gchar *help_data);
static void color_notebook_set_white (ColorNotebook *cnp);
@ -118,15 +112,11 @@ static void color_notebook_color_changed (GtkWidget *widget,
gpointer data);
static void color_notebook_update (ColorNotebook *cnp,
ColorNotebookUpdateType update);
static void color_notebook_update_notebook (ColorNotebook *cnp);
static void color_notebook_update_channel (ColorNotebook *cnp);
static void color_notebook_update_caller (ColorNotebook *cnp);
static void color_notebook_update_colors (ColorNotebook *cnp,
ColorNotebookUpdateType which);
static void color_notebook_update_rgb_values (ColorNotebook *cnp);
static void color_notebook_update_hsv_values (ColorNotebook *cnp);
static void color_notebook_update_scales (ColorNotebook *cnp,
gint skip);
static void color_notebook_update_scales (ColorNotebook *cnp,
gint skip);
static void color_notebook_toggle_update (GtkWidget *widget,
gpointer data);
@ -219,26 +209,24 @@ color_notebook_new_internal (GimpViewable *viewable,
gboolean wants_updates,
gboolean show_alpha)
{
ColorNotebook *cnp;
GtkWidget *main_vbox;
GtkWidget *main_hbox;
GtkWidget *left_vbox;
GtkWidget *right_vbox;
GtkWidget *color_frame;
GtkWidget *hbox;
GtkWidget *table;
GtkWidget *label;
GtkWidget *button;
GtkWidget *image;
GtkWidget *arrow;
GtkWidget *color_area;
GimpRGB bw;
GSList *group;
guchar r, g, b;
gchar buffer[8];
GType *selector_types;
gint n_selector_types;
gint i;
ColorNotebook *cnp;
GtkWidget *main_vbox;
GtkWidget *main_hbox;
GtkWidget *left_vbox;
GtkWidget *right_vbox;
GtkWidget *color_frame;
GtkWidget *hbox;
GtkWidget *table;
GtkWidget *label;
GtkWidget *button;
GtkWidget *image;
GtkWidget *arrow;
GtkWidget *color_area;
GimpRGB bw;
GSList *group;
guchar r, g, b;
gchar buffer[8];
gint i;
static gchar *toggle_titles[] =
{
@ -279,13 +267,11 @@ color_notebook_new_internal (GimpViewable *viewable,
cnp->client_data = client_data;
cnp->wants_updates = wants_updates;
cnp->show_alpha = show_alpha;
cnp->selectors = NULL;
cnp->cur_page = NULL;
cnp->rgb = *color;
cnp->orig_rgb = *color;
color_notebook_update_hsv_values (cnp);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
if (desc)
{
@ -355,58 +341,18 @@ color_notebook_new_internal (GimpViewable *viewable,
gtk_box_pack_start (GTK_BOX (main_hbox), right_vbox, TRUE, TRUE, 0);
gtk_widget_show (right_vbox);
selector_types = g_type_children (GIMP_TYPE_COLOR_SELECTOR, &n_selector_types);
cnp->notebook = gimp_color_notebook_new ();
gimp_color_notebook_set_channel (GIMP_COLOR_NOTEBOOK (cnp->notebook),
cnp->active_channel);
gimp_color_notebook_set_color (GIMP_COLOR_NOTEBOOK (cnp->notebook),
&cnp->rgb, &cnp->hsv);
gtk_box_pack_start (GTK_BOX (left_vbox), cnp->notebook,
TRUE, TRUE, 0);
gtk_widget_show (cnp->notebook);
/* do we actually need a notebook? */
if (n_selector_types > 1)
{
cnp->notebook = gtk_notebook_new ();
gtk_box_pack_start (GTK_BOX (left_vbox), cnp->notebook,
TRUE, TRUE, 0);
gtk_widget_show (cnp->notebook);
}
else /* only one selector */
{
cnp->notebook = NULL;
}
/* create each registered color selector */
for (i = 0; i < n_selector_types; i++)
{
GtkWidget *selector;
selector = gimp_color_selector_new (selector_types[i],
&cnp->rgb,
&cnp->hsv);
if (! selector)
continue;
if (cnp->notebook)
{
label = gtk_label_new (GIMP_COLOR_SELECTOR_GET_CLASS (selector)->name);
gtk_notebook_append_page (GTK_NOTEBOOK (cnp->notebook),
selector, label);
}
else
{
gtk_box_pack_start (GTK_BOX (left_vbox), selector, TRUE, TRUE, 0);
}
if (! cnp->cur_page)
cnp->cur_page = GIMP_COLOR_SELECTOR (selector);
cnp->selectors = g_list_append (cnp->selectors, selector);
gtk_widget_show (selector);
g_signal_connect (G_OBJECT (selector), "color_changed",
G_CALLBACK (color_notebook_update_callback),
cnp);
}
g_free (selector_types);
g_signal_connect (G_OBJECT (cnp->notebook), "color_changed",
G_CALLBACK (color_notebook_update_callback),
cnp);
/* The table for the color_areas */
table = gtk_table_new (2, 4, FALSE);
@ -641,17 +587,6 @@ color_notebook_new_internal (GimpViewable *viewable,
gtk_widget_show (cnp->shell);
/* this must come after showing the widget, otherwise we get a
* switch_page signal for a non-visible color selector, which is bad
* news.
*/
if (cnp->notebook)
{
g_signal_connect (G_OBJECT (cnp->notebook), "switch_page",
G_CALLBACK (color_notebook_page_switch),
cnp);
}
color_notebooks = g_list_prepend (color_notebooks, cnp);
return cnp;
@ -682,8 +617,6 @@ color_notebook_free (ColorNotebook *cnp)
gtk_widget_destroy (cnp->shell);
g_list_free (cnp->selectors);
g_free (cnp);
}
@ -697,11 +630,11 @@ color_notebook_set_color (ColorNotebook *cnp,
cnp->rgb = *color;
cnp->orig_rgb = *color;
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_ORIG_COLOR |
UPDATE_NEW_COLOR);
}
@ -720,13 +653,12 @@ static void
color_notebook_set_white (ColorNotebook *cnp)
{
gimp_rgb_set (&cnp->rgb, 1.0, 1.0, 1.0);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_NEW_COLOR |
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
@ -734,13 +666,12 @@ static void
color_notebook_set_black (ColorNotebook *cnp)
{
gimp_rgb_set (&cnp->rgb, 0.0, 0.0, 0.0);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_NEW_COLOR |
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
@ -753,13 +684,12 @@ color_notebook_color_changed (GtkWidget *widget,
cnp = (ColorNotebook *) data;
gimp_color_area_get_color (GIMP_COLOR_AREA (widget), &cnp->rgb);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_NEW_COLOR |
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
@ -775,9 +705,8 @@ color_notebook_update_callback (GimpColorSelector *selector,
cnp->hsv = *hsv;
cnp->rgb = *rgb;
color_notebook_update_scales (cnp, -1);
color_notebook_update (cnp,
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
@ -815,49 +744,28 @@ color_notebook_reset_callback (GtkWidget *widget,
ColorNotebook *cnp)
{
cnp->rgb = cnp->orig_rgb;
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
static void
color_notebook_page_switch (GtkWidget *widget,
GtkNotebookPage *page,
guint page_num,
ColorNotebook *cnp)
{
GtkWidget *page_widget;
gboolean set_channel;
gint i;
page_widget = gtk_notebook_get_nth_page (GTK_NOTEBOOK (widget), page_num);
cnp->cur_page = GIMP_COLOR_SELECTOR (page_widget);
set_channel =
(GIMP_COLOR_SELECTOR_GET_CLASS (page_widget)->set_channel != NULL);
for (i = 0; i < 6; i++)
gtk_widget_set_sensitive (cnp->toggles[i], set_channel);
color_notebook_update (cnp, UPDATE_CHANNEL | UPDATE_NOTEBOOK);
}
static void
color_notebook_help_func (const gchar *data)
{
ColorNotebook *cnp;
gchar *help_path;
ColorNotebook *cnp;
GimpColorNotebook *notebook;
gchar *help_path;
cnp = (ColorNotebook *) data;
notebook = GIMP_COLOR_NOTEBOOK (cnp->notebook);
help_path = g_strconcat ("dialogs/color_selectors/",
GIMP_COLOR_SELECTOR_GET_CLASS (cnp->cur_page)->help_page,
GIMP_COLOR_SELECTOR_GET_CLASS (notebook->cur_page)->help_page,
NULL);
gimp_standard_help_func (help_path);
g_free (help_path);
@ -871,10 +779,16 @@ color_notebook_update (ColorNotebook *cnp,
return;
if (update & UPDATE_NOTEBOOK)
color_notebook_update_notebook (cnp);
gimp_color_notebook_set_color (GIMP_COLOR_NOTEBOOK (cnp->notebook),
&cnp->rgb,
&cnp->hsv);
if (update & UPDATE_CHANNEL)
color_notebook_update_channel (cnp);
gimp_color_notebook_set_channel (GIMP_COLOR_NOTEBOOK (cnp->notebook),
cnp->active_channel);
if (update & UPDATE_SCALES)
color_notebook_update_scales (cnp, -1);
if (update & UPDATE_NEW_COLOR)
color_notebook_update_colors (cnp, UPDATE_NEW_COLOR);
@ -886,21 +800,6 @@ color_notebook_update (ColorNotebook *cnp,
color_notebook_update_caller (cnp);
}
static void
color_notebook_update_notebook (ColorNotebook *cnp)
{
gimp_color_selector_set_color (cnp->cur_page,
&cnp->rgb,
&cnp->hsv);
}
static void
color_notebook_update_channel (ColorNotebook *cnp)
{
gimp_color_selector_set_channel (cnp->cur_page,
cnp->active_channel);
}
static void
color_notebook_update_caller (ColorNotebook *cnp)
{
@ -945,24 +844,6 @@ color_notebook_update_colors (ColorNotebook *cnp,
}
}
static void
color_notebook_update_rgb_values (ColorNotebook *cnp)
{
if (! cnp)
return;
gimp_hsv_to_rgb (&cnp->hsv, &cnp->rgb);
}
static void
color_notebook_update_hsv_values (ColorNotebook *cnp)
{
if (! cnp)
return;
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
}
static void
color_notebook_update_scales (ColorNotebook *cnp,
gint skip)
@ -1087,11 +968,11 @@ color_notebook_scale_update (GtkAdjustment *adjustment,
if ((i >= GIMP_COLOR_SELECTOR_HUE) && (i <= GIMP_COLOR_SELECTOR_VALUE))
{
color_notebook_update_rgb_values (cnp);
gimp_hsv_to_rgb (&cnp->hsv, &cnp->rgb);
}
else if ((i >= GIMP_COLOR_SELECTOR_RED) && (i <= GIMP_COLOR_SELECTOR_BLUE))
{
color_notebook_update_hsv_values (cnp);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
}
color_notebook_update_scales (cnp, i);
@ -1141,8 +1022,8 @@ color_notebook_hex_entry_events (GtkWidget *widget,
(hex_rgb & 0xff0000) >> 16,
(hex_rgb & 0x00ff00) >> 8,
(hex_rgb & 0x0000ff));
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
color_notebook_update (cnp,
@ -1176,8 +1057,8 @@ color_history_color_clicked (GtkWidget *widget,
color_area = GIMP_COLOR_AREA (GTK_BIN (widget)->child);
gimp_color_area_get_color (color_area, &cnp->rgb);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
color_notebook_update (cnp,

View File

@ -47,9 +47,10 @@ typedef enum
{
UPDATE_NOTEBOOK = 1 << 0,
UPDATE_CHANNEL = 1 << 1,
UPDATE_NEW_COLOR = 1 << 2,
UPDATE_ORIG_COLOR = 1 << 3,
UPDATE_CALLER = 1 << 4
UPDATE_SCALES = 1 << 2,
UPDATE_NEW_COLOR = 1 << 3,
UPDATE_ORIG_COLOR = 1 << 4,
UPDATE_CALLER = 1 << 5
} ColorNotebookUpdateType;
@ -78,9 +79,6 @@ struct _ColorNotebook
gboolean wants_updates;
gboolean show_alpha;
GList *selectors;
GimpColorSelector *cur_page;
};
@ -106,10 +104,6 @@ static void color_notebook_update_callback (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv,
ColorNotebook *cnp);
static void color_notebook_page_switch (GtkWidget *widget,
GtkNotebookPage *page,
guint page_num,
ColorNotebook *cnp);
static void color_notebook_help_func (const gchar *help_data);
static void color_notebook_set_white (ColorNotebook *cnp);
@ -118,15 +112,11 @@ static void color_notebook_color_changed (GtkWidget *widget,
gpointer data);
static void color_notebook_update (ColorNotebook *cnp,
ColorNotebookUpdateType update);
static void color_notebook_update_notebook (ColorNotebook *cnp);
static void color_notebook_update_channel (ColorNotebook *cnp);
static void color_notebook_update_caller (ColorNotebook *cnp);
static void color_notebook_update_colors (ColorNotebook *cnp,
ColorNotebookUpdateType which);
static void color_notebook_update_rgb_values (ColorNotebook *cnp);
static void color_notebook_update_hsv_values (ColorNotebook *cnp);
static void color_notebook_update_scales (ColorNotebook *cnp,
gint skip);
static void color_notebook_update_scales (ColorNotebook *cnp,
gint skip);
static void color_notebook_toggle_update (GtkWidget *widget,
gpointer data);
@ -219,26 +209,24 @@ color_notebook_new_internal (GimpViewable *viewable,
gboolean wants_updates,
gboolean show_alpha)
{
ColorNotebook *cnp;
GtkWidget *main_vbox;
GtkWidget *main_hbox;
GtkWidget *left_vbox;
GtkWidget *right_vbox;
GtkWidget *color_frame;
GtkWidget *hbox;
GtkWidget *table;
GtkWidget *label;
GtkWidget *button;
GtkWidget *image;
GtkWidget *arrow;
GtkWidget *color_area;
GimpRGB bw;
GSList *group;
guchar r, g, b;
gchar buffer[8];
GType *selector_types;
gint n_selector_types;
gint i;
ColorNotebook *cnp;
GtkWidget *main_vbox;
GtkWidget *main_hbox;
GtkWidget *left_vbox;
GtkWidget *right_vbox;
GtkWidget *color_frame;
GtkWidget *hbox;
GtkWidget *table;
GtkWidget *label;
GtkWidget *button;
GtkWidget *image;
GtkWidget *arrow;
GtkWidget *color_area;
GimpRGB bw;
GSList *group;
guchar r, g, b;
gchar buffer[8];
gint i;
static gchar *toggle_titles[] =
{
@ -279,13 +267,11 @@ color_notebook_new_internal (GimpViewable *viewable,
cnp->client_data = client_data;
cnp->wants_updates = wants_updates;
cnp->show_alpha = show_alpha;
cnp->selectors = NULL;
cnp->cur_page = NULL;
cnp->rgb = *color;
cnp->orig_rgb = *color;
color_notebook_update_hsv_values (cnp);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
if (desc)
{
@ -355,58 +341,18 @@ color_notebook_new_internal (GimpViewable *viewable,
gtk_box_pack_start (GTK_BOX (main_hbox), right_vbox, TRUE, TRUE, 0);
gtk_widget_show (right_vbox);
selector_types = g_type_children (GIMP_TYPE_COLOR_SELECTOR, &n_selector_types);
cnp->notebook = gimp_color_notebook_new ();
gimp_color_notebook_set_channel (GIMP_COLOR_NOTEBOOK (cnp->notebook),
cnp->active_channel);
gimp_color_notebook_set_color (GIMP_COLOR_NOTEBOOK (cnp->notebook),
&cnp->rgb, &cnp->hsv);
gtk_box_pack_start (GTK_BOX (left_vbox), cnp->notebook,
TRUE, TRUE, 0);
gtk_widget_show (cnp->notebook);
/* do we actually need a notebook? */
if (n_selector_types > 1)
{
cnp->notebook = gtk_notebook_new ();
gtk_box_pack_start (GTK_BOX (left_vbox), cnp->notebook,
TRUE, TRUE, 0);
gtk_widget_show (cnp->notebook);
}
else /* only one selector */
{
cnp->notebook = NULL;
}
/* create each registered color selector */
for (i = 0; i < n_selector_types; i++)
{
GtkWidget *selector;
selector = gimp_color_selector_new (selector_types[i],
&cnp->rgb,
&cnp->hsv);
if (! selector)
continue;
if (cnp->notebook)
{
label = gtk_label_new (GIMP_COLOR_SELECTOR_GET_CLASS (selector)->name);
gtk_notebook_append_page (GTK_NOTEBOOK (cnp->notebook),
selector, label);
}
else
{
gtk_box_pack_start (GTK_BOX (left_vbox), selector, TRUE, TRUE, 0);
}
if (! cnp->cur_page)
cnp->cur_page = GIMP_COLOR_SELECTOR (selector);
cnp->selectors = g_list_append (cnp->selectors, selector);
gtk_widget_show (selector);
g_signal_connect (G_OBJECT (selector), "color_changed",
G_CALLBACK (color_notebook_update_callback),
cnp);
}
g_free (selector_types);
g_signal_connect (G_OBJECT (cnp->notebook), "color_changed",
G_CALLBACK (color_notebook_update_callback),
cnp);
/* The table for the color_areas */
table = gtk_table_new (2, 4, FALSE);
@ -641,17 +587,6 @@ color_notebook_new_internal (GimpViewable *viewable,
gtk_widget_show (cnp->shell);
/* this must come after showing the widget, otherwise we get a
* switch_page signal for a non-visible color selector, which is bad
* news.
*/
if (cnp->notebook)
{
g_signal_connect (G_OBJECT (cnp->notebook), "switch_page",
G_CALLBACK (color_notebook_page_switch),
cnp);
}
color_notebooks = g_list_prepend (color_notebooks, cnp);
return cnp;
@ -682,8 +617,6 @@ color_notebook_free (ColorNotebook *cnp)
gtk_widget_destroy (cnp->shell);
g_list_free (cnp->selectors);
g_free (cnp);
}
@ -697,11 +630,11 @@ color_notebook_set_color (ColorNotebook *cnp,
cnp->rgb = *color;
cnp->orig_rgb = *color;
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_ORIG_COLOR |
UPDATE_NEW_COLOR);
}
@ -720,13 +653,12 @@ static void
color_notebook_set_white (ColorNotebook *cnp)
{
gimp_rgb_set (&cnp->rgb, 1.0, 1.0, 1.0);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_NEW_COLOR |
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
@ -734,13 +666,12 @@ static void
color_notebook_set_black (ColorNotebook *cnp)
{
gimp_rgb_set (&cnp->rgb, 0.0, 0.0, 0.0);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_NEW_COLOR |
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
@ -753,13 +684,12 @@ color_notebook_color_changed (GtkWidget *widget,
cnp = (ColorNotebook *) data;
gimp_color_area_get_color (GIMP_COLOR_AREA (widget), &cnp->rgb);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_NEW_COLOR |
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
@ -775,9 +705,8 @@ color_notebook_update_callback (GimpColorSelector *selector,
cnp->hsv = *hsv;
cnp->rgb = *rgb;
color_notebook_update_scales (cnp, -1);
color_notebook_update (cnp,
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
@ -815,49 +744,28 @@ color_notebook_reset_callback (GtkWidget *widget,
ColorNotebook *cnp)
{
cnp->rgb = cnp->orig_rgb;
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update (cnp,
UPDATE_NOTEBOOK |
UPDATE_SCALES |
UPDATE_NEW_COLOR |
UPDATE_CALLER);
}
static void
color_notebook_page_switch (GtkWidget *widget,
GtkNotebookPage *page,
guint page_num,
ColorNotebook *cnp)
{
GtkWidget *page_widget;
gboolean set_channel;
gint i;
page_widget = gtk_notebook_get_nth_page (GTK_NOTEBOOK (widget), page_num);
cnp->cur_page = GIMP_COLOR_SELECTOR (page_widget);
set_channel =
(GIMP_COLOR_SELECTOR_GET_CLASS (page_widget)->set_channel != NULL);
for (i = 0; i < 6; i++)
gtk_widget_set_sensitive (cnp->toggles[i], set_channel);
color_notebook_update (cnp, UPDATE_CHANNEL | UPDATE_NOTEBOOK);
}
static void
color_notebook_help_func (const gchar *data)
{
ColorNotebook *cnp;
gchar *help_path;
ColorNotebook *cnp;
GimpColorNotebook *notebook;
gchar *help_path;
cnp = (ColorNotebook *) data;
notebook = GIMP_COLOR_NOTEBOOK (cnp->notebook);
help_path = g_strconcat ("dialogs/color_selectors/",
GIMP_COLOR_SELECTOR_GET_CLASS (cnp->cur_page)->help_page,
GIMP_COLOR_SELECTOR_GET_CLASS (notebook->cur_page)->help_page,
NULL);
gimp_standard_help_func (help_path);
g_free (help_path);
@ -871,10 +779,16 @@ color_notebook_update (ColorNotebook *cnp,
return;
if (update & UPDATE_NOTEBOOK)
color_notebook_update_notebook (cnp);
gimp_color_notebook_set_color (GIMP_COLOR_NOTEBOOK (cnp->notebook),
&cnp->rgb,
&cnp->hsv);
if (update & UPDATE_CHANNEL)
color_notebook_update_channel (cnp);
gimp_color_notebook_set_channel (GIMP_COLOR_NOTEBOOK (cnp->notebook),
cnp->active_channel);
if (update & UPDATE_SCALES)
color_notebook_update_scales (cnp, -1);
if (update & UPDATE_NEW_COLOR)
color_notebook_update_colors (cnp, UPDATE_NEW_COLOR);
@ -886,21 +800,6 @@ color_notebook_update (ColorNotebook *cnp,
color_notebook_update_caller (cnp);
}
static void
color_notebook_update_notebook (ColorNotebook *cnp)
{
gimp_color_selector_set_color (cnp->cur_page,
&cnp->rgb,
&cnp->hsv);
}
static void
color_notebook_update_channel (ColorNotebook *cnp)
{
gimp_color_selector_set_channel (cnp->cur_page,
cnp->active_channel);
}
static void
color_notebook_update_caller (ColorNotebook *cnp)
{
@ -945,24 +844,6 @@ color_notebook_update_colors (ColorNotebook *cnp,
}
}
static void
color_notebook_update_rgb_values (ColorNotebook *cnp)
{
if (! cnp)
return;
gimp_hsv_to_rgb (&cnp->hsv, &cnp->rgb);
}
static void
color_notebook_update_hsv_values (ColorNotebook *cnp)
{
if (! cnp)
return;
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
}
static void
color_notebook_update_scales (ColorNotebook *cnp,
gint skip)
@ -1087,11 +968,11 @@ color_notebook_scale_update (GtkAdjustment *adjustment,
if ((i >= GIMP_COLOR_SELECTOR_HUE) && (i <= GIMP_COLOR_SELECTOR_VALUE))
{
color_notebook_update_rgb_values (cnp);
gimp_hsv_to_rgb (&cnp->hsv, &cnp->rgb);
}
else if ((i >= GIMP_COLOR_SELECTOR_RED) && (i <= GIMP_COLOR_SELECTOR_BLUE))
{
color_notebook_update_hsv_values (cnp);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
}
color_notebook_update_scales (cnp, i);
@ -1141,8 +1022,8 @@ color_notebook_hex_entry_events (GtkWidget *widget,
(hex_rgb & 0xff0000) >> 16,
(hex_rgb & 0x00ff00) >> 8,
(hex_rgb & 0x0000ff));
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
color_notebook_update (cnp,
@ -1176,8 +1057,8 @@ color_history_color_clicked (GtkWidget *widget,
color_area = GIMP_COLOR_AREA (GTK_BIN (widget)->child);
gimp_color_area_get_color (color_area, &cnp->rgb);
gimp_rgb_to_hsv (&cnp->rgb, &cnp->hsv);
color_notebook_update_hsv_values (cnp);
color_notebook_update_scales (cnp, -1);
color_notebook_update (cnp,

View File

@ -1,3 +1,12 @@
2002-10-28 Michael Natterer <mitch@gimp.org>
* libgimpwidgets/tmpl/gimpcolornotebook.sgml: added GimpColorNotebook.
* libgimpwidgets/libgimpwidgets-docs.sgml
* libgimpwidgets/libgimpwidgets-sections.txt
* libgimpwidgets/libgimpwidgets.types
* libgimpwidgets/tmpl/gimpcolordisplay.sgml: updated.
2002-10-23 Sven Neumann <sven@gimp.org>
* libgimpmodule/libgimpmodule-sections.txt

View File

@ -1,20 +1,22 @@
<!doctype book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
<!entity GimpButton SYSTEM "sgml/gimpbutton.sgml">
<!entity GimpChainButton SYSTEM "sgml/gimpchainbutton.sgml">
<!entity GimpColorArea SYSTEM "sgml/gimpcolorarea.sgml">
<!entity GimpColorButton SYSTEM "sgml/gimpcolorbutton.sgml">
<!entity GimpColorDisplay SYSTEM "sgml/gimpcolordisplay.sgml">
<!entity GimpColorNotebook SYSTEM "sgml/gimpcolornotebook.sgml">
<!entity GimpColorSelect SYSTEM "sgml/gimpcolorselect.sgml">
<!entity GimpColorSelector SYSTEM "sgml/gimpcolorselector.sgml">
<!entity GimpDialog SYSTEM "sgml/gimpdialog.sgml">
<!entity GimpFileSelection SYSTEM "sgml/gimpfileselection.sgml">
<!entity GimpHelpUI SYSTEM "sgml/gimphelpui.sgml">
<!entity GimpPathEditor SYSTEM "sgml/gimppatheditor.sgml">
<!entity GimpPixmap SYSTEM "sgml/gimppixmap.sgml">
<!entity GimpSizeEntry SYSTEM "sgml/gimpsizeentry.sgml">
<!entity GimpUnitMenu SYSTEM "sgml/gimpunitmenu.sgml">
<!entity GimpDialog SYSTEM "sgml/gimpdialog.sgml">
<!entity GimpHelpUI SYSTEM "sgml/gimphelpui.sgml">
<!entity GimpQueryBox SYSTEM "sgml/gimpquerybox.sgml">
<!entity GimpSizeEntry SYSTEM "sgml/gimpsizeentry.sgml">
<!entity GimpStock SYSTEM "sgml/gimpstock.sgml">
<!entity GimpUnitMenu SYSTEM "sgml/gimpunitmenu.sgml">
<!entity GimpWidgets SYSTEM "sgml/gimpwidgets.sgml">
<!entity GimpColorDisplay SYSTEM "sgml/gimpcolordisplay.sgml">
<!entity GimpColorSelector SYSTEM "sgml/gimpcolorselector.sgml">
<!entity GimpColorSelect SYSTEM "sgml/gimpcolorselect.sgml">
]>
<book id="index">
<bookinfo>
@ -25,7 +27,9 @@
<title>GIMP Widgets Library</title>
&GimpButton;
&GimpChainButton;
&GimpColorButton;
&GimpColorArea;
&GimpColorButton;
&GimpColorNotebook;
&GimpFileSelection;
&GimpPathEditor;
&GimpPixmap;

View File

@ -430,7 +430,8 @@ gimp_color_display_convert
gimp_color_display_load_state
gimp_color_display_save_state
gimp_color_display_configure
gimp_color_display_configure_cancel
gimp_color_display_configure_reset
gimp_color_display_changed
<SUBSECTION Standard>
GIMP_COLOR_DISPLAY
GIMP_IS_COLOR_DISPLAY
@ -440,3 +441,22 @@ GIMP_COLOR_DISPLAY_CLASS
GIMP_IS_COLOR_DISPLAY_CLASS
GIMP_COLOR_DISPLAY_GET_CLASS
</SECTION>
<SECTION>
<FILE>gimpcolornotebook</FILE>
<TITLE>GimpColorNotebook</TITLE>
GimpColorNotebook
gimp_color_notebook_new
gimp_color_notebook_set_color
gimp_color_notebook_get_color
gimp_color_notebook_color_changed
gimp_color_notebook_set_channel
<SUBSECTION Standard>
GIMP_COLOR_NOTEBOOK
GIMP_IS_COLOR_NOTEBOOK
GIMP_TYPE_COLOR_NOTEBOOK
gimp_color_notebook_get_type
GIMP_COLOR_NOTEBOOK_CLASS
GIMP_IS_COLOR_NOTEBOOK_CLASS
GIMP_COLOR_NOTEBOOK_GET_CLASS
</SECTION>

View File

@ -6,10 +6,11 @@
gimp_chain_button_get_type
gimp_color_button_get_type
gimp_dialog_get_type
gimp_color_display_get_type
gimp_color_notebook_get_type
gimp_color_selector_get_type
gimp_color_select_get_type
gimp_dialog_get_type
gimp_file_selection_get_type
gimp_path_editor_get_type
gimp_pixmap_get_type

View File

@ -91,6 +91,22 @@ display color correction module.
@cancel_data:
<!-- ##### FUNCTION gimp_color_display_configure_reset ##### -->
<para>
</para>
@display:
<!-- ##### FUNCTION gimp_color_display_changed ##### -->
<para>
</para>
@display:
<!-- ##### SIGNAL GimpColorDisplay::changed ##### -->
<para>

View File

@ -0,0 +1,76 @@
<!-- ##### SECTION Title ##### -->
GimpColorNotebook
<!-- ##### SECTION Short_Description ##### -->
<!-- ##### SECTION Long_Description ##### -->
<para>
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### STRUCT GimpColorNotebook ##### -->
<para>
</para>
<!-- ##### FUNCTION gimp_color_notebook_new ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION gimp_color_notebook_set_color ##### -->
<para>
</para>
@notebook:
@rgb:
@hsv:
<!-- ##### FUNCTION gimp_color_notebook_get_color ##### -->
<para>
</para>
@notebook:
@rgb:
@hsv:
<!-- ##### FUNCTION gimp_color_notebook_color_changed ##### -->
<para>
</para>
@notebook:
<!-- ##### FUNCTION gimp_color_notebook_set_channel ##### -->
<para>
</para>
@notebook:
@channel:
<!-- ##### SIGNAL GimpColorNotebook::color-changed ##### -->
<para>
</para>
@gimpcolornotebook: the object which received the signal.
@arg1:
@arg2:

View File

@ -27,6 +27,8 @@ libgimpwidgets_1_3_la_sources = \
gimpcolorbutton.h \
gimpcolordisplay.c \
gimpcolordisplay.h \
gimpcolornotebook.c \
gimpcolornotebook.h \
gimpcolorselector.c \
gimpcolorselector.h \
gimpcolorselect.c \
@ -77,6 +79,7 @@ libgimpwidgetsinclude_HEADERS = \
gimpcolorarea.h \
gimpcolorbutton.h \
gimpcolordisplay.h \
gimpcolornotebook.h \
gimpcolorselector.h \
gimpcolorselect.h \
gimpdialog.h \

View File

@ -0,0 +1,305 @@
/* LIBGIMP - The GIMP Library
* Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball
*
* gimpcolornotebook.c
* Copyright (C) 2002 Michael Natterer <mitch@gimp.org>
*
* based on color_notebook module
* Copyright (C) 1998 Austin Donnelly <austin@greenend.org.uk>
*
* 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 of the License, or (at your option) 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
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library 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.
*/
#include "config.h"
#include <gtk/gtk.h>
#include "libgimpcolor/gimpcolor.h"
#include "gimpwidgetstypes.h"
#include "gimpcolornotebook.h"
#include "gimpcolorselector.h"
#include "gimpwidgetsmarshal.h"
enum
{
COLOR_CHANGED,
LAST_SIGNAL
};
static void gimp_color_notebook_class_init (GimpColorNotebookClass *klass);
static void gimp_color_notebook_init (GimpColorNotebook *notebook);
static void gimp_color_notebook_finalize (GObject *object);
static void gimp_color_notebook_switch_page (GtkNotebook *gtk_notebook,
GtkNotebookPage *page,
guint page_num);
static void gimp_color_notebook_update_callback (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv,
GimpColorNotebook *notebook);
static GtkNotebookClass *parent_class = NULL;
static guint notebook_signals[LAST_SIGNAL] = { 0 };
GType
gimp_color_notebook_get_type (void)
{
static GType notebook_type = 0;
if (! notebook_type)
{
static const GTypeInfo notebook_info =
{
sizeof (GimpColorNotebookClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) gimp_color_notebook_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (GimpColorNotebook),
0, /* n_preallocs */
(GInstanceInitFunc) gimp_color_notebook_init,
};
notebook_type = g_type_register_static (GTK_TYPE_NOTEBOOK,
"GimpColorNotebook",
&notebook_info, 0);
}
return notebook_type;
}
static void
gimp_color_notebook_class_init (GimpColorNotebookClass *klass)
{
GObjectClass *object_class;
GtkNotebookClass *notebook_class;
object_class = G_OBJECT_CLASS (klass);
notebook_class = GTK_NOTEBOOK_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
notebook_signals[COLOR_CHANGED] =
g_signal_new ("color_changed",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GimpColorNotebookClass, color_changed),
NULL, NULL,
_gimp_widgets_marshal_VOID__POINTER_POINTER,
G_TYPE_NONE, 2,
G_TYPE_POINTER,
G_TYPE_POINTER);
object_class->finalize = gimp_color_notebook_finalize;
notebook_class->switch_page = gimp_color_notebook_switch_page;
klass->color_changed = NULL;
}
static void
gimp_color_notebook_init (GimpColorNotebook *notebook)
{
GtkWidget *selector;
GtkWidget *label;
GType *selector_types;
gint n_selector_types;
gint i;
gimp_rgba_set (&notebook->rgb, 0.0, 0.0, 0.0, 1.0);
gimp_rgb_to_hsv (&notebook->rgb, &notebook->hsv);
selector_types = g_type_children (GIMP_TYPE_COLOR_SELECTOR, &n_selector_types);
if (n_selector_types == 1)
{
gtk_notebook_set_show_tabs (GTK_NOTEBOOK (notebook), FALSE);
gtk_notebook_set_show_border (GTK_NOTEBOOK (notebook), FALSE);
}
for (i = 0; i < n_selector_types; i++)
{
selector = gimp_color_selector_new (selector_types[i],
&notebook->rgb,
&notebook->hsv);
if (! selector)
continue;
label = gtk_label_new (GIMP_COLOR_SELECTOR_GET_CLASS (selector)->name);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), selector, label);
if (! notebook->cur_page)
notebook->cur_page = GIMP_COLOR_SELECTOR (selector);
notebook->selectors = g_list_append (notebook->selectors, selector);
gtk_widget_show (selector);
g_signal_connect (G_OBJECT (selector), "color_changed",
G_CALLBACK (gimp_color_notebook_update_callback),
notebook);
}
g_free (selector_types);
}
static void
gimp_color_notebook_finalize (GObject *object)
{
GimpColorNotebook *notebook;
notebook = GIMP_COLOR_NOTEBOOK (object);
if (notebook->selectors)
{
g_list_free (notebook->selectors);
notebook->selectors = NULL;
}
G_OBJECT_CLASS (parent_class)->finalize (object);
}
static void
gimp_color_notebook_switch_page (GtkNotebook *gtk_notebook,
GtkNotebookPage *page,
guint page_num)
{
GimpColorNotebook *notebook;
GtkWidget *page_widget;
notebook = GIMP_COLOR_NOTEBOOK (gtk_notebook);
GTK_NOTEBOOK_CLASS (parent_class)->switch_page (gtk_notebook, page, page_num);
page_widget = gtk_notebook_get_nth_page (gtk_notebook, page_num);
notebook->cur_page = GIMP_COLOR_SELECTOR (page_widget);
g_signal_handlers_block_by_func (G_OBJECT (notebook->cur_page),
gimp_color_notebook_update_callback,
notebook);
gimp_color_selector_set_channel (notebook->cur_page,
notebook->channel);
gimp_color_selector_set_color (notebook->cur_page,
&notebook->rgb,
&notebook->hsv);
g_signal_handlers_unblock_by_func (G_OBJECT (notebook->cur_page),
gimp_color_notebook_update_callback,
notebook);
}
/* public functions */
GtkWidget *
gimp_color_notebook_new (void)
{
GimpColorNotebook *notebook;
notebook = g_object_new (GIMP_TYPE_COLOR_NOTEBOOK, NULL);
return GTK_WIDGET (notebook);
}
void
gimp_color_notebook_set_color (GimpColorNotebook *notebook,
const GimpRGB *rgb,
const GimpHSV *hsv)
{
g_return_if_fail (GIMP_IS_COLOR_NOTEBOOK (notebook));
g_return_if_fail (rgb != NULL);
g_return_if_fail (hsv != NULL);
notebook->rgb = *rgb;
notebook->hsv = *hsv;
g_signal_handlers_block_by_func (G_OBJECT (notebook->cur_page),
gimp_color_notebook_update_callback,
notebook);
gimp_color_selector_set_color (notebook->cur_page,
&notebook->rgb,
&notebook->hsv);
g_signal_handlers_unblock_by_func (G_OBJECT (notebook->cur_page),
gimp_color_notebook_update_callback,
notebook);
}
void
gimp_color_notebook_get_color (GimpColorNotebook *notebook,
GimpRGB *rgb,
GimpHSV *hsv)
{
g_return_if_fail (GIMP_IS_COLOR_NOTEBOOK (notebook));
g_return_if_fail (rgb != NULL);
g_return_if_fail (hsv != NULL);
*rgb = notebook->rgb;
*hsv = notebook->hsv;
}
void
gimp_color_notebook_color_changed (GimpColorNotebook *notebook)
{
g_return_if_fail (GIMP_IS_COLOR_NOTEBOOK (notebook));
g_signal_emit (G_OBJECT (notebook), notebook_signals[COLOR_CHANGED], 0,
&notebook->rgb, &notebook->hsv);
}
void
gimp_color_notebook_set_channel (GimpColorNotebook *notebook,
GimpColorSelectorChannel channel)
{
g_return_if_fail (GIMP_IS_COLOR_NOTEBOOK (notebook));
if (channel != notebook->channel)
{
notebook->channel = channel;
gimp_color_selector_set_channel (notebook->cur_page,
notebook->channel);
}
}
/* private functions */
static void
gimp_color_notebook_update_callback (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv,
GimpColorNotebook *notebook)
{
notebook->rgb = *rgb;
notebook->hsv = *hsv;
gimp_color_notebook_color_changed (notebook);
}

View File

@ -0,0 +1,84 @@
/* LIBGIMP - The GIMP Library
* Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball
*
* gimpcolornotebook.h
* Copyright (C) 2002 Michael Natterer <mitch@gimp.org>
*
* based on color_notebook module
* Copyright (C) 1998 Austin Donnelly <austin@greenend.org.uk>
*
* 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 of the License, or (at your option) 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
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library 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.
*/
#ifndef __GIMP_COLOR_NOTEBOOK_H__
#define __GIMP_COLOR_NOTEBOOK_H__
G_BEGIN_DECLS
#define GIMP_TYPE_COLOR_NOTEBOOK (gimp_color_notebook_get_type ())
#define GIMP_COLOR_NOTEBOOK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_COLOR_NOTEBOOK, GimpColorNotebook))
#define GIMP_COLOR_NOTEBOOK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_COLOR_NOTEBOOK, GimpColorNotebookClass))
#define GIMP_IS_COLOR_NOTEBOOK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_COLOR_NOTEBOOK))
#define GIMP_IS_COLOR_NOTEBOOK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_COLOR_NOTEBOOK))
#define GIMP_COLOR_NOTEBOOK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_COLOR_NOTEBOOK, GimpColorNotebookClass))
typedef struct _GimpColorNotebookClass GimpColorNotebookClass;
struct _GimpColorNotebook
{
GtkNotebook parent_instance;
GimpRGB rgb;
GimpHSV hsv;
GimpColorSelectorChannel channel;
GList *selectors;
GimpColorSelector *cur_page;
};
struct _GimpColorNotebookClass
{
GtkNotebookClass parent_class;
/* signals */
void (* color_changed) (GimpColorNotebook *notebook,
const GimpRGB *rgb,
const GimpHSV *hsv);
};
GType gimp_color_notebook_get_type (void) G_GNUC_CONST;
GtkWidget * gimp_color_notebook_new (void);
void gimp_color_notebook_set_color (GimpColorNotebook *notebook,
const GimpRGB *rgb,
const GimpHSV *hsv);
void gimp_color_notebook_get_color (GimpColorNotebook *notebook,
GimpRGB *rgb,
GimpHSV *hsv);
void gimp_color_notebook_color_changed (GimpColorNotebook *notebook);
void gimp_color_notebook_set_channel (GimpColorNotebook *notebook,
GimpColorSelectorChannel channel);
G_END_DECLS
#endif /* __GIMP_COLOR_NOTEBOOK_H__ */

View File

@ -35,18 +35,6 @@ G_BEGIN_DECLS
#define GIMP_COLOR_SELECTOR_BAR_SIZE 15
typedef enum
{
GIMP_COLOR_SELECTOR_HUE,
GIMP_COLOR_SELECTOR_SATURATION,
GIMP_COLOR_SELECTOR_VALUE,
GIMP_COLOR_SELECTOR_RED,
GIMP_COLOR_SELECTOR_GREEN,
GIMP_COLOR_SELECTOR_BLUE,
GIMP_COLOR_SELECTOR_ALPHA
} GimpColorSelectorChannel;
#define GIMP_TYPE_COLOR_SELECTOR (gimp_color_selector_get_type ())
#define GIMP_COLOR_SELECTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_COLOR_SELECTOR, GimpColorSelector))
#define GIMP_COLOR_SELECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_COLOR_SELECTOR, GimpColorSelectorClass))

View File

@ -31,6 +31,7 @@
#include <libgimpwidgets/gimpcolorarea.h>
#include <libgimpwidgets/gimpcolorbutton.h>
#include <libgimpwidgets/gimpcolordisplay.h>
#include <libgimpwidgets/gimpcolornotebook.h>
#include <libgimpwidgets/gimpcolorselector.h>
#include <libgimpwidgets/gimpcolorselect.h>
#include <libgimpwidgets/gimpdialog.h>

View File

@ -36,6 +36,17 @@ typedef enum
GIMP_COLOR_AREA_LARGE_CHECKS
} GimpColorAreaType;
typedef enum
{
GIMP_COLOR_SELECTOR_HUE,
GIMP_COLOR_SELECTOR_SATURATION,
GIMP_COLOR_SELECTOR_VALUE,
GIMP_COLOR_SELECTOR_RED,
GIMP_COLOR_SELECTOR_GREEN,
GIMP_COLOR_SELECTOR_BLUE,
GIMP_COLOR_SELECTOR_ALPHA
} GimpColorSelectorChannel;
typedef enum
{
GIMP_SIZE_ENTRY_UPDATE_NONE = 0,
@ -49,6 +60,7 @@ typedef struct _GimpChainButton GimpChainButton;
typedef struct _GimpColorArea GimpColorArea;
typedef struct _GimpColorButton GimpColorButton;
typedef struct _GimpColorDisplay GimpColorDisplay;
typedef struct _GimpColorNotebook GimpColorNotebook;
typedef struct _GimpColorSelector GimpColorSelector;
typedef struct _GimpColorSelect GimpColorSelect;
typedef struct _GimpDialog GimpDialog;