added virtual functions set_toggles_visible() and set_toggles_sensitive().

2002-11-05  Michael Natterer  <mitch@gimp.org>

	* libgimpwidgets/gimpcolorselector.[ch]: added virtual functions
	set_toggles_visible() and set_toggles_sensitive(). Added a
	stock_id. Emit "color_changed" and "channel_changed" on
	set_color() and set_channel() resp.

	* libgimpwidgets/gimpcolornotebook.[ch]: implement the new
	methods.  Added gimp_color_notebook_set_has_page() to control
	which selectors a notebook contains.

	* libgimpwidgets/gimpcolorscales.[ch]: removed the toggle
	API and implement the new methods.

	* libgimpwidgets/gimpcolorselect.c: added toggle buttons for the
	channels so the widget doesn't need external ones.

	* app/gui/color-notebook.c: changed accordingly.

	* libgimpwidgets/gimpstock.[ch]
	* themes/Default/images/Makefile.am
	* themes/Default/images/stock-color-triangle-16.png: added a
	(bad) icon for the triangle color selector.

	* modules/colorsel_triangle.c: use the new icon.
	* modules/colorsel_water.c: use the "Paintbrush" icon for now.

	* app/widgets/gimpcoloreditor.[ch]: new widget for editing the
	FG/BG color featuring a color notebook, stock buttons for
	selecting the pages and a GimpPickButton.

	* app/widgets/Makefile.am
	* app/widgets/widgets-types.h: changed accordingly.

	* app/gui/dialogs-constructors.[ch]
	* app/gui/dialogs.c: added a dockable wrapper for GimpColorEditor.

	* app/gui/menus.c: added it to the menus. Also added separate
	Layers, Channels and Paths entries. Bind <ctrl>L to the new
	callback so it doesn't always create a new layers dialog.
This commit is contained in:
Michael Natterer 2002-11-05 00:02:56 +00:00 committed by Michael Natterer
parent 3e3b5ef3c5
commit 2743f9fae1
29 changed files with 1492 additions and 249 deletions

View File

@ -1,3 +1,44 @@
2002-11-05 Michael Natterer <mitch@gimp.org>
* libgimpwidgets/gimpcolorselector.[ch]: added virtual functions
set_toggles_visible() and set_toggles_sensitive(). Added a
stock_id. Emit "color_changed" and "channel_changed" on
set_color() and set_channel() resp.
* libgimpwidgets/gimpcolornotebook.[ch]: implement the new
methods. Added gimp_color_notebook_set_has_page() to control
which selectors a notebook contains.
* libgimpwidgets/gimpcolorscales.[ch]: removed the toggle
API and implement the new methods.
* libgimpwidgets/gimpcolorselect.c: added toggle buttons for the
channels so the widget doesn't need external ones.
* app/gui/color-notebook.c: changed accordingly.
* libgimpwidgets/gimpstock.[ch]
* themes/Default/images/Makefile.am
* themes/Default/images/stock-color-triangle-16.png: added a
(bad) icon for the triangle color selector.
* modules/colorsel_triangle.c: use the new icon.
* modules/colorsel_water.c: use the "Paintbrush" icon for now.
* app/widgets/gimpcoloreditor.[ch]: new widget for editing the
FG/BG color featuring a color notebook, stock buttons for
selecting the pages and a GimpPickButton.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h: changed accordingly.
* app/gui/dialogs-constructors.[ch]
* app/gui/dialogs.c: added a dockable wrapper for GimpColorEditor.
* app/gui/menus.c: added it to the menus. Also added separate
Layers, Channels and Paths entries. Bind <ctrl>L to the new
callback so it doesn't always create a new layers dialog.
2002-11-05 Michael Natterer <mitch@gimp.org>
* libgimpmodule/gimpmodule.c: on error, always close the module

View File

@ -369,6 +369,8 @@ color_notebook_new_internal (GimpViewable *viewable,
&cnp->rgb,
&cnp->hsv,
cnp->active_channel);
gimp_color_selector_set_toggles_visible (GIMP_COLOR_SELECTOR (cnp->notebook),
FALSE);
gtk_box_pack_start (GTK_BOX (left_vbox), cnp->notebook, TRUE, TRUE, 0);
gtk_widget_show (cnp->notebook);
@ -447,6 +449,8 @@ color_notebook_new_internal (GimpViewable *viewable,
&cnp->rgb,
&cnp->hsv,
cnp->active_channel);
gimp_color_selector_set_toggles_visible (GIMP_COLOR_SELECTOR (cnp->scales),
TRUE);
gimp_color_selector_set_show_alpha (GIMP_COLOR_SELECTOR (cnp->scales),
cnp->show_alpha);
gtk_box_pack_start (GTK_BOX (right_vbox), cnp->scales, TRUE, TRUE, 0);
@ -570,18 +574,38 @@ color_notebook_update (ColorNotebook *cnp,
return;
if (update & UPDATE_NOTEBOOK)
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (cnp->notebook),
&cnp->rgb,
&cnp->hsv);
{
g_signal_handlers_block_by_func (G_OBJECT (cnp->notebook),
G_CALLBACK (color_notebook_notebook_changed),
cnp);
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (cnp->notebook),
&cnp->rgb,
&cnp->hsv);
g_signal_handlers_unblock_by_func (G_OBJECT (cnp->notebook),
G_CALLBACK (color_notebook_notebook_changed),
cnp);
}
if (update & UPDATE_CHANNEL)
gimp_color_selector_set_channel (GIMP_COLOR_SELECTOR (cnp->notebook),
cnp->active_channel);
if (update & UPDATE_SCALES)
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (cnp->scales),
&cnp->rgb,
&cnp->hsv);
{
g_signal_handlers_block_by_func (G_OBJECT (cnp->scales),
G_CALLBACK (color_notebook_scales_changed),
cnp);
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (cnp->scales),
&cnp->rgb,
&cnp->hsv);
g_signal_handlers_unblock_by_func (G_OBJECT (cnp->scales),
G_CALLBACK (color_notebook_scales_changed),
cnp);
}
if (update & UPDATE_ORIG_COLOR)
gimp_color_area_set_color (GIMP_COLOR_AREA (cnp->orig_color),
@ -670,8 +694,8 @@ color_notebook_switch_page (GtkWidget *widget,
set_channel =
(GIMP_COLOR_SELECTOR_GET_CLASS (notebook->cur_page)->set_channel != NULL);
gimp_color_scales_set_toggles_sensitive (GIMP_COLOR_SCALES (cnp->scales),
set_channel);
gimp_color_selector_set_toggles_sensitive (GIMP_COLOR_SELECTOR (cnp->scales),
set_channel);
}

View File

@ -40,6 +40,7 @@
#include "widgets/gimpbrusheditor.h"
#include "widgets/gimpbrushfactoryview.h"
#include "widgets/gimpbufferview.h"
#include "widgets/gimpcoloreditor.h"
#include "widgets/gimpcolormapeditor.h"
#include "widgets/gimpcontainerlistview.h"
#include "widgets/gimpcontainergridview.h"
@ -126,6 +127,8 @@ static void dialogs_set_view_context_func (GimpDockable *dockable,
GimpContext *context);
static void dialogs_set_editor_context_func (GimpDockable *dockable,
GimpContext *context);
static void dialogs_set_color_editor_context_func (GimpDockable *dockable,
GimpContext *context);
static void dialogs_set_image_item_context_func (GimpDockable *dockable,
GimpContext *context);
static void dialogs_set_path_context_func (GimpDockable *dockable,
@ -844,6 +847,22 @@ dialogs_selection_editor_new (GimpDialogFactory *factory,
/***** misc dockables *****/
GtkWidget *
dialogs_color_editor_new (GimpDialogFactory *factory,
GimpContext *context,
gint preview_size)
{
GtkWidget *view;
view = gimp_color_editor_new (context);
return dialogs_dockable_new (view,
_("Color Editor"), _("Color"),
GTK_STOCK_SELECT_COLOR,
dialogs_stock_text_tab_func,
dialogs_set_color_editor_context_func);
}
GtkWidget *
dialogs_document_history_new (GimpDialogFactory *factory,
GimpContext *context,
@ -1254,6 +1273,19 @@ dialogs_set_editor_context_func (GimpDockable *dockable,
gimp_container_view_set_context (editor->view, context);
}
static void
dialogs_set_color_editor_context_func (GimpDockable *dockable,
GimpContext *context)
{
GimpColorEditor *editor;
editor = (GimpColorEditor *) g_object_get_data (G_OBJECT (dockable),
"gimp-dialogs-view");
if (editor)
gimp_color_editor_set_context (editor, context);
}
static void
dialogs_set_image_item_context_func (GimpDockable *dockable,
GimpContext *context)

View File

@ -127,6 +127,10 @@ GtkWidget * dialogs_selection_editor_new (GimpDialogFactory *factory,
GimpContext *context,
gint preview_size);
GtkWidget * dialogs_color_editor_new (GimpDialogFactory *factory,
GimpContext *context,
gint preview_size);
GtkWidget * dialogs_document_history_new (GimpDialogFactory *factory,
GimpContext *context,
gint preview_size);

View File

@ -76,6 +76,8 @@ static const GimpDialogFactoryEntry dock_entries[] =
{ "gimp-indexed-palette", dialogs_indexed_palette_new, 32, FALSE, FALSE, FALSE, TRUE },
{ "gimp-selection-editor", dialogs_selection_editor_new, 0, FALSE, FALSE, FALSE, TRUE },
{ "gimp-color-editor", dialogs_color_editor_new, 0, FALSE, FALSE, FALSE, TRUE },
{ "gimp-document-history", dialogs_document_history_new, 48, FALSE, FALSE, FALSE, TRUE },
{ "gimp-brush-editor", dialogs_brush_editor_get, 0, TRUE, FALSE, FALSE, TRUE },

View File

@ -369,6 +369,8 @@ color_notebook_new_internal (GimpViewable *viewable,
&cnp->rgb,
&cnp->hsv,
cnp->active_channel);
gimp_color_selector_set_toggles_visible (GIMP_COLOR_SELECTOR (cnp->notebook),
FALSE);
gtk_box_pack_start (GTK_BOX (left_vbox), cnp->notebook, TRUE, TRUE, 0);
gtk_widget_show (cnp->notebook);
@ -447,6 +449,8 @@ color_notebook_new_internal (GimpViewable *viewable,
&cnp->rgb,
&cnp->hsv,
cnp->active_channel);
gimp_color_selector_set_toggles_visible (GIMP_COLOR_SELECTOR (cnp->scales),
TRUE);
gimp_color_selector_set_show_alpha (GIMP_COLOR_SELECTOR (cnp->scales),
cnp->show_alpha);
gtk_box_pack_start (GTK_BOX (right_vbox), cnp->scales, TRUE, TRUE, 0);
@ -570,18 +574,38 @@ color_notebook_update (ColorNotebook *cnp,
return;
if (update & UPDATE_NOTEBOOK)
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (cnp->notebook),
&cnp->rgb,
&cnp->hsv);
{
g_signal_handlers_block_by_func (G_OBJECT (cnp->notebook),
G_CALLBACK (color_notebook_notebook_changed),
cnp);
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (cnp->notebook),
&cnp->rgb,
&cnp->hsv);
g_signal_handlers_unblock_by_func (G_OBJECT (cnp->notebook),
G_CALLBACK (color_notebook_notebook_changed),
cnp);
}
if (update & UPDATE_CHANNEL)
gimp_color_selector_set_channel (GIMP_COLOR_SELECTOR (cnp->notebook),
cnp->active_channel);
if (update & UPDATE_SCALES)
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (cnp->scales),
&cnp->rgb,
&cnp->hsv);
{
g_signal_handlers_block_by_func (G_OBJECT (cnp->scales),
G_CALLBACK (color_notebook_scales_changed),
cnp);
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (cnp->scales),
&cnp->rgb,
&cnp->hsv);
g_signal_handlers_unblock_by_func (G_OBJECT (cnp->scales),
G_CALLBACK (color_notebook_scales_changed),
cnp);
}
if (update & UPDATE_ORIG_COLOR)
gimp_color_area_set_color (GIMP_COLOR_AREA (cnp->orig_color),
@ -670,8 +694,8 @@ color_notebook_switch_page (GtkWidget *widget,
set_channel =
(GIMP_COLOR_SELECTOR_GET_CLASS (notebook->cur_page)->set_channel != NULL);
gimp_color_scales_set_toggles_sensitive (GIMP_COLOR_SCALES (cnp->scales),
set_channel);
gimp_color_selector_set_toggles_sensitive (GIMP_COLOR_SELECTOR (cnp->scales),
set_channel);
}

View File

@ -40,6 +40,7 @@
#include "widgets/gimpbrusheditor.h"
#include "widgets/gimpbrushfactoryview.h"
#include "widgets/gimpbufferview.h"
#include "widgets/gimpcoloreditor.h"
#include "widgets/gimpcolormapeditor.h"
#include "widgets/gimpcontainerlistview.h"
#include "widgets/gimpcontainergridview.h"
@ -126,6 +127,8 @@ static void dialogs_set_view_context_func (GimpDockable *dockable,
GimpContext *context);
static void dialogs_set_editor_context_func (GimpDockable *dockable,
GimpContext *context);
static void dialogs_set_color_editor_context_func (GimpDockable *dockable,
GimpContext *context);
static void dialogs_set_image_item_context_func (GimpDockable *dockable,
GimpContext *context);
static void dialogs_set_path_context_func (GimpDockable *dockable,
@ -844,6 +847,22 @@ dialogs_selection_editor_new (GimpDialogFactory *factory,
/***** misc dockables *****/
GtkWidget *
dialogs_color_editor_new (GimpDialogFactory *factory,
GimpContext *context,
gint preview_size)
{
GtkWidget *view;
view = gimp_color_editor_new (context);
return dialogs_dockable_new (view,
_("Color Editor"), _("Color"),
GTK_STOCK_SELECT_COLOR,
dialogs_stock_text_tab_func,
dialogs_set_color_editor_context_func);
}
GtkWidget *
dialogs_document_history_new (GimpDialogFactory *factory,
GimpContext *context,
@ -1254,6 +1273,19 @@ dialogs_set_editor_context_func (GimpDockable *dockable,
gimp_container_view_set_context (editor->view, context);
}
static void
dialogs_set_color_editor_context_func (GimpDockable *dockable,
GimpContext *context)
{
GimpColorEditor *editor;
editor = (GimpColorEditor *) g_object_get_data (G_OBJECT (dockable),
"gimp-dialogs-view");
if (editor)
gimp_color_editor_set_context (editor, context);
}
static void
dialogs_set_image_item_context_func (GimpDockable *dockable,
GimpContext *context)

View File

@ -127,6 +127,10 @@ GtkWidget * dialogs_selection_editor_new (GimpDialogFactory *factory,
GimpContext *context,
gint preview_size);
GtkWidget * dialogs_color_editor_new (GimpDialogFactory *factory,
GimpContext *context,
gint preview_size);
GtkWidget * dialogs_document_history_new (GimpDialogFactory *factory,
GimpContext *context,
gint preview_size);

View File

@ -76,6 +76,8 @@ static const GimpDialogFactoryEntry dock_entries[] =
{ "gimp-indexed-palette", dialogs_indexed_palette_new, 32, FALSE, FALSE, FALSE, TRUE },
{ "gimp-selection-editor", dialogs_selection_editor_new, 0, FALSE, FALSE, FALSE, TRUE },
{ "gimp-color-editor", dialogs_color_editor_new, 0, FALSE, FALSE, FALSE, TRUE },
{ "gimp-document-history", dialogs_document_history_new, 48, FALSE, FALSE, FALSE, TRUE },
{ "gimp-brush-editor", dialogs_brush_editor_get, 0, TRUE, FALSE, FALSE, TRUE },

View File

@ -147,7 +147,7 @@ static GimpItemFactoryEntry toolbox_entries[] =
/* <Toolbox>/File/Dialogs */
{ { N_("/File/Dialogs/Layers, Channels & Paths..."), "<control>L",
{ { N_("/File/Dialogs/Layers, Channels & Paths..."), NULL,
dialogs_create_lc_cmd_callback, 0 },
NULL,
"file/dialogs/layers_and_channels.html", NULL },
@ -167,6 +167,41 @@ static GimpItemFactoryEntry toolbox_entries[] =
SEPARATOR ("/File/Dialogs/---"),
{ { N_("/File/Dialogs/Layers..."), "<control>L",
dialogs_create_dockable_cmd_callback, 0 },
"gimp-layer-list",
NULL, NULL },
{ { N_("/File/Dialogs/Channels..."), NULL,
dialogs_create_dockable_cmd_callback, 0 },
"gimp-channel-list",
NULL, NULL },
{ { N_("/File/Dialogs/Paths..."), NULL,
dialogs_create_dockable_cmd_callback, 0 },
"gimp-vectors-list",
NULL, NULL },
{ { N_("/File/Dialogs/Indexed Palette..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-indexed-palette",
"file/dialogs/indexed_palette.html", NULL },
{ { N_("/File/Dialogs/Selection Editor..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_TOOL_RECT_SELECT },
"gimp-selection-editor",
NULL, NULL },
{ { N_("/File/Dialogs/Navigation..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_NAVIGATION },
"gimp-navigation-view",
NULL, NULL },
SEPARATOR ("/File/Dialogs/---"),
{ { N_("/File/Dialogs/Colors..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-color-editor",
NULL, NULL },
{ { N_("/File/Dialogs/Brushes..."), "<control><shift>B",
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_TOOL_PAINTBRUSH },
@ -187,11 +222,6 @@ static GimpItemFactoryEntry toolbox_entries[] =
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-palette-list",
"file/dialogs/palette_selection.html", NULL },
{ { N_("/File/Dialogs/Indexed Palette..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-indexed-palette",
"file/dialogs/indexed_palette.html", NULL },
{ { N_("/File/Dialogs/Buffers..."), "foo",
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_PASTE },
@ -200,16 +230,6 @@ static GimpItemFactoryEntry toolbox_entries[] =
SEPARATOR ("/File/Dialogs/---"),
{ { N_("/File/Dialogs/Selection Editor..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_TOOL_RECT_SELECT },
"gimp-selection-editor",
NULL, NULL },
{ { N_("/File/Dialogs/Navigation..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_NAVIGATION },
"gimp-navigation-view",
NULL, NULL },
{ { N_("/File/Dialogs/Images..."), NULL,
dialogs_create_dockable_cmd_callback, 0 },
"gimp-image-list",
@ -883,7 +903,7 @@ static GimpItemFactoryEntry image_entries[] =
/* <Image>/Dialogs */
{ { N_("/Dialogs/Layers, Channels & Paths..."), "<control>L",
{ { N_("/Dialogs/Layers, Channels & Paths..."), NULL,
dialogs_create_lc_cmd_callback, 0 },
NULL,
"dialogs/layers_and_channels.html", NULL },
@ -903,6 +923,41 @@ static GimpItemFactoryEntry image_entries[] =
SEPARATOR ("/Dialogs/---"),
{ { N_("/Dialogs/Layers..."), "<control>L",
dialogs_create_dockable_cmd_callback, 0 },
"gimp-layer-list",
NULL, NULL },
{ { N_("/Dialogs/Channels..."), NULL,
dialogs_create_dockable_cmd_callback, 0 },
"gimp-channel-list",
NULL, NULL },
{ { N_("/Dialogs/Paths..."), NULL,
dialogs_create_dockable_cmd_callback, 0 },
"gimp-vectors-list",
NULL, NULL },
{ { N_("/Dialogs/Indexed Palette..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-indexed-palette",
"file/dialogs/indexed_palette.html", NULL },
{ { N_("/Dialogs/Selection Editor..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_TOOL_RECT_SELECT },
"gimp-selection-editor",
NULL, NULL },
{ { N_("/Dialogs/Navigation..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_NAVIGATION },
"gimp-navigation-view",
NULL, NULL },
SEPARATOR ("/Dialogs/---"),
{ { N_("/Dialogs/Colors..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-color-editor",
NULL, NULL },
{ { N_("/Dialogs/Brushes..."), "<control><shift>B",
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_TOOL_PAINTBRUSH },
@ -923,11 +978,6 @@ static GimpItemFactoryEntry image_entries[] =
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-palette-list",
"dialogs/palette_selection.html", NULL },
{ { N_("/Dialogs/Indexed Palette..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-indexed-palette",
"dialogs/indexed_palette.html", NULL },
{ { N_("/Dialogs/Buffers..."), "foo",
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_PASTE },
@ -936,16 +986,6 @@ static GimpItemFactoryEntry image_entries[] =
SEPARATOR ("/Dialogs/---"),
{ { N_("/Dialogs/Selection Editor..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_TOOL_RECT_SELECT },
"gimp-selection-editor",
NULL, NULL },
{ { N_("/Dialogs/Navigation..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_NAVIGATION },
"gimp-navigation-view",
NULL, NULL },
{ { N_("/Dialogs/Images..."), NULL,
dialogs_create_dockable_cmd_callback, 0 },
"gimp-image-list",
@ -1399,14 +1439,25 @@ static GimpItemFactoryEntry dialogs_entries[] =
{ { N_("/Select Tab"), NULL, NULL, 0 },
NULL, NULL, NULL },
ADD_TAB (N_("/Add Tab/Layers..."), "gimp-layer-list", NULL, NULL),
ADD_TAB (N_("/Add Tab/Channels..."), "gimp-channel-list", NULL, NULL),
ADD_TAB (N_("/Add Tab/Paths..."), "gimp-vectors-list", NULL, NULL),
ADD_TAB (N_("/Add Tab/Tool Options..."), "gimp-tool-options",
"<StockItem>", GIMP_STOCK_TOOL_OPTIONS),
SEPARATOR ("/Add Tab/---"),
ADD_TAB (N_("/Add Tab/Layers..."), "gimp-layer-list", NULL, NULL),
ADD_TAB (N_("/Add Tab/Channels..."), "gimp-channel-list", NULL, NULL),
ADD_TAB (N_("/Add Tab/Paths..."), "gimp-vectors-list", NULL, NULL),
ADD_TAB (N_("/Add Tab/Indexed Palette..."), "gimp-indexed-palette",
"<StockItem>", GTK_STOCK_SELECT_COLOR),
ADD_TAB (N_("/Add Tab/Selection Editor..."), "gimp-selection-editor",
"<StockItem>", GIMP_STOCK_TOOL_RECT_SELECT),
ADD_TAB (N_("/Add Tab/Navigation..."), "gimp-navigation-view",
"<StockItem>", GIMP_STOCK_NAVIGATION),
SEPARATOR ("/Add Tab/---"),
ADD_TAB (N_("/Add Tab/Colors..."), "gimp-color-editor",
"<StockItem>", GTK_STOCK_SELECT_COLOR),
ADD_TAB (N_("/Add Tab/Brushes..."), "gimp-brush-grid",
"<StockItem>", GIMP_STOCK_TOOL_PAINTBRUSH),
ADD_TAB (N_("/Add Tab/Patterns..."), "gimp-pattern-grid",
@ -1415,17 +1466,11 @@ static GimpItemFactoryEntry dialogs_entries[] =
"<StockItem>", GIMP_STOCK_TOOL_BLEND),
ADD_TAB (N_("/Add Tab/Palettes..."), "gimp-palette-list",
"<StockItem>", GTK_STOCK_SELECT_COLOR),
ADD_TAB (N_("/Add Tab/Indexed Palette..."), "gimp-indexed-palette",
"<StockItem>", GTK_STOCK_SELECT_COLOR),
ADD_TAB (N_("/Add Tab/Buffers..."), "gimp-buffer-list",
"<StockItem>", GTK_STOCK_PASTE),
SEPARATOR ("/Add Tab/---"),
ADD_TAB (N_("/Add Tab/Selection Editor..."), "gimp-selection-editor",
"<StockItem>", GIMP_STOCK_TOOL_RECT_SELECT),
ADD_TAB (N_("/Add Tab/Navigation..."), "gimp-navigation-view",
"<StockItem>", GIMP_STOCK_NAVIGATION),
ADD_TAB (N_("/Add Tab/Images..."), "gimp-image-list", NULL, NULL),
ADD_TAB (N_("/Add Tab/Document History..."), "gimp-document-history",
"<StockItem>", GTK_STOCK_OPEN),

View File

@ -147,7 +147,7 @@ static GimpItemFactoryEntry toolbox_entries[] =
/* <Toolbox>/File/Dialogs */
{ { N_("/File/Dialogs/Layers, Channels & Paths..."), "<control>L",
{ { N_("/File/Dialogs/Layers, Channels & Paths..."), NULL,
dialogs_create_lc_cmd_callback, 0 },
NULL,
"file/dialogs/layers_and_channels.html", NULL },
@ -167,6 +167,41 @@ static GimpItemFactoryEntry toolbox_entries[] =
SEPARATOR ("/File/Dialogs/---"),
{ { N_("/File/Dialogs/Layers..."), "<control>L",
dialogs_create_dockable_cmd_callback, 0 },
"gimp-layer-list",
NULL, NULL },
{ { N_("/File/Dialogs/Channels..."), NULL,
dialogs_create_dockable_cmd_callback, 0 },
"gimp-channel-list",
NULL, NULL },
{ { N_("/File/Dialogs/Paths..."), NULL,
dialogs_create_dockable_cmd_callback, 0 },
"gimp-vectors-list",
NULL, NULL },
{ { N_("/File/Dialogs/Indexed Palette..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-indexed-palette",
"file/dialogs/indexed_palette.html", NULL },
{ { N_("/File/Dialogs/Selection Editor..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_TOOL_RECT_SELECT },
"gimp-selection-editor",
NULL, NULL },
{ { N_("/File/Dialogs/Navigation..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_NAVIGATION },
"gimp-navigation-view",
NULL, NULL },
SEPARATOR ("/File/Dialogs/---"),
{ { N_("/File/Dialogs/Colors..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-color-editor",
NULL, NULL },
{ { N_("/File/Dialogs/Brushes..."), "<control><shift>B",
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_TOOL_PAINTBRUSH },
@ -187,11 +222,6 @@ static GimpItemFactoryEntry toolbox_entries[] =
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-palette-list",
"file/dialogs/palette_selection.html", NULL },
{ { N_("/File/Dialogs/Indexed Palette..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-indexed-palette",
"file/dialogs/indexed_palette.html", NULL },
{ { N_("/File/Dialogs/Buffers..."), "foo",
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_PASTE },
@ -200,16 +230,6 @@ static GimpItemFactoryEntry toolbox_entries[] =
SEPARATOR ("/File/Dialogs/---"),
{ { N_("/File/Dialogs/Selection Editor..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_TOOL_RECT_SELECT },
"gimp-selection-editor",
NULL, NULL },
{ { N_("/File/Dialogs/Navigation..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_NAVIGATION },
"gimp-navigation-view",
NULL, NULL },
{ { N_("/File/Dialogs/Images..."), NULL,
dialogs_create_dockable_cmd_callback, 0 },
"gimp-image-list",
@ -883,7 +903,7 @@ static GimpItemFactoryEntry image_entries[] =
/* <Image>/Dialogs */
{ { N_("/Dialogs/Layers, Channels & Paths..."), "<control>L",
{ { N_("/Dialogs/Layers, Channels & Paths..."), NULL,
dialogs_create_lc_cmd_callback, 0 },
NULL,
"dialogs/layers_and_channels.html", NULL },
@ -903,6 +923,41 @@ static GimpItemFactoryEntry image_entries[] =
SEPARATOR ("/Dialogs/---"),
{ { N_("/Dialogs/Layers..."), "<control>L",
dialogs_create_dockable_cmd_callback, 0 },
"gimp-layer-list",
NULL, NULL },
{ { N_("/Dialogs/Channels..."), NULL,
dialogs_create_dockable_cmd_callback, 0 },
"gimp-channel-list",
NULL, NULL },
{ { N_("/Dialogs/Paths..."), NULL,
dialogs_create_dockable_cmd_callback, 0 },
"gimp-vectors-list",
NULL, NULL },
{ { N_("/Dialogs/Indexed Palette..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-indexed-palette",
"file/dialogs/indexed_palette.html", NULL },
{ { N_("/Dialogs/Selection Editor..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_TOOL_RECT_SELECT },
"gimp-selection-editor",
NULL, NULL },
{ { N_("/Dialogs/Navigation..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_NAVIGATION },
"gimp-navigation-view",
NULL, NULL },
SEPARATOR ("/Dialogs/---"),
{ { N_("/Dialogs/Colors..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-color-editor",
NULL, NULL },
{ { N_("/Dialogs/Brushes..."), "<control><shift>B",
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_TOOL_PAINTBRUSH },
@ -923,11 +978,6 @@ static GimpItemFactoryEntry image_entries[] =
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-palette-list",
"dialogs/palette_selection.html", NULL },
{ { N_("/Dialogs/Indexed Palette..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_SELECT_COLOR },
"gimp-indexed-palette",
"dialogs/indexed_palette.html", NULL },
{ { N_("/Dialogs/Buffers..."), "foo",
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GTK_STOCK_PASTE },
@ -936,16 +986,6 @@ static GimpItemFactoryEntry image_entries[] =
SEPARATOR ("/Dialogs/---"),
{ { N_("/Dialogs/Selection Editor..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_TOOL_RECT_SELECT },
"gimp-selection-editor",
NULL, NULL },
{ { N_("/Dialogs/Navigation..."), NULL,
dialogs_create_dockable_cmd_callback, 0,
"<StockItem>", GIMP_STOCK_NAVIGATION },
"gimp-navigation-view",
NULL, NULL },
{ { N_("/Dialogs/Images..."), NULL,
dialogs_create_dockable_cmd_callback, 0 },
"gimp-image-list",
@ -1399,14 +1439,25 @@ static GimpItemFactoryEntry dialogs_entries[] =
{ { N_("/Select Tab"), NULL, NULL, 0 },
NULL, NULL, NULL },
ADD_TAB (N_("/Add Tab/Layers..."), "gimp-layer-list", NULL, NULL),
ADD_TAB (N_("/Add Tab/Channels..."), "gimp-channel-list", NULL, NULL),
ADD_TAB (N_("/Add Tab/Paths..."), "gimp-vectors-list", NULL, NULL),
ADD_TAB (N_("/Add Tab/Tool Options..."), "gimp-tool-options",
"<StockItem>", GIMP_STOCK_TOOL_OPTIONS),
SEPARATOR ("/Add Tab/---"),
ADD_TAB (N_("/Add Tab/Layers..."), "gimp-layer-list", NULL, NULL),
ADD_TAB (N_("/Add Tab/Channels..."), "gimp-channel-list", NULL, NULL),
ADD_TAB (N_("/Add Tab/Paths..."), "gimp-vectors-list", NULL, NULL),
ADD_TAB (N_("/Add Tab/Indexed Palette..."), "gimp-indexed-palette",
"<StockItem>", GTK_STOCK_SELECT_COLOR),
ADD_TAB (N_("/Add Tab/Selection Editor..."), "gimp-selection-editor",
"<StockItem>", GIMP_STOCK_TOOL_RECT_SELECT),
ADD_TAB (N_("/Add Tab/Navigation..."), "gimp-navigation-view",
"<StockItem>", GIMP_STOCK_NAVIGATION),
SEPARATOR ("/Add Tab/---"),
ADD_TAB (N_("/Add Tab/Colors..."), "gimp-color-editor",
"<StockItem>", GTK_STOCK_SELECT_COLOR),
ADD_TAB (N_("/Add Tab/Brushes..."), "gimp-brush-grid",
"<StockItem>", GIMP_STOCK_TOOL_PAINTBRUSH),
ADD_TAB (N_("/Add Tab/Patterns..."), "gimp-pattern-grid",
@ -1415,17 +1466,11 @@ static GimpItemFactoryEntry dialogs_entries[] =
"<StockItem>", GIMP_STOCK_TOOL_BLEND),
ADD_TAB (N_("/Add Tab/Palettes..."), "gimp-palette-list",
"<StockItem>", GTK_STOCK_SELECT_COLOR),
ADD_TAB (N_("/Add Tab/Indexed Palette..."), "gimp-indexed-palette",
"<StockItem>", GTK_STOCK_SELECT_COLOR),
ADD_TAB (N_("/Add Tab/Buffers..."), "gimp-buffer-list",
"<StockItem>", GTK_STOCK_PASTE),
SEPARATOR ("/Add Tab/---"),
ADD_TAB (N_("/Add Tab/Selection Editor..."), "gimp-selection-editor",
"<StockItem>", GIMP_STOCK_TOOL_RECT_SELECT),
ADD_TAB (N_("/Add Tab/Navigation..."), "gimp-navigation-view",
"<StockItem>", GIMP_STOCK_NAVIGATION),
ADD_TAB (N_("/Add Tab/Images..."), "gimp-image-list", NULL, NULL),
ADD_TAB (N_("/Add Tab/Document History..."), "gimp-document-history",
"<StockItem>", GTK_STOCK_OPEN),

View File

@ -33,6 +33,8 @@ libappwidgets_a_sources = \
gimpchannellistitem.h \
gimpchannellistview.c \
gimpchannellistview.h \
gimpcoloreditor.c \
gimpcoloreditor.h \
gimpcolormapeditor.c \
gimpcolormapeditor.h \
gimpcolorpanel.c \

View File

@ -369,6 +369,8 @@ color_notebook_new_internal (GimpViewable *viewable,
&cnp->rgb,
&cnp->hsv,
cnp->active_channel);
gimp_color_selector_set_toggles_visible (GIMP_COLOR_SELECTOR (cnp->notebook),
FALSE);
gtk_box_pack_start (GTK_BOX (left_vbox), cnp->notebook, TRUE, TRUE, 0);
gtk_widget_show (cnp->notebook);
@ -447,6 +449,8 @@ color_notebook_new_internal (GimpViewable *viewable,
&cnp->rgb,
&cnp->hsv,
cnp->active_channel);
gimp_color_selector_set_toggles_visible (GIMP_COLOR_SELECTOR (cnp->scales),
TRUE);
gimp_color_selector_set_show_alpha (GIMP_COLOR_SELECTOR (cnp->scales),
cnp->show_alpha);
gtk_box_pack_start (GTK_BOX (right_vbox), cnp->scales, TRUE, TRUE, 0);
@ -570,18 +574,38 @@ color_notebook_update (ColorNotebook *cnp,
return;
if (update & UPDATE_NOTEBOOK)
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (cnp->notebook),
&cnp->rgb,
&cnp->hsv);
{
g_signal_handlers_block_by_func (G_OBJECT (cnp->notebook),
G_CALLBACK (color_notebook_notebook_changed),
cnp);
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (cnp->notebook),
&cnp->rgb,
&cnp->hsv);
g_signal_handlers_unblock_by_func (G_OBJECT (cnp->notebook),
G_CALLBACK (color_notebook_notebook_changed),
cnp);
}
if (update & UPDATE_CHANNEL)
gimp_color_selector_set_channel (GIMP_COLOR_SELECTOR (cnp->notebook),
cnp->active_channel);
if (update & UPDATE_SCALES)
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (cnp->scales),
&cnp->rgb,
&cnp->hsv);
{
g_signal_handlers_block_by_func (G_OBJECT (cnp->scales),
G_CALLBACK (color_notebook_scales_changed),
cnp);
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (cnp->scales),
&cnp->rgb,
&cnp->hsv);
g_signal_handlers_unblock_by_func (G_OBJECT (cnp->scales),
G_CALLBACK (color_notebook_scales_changed),
cnp);
}
if (update & UPDATE_ORIG_COLOR)
gimp_color_area_set_color (GIMP_COLOR_AREA (cnp->orig_color),
@ -670,8 +694,8 @@ color_notebook_switch_page (GtkWidget *widget,
set_channel =
(GIMP_COLOR_SELECTOR_GET_CLASS (notebook->cur_page)->set_channel != NULL);
gimp_color_scales_set_toggles_sensitive (GIMP_COLOR_SCALES (cnp->scales),
set_channel);
gimp_color_selector_set_toggles_sensitive (GIMP_COLOR_SELECTOR (cnp->scales),
set_channel);
}

View File

@ -0,0 +1,563 @@
/* The GIMP -- an image manipulation program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* gimpcoloreditor.c
* Copyright (C) 2002 Michael Natterer <mitch@gimp.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "config.h"
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include "libgimpcolor/gimpcolor.h"
#include "libgimpwidgets/gimpwidgets.h"
#include "widgets-types.h"
#include "core/gimpcontext.h"
#include "gimpcoloreditor.h"
#include "libgimp/gimpintl.h"
static void gimp_color_editor_class_init (GimpColorEditorClass *klass);
static void gimp_color_editor_init (GimpColorEditor *editor);
static void gimp_color_editor_destroy (GtkObject *object);
static void gimp_color_editor_fg_changed (GimpContext *context,
const GimpRGB *rgb,
GimpColorEditor *editor);
static void gimp_color_editor_bg_changed (GimpContext *context,
const GimpRGB *rgb,
GimpColorEditor *editor);
static void gimp_color_editor_color_changed (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv,
GimpColorEditor *editor);
static void gimp_color_editor_area_changed (GimpColorArea *color_area,
GimpColorEditor *editor);
static void gimp_color_editor_tab_toggled (GtkWidget *widget,
GimpColorEditor *editor);
static void gimp_color_editor_fg_bg_toggled (GtkWidget *widget,
GimpColorEditor *editor);
static void gimp_color_editor_color_picked (GtkWidget *widget,
const GimpRGB *rgb,
GimpColorEditor *editor);
static GimpEditorClass *parent_class = NULL;
GType
gimp_color_editor_get_type (void)
{
static GType editor_type = 0;
if (! editor_type)
{
static const GTypeInfo editor_info =
{
sizeof (GimpColorEditorClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
(GClassInitFunc) gimp_color_editor_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (GimpColorEditor),
0, /* n_preallocs */
(GInstanceInitFunc) gimp_color_editor_init,
};
editor_type = g_type_register_static (GIMP_TYPE_EDITOR,
"GimpColorEditor",
&editor_info, 0);
}
return editor_type;
}
static void
gimp_color_editor_class_init (GimpColorEditorClass* klass)
{
GtkObjectClass *object_class;
object_class = GTK_OBJECT_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
object_class->destroy = gimp_color_editor_destroy;
}
static void
gimp_color_editor_init (GimpColorEditor *editor)
{
GtkWidget *notebook;
gint content_spacing;
gint button_spacing;
GtkIconSize button_icon_size;
GimpRGB rgb;
GimpHSV hsv;
GList *list;
GSList *group;
editor->context = NULL;
editor->edit_bg = FALSE;
gimp_rgba_set (&rgb, 0.0, 0.0, 0.0, 1.0);
gimp_rgb_to_hsv (&rgb, &hsv);
gtk_widget_style_get (GTK_WIDGET (editor),
"content_spacing", &content_spacing,
"button_spacing", &button_spacing,
"button_icon_size", &button_icon_size,
NULL);
editor->hbox = gtk_hbox_new (TRUE, button_spacing);
gtk_box_pack_start (GTK_BOX (editor), editor->hbox, FALSE, FALSE, 0);
gtk_widget_show (editor->hbox);
editor->notebook = gimp_color_selector_new (GIMP_TYPE_COLOR_NOTEBOOK,
&rgb, &hsv,
GIMP_COLOR_SELECTOR_HUE);
gimp_color_selector_set_show_alpha (GIMP_COLOR_SELECTOR (editor->notebook),
FALSE);
gtk_box_pack_start (GTK_BOX (editor), editor->notebook,
TRUE, TRUE, content_spacing);
gtk_widget_show (editor->notebook);
g_signal_connect (G_OBJECT (editor->notebook), "color_changed",
G_CALLBACK (gimp_color_editor_color_changed),
editor);
notebook = GIMP_COLOR_NOTEBOOK (editor->notebook)->notebook;
gtk_notebook_set_show_tabs (GTK_NOTEBOOK (notebook), FALSE);
gtk_notebook_set_show_border (GTK_NOTEBOOK (notebook), FALSE);
gimp_color_notebook_set_has_page (GIMP_COLOR_NOTEBOOK (editor->notebook),
GIMP_TYPE_COLOR_SCALES, TRUE);
group = NULL;
for (list = GIMP_COLOR_NOTEBOOK (editor->notebook)->selectors;
list;
list = g_list_next (list))
{
GimpColorSelector *selector;
GimpColorSelectorClass *selector_class;
GtkWidget *button;
GtkWidget *image;
selector = GIMP_COLOR_SELECTOR (list->data);
selector_class = GIMP_COLOR_SELECTOR_GET_CLASS (selector);
button = gtk_radio_button_new (group);
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (button), FALSE);
gtk_box_pack_start (GTK_BOX (editor->hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
image = gtk_image_new_from_stock (selector_class->stock_id,
GTK_ICON_SIZE_BUTTON);
gtk_container_add (GTK_CONTAINER (button), image);
gtk_widget_show (image);
if (selector_class->name)
{
gchar *stripped_name;
gchar *p, *q;
stripped_name = g_strdup (selector_class->name);
p = q = stripped_name;
while (*q)
{
if (*q == '_')
q++;
else
*p++ = *q++;
}
*p = '\0';
gimp_help_set_help_data (button, stripped_name,
selector_class->help_page);
g_free (stripped_name);
}
g_object_set_data (G_OBJECT (button), "selector", selector);
g_signal_connect (G_OBJECT (button), "toggled",
G_CALLBACK (gimp_color_editor_tab_toggled),
editor);
}
/* The color picker */
{
GtkWidget *button;
button = gimp_pick_button_new ();
gtk_box_pack_start (GTK_BOX (editor->hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
g_signal_connect (G_OBJECT (button), "color_picked",
G_CALLBACK (gimp_color_editor_color_picked),
editor);
}
/* FG/BG toggles */
{
GtkWidget *hbox;
GtkWidget *vbox;
GtkWidget *frame;
gint i;
static const gchar *labels[] =
{
N_("FG"), N_("BG")
};
static const gchar *tips[] =
{
N_("Edit Foreground Color"), N_("Edit Background Color")
};
hbox = gtk_hbox_new (FALSE, button_spacing);
gtk_box_pack_start (GTK_BOX (editor), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
vbox = gtk_vbox_new (FALSE, button_spacing);
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
gtk_widget_show (vbox);
group = NULL;
for (i = 0; i < G_N_ELEMENTS (labels); i++)
{
GtkWidget *button;
button = gtk_radio_button_new_with_mnemonic (group,
gettext (labels[i]));
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (button), FALSE);
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
gtk_widget_show (button);
gimp_help_set_help_data (button, gettext (tips[i]), NULL);
g_object_set_data (G_OBJECT (button), "edit_bg",
GINT_TO_POINTER (i == 1));
if ((i == 1) == editor->edit_bg)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
g_signal_connect (G_OBJECT (button), "toggled",
G_CALLBACK (gimp_color_editor_fg_bg_toggled),
editor);
}
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
gtk_box_pack_end (GTK_BOX (hbox), frame, TRUE, TRUE, 0);
gtk_widget_show (frame);
editor->color_area = gimp_color_area_new (&rgb, GIMP_COLOR_AREA_FLAT,
GDK_BUTTON1_MASK |
GDK_BUTTON2_MASK);
gtk_container_add (GTK_CONTAINER (frame), editor->color_area);
gtk_widget_show (editor->color_area);
g_signal_connect (G_OBJECT (editor->color_area), "color_changed",
G_CALLBACK (gimp_color_editor_area_changed),
editor);
}
}
static void
gimp_color_editor_destroy (GtkObject *object)
{
GimpColorEditor *editor;
editor = GIMP_COLOR_EDITOR (object);
if (editor->context)
gimp_color_editor_set_context (editor, NULL);
GTK_OBJECT_CLASS (parent_class)->destroy (object);
}
/* public functions */
GtkWidget *
gimp_color_editor_new (GimpContext *context)
{
GimpColorEditor *editor;
g_return_val_if_fail (context == NULL || GIMP_IS_CONTEXT (context), NULL);
editor = g_object_new (GIMP_TYPE_COLOR_EDITOR, NULL);
if (context)
gimp_color_editor_set_context (editor, context);
return GTK_WIDGET (editor);
}
void
gimp_color_editor_set_context (GimpColorEditor *editor,
GimpContext *context)
{
g_return_if_fail (GIMP_IS_COLOR_EDITOR (editor));
g_return_if_fail (context == NULL || GIMP_IS_CONTEXT (context));
if (context == editor->context)
return;
if (editor->context)
{
g_signal_handlers_disconnect_by_func (G_OBJECT (editor->context),
gimp_color_editor_fg_changed,
editor);
g_signal_handlers_disconnect_by_func (G_OBJECT (editor->context),
gimp_color_editor_bg_changed,
editor);
g_object_unref (editor->context);
editor->context = NULL;
}
if (context)
{
GimpRGB rgb;
editor->context = g_object_ref (context);
g_signal_connect (G_OBJECT (editor->context), "foreground_changed",
G_CALLBACK (gimp_color_editor_fg_changed),
editor);
g_signal_connect (G_OBJECT (editor->context), "background_changed",
G_CALLBACK (gimp_color_editor_bg_changed),
editor);
if (editor->edit_bg)
{
gimp_context_get_background (editor->context, &rgb);
gimp_color_editor_bg_changed (editor->context, &rgb, editor);
}
else
{
gimp_context_get_foreground (editor->context, &rgb);
gimp_color_editor_fg_changed (editor->context, &rgb, editor);
}
}
}
/* public functions */
static void
gimp_color_editor_fg_changed (GimpContext *context,
const GimpRGB *rgb,
GimpColorEditor *editor)
{
if (! editor->edit_bg)
{
GimpHSV hsv;
gimp_rgb_to_hsv (rgb, &hsv);
g_signal_handlers_block_by_func (G_OBJECT (editor->notebook),
gimp_color_editor_color_changed,
editor);
g_signal_handlers_block_by_func (G_OBJECT (editor->color_area),
gimp_color_editor_area_changed,
editor);
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (editor->notebook),
rgb, &hsv);
gimp_color_area_set_color (GIMP_COLOR_AREA (editor->color_area), rgb);
g_signal_handlers_unblock_by_func (G_OBJECT (editor->notebook),
gimp_color_editor_color_changed,
editor);
g_signal_handlers_unblock_by_func (G_OBJECT (editor->color_area),
gimp_color_editor_area_changed,
editor);
}
}
static void
gimp_color_editor_bg_changed (GimpContext *context,
const GimpRGB *rgb,
GimpColorEditor *editor)
{
if (editor->edit_bg)
{
GimpHSV hsv;
gimp_rgb_to_hsv (rgb, &hsv);
g_signal_handlers_block_by_func (G_OBJECT (editor->notebook),
gimp_color_editor_color_changed,
editor);
g_signal_handlers_block_by_func (G_OBJECT (editor->color_area),
gimp_color_editor_area_changed,
editor);
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (editor->notebook),
rgb, &hsv);
gimp_color_area_set_color (GIMP_COLOR_AREA (editor->color_area), rgb);
g_signal_handlers_unblock_by_func (G_OBJECT (editor->notebook),
gimp_color_editor_color_changed,
editor);
g_signal_handlers_unblock_by_func (G_OBJECT (editor->color_area),
gimp_color_editor_area_changed,
editor);
}
}
static void
gimp_color_editor_color_changed (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv,
GimpColorEditor *editor)
{
if (editor->context)
{
if (editor->edit_bg)
{
g_signal_handlers_block_by_func (G_OBJECT (editor->context),
gimp_color_editor_bg_changed,
editor);
gimp_context_set_background (editor->context, rgb);
g_signal_handlers_unblock_by_func (G_OBJECT (editor->context),
gimp_color_editor_bg_changed,
editor);
}
else
{
g_signal_handlers_block_by_func (G_OBJECT (editor->context),
gimp_color_editor_fg_changed,
editor);
gimp_context_set_foreground (editor->context, rgb);
g_signal_handlers_unblock_by_func (G_OBJECT (editor->context),
gimp_color_editor_fg_changed,
editor);
}
}
g_signal_handlers_block_by_func (G_OBJECT (editor->color_area),
gimp_color_editor_area_changed,
editor);
gimp_color_area_set_color (GIMP_COLOR_AREA (editor->color_area), rgb);
g_signal_handlers_unblock_by_func (G_OBJECT (editor->color_area),
gimp_color_editor_area_changed,
editor);
}
static void
gimp_color_editor_area_changed (GimpColorArea *color_area,
GimpColorEditor *editor)
{
GimpRGB rgb;
GimpHSV hsv;
gimp_color_area_get_color (color_area, &rgb);
gimp_rgb_to_hsv (&rgb, &hsv);
gimp_color_selector_set_color (GIMP_COLOR_SELECTOR (editor->notebook),
&rgb, &hsv);
}
static void
gimp_color_editor_tab_toggled (GtkWidget *widget,
GimpColorEditor *editor)
{
if (GTK_TOGGLE_BUTTON (widget)->active)
{
GtkWidget *selector;
selector = g_object_get_data (G_OBJECT (widget), "selector");
if (selector)
{
GtkWidget *notebook;
gint page_num;
notebook = GIMP_COLOR_NOTEBOOK (editor->notebook)->notebook;
page_num = gtk_notebook_page_num (GTK_NOTEBOOK (notebook), selector);
if (page_num >= 0)
gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), page_num);
}
}
}
static void
gimp_color_editor_fg_bg_toggled (GtkWidget *widget,
GimpColorEditor *editor)
{
if (GTK_TOGGLE_BUTTON (widget)->active)
{
gboolean edit_bg;
edit_bg = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
"edit_bg"));
if (edit_bg != editor->edit_bg)
{
editor->edit_bg = edit_bg;
if (editor->context)
{
GimpRGB rgb;
if (edit_bg)
{
gimp_context_get_background (editor->context, &rgb);
gimp_color_editor_bg_changed (editor->context, &rgb, editor);
}
else
{
gimp_context_get_foreground (editor->context, &rgb);
gimp_color_editor_fg_changed (editor->context, &rgb, editor);
}
}
}
}
}
static void
gimp_color_editor_color_picked (GtkWidget *widget,
const GimpRGB *rgb,
GimpColorEditor *editor)
{
gimp_color_area_set_color (GIMP_COLOR_AREA (editor->color_area), rgb);
}

View File

@ -0,0 +1,64 @@
/* The GIMP -- an image manipulation program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* gimpcoloreditor.h
* Copyright (C) 2002 Michael Natterer <mitch@gimp.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __GIMP_COLOR_EDITOR_H__
#define __GIMP_COLOR_EDITOR_H__
#include "gimpeditor.h"
#define GIMP_TYPE_COLOR_EDITOR (gimp_color_editor_get_type ())
#define GIMP_COLOR_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_COLOR_EDITOR, GimpColorEditor))
#define GIMP_COLOR_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_COLOR_EDITOR, GimpColorEditorClass))
#define GIMP_IS_COLOR_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_COLOR_EDITOR))
#define GIMP_IS_COLOR_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_COLOR_EDITOR))
#define GIMP_COLOR_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_COLOR_EDITOR, GimpColorEditorClass))
typedef struct _GimpColorEditorClass GimpColorEditorClass;
struct _GimpColorEditor
{
GimpEditor parent_instance;
GimpContext *context;
gboolean edit_bg;
GtkWidget *hbox;
GtkWidget *notebook;
GtkWidget *color_area;
};
struct _GimpColorEditorClass
{
GimpEditorClass parent_class;
};
GType gimp_color_editor_get_type (void) G_GNUC_CONST;
GtkWidget * gimp_color_editor_new (GimpContext *context);
void gimp_color_editor_set_context (GimpColorEditor *editor,
GimpContext *context);
#endif /* __GIMP_COLOR_EDITOR_H__ */

View File

@ -55,6 +55,7 @@ typedef struct _GimpMenuItem GimpMenuItem;
typedef struct _GimpEnumMenu GimpEnumMenu;
typedef struct _GimpEditor GimpEditor;
typedef struct _GimpColorEditor GimpColorEditor;
typedef struct _GimpColormapEditor GimpColormapEditor;
typedef struct _GimpDataEditor GimpDataEditor;
typedef struct _GimpBrushEditor GimpBrushEditor;

View File

@ -41,6 +41,10 @@ static void gimp_color_notebook_init (GimpColorNotebook *notebook);
static void gimp_color_notebook_finalize (GObject *object);
static void gimp_color_notebook_togg_visible (GimpColorSelector *selector,
gboolean visible);
static void gimp_color_notebook_togg_sensitive (GimpColorSelector *selector,
gboolean sensitive);
static void gimp_color_notebook_set_show_alpha (GimpColorSelector *selector,
gboolean show_alpha);
static void gimp_color_notebook_set_color (GimpColorSelector *selector,
@ -105,13 +109,15 @@ gimp_color_notebook_class_init (GimpColorNotebookClass *klass)
parent_class = g_type_class_peek_parent (klass);
object_class->finalize = gimp_color_notebook_finalize;
object_class->finalize = gimp_color_notebook_finalize;
selector_class->name = "Notebook";
selector_class->help_page = "notebook.html";
selector_class->set_show_alpha = gimp_color_notebook_set_show_alpha;
selector_class->set_color = gimp_color_notebook_set_color;
selector_class->set_channel = gimp_color_notebook_set_channel;
selector_class->name = "Notebook";
selector_class->help_page = "notebook.html";
selector_class->set_toggles_visible = gimp_color_notebook_togg_visible;
selector_class->set_toggles_sensitive = gimp_color_notebook_togg_sensitive;
selector_class->set_show_alpha = gimp_color_notebook_set_show_alpha;
selector_class->set_color = gimp_color_notebook_set_color;
selector_class->set_channel = gimp_color_notebook_set_channel;
}
static void
@ -200,6 +206,42 @@ gimp_color_notebook_finalize (GObject *object)
G_OBJECT_CLASS (parent_class)->finalize (object);
}
static void
gimp_color_notebook_togg_visible (GimpColorSelector *selector,
gboolean visible)
{
GimpColorNotebook *notebook;
GimpColorSelector *child;
GList *list;
notebook = GIMP_COLOR_NOTEBOOK (selector);
for (list = notebook->selectors; list; list = g_list_next (list))
{
child = (GimpColorSelector *) list->data;
gimp_color_selector_set_toggles_visible (child, visible);
}
}
static void
gimp_color_notebook_togg_sensitive (GimpColorSelector *selector,
gboolean sensitive)
{
GimpColorNotebook *notebook;
GimpColorSelector *child;
GList *list;
notebook = GIMP_COLOR_NOTEBOOK (selector);
for (list = notebook->selectors; list; list = g_list_next (list))
{
child = (GimpColorSelector *) list->data;
gimp_color_selector_set_toggles_sensitive (child, sensitive);
}
}
static void
gimp_color_notebook_set_show_alpha (GimpColorSelector *selector,
gboolean show_alpha)
@ -322,3 +364,79 @@ gimp_color_notebook_channel_changed (GimpColorSelector *page,
gimp_color_selector_channel_changed (selector);
}
/* public function */
GtkWidget *
gimp_color_notebook_set_has_page (GimpColorNotebook *notebook,
GType page_type,
gboolean has_page)
{
GimpColorSelector *selector;
GimpColorSelector *page;
GtkWidget *label;
GList *list;
g_return_val_if_fail (GIMP_IS_COLOR_NOTEBOOK (notebook), NULL);
g_return_val_if_fail (g_type_is_a (page_type, GIMP_TYPE_COLOR_SELECTOR),
NULL);
g_return_val_if_fail (! g_type_is_a (page_type, GIMP_TYPE_COLOR_NOTEBOOK),
NULL);
selector = GIMP_COLOR_SELECTOR (notebook);
for (list = notebook->selectors; list; list = g_list_next (list))
{
page = GIMP_COLOR_SELECTOR (list->data);
if (G_TYPE_FROM_INSTANCE (page) == page_type)
{
if (has_page)
return GTK_WIDGET (page);
gtk_container_remove (GTK_CONTAINER (notebook->notebook),
GTK_WIDGET (page));
notebook->selectors = g_list_remove (notebook->selectors, page);
if (! notebook->selectors)
notebook->cur_page = NULL;
return NULL;
}
}
if (! has_page)
return NULL;
page = GIMP_COLOR_SELECTOR (gimp_color_selector_new (page_type,
&selector->rgb,
&selector->hsv,
selector->channel));
if (! page)
return NULL;
gimp_color_selector_set_show_alpha (page, selector->show_alpha);
label = gtk_label_new_with_mnemonic (GIMP_COLOR_SELECTOR_GET_CLASS (page)->name);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook->notebook),
GTK_WIDGET (page), label);
if (! notebook->cur_page)
notebook->cur_page = page;
notebook->selectors = g_list_append (notebook->selectors, page);
gtk_widget_show (GTK_WIDGET (page));
g_signal_connect (G_OBJECT (page), "color_changed",
G_CALLBACK (gimp_color_notebook_color_changed),
notebook);
g_signal_connect (G_OBJECT (page), "channel_changed",
G_CALLBACK (gimp_color_notebook_channel_changed),
notebook);
return GTK_WIDGET (page);
}

View File

@ -57,7 +57,11 @@ struct _GimpColorNotebookClass
};
GType gimp_color_notebook_get_type (void) G_GNUC_CONST;
GType gimp_color_notebook_get_type (void) G_GNUC_CONST;
GtkWidget * gimp_color_notebook_set_has_page (GimpColorNotebook *notebook,
GType page_type,
gboolean has_page);
G_END_DECLS

View File

@ -69,6 +69,11 @@ static void gimp_color_scales_init (GimpColorScales *scales);
static void gimp_color_scales_finalize (GObject *object);
static void gimp_color_scales_togg_sensitive (GimpColorSelector *selector,
gboolean sensitive);
static void gimp_color_scales_togg_visible (GimpColorSelector *selector,
gboolean visible);
static void gimp_color_scales_set_show_alpha (GimpColorSelector *selector,
gboolean show_alpha);
static void gimp_color_scales_set_color (GimpColorSelector *selector,
@ -132,40 +137,37 @@ gimp_color_scales_class_init (GimpColorScalesClass *klass)
object_class->finalize = gimp_color_scales_finalize;
selector_class->name = "Scales";
selector_class->help_page = "scales.html";
selector_class->set_show_alpha = gimp_color_scales_set_show_alpha;
selector_class->set_color = gimp_color_scales_set_color;
selector_class->set_channel = gimp_color_scales_set_channel;
selector_class->name = "Scales";
selector_class->help_page = "scales.html";
selector_class->stock_id = GIMP_STOCK_TOOL_OPTIONS;
selector_class->set_toggles_visible = gimp_color_scales_togg_visible;
selector_class->set_toggles_sensitive = gimp_color_scales_togg_sensitive;
selector_class->set_show_alpha = gimp_color_scales_set_show_alpha;
selector_class->set_color = gimp_color_scales_set_color;
selector_class->set_channel = gimp_color_scales_set_channel;
}
static void
gimp_color_scales_init (GimpColorScales *scales)
{
GtkWidget *table;
GtkWidget *hbox;
GtkWidget *label;
GSList *group;
gint i;
GimpColorSelector *selector;
GtkWidget *table;
GtkWidget *hbox;
GtkWidget *label;
GSList *group;
gint i;
static gchar *toggle_titles[] =
static const gchar *toggle_titles[] =
{
/* Hue */
N_("_H"),
/* Saturation */
N_("_S"),
/* Value */
N_("_V"),
/* Red */
N_("_R"),
/* Green */
N_("_G"),
/* Blue */
N_("_B"),
/* Alpha */
N_("_A")
};
static gchar *slider_tips[7] =
static const gchar *slider_tips[7] =
{
N_("Hue"),
N_("Saturation"),
@ -179,14 +181,22 @@ gimp_color_scales_init (GimpColorScales *scales)
static gdouble slider_max_vals[] = { 360, 100, 100, 255, 255, 255, 100 };
static gdouble slider_incs[] = { 30, 10, 10, 16, 16, 16, 10 };
selector = GIMP_COLOR_SELECTOR (scales);
/* don't needs the toggles for our own operation */
selector->toggles_visible = FALSE;
table = gtk_table_new (7, 4, FALSE);
gtk_table_set_row_spacings (GTK_TABLE (table), 1);
gtk_table_set_row_spacing (GTK_TABLE (table), 2, 3); /* hsv <-> rgb */
gtk_table_set_row_spacing (GTK_TABLE (table), 5, 3); /* rgb <-> alpha */
gtk_table_set_col_spacings (GTK_TABLE (table), 2);
gtk_table_set_col_spacing (GTK_TABLE (table), 0, 0);
gtk_box_pack_start (GTK_BOX (scales), table, FALSE, FALSE, 0);
gtk_widget_show (table);
group = NULL;
for (i = 0; i < 7; i++)
{
if (i == 6)
@ -196,14 +206,16 @@ gimp_color_scales_init (GimpColorScales *scales)
else
{
scales->toggles[i] = gtk_radio_button_new (group);
gimp_help_set_help_data (scales->toggles[i],
gettext (slider_tips[i]), NULL);
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (scales->toggles[i]));
gtk_table_attach (GTK_TABLE (table), scales->toggles[i],
0, 1, i, i + 1,
GTK_SHRINK, GTK_EXPAND, 0, 0);
gtk_widget_show (scales->toggles[i]);
if (selector->toggles_visible)
gtk_widget_show (scales->toggles[i]);
gimp_help_set_help_data (scales->toggles[i],
gettext (slider_tips[i]), NULL);
g_signal_connect (G_OBJECT (scales->toggles[i]), "toggled",
G_CALLBACK (gimp_color_scales_toggle_update),
@ -267,6 +279,37 @@ gimp_color_scales_finalize (GObject *object)
G_OBJECT_CLASS (parent_class)->finalize (object);
}
static void
gimp_color_scales_togg_sensitive (GimpColorSelector *selector,
gboolean sensitive)
{
GimpColorScales *scales;
gint i;
scales = GIMP_COLOR_SCALES (selector);
for (i = 0; i < 6; i++)
gtk_widget_set_sensitive (scales->toggles[i], sensitive);
}
static void
gimp_color_scales_togg_visible (GimpColorSelector *selector,
gboolean visible)
{
GimpColorScales *scales;
gint i;
scales = GIMP_COLOR_SCALES (selector);
for (i = 0; i < 6; i++)
{
if (visible)
gtk_widget_show (scales->toggles[i]);
else
gtk_widget_hide (scales->toggles[i]);
}
}
static void
gimp_color_scales_set_show_alpha (GimpColorSelector *selector,
gboolean show_alpha)
@ -331,24 +374,6 @@ gimp_color_scales_set_channel (GimpColorSelector *selector,
}
}
/* public functions */
void
gimp_color_scales_set_toggles_sensitive (GimpColorScales *scales,
gboolean sensitive)
{
gint i;
g_return_if_fail (GIMP_IS_COLOR_SCALES (scales));
for (i = 0; i < 6; i++)
gtk_widget_set_sensitive (scales->toggles[i], sensitive);
}
/* private functions */
static void
gimp_color_scales_update_scales (GimpColorScales *scales,
gint skip)

View File

@ -34,10 +34,7 @@ G_BEGIN_DECLS
#define GIMP_IS_COLOR_SCALES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_COLOR_SCALES))
GType gimp_color_scales_get_type (void) G_GNUC_CONST;
void gimp_color_scales_set_toggles_sensitive (GimpColorScales *scales,
gboolean sensitive);
GType gimp_color_scales_get_type (void) G_GNUC_CONST;
G_END_DECLS

View File

@ -39,6 +39,8 @@
#include "gimpcolorselector.h"
#include "gimpcolorselect.h"
#include "gimphelpui.h"
#include "gimpstock.h"
#include "libgimp/libgimp-intl.h"
@ -93,6 +95,8 @@ struct _GimpColorSelect
{
GimpColorSelector parent_instance;
GtkWidget *toggle_box;
GtkWidget *xy_color;
GtkWidget *z_color;
@ -126,50 +130,57 @@ struct _ColorSelectFill
};
static void gimp_color_select_class_init (GimpColorSelectClass *klass);
static void gimp_color_select_init (GimpColorSelect *select);
static void gimp_color_select_class_init (GimpColorSelectClass *klass);
static void gimp_color_select_init (GimpColorSelect *select);
static void gimp_color_select_finalize (GObject *object);
static void gimp_color_select_finalize (GObject *object);
static void gimp_color_select_set_color (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv);
static void gimp_color_select_set_channel (GimpColorSelector *selector,
GimpColorSelectorChannel channel);
static void gimp_color_select_togg_visible (GimpColorSelector *selector,
gboolean visible);
static void gimp_color_select_togg_sensitive (GimpColorSelector *selector,
gboolean sensitive);
static void gimp_color_select_set_color (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv);
static void gimp_color_select_set_channel (GimpColorSelector *selector,
GimpColorSelectorChannel channel);
static void gimp_color_select_update (GimpColorSelect *select,
ColorSelectUpdateType type);
static void gimp_color_select_update_values (GimpColorSelect *select);
static void gimp_color_select_update_pos (GimpColorSelect *select);
static void gimp_color_select_channel_toggled (GtkWidget *widget,
GimpColorSelect *select);
static void gimp_color_select_update (GimpColorSelect *select,
ColorSelectUpdateType type);
static void gimp_color_select_update_values (GimpColorSelect *select);
static void gimp_color_select_update_pos (GimpColorSelect *select);
#if 0
static void gimp_color_select_drop_color (GtkWidget *widget,
const GimpRGB *color,
gpointer data);
static void gimp_color_select_drop_color (GtkWidget *widget,
const GimpRGB *color,
gpointer data);
#endif
static gboolean gimp_color_select_xy_expose (GtkWidget *widget,
GdkEventExpose *eevent,
GimpColorSelect *select);
static gboolean gimp_color_select_xy_events (GtkWidget *widget,
GdkEvent *event,
GimpColorSelect *select);
static gboolean gimp_color_select_z_expose (GtkWidget *widget,
GdkEventExpose *eevent,
GimpColorSelect *select);
static gboolean gimp_color_select_z_events (GtkWidget *widet,
GdkEvent *event,
GimpColorSelect *select);
static gboolean gimp_color_select_xy_expose (GtkWidget *widget,
GdkEventExpose *eevent,
GimpColorSelect *select);
static gboolean gimp_color_select_xy_events (GtkWidget *widget,
GdkEvent *event,
GimpColorSelect *select);
static gboolean gimp_color_select_z_expose (GtkWidget *widget,
GdkEventExpose *eevent,
GimpColorSelect *select);
static gboolean gimp_color_select_z_events (GtkWidget *widet,
GdkEvent *event,
GimpColorSelect *select);
static void gimp_color_select_image_fill (GtkWidget *widget,
ColorSelectFillType fill_type,
const GimpHSV *hsv,
const GimpRGB *rgb);
static void gimp_color_select_image_fill (GtkWidget *widget,
ColorSelectFillType fill_type,
const GimpHSV *hsv,
const GimpRGB *rgb);
static void gimp_color_select_draw_z_marker (GimpColorSelect *select,
GdkRectangle *clip);
static void gimp_color_select_draw_xy_marker (GimpColorSelect *select,
GdkRectangle *clip);
static void gimp_color_select_draw_z_marker (GimpColorSelect *select,
GdkRectangle *clip);
static void gimp_color_select_draw_xy_marker (GimpColorSelect *select,
GdkRectangle *clip);
static void color_select_update_red (ColorSelectFill *csf);
static void color_select_update_green (ColorSelectFill *csf);
@ -248,10 +259,13 @@ gimp_color_select_class_init (GimpColorSelectClass *klass)
object_class->finalize = gimp_color_select_finalize;
selector_class->name = "GI_MP";
selector_class->help_page = "built_in.html";
selector_class->set_color = gimp_color_select_set_color;
selector_class->set_channel = gimp_color_select_set_channel;
selector_class->name = "GI_MP";
selector_class->help_page = "built_in.html";
selector_class->stock_id = GIMP_STOCK_WILBER;
selector_class->set_toggles_visible = gimp_color_select_togg_visible;
selector_class->set_toggles_sensitive = gimp_color_select_togg_sensitive;
selector_class->set_color = gimp_color_select_set_color;
selector_class->set_channel = gimp_color_select_set_channel;
}
static void
@ -259,6 +273,7 @@ gimp_color_select_init (GimpColorSelect *select)
{
GtkWidget *main_hbox;
GtkWidget *hbox;
GtkWidget *hbox2;
GtkWidget *xy_frame;
GtkWidget *z_frame;
@ -300,10 +315,14 @@ gimp_color_select_init (GimpColorSelect *select)
select);
#endif
hbox2 = gtk_hbox_new (FALSE, 2);
gtk_box_pack_start (GTK_BOX (hbox), hbox2, TRUE, FALSE, 0);
gtk_widget_show (hbox2);
/* The z component preview */
z_frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (z_frame), GTK_SHADOW_IN);
gtk_box_pack_start (GTK_BOX (hbox), z_frame, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (hbox2), z_frame, FALSE, FALSE, 0);
gtk_widget_show (z_frame);
select->z_color = gtk_preview_new (GTK_PREVIEW_COLOR);
@ -319,6 +338,58 @@ gimp_color_select_init (GimpColorSelect *select)
g_signal_connect (G_OBJECT (select->z_color), "event",
G_CALLBACK (gimp_color_select_z_events),
select);
select->toggle_box = gtk_vbox_new (FALSE, 2);
gtk_box_pack_start (GTK_BOX (hbox2), select->toggle_box, FALSE, FALSE, 0);
gtk_widget_show (select->toggle_box);
/* channel toggles */
{
GimpColorSelectorChannel channel;
GSList *group = NULL;
static const gchar *labels[] =
{
N_("_H"), N_("_S"), N_("_V"), N_("_R"), N_("_G"), N_("_B")
};
static const gchar *tips[7] =
{
N_("Hue"),
N_("Saturation"),
N_("Value"),
N_("Red"),
N_("Green"),
N_("Blue"),
N_("Alpha")
};
for (channel = GIMP_COLOR_SELECTOR_HUE;
channel < GIMP_COLOR_SELECTOR_ALPHA;
channel++)
{
GtkWidget *button;
button = gtk_radio_button_new_with_mnemonic (group,
gettext (labels[channel]));
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (button), FALSE);
gtk_box_pack_start (GTK_BOX (select->toggle_box), button,
TRUE, TRUE, 0);
gtk_widget_show (button);
g_object_set_data (G_OBJECT (button), "channel",
GINT_TO_POINTER (channel));
if (channel == GIMP_COLOR_SELECTOR_HUE)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
gimp_help_set_help_data (button, gettext (tips[channel]), NULL);
g_signal_connect (G_OBJECT (button), "toggled",
G_CALLBACK (gimp_color_select_channel_toggled),
select);
}
}
}
static void
@ -337,6 +408,31 @@ gimp_color_select_finalize (GObject *object)
G_OBJECT_CLASS (parent_class)->finalize (object);
}
static void
gimp_color_select_togg_visible (GimpColorSelector *selector,
gboolean visible)
{
GimpColorSelect *select;
select = GIMP_COLOR_SELECT (selector);
if (visible)
gtk_widget_show (select->toggle_box);
else
gtk_widget_hide (select->toggle_box);
}
static void
gimp_color_select_togg_sensitive (GimpColorSelector *selector,
gboolean sensitive)
{
GimpColorSelect *select;
select = GIMP_COLOR_SELECT (selector);
gtk_widget_set_sensitive (select->toggle_box, sensitive);
}
static void
gimp_color_select_set_color (GimpColorSelector *selector,
const GimpRGB *rgb,
@ -346,10 +442,8 @@ gimp_color_select_set_color (GimpColorSelector *selector,
select = GIMP_COLOR_SELECT (selector);
gimp_color_select_update_pos (select);
gimp_color_select_update (select, UPDATE_Z_COLOR);
gimp_color_select_update (select, UPDATE_XY_COLOR);
gimp_color_select_update (select,
UPDATE_POS | UPDATE_XY_COLOR | UPDATE_Z_COLOR);
}
static void
@ -396,8 +490,29 @@ gimp_color_select_set_channel (GimpColorSelector *selector,
break;
}
gimp_color_select_update (select, UPDATE_POS);
gimp_color_select_update (select, UPDATE_Z_COLOR | UPDATE_XY_COLOR);
gimp_color_select_update (select,
UPDATE_POS | UPDATE_Z_COLOR | UPDATE_XY_COLOR);
}
static void
gimp_color_select_channel_toggled (GtkWidget *widget,
GimpColorSelect *select)
{
if (GTK_TOGGLE_BUTTON (widget)->active)
{
GimpColorSelector *selector;
GimpColorSelectorChannel channel;
selector = GIMP_COLOR_SELECTOR (select);
channel = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
"channel"));
selector->channel = channel;
gimp_color_select_set_channel (selector, channel);
gimp_color_selector_channel_changed (selector);
}
}
static void
@ -555,12 +670,10 @@ gimp_color_select_drop_color (GtkWidget *widget,
select->rgb = *color;
gimp_color_select_update_hsv_values (select);
gimp_color_select_update_pos (select);
gimp_color_select_update (select, UPDATE_Z_COLOR);
gimp_color_select_update (select, UPDATE_XY_COLOR);
gimp_color_select_update (select, UPDATE_CALLER);
gimp_color_select_update (select,
UPDATE_POS | UPDATE_XY_COLOR | UPDATE_Z_COLOR |
UPDATE_CALLER);
}
#endif

View File

@ -106,17 +106,25 @@ gimp_color_selector_class_init (GimpColorSelectorClass *klass)
G_TYPE_NONE, 1,
G_TYPE_INT);
klass->set_show_alpha = NULL;
klass->set_color = NULL;
klass->set_channel = NULL;
klass->color_changed = NULL;
klass->channel_changed = NULL;
klass->name = "EEK";
klass->help_page = "help_yourself.html";
klass->stock_id = GTK_STOCK_SELECT_COLOR;
klass->set_toggles_visible = NULL;
klass->set_toggles_sensitive = NULL;
klass->set_show_alpha = NULL;
klass->set_color = NULL;
klass->set_channel = NULL;
klass->color_changed = NULL;
klass->channel_changed = NULL;
}
static void
gimp_color_selector_init (GimpColorSelector *selector)
{
selector->show_alpha = TRUE;
selector->toggles_visible = TRUE;
selector->toggles_sensitive = TRUE;
selector->show_alpha = TRUE;
gimp_rgba_set (&selector->rgb, 0.0, 0.0, 0.0, 1.0);
gimp_rgb_to_hsv (&selector->rgb, &selector->hsv);
@ -145,6 +153,44 @@ gimp_color_selector_new (GType selector_type,
return GTK_WIDGET (selector);
}
void
gimp_color_selector_set_toggles_visible (GimpColorSelector *selector,
gboolean visible)
{
g_return_if_fail (GIMP_IS_COLOR_SELECTOR (selector));
if (selector->toggles_visible != visible)
{
GimpColorSelectorClass *selector_class;
selector->toggles_visible = visible ? TRUE : FALSE;
selector_class = GIMP_COLOR_SELECTOR_GET_CLASS (selector);
if (selector_class->set_toggles_visible)
selector_class->set_toggles_visible (selector, visible);
}
}
void
gimp_color_selector_set_toggles_sensitive (GimpColorSelector *selector,
gboolean sensitive)
{
g_return_if_fail (GIMP_IS_COLOR_SELECTOR (selector));
if (selector->toggles_sensitive != sensitive)
{
GimpColorSelectorClass *selector_class;
selector->toggles_sensitive = sensitive ? TRUE : FALSE;
selector_class = GIMP_COLOR_SELECTOR_GET_CLASS (selector);
if (selector_class->set_toggles_sensitive)
selector_class->set_toggles_sensitive (selector, sensitive);
}
}
void
gimp_color_selector_set_show_alpha (GimpColorSelector *selector,
gboolean show_alpha)
@ -153,11 +199,14 @@ gimp_color_selector_set_show_alpha (GimpColorSelector *selector,
if (show_alpha != selector->show_alpha)
{
GimpColorSelectorClass *selector_class;
selector->show_alpha = show_alpha ? TRUE : FALSE;
if (GIMP_COLOR_SELECTOR_GET_CLASS (selector)->set_show_alpha)
GIMP_COLOR_SELECTOR_GET_CLASS (selector)->set_show_alpha (selector,
show_alpha);
selector_class = GIMP_COLOR_SELECTOR_GET_CLASS (selector);
if (selector_class->set_show_alpha)
selector_class->set_show_alpha (selector, show_alpha);
}
}
@ -166,6 +215,8 @@ gimp_color_selector_set_color (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv)
{
GimpColorSelectorClass *selector_class;
g_return_if_fail (GIMP_IS_COLOR_SELECTOR (selector));
g_return_if_fail (rgb != NULL);
g_return_if_fail (hsv != NULL);
@ -173,8 +224,12 @@ gimp_color_selector_set_color (GimpColorSelector *selector,
selector->rgb = *rgb;
selector->hsv = *hsv;
if (GIMP_COLOR_SELECTOR_GET_CLASS (selector)->set_color)
GIMP_COLOR_SELECTOR_GET_CLASS (selector)->set_color (selector, rgb, hsv);
selector_class = GIMP_COLOR_SELECTOR_GET_CLASS (selector);
if (selector_class->set_color)
selector_class->set_color (selector, rgb, hsv);
gimp_color_selector_color_changed (selector);
}
void
@ -185,11 +240,16 @@ gimp_color_selector_set_channel (GimpColorSelector *selector,
if (channel != selector->channel)
{
GimpColorSelectorClass *selector_class;
selector->channel = channel;
if (GIMP_COLOR_SELECTOR_GET_CLASS (selector)->set_channel)
GIMP_COLOR_SELECTOR_GET_CLASS (selector)->set_channel (selector,
channel);
selector_class = GIMP_COLOR_SELECTOR_GET_CLASS (selector);
if (selector_class->set_channel)
selector_class->set_channel (selector, channel);
gimp_color_selector_channel_changed (selector);
}
}

View File

@ -49,6 +49,8 @@ struct _GimpColorSelector
{
GtkVBox parent_instance;
gboolean toggles_visible;
gboolean toggles_sensitive;
gboolean show_alpha;
GimpRGB rgb;
@ -63,41 +65,50 @@ struct _GimpColorSelectorClass
const gchar *name;
const gchar *help_page;
const gchar *stock_id;
/* virtual functions */
void (* set_show_alpha) (GimpColorSelector *selector,
gboolean show_alpha);
void (* set_color) (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv);
void (* set_channel) (GimpColorSelector *selector,
GimpColorSelectorChannel channel);
void (* set_toggles_visible) (GimpColorSelector *selector,
gboolean visible);
void (* set_toggles_sensitive) (GimpColorSelector *selector,
gboolean sensitive);
void (* set_show_alpha) (GimpColorSelector *selector,
gboolean show_alpha);
void (* set_color) (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv);
void (* set_channel) (GimpColorSelector *selector,
GimpColorSelectorChannel channel);
/* signals */
void (* color_changed) (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv);
void (* channel_changed) (GimpColorSelector *selector,
GimpColorSelectorChannel channel);
void (* color_changed) (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv);
void (* channel_changed) (GimpColorSelector *selector,
GimpColorSelectorChannel channel);
};
GType gimp_color_selector_get_type (void) G_GNUC_CONST;
GtkWidget * gimp_color_selector_new (GType selector_type,
const GimpRGB *rgb,
const GimpHSV *hsv,
GimpColorSelectorChannel channel);
GType gimp_color_selector_get_type (void) G_GNUC_CONST;
GtkWidget * gimp_color_selector_new (GType selector_type,
const GimpRGB *rgb,
const GimpHSV *hsv,
GimpColorSelectorChannel channel);
void gimp_color_selector_set_show_alpha (GimpColorSelector *selector,
gboolean show_alpha);
void gimp_color_selector_set_color (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv);
void gimp_color_selector_set_channel (GimpColorSelector *selector,
GimpColorSelectorChannel channel);
void gimp_color_selector_set_toggles_visible (GimpColorSelector *selector,
gboolean visible);
void gimp_color_selector_set_toggles_sensitive (GimpColorSelector *selector,
gboolean sensitive);
void gimp_color_selector_set_show_alpha (GimpColorSelector *selector,
gboolean show_alpha);
void gimp_color_selector_set_color (GimpColorSelector *selector,
const GimpRGB *rgb,
const GimpHSV *hsv);
void gimp_color_selector_set_channel (GimpColorSelector *selector,
GimpColorSelectorChannel channel);
void gimp_color_selector_color_changed (GimpColorSelector *selector);
void gimp_color_selector_channel_changed (GimpColorSelector *selector);
void gimp_color_selector_color_changed (GimpColorSelector *selector);
void gimp_color_selector_channel_changed (GimpColorSelector *selector);
G_END_DECLS

View File

@ -130,6 +130,7 @@ static GtkStockItem gimp_stock_items[] =
{ GIMP_STOCK_COLOR_PICKER_BLACK, NULL, 0, 0, "gimp14-libgimp" },
{ GIMP_STOCK_COLOR_PICKER_GRAY, NULL, 0, 0, "gimp14-libgimp" },
{ GIMP_STOCK_COLOR_PICKER_WHITE, NULL, 0, 0, "gimp14-libgimp" },
{ GIMP_STOCK_COLOR_TRIANGLE, NULL, 0, 0, "gimp14-libgimp" },
{ GIMP_STOCK_CHAR_PICKER, NULL, 0, 0, "gimp14-libgimp" },
{ GIMP_STOCK_LETTER_SPACING, N_("L_etter Spacing"), 0, 0, "gimp14-libgimp" },
@ -208,6 +209,7 @@ gimp_stock_button_pixbufs[] =
{ GIMP_STOCK_COLOR_PICKER_BLACK, stock_color_picker_black_18 },
{ GIMP_STOCK_COLOR_PICKER_GRAY, stock_color_picker_gray_18 },
{ GIMP_STOCK_COLOR_PICKER_WHITE, stock_color_picker_white_18 },
{ GIMP_STOCK_COLOR_TRIANGLE, stock_color_triangle_16 },
{ GIMP_STOCK_CHAR_PICKER, stock_char_picker_22 },
{ GIMP_STOCK_LETTER_SPACING, stock_letter_spacing_22 },

View File

@ -56,6 +56,7 @@ G_BEGIN_DECLS
#define GIMP_STOCK_COLOR_PICKER_BLACK "gimp-color-picker-black"
#define GIMP_STOCK_COLOR_PICKER_GRAY "gimp-color-picker-gray"
#define GIMP_STOCK_COLOR_PICKER_WHITE "gimp-color-picker-white"
#define GIMP_STOCK_COLOR_TRIANGLE "gimp-color-triangle"
#define GIMP_STOCK_CHAR_PICKER "gimp-char-picker"
#define GIMP_STOCK_LETTER_SPACING "gimp-letter-spacing"

View File

@ -178,6 +178,7 @@ colorsel_triangle_class_init (ColorselTriangleClass *klass)
selector_class->name = _("_Triangle");
selector_class->help_page = "triangle.html";
selector_class->stock_id = GIMP_STOCK_COLOR_TRIANGLE;
selector_class->set_color = colorsel_triangle_set_color;
}

View File

@ -174,6 +174,7 @@ colorsel_water_class_init (ColorselWaterClass *klass)
selector_class->name = _("_Watercolor");
selector_class->help_page = "watercolor.html";
selector_class->stock_id = GIMP_STOCK_TOOL_PAINTBRUSH;
selector_class->set_color = colorsel_water_set_color;
}

View File

@ -46,6 +46,7 @@ STOCK_BUTTON_IMAGES = \
stock-color-picker-black-18.png \
stock-color-picker-gray-18.png \
stock-color-picker-white-18.png \
stock-color-triangle-16.png \
stock-duplicate-16.png \
stock-edit-16.png \
stock-eye-20.png \

Binary file not shown.

After

Width:  |  Height:  |  Size: 844 B