mirror of https://github.com/GNOME/gimp.git
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:
parent
d34647e3a0
commit
5f750eae3c
16
ChangeLog
16
ChangeLog
|
@ -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.
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
@ -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 \
|
||||
|
|
|
@ -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",
|
||||
¬ebook_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 (¬ebook->rgb, 0.0, 0.0, 0.0, 1.0);
|
||||
gimp_rgb_to_hsv (¬ebook->rgb, ¬ebook->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],
|
||||
¬ebook->rgb,
|
||||
¬ebook->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,
|
||||
¬ebook->rgb,
|
||||
¬ebook->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,
|
||||
¬ebook->rgb,
|
||||
¬ebook->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,
|
||||
¬ebook->rgb, ¬ebook->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);
|
||||
}
|
|
@ -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__ */
|
|
@ -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))
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue