app/brush_select.[ch] app/gradient.c app/gradient_select.[ch]

1999-11-03  Michael Natterer  <mitch@gimp.org>

	* app/brush_select.[ch]
	* app/gradient.c
	* app/gradient_select.[ch]
	* app/interface.[ch]
	* app/palette.c
	* app/pattern_select.[ch]: allow dragging a brush/pattern/... from
	the selections with mouse2 without changing the active element in
	the dialog.

	* app/channels_dialog.c
	* app/color_area.c
	* app/color_panel.c
	* app/color_select.c
	* app/colormap_dialog.i.c
	* app/devices.c
	* app/gimpcontextpreview.[ch]
	* app/gimphelp.[ch]
	* app/gimpui.[ch]
	* app/indicator_area.c
	* app/interface.[ch]
	* app/layers_dialog.c
	* app/lc_dialog.c
	* app/ops_buttons.[ch]
	* app/paths_dialog.c
	* app/preferences_dialog.c
	* app/tools.[ch]: wrapped gtk_tooltips_set_tip() with
	gimp_help_set_help_data() and moved it to gimphelp.[ch].

	This should (hopefully) be the final state of the help system. The
	New function allows a "private tip" to be set without a visible
	tooltip. This way the tooltips inspector (shift+F1) can search for
	help data in the parent containers of the clicked widget. E.g. the
	ops buttons in the layers dialog have private tips like
	"#new_layer" which gets composed with the help data of the layers
	dialog notebook page resulting in a complete help path.

	Allow mouse2 for all dnd operations. Mouse1 still works like before.
This commit is contained in:
Michael Natterer 1999-11-03 09:58:46 +00:00 committed by Michael Natterer
parent 46c8110fdf
commit 0302ed0a10
69 changed files with 1642 additions and 709 deletions

View file

@ -1,3 +1,43 @@
1999-11-03 Michael Natterer <mitch@gimp.org>
* app/brush_select.[ch]
* app/gradient.c
* app/gradient_select.[ch]
* app/interface.[ch]
* app/palette.c
* app/pattern_select.[ch]: allow dragging a brush/pattern/... from
the selections with mouse2 without changing the active element in
the dialog.
* app/channels_dialog.c
* app/color_area.c
* app/color_panel.c
* app/color_select.c
* app/colormap_dialog.i.c
* app/devices.c
* app/gimpcontextpreview.[ch]
* app/gimphelp.[ch]
* app/gimpui.[ch]
* app/indicator_area.c
* app/interface.[ch]
* app/layers_dialog.c
* app/lc_dialog.c
* app/ops_buttons.[ch]
* app/paths_dialog.c
* app/preferences_dialog.c
* app/tools.[ch]: wrapped gtk_tooltips_set_tip() with
gimp_help_set_help_data() and moved it to gimphelp.[ch].
This should (hopefully) be the final state of the help system. The
New function allows a "private tip" to be set without a visible
tooltip. This way the tooltips inspector (shift+F1) can search for
help data in the parent containers of the clicked widget. E.g. the
ops buttons in the layers dialog have private tips like
"#new_layer" which gets composed with the help data of the layers
dialog notebook page resulting in a complete help path.
Allow mouse2 for all dnd operations. Mouse1 still works like before.
Tue Nov 2 17:36:21 PST 1999 Manish Singh <yosh@gimp.org>
* pixmaps/question.xpm: fake one from alt's screenshot since he

View file

@ -68,6 +68,8 @@
static void brush_change_callbacks (BrushSelect *bsp,
gboolean closing);
static GimpBrush * brush_select_drag_brush (GtkWidget *widget,
gpointer data);
static void brush_select_drop_brush (GtkWidget *widget,
GimpBrush *brush,
gpointer data);
@ -252,6 +254,7 @@ brush_select_new (gchar *title,
bsp = g_new (BrushSelect, 1);
bsp->callback_name = NULL;
bsp->dnd_brush = NULL;
bsp->brush_popup = NULL;
bsp->popup_timeout_tag = 0;
bsp->popup_anim_timeout_tag = 0;
@ -371,6 +374,12 @@ brush_select_new (gchar *title,
bsp);
/* dnd stuff */
gtk_drag_source_set (bsp->preview,
GDK_BUTTON2_MASK,
preview_target_table, preview_n_targets,
GDK_ACTION_COPY);
gimp_dnd_brush_source_set (bsp->preview, brush_select_drag_brush, bsp);
gtk_drag_dest_set (bsp->preview,
GTK_DEST_DEFAULT_ALL,
preview_target_table, preview_n_targets,
@ -736,6 +745,17 @@ brushes_check_dialogs (void)
* Local functions
*/
static GimpBrush *
brush_select_drag_brush (GtkWidget *widget,
gpointer data)
{
BrushSelect *bsp;
bsp = (BrushSelect *) data;
return bsp->dnd_brush;
}
static void
brush_select_drop_brush (GtkWidget *widget,
GimpBrush *brush,
@ -1502,14 +1522,21 @@ brush_select_events (GtkWidget *widget,
case GDK_BUTTON_PRESS:
bevent = (GdkEventButton *) event;
col = bevent->x / bsp->cell_width;
row = (bevent->y + bsp->scroll_offset) / bsp->cell_height;
index = row * bsp->NUM_BRUSH_COLUMNS + col;
brush = gimp_brush_list_get_brush_by_index (brush_list, index);
if (brush)
bsp->dnd_brush = brush;
else
bsp->dnd_brush = gimp_context_get_brush (bsp->context);
if (bevent->button == 1)
{
col = bevent->x / bsp->cell_width;
row = (bevent->y + bsp->scroll_offset) / bsp->cell_height;
index = row * bsp->NUM_BRUSH_COLUMNS + col;
/* Get the brush and display the popup brush preview */
if ((brush = gimp_brush_list_get_brush_by_index (brush_list, index)))
if (brush)
{
gdk_pointer_grab (bsp->preview->window, FALSE,
(GDK_POINTER_MOTION_HINT_MASK |

View file

@ -62,6 +62,8 @@ struct _BrushSelect
GimpContext *context;
gint spacing_value;
GimpBrush *dnd_brush;
/* Some variables to keep the GUI consistent */
gint cell_width;
gint cell_height;

View file

@ -28,7 +28,6 @@
#include "gimpdnd.h"
#include "gimprc.h"
#include "gimpui.h"
#include "interface.h"
#include "layers_dialogP.h"
#include "lc_dialogP.h"
#include "menus.h"
@ -174,7 +173,7 @@ static GdkPixmap *channel_pixmap[] = { NULL, NULL, NULL };
static gint suspend_gimage_notify = 0;
/* the ops buttons */
static OpsButtonCallback to_selection_ext_callbacks[] =
static GtkSignalFunc to_selection_ext_callbacks[] =
{
channels_dialog_add_channel_to_sel_callback, /* SHIFT */
channels_dialog_sub_channel_from_sel_callback, /* CTRL */
@ -268,8 +267,14 @@ channels_dialog_create (void)
}
/* The main vbox */
channelsD->vbox = vbox = gtk_vbox_new (FALSE, 1);
channelsD->vbox = gtk_event_box_new ();
gimp_help_set_help_data (channelsD->vbox, NULL,
"dialogs/channels/channels.html");
vbox = gtk_vbox_new (FALSE, 1);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 2);
gtk_container_add (GTK_CONTAINER (channelsD->vbox), vbox);
/* The channels commands pulldown menu */
menus_get_channels_menu (&channelsD->ops_menu, &channelsD->accel_group);
@ -298,8 +303,8 @@ channels_dialog_create (void)
gtk_widget_show (channelsD->scrolled_win);
/* The ops buttons */
button_box = ops_button_box_new (lc_dialog->shell, tool_tips,
channels_ops_buttons, OPS_BUTTON_NORMAL);
button_box = ops_button_box_new (lc_dialog->shell, channels_ops_buttons,
OPS_BUTTON_NORMAL);
gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, FALSE, 2);
gtk_widget_show (button_box);
@ -348,6 +353,7 @@ channels_dialog_create (void)
NULL);
gtk_widget_show (vbox);
gtk_widget_show (channelsD->vbox);
return channelsD->vbox;
}
@ -1432,7 +1438,7 @@ channel_widget_create (GImage *gimage,
/* dnd source */
gtk_drag_source_set (list_item,
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
channel_target_table, n_channel_targets,
GDK_ACTION_MOVE | GDK_ACTION_COPY);
@ -1447,7 +1453,7 @@ channel_widget_create (GImage *gimage,
{
/* dnd source */
gtk_drag_source_set (list_item,
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
component_target_table, n_component_targets,
GDK_ACTION_MOVE | GDK_ACTION_COPY);

View file

@ -402,7 +402,7 @@ color_area_create (gint width,
/* dnd stuff */
gtk_drag_source_set (color_area,
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_area_target_table, n_color_area_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (color_area, color_area_drag_color, NULL);

View file

@ -102,7 +102,7 @@ color_panel_new (guchar *initial,
/* dnd stuff */
gtk_drag_source_set (private->drawing_area,
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_panel_target_table, n_color_panel_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (private->drawing_area,

View file

@ -338,7 +338,7 @@ color_select_widget_new (ColorSelect *csp,
/* dnd stuff */
gtk_drag_source_set (csp->new_color,
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_select_target_table, n_color_select_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (csp->new_color, color_select_drag_new_color, csp);
@ -365,7 +365,7 @@ color_select_widget_new (ColorSelect *csp,
/* dnd stuff */
gtk_drag_source_set (csp->orig_color,
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_select_target_table, n_color_select_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (csp->orig_color, color_select_drag_old_color, csp);

View file

@ -243,7 +243,7 @@ ipal_create (GimpSet* context)
/* dnd stuff */
gtk_drag_source_set (GTK_WIDGET(ipal->palette),
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_palette_target_table, n_color_palette_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (GTK_WIDGET (ipal->palette),

View file

@ -21,19 +21,19 @@
#include <stdio.h>
#include "appenv.h"
#include "devices.h"
#include "dialog_handler.h"
#include "gimpcontextpreview.h"
#include "gimpdnd.h"
#include "devices.h"
#include "interface.h"
#include "gimpbrushlist.h"
#include "gimpcontext.h"
#include "gimprc.h"
#include "gimpui.h"
#include "gradient.h"
#include "gradient_header.h"
#include "interface.h"
#include "session.h"
#include "tools.h"
#include "dialog_handler.h"
#include "libgimp/gimpintl.h"
#include "libgimp/gimpenv.h"
@ -798,7 +798,7 @@ device_status_create (void)
gtk_pixmap_new (create_tool_pixmap (deviceD->table, RECT_SELECT),
NULL);
gtk_drag_source_set (deviceD->eventboxes[i],
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
tool_target_table, n_tool_targets,
GDK_ACTION_COPY);
gimp_dnd_tool_source_set (deviceD->eventboxes[i],
@ -826,7 +826,7 @@ device_status_create (void)
gtk_preview_size (GTK_PREVIEW (deviceD->colors[i]),
CELL_SIZE, CELL_SIZE);
gtk_drag_source_set (deviceD->colors[i],
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_area_target_table, n_color_area_targets,
GDK_ACTION_COPY);
gimp_dnd_color_source_set (deviceD->colors[i],
@ -849,7 +849,7 @@ device_status_create (void)
deviceD->brushes[i] =
gimp_context_preview_new (GCP_BRUSH,
CELL_SIZE, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_brush),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->brushes[i],
@ -861,7 +861,7 @@ device_status_create (void)
deviceD->patterns[i] =
gimp_context_preview_new (GCP_PATTERN,
CELL_SIZE, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_pattern),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->patterns[i],
@ -873,7 +873,7 @@ device_status_create (void)
deviceD->gradients[i] =
gimp_context_preview_new (GCP_GRADIENT,
CELL_SIZE * 2, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_gradient),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->gradients[i],
@ -1009,9 +1009,9 @@ device_status_update (guint32 deviceid)
gtk_widget_show (deviceD->tools[i]);
gtk_widget_show (deviceD->eventboxes[i]);
gtk_tooltips_set_tip (tool_tips,deviceD->eventboxes[i],
tool_info[(int) gimp_context_get_tool (device_info->context)].tool_desc,
NULL);
gimp_help_set_help_data (deviceD->eventboxes[i],
tool_info[(gint) gimp_context_get_tool (device_info->context)].tool_desc,
tool_info[(gint) gimp_context_get_tool (device_info->context)].private_tip);
for (j = 0; j < CELL_SIZE * 3; j += 3)
{
@ -1033,7 +1033,7 @@ device_status_update (guint32 deviceid)
buffer[j+1],
buffer[j+2]);
gtk_tooltips_set_tip (tool_tips, deviceD->colors[i], ttbuf, NULL);
gimp_help_set_help_data (deviceD->colors[i], ttbuf, NULL);
if (gimp_context_get_brush (device_info->context))
{

View file

@ -25,7 +25,6 @@
#include "gimprc.h"
#include "gimpui.h"
#include "image_render.h"
#include "interface.h"
#include "lc_dialog.h"
#include "layer_select.h"
#include "session.h"
@ -279,9 +278,9 @@ file_prefs_ok_callback (GtkWidget *widget,
prefs_dlg = NULL;
if (show_tool_tips)
gtk_tooltips_enable (tool_tips);
gimp_help_enable_tooltips ();
else
gtk_tooltips_disable (tool_tips);
gimp_help_disable_tooltips ();
/* This needs modification to notify the user of which simply cannot be
* changed on the fly. Currently it ignores these options if only OK is

View file

@ -90,6 +90,8 @@ static gboolean toolbox_drag_drop (GtkWidget *,
gint,
gint,
guint);
static ToolType toolbox_drag_tool (GtkWidget *,
gpointer);
static void toolbox_drop_tool (GtkWidget *,
ToolType,
gpointer);
@ -111,11 +113,8 @@ static int pixmap_colors[8][3] =
#define ROWS 8
#define MARGIN 2
/* global variables */
GtkTooltips * tool_tips;
/* local variables */
static GdkColor colors[12];
static GdkColor colors[11];
static GtkWidget * toolbox_shell = NULL;
static GtkTargetEntry toolbox_target_table[] =
@ -131,6 +130,13 @@ static GtkTargetEntry toolbox_target_table[] =
static guint toolbox_n_targets = (sizeof (toolbox_target_table) /
sizeof (toolbox_target_table[0]));
static GtkTargetEntry tool_target_table[] =
{
GIMP_TARGET_TOOL
};
static guint tool_n_targets = (sizeof (tool_target_table) /
sizeof (tool_target_table[0]));
static GtkTargetEntry display_target_table[] =
{
GIMP_TARGET_LAYER,
@ -237,12 +243,6 @@ allocate_colors (GtkWidget *parent)
colors[10] = parent->style->bg[GTK_STATE_PRELIGHT];
gdk_color_alloc (colormap, &colors[10]);
/* postit yellow (khaki) as background for tooltips */
colors[11].red = 61669;
colors[11].green = 59113;
colors[11].blue = 35979;
gdk_color_alloc (colormap, &colors[11]);
}
static void
@ -263,6 +263,8 @@ create_indicator_area (GtkWidget *parent)
gtk_container_set_border_width (GTK_CONTAINER (alignment), 3);
gtk_container_add (GTK_CONTAINER (frame), alignment);
gimp_help_set_help_data (alignment, NULL, "#indicator_area");
ind_area = indicator_area_create ();
gtk_container_add (GTK_CONTAINER (alignment), ind_area);
gtk_widget_show (ind_area);
@ -295,13 +297,15 @@ create_color_area (GtkWidget *parent)
gtk_container_set_border_width (GTK_CONTAINER (alignment), 3);
gtk_container_add (GTK_CONTAINER (frame), alignment);
gimp_help_set_help_data (alignment, NULL, "#color_area");
col_area = color_area_create (54, 42, default_pixmap, swap_pixmap);
gtk_container_add (GTK_CONTAINER (alignment), col_area);
gtk_tooltips_set_tip (tool_tips, col_area,
_("Foreground & background colors. The black "
"and white squares reset colors. The arrows swap colors. Double "
"click to select a color from a colorrequester."),
NULL);
gimp_help_set_help_data
(col_area,
_("Foreground & background colors. The black "
"and white squares reset colors. The arrows swap colors. Double "
"click to select a color from a colorrequester."), NULL);
gtk_widget_show (col_area);
gtk_widget_show (alignment);
gtk_widget_show (frame);
@ -381,9 +385,17 @@ create_tools (GtkWidget *parent)
GTK_SIGNAL_FUNC (tools_button_press),
(gpointer) tool_info[j].tool_id);
gtk_tooltips_set_tip (tool_tips, button,
gettext(tool_info[j].tool_desc),
tool_info[j].private_tip);
/* dnd stuff */
gtk_drag_source_set (tool_info[j].tool_widget,
GDK_BUTTON2_MASK,
tool_target_table, tool_n_targets,
GDK_ACTION_COPY);
gimp_dnd_tool_source_set (tool_info[j].tool_widget,
toolbox_drag_tool, (gpointer) j);
gimp_help_set_help_data (button,
gettext(tool_info[j].tool_desc),
tool_info[j].private_tip);
gtk_widget_show (pixmap);
gtk_widget_show (alignment);
@ -563,12 +575,9 @@ create_toolbox (void)
allocate_colors (main_vbox);
/* tooltips */
tool_tips = gtk_tooltips_new ();
gtk_tooltips_set_colors (tool_tips,
&colors[11],
&main_vbox->style->fg[GTK_STATE_NORMAL]);
gimp_help_init ();
if (!show_tool_tips)
gtk_tooltips_disable (tool_tips);
gimp_help_disable_tooltips ();
/* Build the menu bar with menus */
menus_get_toolbox_menubar (&menubar, &table);
@ -592,7 +601,7 @@ create_toolbox (void)
create_tools (wbox);
create_color_area (wbox);
if (show_indicators && (!no_data) )
create_indicator_area (wbox);
create_indicator_area (wbox);
gtk_widget_show (window);
toolbox_set_drag_dest (window);
@ -612,8 +621,7 @@ toolbox_free (void)
if (!tool_info[i].icon_data)
gtk_object_sink (GTK_OBJECT (tool_info[i].tool_widget));
}
gtk_object_destroy (GTK_OBJECT (tool_tips));
gtk_object_unref (GTK_OBJECT (tool_tips));
gimp_help_free ();
}
void
@ -645,20 +653,20 @@ create_display_shell (GDisplay* gdisp,
GSList *group = NULL;
int n_width, n_height;
int s_width, s_height;
int scalesrc, scaledest;
int contextid;
gint n_width, n_height;
gint s_width, s_height;
gint scalesrc, scaledest;
gint contextid;
{
/* adjust the initial scale -- so that window fits on screen */
s_width = gdk_screen_width ();
s_width = gdk_screen_width ();
s_height = gdk_screen_height ();
scalesrc = gdisp->scale & 0x00ff;
scaledest = gdisp->scale >> 8;
n_width = (width * scaledest) / scalesrc;
n_width = (width * scaledest) / scalesrc;
n_height = (height * scaledest) / scalesrc;
/* Limit to the size of the screen... */
@ -688,7 +696,12 @@ create_display_shell (GDisplay* gdisp,
gtk_window_set_wmclass (GTK_WINDOW (gdisp->shell), "image_window", "Gimp");
gtk_window_set_policy (GTK_WINDOW (gdisp->shell), TRUE, TRUE, TRUE);
gtk_object_set_user_data (GTK_OBJECT (gdisp->shell), (gpointer) gdisp);
gtk_widget_set_events (gdisp->shell, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK);
gtk_widget_set_events (gdisp->shell,
GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK |
GDK_KEY_PRESS_MASK |
GDK_KEY_RELEASE_MASK);
gtk_signal_connect (GTK_OBJECT (gdisp->shell), "delete_event",
GTK_SIGNAL_FUNC (gdisplay_delete),
gdisp);
@ -734,11 +747,17 @@ create_display_shell (GDisplay* gdisp,
table_lower = gtk_table_new (1,4,FALSE);
gtk_table_set_col_spacing (GTK_TABLE (table_lower), 0, 1);
/* gtk_table_set_row_spacing (GTK_TABLE (table_lower), 0, 1); */
/* gtk_table_set_row_spacing (GTK_TABLE (table_lower), 0, 1); */
/* hbox for statusbar area */
evbox = gtk_event_box_new ();
gtk_box_pack_start (GTK_BOX (vbox), evbox, FALSE, TRUE, 0);
gtk_widget_show (evbox);
gimp_help_set_help_data (evbox, NULL, "#status_area");
/* hbox for statusbar area */
gdisp->statusarea = gtk_hbox_new (FALSE, 2);
gtk_box_pack_start (GTK_BOX (vbox), gdisp->statusarea, FALSE, TRUE, 0);
gtk_container_add (GTK_CONTAINER (evbox), gdisp->statusarea);
/* scrollbars, rulers, canvas, menu popup button */
gdisp->origin = gtk_button_new ();
@ -749,6 +768,8 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (gdisplay_origin_button_press),
gdisp);
gimp_help_set_help_data (gdisp->origin, NULL, "#origin_button");
arrow = gtk_arrow_new (GTK_ARROW_RIGHT, GTK_SHADOW_OUT);
gtk_container_set_border_width (GTK_CONTAINER (gdisp->origin), 0);
gtk_container_add (GTK_CONTAINER (gdisp->origin), arrow);
@ -763,6 +784,8 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (gdisplay_hruler_button_press),
gdisp);
gimp_help_set_help_data (gdisp->hrule, NULL, "#ruler");
gdisp->vrule = gtk_vruler_new ();
gtk_widget_set_events (GTK_WIDGET (gdisp->vrule),
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
@ -773,16 +796,20 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (gdisplay_vruler_button_press),
gdisp);
gimp_help_set_help_data (gdisp->vrule, NULL, "#ruler");
/* The nav window button */
evbox = gtk_event_box_new();
gtk_widget_show(evbox);
navhbox = gtk_hbox_new (FALSE,0);
gtk_container_add(GTK_CONTAINER(evbox),navhbox);
evbox = gtk_event_box_new ();
gtk_widget_show (evbox);
navhbox = gtk_hbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (evbox), navhbox);
GTK_WIDGET_UNSET_FLAGS (evbox, GTK_CAN_FOCUS);
gtk_signal_connect (GTK_OBJECT (evbox), "button_press_event",
GTK_SIGNAL_FUNC (nav_popup_click_handler),
gdisp);
gimp_help_set_help_data (evbox, NULL, "#nav_window_button");
gdisp->hsb = gtk_hscrollbar_new (gdisp->hsbdata);
GTK_WIDGET_UNSET_FLAGS (gdisp->hsb, GTK_CAN_FOCUS);
gdisp->vsb = gtk_vscrollbar_new (gdisp->vsbdata);
@ -799,6 +826,8 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (qmask_click_handler),
gdisp);
gimp_help_set_help_data (gdisp->qmaskoff, NULL, "#qmask_off_button");
gdisp->qmaskon = gtk_radio_button_new (group);
group = gtk_radio_button_group (GTK_RADIO_BUTTON (gdisp->qmaskon));
gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (gdisp->qmaskon), FALSE);
@ -809,6 +838,8 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (qmask_click_handler),
gdisp);
gimp_help_set_help_data (gdisp->qmaskon, NULL, "#qmask_on_button");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gdisp->qmaskoff), TRUE);
gtk_widget_set_usize (GTK_WIDGET (gdisp->qmaskon), 15, 15);
gtk_widget_set_usize (GTK_WIDGET (gdisp->qmaskoff), 15, 15);
@ -918,19 +949,22 @@ create_display_shell (GDisplay* gdisp,
gtk_widget_set_usize (gdisp->statusbar, 1, -1);
gtk_container_set_resize_mode (GTK_CONTAINER (gdisp->statusbar),
GTK_RESIZE_QUEUE);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->statusbar, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->statusbar,
TRUE, TRUE, 0);
contextid = gtk_statusbar_get_context_id (GTK_STATUSBAR (gdisp->statusbar),
"title");
gtk_statusbar_push (GTK_STATUSBAR (gdisp->statusbar),
contextid,
title);
gdisp->progressbar = gtk_progress_bar_new();
gdisp->progressbar = gtk_progress_bar_new ();
gtk_widget_set_usize (gdisp->progressbar, 80, -1);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->progressbar, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->progressbar,
FALSE, TRUE, 0);
gdisp->cancelbutton = gtk_button_new_with_label(_("Cancel"));
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->cancelbutton, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->cancelbutton,
FALSE, TRUE, 0);
gtk_widget_set_sensitive (gdisp->cancelbutton, FALSE);
/* the popup menu */
@ -1177,6 +1211,13 @@ toolbox_drag_drop (GtkWidget *widget,
return return_val;
}
static ToolType
toolbox_drag_tool (GtkWidget *widget,
gpointer data)
{
return (ToolType) data;
}
static void
toolbox_drop_tool (GtkWidget *widget,
ToolType tool,

View file

@ -21,29 +21,25 @@
#include "toolsF.h"
#include "gdisplayF.h"
/* externed variables */
extern GtkWidget * tool_widgets[];
extern GtkTooltips * tool_tips;
/* function declarations */
GtkWidget * create_pixmap_widget (GdkWindow *parent,
gchar **data,
gint width,
gint height);
GtkWidget * create_pixmap_widget (GdkWindow *parent,
gchar **data,
gint width,
gint height);
GdkPixmap * create_tool_pixmap (GtkWidget *parent,
ToolType type);
GdkPixmap * create_tool_pixmap (GtkWidget *parent,
ToolType type);
void create_toolbox (void);
void toolbox_free (void);
void create_toolbox (void);
void toolbox_free (void);
void toolbox_raise_callback (GtkWidget *widget,
gpointer client_data);
void toolbox_raise_callback (GtkWidget *widget,
gpointer data);
void create_display_shell (GDisplay *gdisp,
gint width,
gint height,
gchar *title,
gint type);
void create_display_shell (GDisplay *gdisp,
gint width,
gint height,
gchar *title,
gint type);
#endif /* __INTERFACE_H__ */

View file

@ -90,6 +90,8 @@ static gboolean toolbox_drag_drop (GtkWidget *,
gint,
gint,
guint);
static ToolType toolbox_drag_tool (GtkWidget *,
gpointer);
static void toolbox_drop_tool (GtkWidget *,
ToolType,
gpointer);
@ -111,11 +113,8 @@ static int pixmap_colors[8][3] =
#define ROWS 8
#define MARGIN 2
/* global variables */
GtkTooltips * tool_tips;
/* local variables */
static GdkColor colors[12];
static GdkColor colors[11];
static GtkWidget * toolbox_shell = NULL;
static GtkTargetEntry toolbox_target_table[] =
@ -131,6 +130,13 @@ static GtkTargetEntry toolbox_target_table[] =
static guint toolbox_n_targets = (sizeof (toolbox_target_table) /
sizeof (toolbox_target_table[0]));
static GtkTargetEntry tool_target_table[] =
{
GIMP_TARGET_TOOL
};
static guint tool_n_targets = (sizeof (tool_target_table) /
sizeof (tool_target_table[0]));
static GtkTargetEntry display_target_table[] =
{
GIMP_TARGET_LAYER,
@ -237,12 +243,6 @@ allocate_colors (GtkWidget *parent)
colors[10] = parent->style->bg[GTK_STATE_PRELIGHT];
gdk_color_alloc (colormap, &colors[10]);
/* postit yellow (khaki) as background for tooltips */
colors[11].red = 61669;
colors[11].green = 59113;
colors[11].blue = 35979;
gdk_color_alloc (colormap, &colors[11]);
}
static void
@ -263,6 +263,8 @@ create_indicator_area (GtkWidget *parent)
gtk_container_set_border_width (GTK_CONTAINER (alignment), 3);
gtk_container_add (GTK_CONTAINER (frame), alignment);
gimp_help_set_help_data (alignment, NULL, "#indicator_area");
ind_area = indicator_area_create ();
gtk_container_add (GTK_CONTAINER (alignment), ind_area);
gtk_widget_show (ind_area);
@ -295,13 +297,15 @@ create_color_area (GtkWidget *parent)
gtk_container_set_border_width (GTK_CONTAINER (alignment), 3);
gtk_container_add (GTK_CONTAINER (frame), alignment);
gimp_help_set_help_data (alignment, NULL, "#color_area");
col_area = color_area_create (54, 42, default_pixmap, swap_pixmap);
gtk_container_add (GTK_CONTAINER (alignment), col_area);
gtk_tooltips_set_tip (tool_tips, col_area,
_("Foreground & background colors. The black "
"and white squares reset colors. The arrows swap colors. Double "
"click to select a color from a colorrequester."),
NULL);
gimp_help_set_help_data
(col_area,
_("Foreground & background colors. The black "
"and white squares reset colors. The arrows swap colors. Double "
"click to select a color from a colorrequester."), NULL);
gtk_widget_show (col_area);
gtk_widget_show (alignment);
gtk_widget_show (frame);
@ -381,9 +385,17 @@ create_tools (GtkWidget *parent)
GTK_SIGNAL_FUNC (tools_button_press),
(gpointer) tool_info[j].tool_id);
gtk_tooltips_set_tip (tool_tips, button,
gettext(tool_info[j].tool_desc),
tool_info[j].private_tip);
/* dnd stuff */
gtk_drag_source_set (tool_info[j].tool_widget,
GDK_BUTTON2_MASK,
tool_target_table, tool_n_targets,
GDK_ACTION_COPY);
gimp_dnd_tool_source_set (tool_info[j].tool_widget,
toolbox_drag_tool, (gpointer) j);
gimp_help_set_help_data (button,
gettext(tool_info[j].tool_desc),
tool_info[j].private_tip);
gtk_widget_show (pixmap);
gtk_widget_show (alignment);
@ -563,12 +575,9 @@ create_toolbox (void)
allocate_colors (main_vbox);
/* tooltips */
tool_tips = gtk_tooltips_new ();
gtk_tooltips_set_colors (tool_tips,
&colors[11],
&main_vbox->style->fg[GTK_STATE_NORMAL]);
gimp_help_init ();
if (!show_tool_tips)
gtk_tooltips_disable (tool_tips);
gimp_help_disable_tooltips ();
/* Build the menu bar with menus */
menus_get_toolbox_menubar (&menubar, &table);
@ -592,7 +601,7 @@ create_toolbox (void)
create_tools (wbox);
create_color_area (wbox);
if (show_indicators && (!no_data) )
create_indicator_area (wbox);
create_indicator_area (wbox);
gtk_widget_show (window);
toolbox_set_drag_dest (window);
@ -612,8 +621,7 @@ toolbox_free (void)
if (!tool_info[i].icon_data)
gtk_object_sink (GTK_OBJECT (tool_info[i].tool_widget));
}
gtk_object_destroy (GTK_OBJECT (tool_tips));
gtk_object_unref (GTK_OBJECT (tool_tips));
gimp_help_free ();
}
void
@ -645,20 +653,20 @@ create_display_shell (GDisplay* gdisp,
GSList *group = NULL;
int n_width, n_height;
int s_width, s_height;
int scalesrc, scaledest;
int contextid;
gint n_width, n_height;
gint s_width, s_height;
gint scalesrc, scaledest;
gint contextid;
{
/* adjust the initial scale -- so that window fits on screen */
s_width = gdk_screen_width ();
s_width = gdk_screen_width ();
s_height = gdk_screen_height ();
scalesrc = gdisp->scale & 0x00ff;
scaledest = gdisp->scale >> 8;
n_width = (width * scaledest) / scalesrc;
n_width = (width * scaledest) / scalesrc;
n_height = (height * scaledest) / scalesrc;
/* Limit to the size of the screen... */
@ -688,7 +696,12 @@ create_display_shell (GDisplay* gdisp,
gtk_window_set_wmclass (GTK_WINDOW (gdisp->shell), "image_window", "Gimp");
gtk_window_set_policy (GTK_WINDOW (gdisp->shell), TRUE, TRUE, TRUE);
gtk_object_set_user_data (GTK_OBJECT (gdisp->shell), (gpointer) gdisp);
gtk_widget_set_events (gdisp->shell, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK);
gtk_widget_set_events (gdisp->shell,
GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK |
GDK_KEY_PRESS_MASK |
GDK_KEY_RELEASE_MASK);
gtk_signal_connect (GTK_OBJECT (gdisp->shell), "delete_event",
GTK_SIGNAL_FUNC (gdisplay_delete),
gdisp);
@ -734,11 +747,17 @@ create_display_shell (GDisplay* gdisp,
table_lower = gtk_table_new (1,4,FALSE);
gtk_table_set_col_spacing (GTK_TABLE (table_lower), 0, 1);
/* gtk_table_set_row_spacing (GTK_TABLE (table_lower), 0, 1); */
/* gtk_table_set_row_spacing (GTK_TABLE (table_lower), 0, 1); */
/* hbox for statusbar area */
evbox = gtk_event_box_new ();
gtk_box_pack_start (GTK_BOX (vbox), evbox, FALSE, TRUE, 0);
gtk_widget_show (evbox);
gimp_help_set_help_data (evbox, NULL, "#status_area");
/* hbox for statusbar area */
gdisp->statusarea = gtk_hbox_new (FALSE, 2);
gtk_box_pack_start (GTK_BOX (vbox), gdisp->statusarea, FALSE, TRUE, 0);
gtk_container_add (GTK_CONTAINER (evbox), gdisp->statusarea);
/* scrollbars, rulers, canvas, menu popup button */
gdisp->origin = gtk_button_new ();
@ -749,6 +768,8 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (gdisplay_origin_button_press),
gdisp);
gimp_help_set_help_data (gdisp->origin, NULL, "#origin_button");
arrow = gtk_arrow_new (GTK_ARROW_RIGHT, GTK_SHADOW_OUT);
gtk_container_set_border_width (GTK_CONTAINER (gdisp->origin), 0);
gtk_container_add (GTK_CONTAINER (gdisp->origin), arrow);
@ -763,6 +784,8 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (gdisplay_hruler_button_press),
gdisp);
gimp_help_set_help_data (gdisp->hrule, NULL, "#ruler");
gdisp->vrule = gtk_vruler_new ();
gtk_widget_set_events (GTK_WIDGET (gdisp->vrule),
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
@ -773,16 +796,20 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (gdisplay_vruler_button_press),
gdisp);
gimp_help_set_help_data (gdisp->vrule, NULL, "#ruler");
/* The nav window button */
evbox = gtk_event_box_new();
gtk_widget_show(evbox);
navhbox = gtk_hbox_new (FALSE,0);
gtk_container_add(GTK_CONTAINER(evbox),navhbox);
evbox = gtk_event_box_new ();
gtk_widget_show (evbox);
navhbox = gtk_hbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (evbox), navhbox);
GTK_WIDGET_UNSET_FLAGS (evbox, GTK_CAN_FOCUS);
gtk_signal_connect (GTK_OBJECT (evbox), "button_press_event",
GTK_SIGNAL_FUNC (nav_popup_click_handler),
gdisp);
gimp_help_set_help_data (evbox, NULL, "#nav_window_button");
gdisp->hsb = gtk_hscrollbar_new (gdisp->hsbdata);
GTK_WIDGET_UNSET_FLAGS (gdisp->hsb, GTK_CAN_FOCUS);
gdisp->vsb = gtk_vscrollbar_new (gdisp->vsbdata);
@ -799,6 +826,8 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (qmask_click_handler),
gdisp);
gimp_help_set_help_data (gdisp->qmaskoff, NULL, "#qmask_off_button");
gdisp->qmaskon = gtk_radio_button_new (group);
group = gtk_radio_button_group (GTK_RADIO_BUTTON (gdisp->qmaskon));
gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (gdisp->qmaskon), FALSE);
@ -809,6 +838,8 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (qmask_click_handler),
gdisp);
gimp_help_set_help_data (gdisp->qmaskon, NULL, "#qmask_on_button");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gdisp->qmaskoff), TRUE);
gtk_widget_set_usize (GTK_WIDGET (gdisp->qmaskon), 15, 15);
gtk_widget_set_usize (GTK_WIDGET (gdisp->qmaskoff), 15, 15);
@ -918,19 +949,22 @@ create_display_shell (GDisplay* gdisp,
gtk_widget_set_usize (gdisp->statusbar, 1, -1);
gtk_container_set_resize_mode (GTK_CONTAINER (gdisp->statusbar),
GTK_RESIZE_QUEUE);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->statusbar, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->statusbar,
TRUE, TRUE, 0);
contextid = gtk_statusbar_get_context_id (GTK_STATUSBAR (gdisp->statusbar),
"title");
gtk_statusbar_push (GTK_STATUSBAR (gdisp->statusbar),
contextid,
title);
gdisp->progressbar = gtk_progress_bar_new();
gdisp->progressbar = gtk_progress_bar_new ();
gtk_widget_set_usize (gdisp->progressbar, 80, -1);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->progressbar, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->progressbar,
FALSE, TRUE, 0);
gdisp->cancelbutton = gtk_button_new_with_label(_("Cancel"));
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->cancelbutton, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->cancelbutton,
FALSE, TRUE, 0);
gtk_widget_set_sensitive (gdisp->cancelbutton, FALSE);
/* the popup menu */
@ -1177,6 +1211,13 @@ toolbox_drag_drop (GtkWidget *widget,
return return_val;
}
static ToolType
toolbox_drag_tool (GtkWidget *widget,
gpointer data)
{
return (ToolType) data;
}
static void
toolbox_drop_tool (GtkWidget *widget,
ToolType tool,

View file

@ -21,29 +21,25 @@
#include "toolsF.h"
#include "gdisplayF.h"
/* externed variables */
extern GtkWidget * tool_widgets[];
extern GtkTooltips * tool_tips;
/* function declarations */
GtkWidget * create_pixmap_widget (GdkWindow *parent,
gchar **data,
gint width,
gint height);
GtkWidget * create_pixmap_widget (GdkWindow *parent,
gchar **data,
gint width,
gint height);
GdkPixmap * create_tool_pixmap (GtkWidget *parent,
ToolType type);
GdkPixmap * create_tool_pixmap (GtkWidget *parent,
ToolType type);
void create_toolbox (void);
void toolbox_free (void);
void create_toolbox (void);
void toolbox_free (void);
void toolbox_raise_callback (GtkWidget *widget,
gpointer client_data);
void toolbox_raise_callback (GtkWidget *widget,
gpointer data);
void create_display_shell (GDisplay *gdisp,
gint width,
gint height,
gchar *title,
gint type);
void create_display_shell (GDisplay *gdisp,
gint width,
gint height,
gchar *title,
gint type);
#endif /* __INTERFACE_H__ */

View file

@ -30,7 +30,6 @@
#include "gimpcontextpreview.h"
#include "gimpdnd.h"
#include "gradient_header.h"
#include "interface.h" /* for tool_tips */
#include "patterns.h"
#include "temp_buf.h"
@ -185,7 +184,6 @@ gimp_context_preview_init (GimpContextPreview *gcp)
gcp->popup_height = 0;
gcp->show_popup = FALSE;
gcp->show_tooltips = FALSE;
gcp->drag_source = FALSE;
GTK_PREVIEW (gcp)->type = GTK_PREVIEW_COLOR;
GTK_PREVIEW (gcp)->bpp = 3;
@ -225,7 +223,6 @@ gimp_context_preview_new (GimpContextPreviewType type,
gint height,
gboolean show_popup,
gboolean show_tooltips,
gboolean drag_source,
GtkSignalFunc drop_data_callback,
gpointer drop_data_data)
{
@ -239,9 +236,8 @@ gimp_context_preview_new (GimpContextPreviewType type,
gcp->type = type;
gcp->width = width;
gcp->height = height;
gcp->show_popup = !drag_source && show_popup;
gcp->show_popup = show_popup;
gcp->show_tooltips = show_tooltips;
gcp->drag_source = drag_source;
gtk_preview_size (GTK_PREVIEW (gcp), width, height);
@ -284,12 +280,18 @@ gimp_context_preview_update (GimpContextPreview *gcp,
g_return_if_fail (GIMP_IS_CONTEXT_PREVIEW (gcp));
g_return_if_fail (gimp_context_preview_data_matches_type (gcp, data));
if (!gcp->data && gcp->drag_source) /* first call */
if (!gcp->data)
{
gtk_drag_source_set (GTK_WIDGET (gcp),
GDK_BUTTON1_MASK,
context_preview_target_table[gcp->type], n_targets,
GDK_ACTION_COPY);
if (gcp->show_popup)
gtk_drag_source_set (GTK_WIDGET (gcp),
GDK_BUTTON2_MASK,
context_preview_target_table[gcp->type], n_targets,
GDK_ACTION_COPY);
else
gtk_drag_source_set (GTK_WIDGET (gcp),
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
context_preview_target_table[gcp->type], n_targets,
GDK_ACTION_COPY);
switch (gcp->type)
{
@ -370,7 +372,7 @@ gimp_context_preview_update (GimpContextPreview *gcp,
default:
break;
}
gtk_tooltips_set_tip (tool_tips, GTK_WIDGET (gcp), name, NULL);
gimp_help_set_help_data (GTK_WIDGET (gcp), name, NULL);
}
}
@ -528,7 +530,7 @@ gimp_context_preview_popup_open (GimpContextPreview *gcp,
}
static void
gimp_context_preview_popup_close ()
gimp_context_preview_popup_close (void)
{
if (gcp_pipe_timer > 0)
gtk_timeout_remove (gcp_pipe_timer);
@ -742,7 +744,7 @@ brush_rename_callback (GimpBrush *brush,
GimpContextPreview *gcp)
{
if (gcp->show_tooltips)
gtk_tooltips_set_tip (tool_tips, GTK_WIDGET (gcp), brush->name, NULL);
gimp_help_set_help_data (GTK_WIDGET (gcp), brush->name, NULL);
return TRUE;
}

View file

@ -61,7 +61,6 @@ struct _GimpContextPreview
gint popup_height; /* popup preview_height */
gboolean show_popup; /* popup a larger preview on press */
gboolean show_tooltips; /* install tooltips showing the name */
gboolean drag_source; /* make the preview a drag_source */
};
struct _GimpContextPreviewClass
@ -77,7 +76,6 @@ GtkWidget* gimp_context_preview_new (GimpContextPreviewType type,
gint height,
gboolean show_popup,
gboolean show_tooltips,
gboolean drag_source,
GtkSignalFunc drop_data_callback,
gpointer drop_data_data);

View file

@ -29,15 +29,40 @@
#include "libgimp/gimpintl.h"
#define USE_TIPS_QUERY
#define DEBUG_HELP
static GtkTooltips * tool_tips;
void
gimp_help_init (void)
{
tool_tips = gtk_tooltips_new ();
}
void
gimp_help_free (void)
{
gtk_object_destroy (GTK_OBJECT (tool_tips));
gtk_object_unref (GTK_OBJECT (tool_tips));
}
void
gimp_help_enable_tooltips (void)
{
gtk_tooltips_enable (tool_tips);
}
void
gimp_help_disable_tooltips (void)
{
gtk_tooltips_disable (tool_tips);
}
/* The standard help function */
void
gimp_standard_help_func (gpointer help_data)
gimp_standard_help_func (gchar *help_data)
{
gchar *help_page;
help_page = (gchar *) help_data;
gimp_help (help_page);
gimp_help (help_data);
}
static void
@ -45,11 +70,11 @@ gimp_help_callback (GtkWidget *widget,
gpointer data)
{
GimpHelpFunc help_function;
gpointer help_data;
gchar *help_data;
help_function = (GimpHelpFunc) data;
help_data = gtk_object_get_data (GTK_OBJECT (widget),
"gimp_help_data");
help_data = (gchar *) gtk_object_get_data (GTK_OBJECT (widget),
"gimp_help_data");
if (help_function && use_help)
(* help_function) (help_data);
@ -65,9 +90,80 @@ gimp_help_callback (GtkWidget *widget,
#ifdef USE_TIPS_QUERY
static gint
gimp_help_tips_query_idle_show_help (gpointer help_data)
gimp_help_tips_query_idle_show_help (gpointer data)
{
gimp_help ((gchar *) help_data);
GtkWidget *event_widget;
GtkWidget *toplevel_widget;
GtkWidget *widget;
GtkTooltipsData *tooltips_data;
gchar *help_data = NULL;
event_widget = GTK_WIDGET (data);
toplevel_widget = gtk_widget_get_toplevel (event_widget);
/* search for help_data in this widget's parent containers */
for (widget = event_widget; widget; widget = widget->parent)
{
if ((tooltips_data = gtk_tooltips_data_get (widget)) &&
tooltips_data->tip_private)
{
help_data = tooltips_data->tip_private;
}
else
{
help_data = (gchar *) gtk_object_get_data (GTK_OBJECT (widget),
"gimp_help_data");
}
if (help_data || widget == toplevel_widget)
break;
}
if (! help_data)
return FALSE;
if (help_data[0] == '#')
{
gchar *help_index;
if (widget == toplevel_widget)
return FALSE;
help_index = help_data;
help_data = NULL;
for (widget = widget->parent; widget; widget = widget->parent)
{
if ((tooltips_data = gtk_tooltips_data_get (widget)) &&
tooltips_data->tip_private)
{
help_data = tooltips_data->tip_private;
}
else
{
help_data = (gchar *) gtk_object_get_data (GTK_OBJECT (widget),
"gimp_help_data");
}
if (help_data)
break;
}
if (help_data)
{
gchar *help_text;
help_text = g_strconcat (help_data, help_index, NULL);
gimp_help (help_text);
g_free (help_text);
}
}
else
{
gimp_help (help_data);
}
return FALSE;
}
@ -80,9 +176,9 @@ gimp_help_tips_query_widget_selected (GtkWidget *tips_query,
GdkEventButton *event,
gpointer func_data)
{
if (widget && tip_private && use_help)
if (use_help && widget)
gtk_idle_add ((GtkFunction) gimp_help_tips_query_idle_show_help,
(gpointer) tip_private);
(gpointer) widget);
return TRUE;
}
@ -100,7 +196,7 @@ static void
gimp_help_tips_query_start (GtkWidget *widget,
gpointer tips_query)
{
if (! GTK_TIPS_QUERY (tips_query)->in_query)
if (use_help && ! GTK_TIPS_QUERY (tips_query)->in_query)
gtk_idle_add ((GtkFunction) gimp_help_tips_query_idle_start, tips_query);
}
@ -109,7 +205,7 @@ gimp_help_tips_query_start (GtkWidget *widget,
void
gimp_help_connect_help_accel (GtkWidget *widget,
GimpHelpFunc help_func,
gpointer help_data)
gchar *help_data)
{
GtkAccelGroup *accel_group;
@ -128,6 +224,10 @@ gimp_help_connect_help_accel (GtkWidget *widget,
#ifdef USE_TIPS_QUERY
tips_query = gtk_tips_query_new ();
gtk_widget_set (tips_query,
"GtkTipsQuery::emit_always", TRUE,
NULL);
gtk_signal_connect (GTK_OBJECT (tips_query), "widget_selected",
GTK_SIGNAL_FUNC (gimp_help_tips_query_widget_selected),
NULL);
@ -159,11 +259,7 @@ gimp_help_connect_help_accel (GtkWidget *widget,
NULL);
}
if (help_data)
{
gtk_object_set_data (GTK_OBJECT (widget), "gimp_help_data",
help_data);
}
gimp_help_set_help_data (widget, NULL, help_data);
gtk_signal_connect (GTK_OBJECT (widget), "help",
GTK_SIGNAL_FUNC (gimp_help_callback),
@ -173,6 +269,8 @@ gimp_help_connect_help_accel (GtkWidget *widget,
gtk_signal_connect (GTK_OBJECT (widget), "tips_query",
GTK_SIGNAL_FUNC (gimp_help_tips_query_start),
(gpointer) tips_query);
gtk_widget_add_events (widget, GDK_BUTTON_PRESS_MASK);
#endif
/* a new accelerator group for this widget */
@ -196,12 +294,30 @@ gimp_help_connect_help_accel (GtkWidget *widget,
gtk_accel_group_attach (accel_group, GTK_OBJECT (widget));
}
void
gimp_help_set_help_data (GtkWidget *widget,
gchar *tooltip,
gchar *help_data)
{
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_WIDGET (widget));
if (tooltip)
gtk_tooltips_set_tip (tool_tips, widget, tooltip, help_data);
else if (help_data)
gtk_object_set_data (GTK_OBJECT (widget), "gimp_help_data", help_data);
}
/* the main help function */
void
gimp_help (gchar *help_page)
gimp_help (gchar *help_data)
{
ProcRecord *proc_rec;
#ifdef DEBUG_HELP
g_print ("Help Page: %s\n", help_data);
#endif
/* Check if a help browser is already running */
proc_rec = procedural_db_lookup ("extension_gimp_help_browser_temp");
@ -223,7 +339,7 @@ gimp_help (gchar *help_page)
args[0].arg_type = PDB_INT32;
args[0].value.pdb_int = RUN_INTERACTIVE;
args[1].arg_type = PDB_STRING;
args[1].value.pdb_pointer = help_page;
args[1].value.pdb_pointer = help_data;
plug_in_run (proc_rec, args, 2, FALSE, TRUE, 0);
@ -237,7 +353,7 @@ gimp_help (gchar *help_page)
return_vals =
procedural_db_run_proc ("extension_gimp_help_browser_temp",
&nreturn_vals,
PDB_STRING, help_page,
PDB_STRING, help_data,
PDB_END);
procedural_db_destroy_args (return_vals, nreturn_vals);

View file

@ -21,19 +21,29 @@
#ifndef __GIMP_HELP_H__
#define __GIMP_HELP_H__
#include <glib.h>
typedef void (* GimpHelpFunc) (gchar *);
typedef void (* GimpHelpFunc) (gpointer);
void gimp_help_init (void);
void gimp_help_free (void);
void gimp_help_enable_tooltips (void);
void gimp_help_disable_tooltips (void);
/* the standard help function */
void gimp_standard_help_func (gpointer help_data);
void gimp_standard_help_func (gchar *help_data);
/* connect the "F1" accelerator of a window */
void gimp_help_connect_help_accel (GtkWidget *widget,
GimpHelpFunc help_func,
gpointer help_data);
gchar *help_data);
/* set help data for non-window widgets */
void gimp_help_set_help_data (GtkWidget *widget,
gchar *tool_tip,
gchar *help_data);
/* the main help function */
void gimp_help (gchar *help_page);
void gimp_help (gchar *help_data);
#endif /* __GIMP_HELP_H__ */

View file

@ -79,7 +79,7 @@ GtkWidget *
gimp_dialog_new (const gchar *title,
const gchar *wmclass_name,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
GtkWindowPosition position,
gint allow_shrink,
gint allow_grow,
@ -120,7 +120,7 @@ GtkWidget *
gimp_dialog_newv (const gchar *title,
const gchar *wmclass_name,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
GtkWindowPosition position,
gint allow_shrink,
gint allow_grow,
@ -419,7 +419,7 @@ struct _QueryBox
gpointer data;
};
static QueryBox * create_query_box (gchar *, GimpHelpFunc, gpointer,
static QueryBox * create_query_box (gchar *, GimpHelpFunc, gchar *,
GtkSignalFunc,
gchar *, GtkObject *, gchar *,
GimpQueryFunc, gpointer);
@ -433,7 +433,7 @@ static void size_query_box_ok_callback (GtkWidget *, gpointer);
static QueryBox *
create_query_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
GtkSignalFunc ok_callback,
gchar *message,
GtkObject *object,
@ -490,7 +490,7 @@ create_query_box (gchar *title,
GtkWidget *
gimp_query_string_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
gchar *message,
gchar *initial,
GtkObject *object,
@ -520,7 +520,7 @@ gimp_query_string_box (gchar *title,
GtkWidget *
gimp_query_int_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
gchar *message,
gint initial,
gint lower,
@ -553,7 +553,7 @@ gimp_query_int_box (gchar *title,
GtkWidget *
gimp_query_double_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
gchar *message,
gdouble initial,
gdouble lower,
@ -587,7 +587,7 @@ gimp_query_double_box (gchar *title,
GtkWidget *
gimp_query_size_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
gchar *message,
gdouble initial,
gdouble lower,

View file

@ -36,7 +36,7 @@ typedef void (* GimpQueryFunc) (GtkWidget *, gpointer, gpointer);
GtkWidget * gimp_dialog_new (const gchar *title,
const gchar *wmclass_name,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
GtkWindowPosition position,
gint allow_shrink,
gint allow_grow,
@ -57,7 +57,7 @@ GtkWidget * gimp_dialog_new (const gchar *title,
GtkWidget * gimp_dialog_newv (const gchar *title,
const gchar *wmclass_name,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
GtkWindowPosition position,
gint allow_shrink,
gint allow_grow,
@ -125,7 +125,7 @@ GtkWidget * gimp_spin_button_new (/* return value: */
GtkWidget * gimp_query_string_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
gchar *message,
gchar *initial,
GtkObject *object,
@ -135,7 +135,7 @@ GtkWidget * gimp_query_string_box (gchar *title,
GtkWidget * gimp_query_int_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
char *message,
gint initial,
gint lower,
@ -147,7 +147,7 @@ GtkWidget * gimp_query_int_box (gchar *title,
GtkWidget * gimp_query_double_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
gchar *message,
gdouble initial,
gdouble lower,
@ -160,7 +160,7 @@ GtkWidget * gimp_query_double_box (gchar *title,
GtkWidget * gimp_query_size_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
gchar *message,
gdouble initial,
gdouble lower,

View file

@ -320,6 +320,13 @@ typedef struct
/***** Local functions *****/
static gint gradient_editor_clist_button_press (GtkWidget *widget,
GdkEventButton *bevent,
gpointer data);
static gradient_t * gradient_editor_drag_gradient (GtkWidget *widget,
gpointer data);
static void gradient_editor_drop_gradient (GtkWidget *widget,
gradient_t *gradient,
gpointer data);
@ -407,7 +414,7 @@ static void control_motion (gint x);
static void control_compress_left (grad_segment_t *range_l,
grad_segment_t *range_r,
grad_segment_t *drag_seg,
double pos);
double pos);
static void control_compress_range (grad_segment_t *range_l,
grad_segment_t *range_r,
double new_l, double new_r);
@ -605,6 +612,7 @@ gint num_gradients = 0;
static GdkColor black;
static gradient_t * curr_gradient = NULL;
static gradient_t * dnd_gradient = NULL;
static GradientEditor * g_editor = NULL;
static gradient_t * standard_gradient = NULL;
@ -913,13 +921,17 @@ gradient_editor_create (void)
g_editor->clist = gtk_clist_new (2);
gtk_clist_set_shadow_type (GTK_CLIST (g_editor->clist), GTK_SHADOW_IN);
gtk_clist_set_row_height (GTK_CLIST (g_editor->clist), 18);
gtk_clist_set_selection_mode (GTK_CLIST (g_editor->clist),
GTK_SELECTION_BROWSE);
gtk_clist_set_column_width (GTK_CLIST (g_editor->clist), 0, 52);
gtk_clist_set_column_title (GTK_CLIST (g_editor->clist), 0, _("Gradient"));
gtk_clist_set_column_title (GTK_CLIST (g_editor->clist), 1, _("Name"));
gtk_clist_column_titles_show (GTK_CLIST (g_editor->clist));
gtk_clist_set_use_drag_icons (GTK_CLIST (g_editor->clist), FALSE);
gtk_clist_column_titles_passive (GTK_CLIST (g_editor->clist));
gtk_box_pack_start (GTK_BOX (hbox), scrolled_win, TRUE, TRUE, 0);
gtk_container_add (GTK_CONTAINER (scrolled_win), g_editor->clist);
@ -927,16 +939,6 @@ gradient_editor_create (void)
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_drag_dest_set (g_editor->clist,
GTK_DEST_DEFAULT_HIGHLIGHT |
GTK_DEST_DEFAULT_MOTION |
GTK_DEST_DEFAULT_DROP,
gradient_target_table, n_gradient_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_dest_set (g_editor->clist,
gradient_editor_drop_gradient,
NULL);
gtk_widget_show (scrolled_win);
gtk_widget_show (g_editor->clist);
@ -944,9 +946,28 @@ gradient_editor_create (void)
gdk_color_parse ("black", &black);
gdk_color_alloc (colormap, &black);
gtk_signal_connect (GTK_OBJECT (g_editor->clist), "button_press_event",
GTK_SIGNAL_FUNC (gradient_editor_clist_button_press),
NULL);
gtk_signal_connect (GTK_OBJECT (g_editor->clist), "select_row",
GTK_SIGNAL_FUNC (ed_list_item_update),
(gpointer) NULL);
NULL);
/* dnd stuff */
gtk_drag_source_set (g_editor->clist,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
gradient_target_table, n_gradient_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_source_set (g_editor->clist, gradient_editor_drag_gradient,
NULL);
gtk_drag_dest_set (g_editor->clist,
GTK_DEST_DEFAULT_ALL,
gradient_target_table, n_gradient_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_dest_set (g_editor->clist, gradient_editor_drop_gradient,
NULL);
/* Frame & vbox for gradient functions */
frame = gtk_frame_new (_("Gradient Ops"));
@ -1222,7 +1243,7 @@ gradient_editor_set_gradient (gradient_t *gradient)
}
else
{
curr_gradient = gradient;
curr_gradient = dnd_gradient = gradient;
}
return TRUE;
@ -1230,6 +1251,37 @@ gradient_editor_set_gradient (gradient_t *gradient)
/***** Gradient editor functions *****/
static gint
gradient_editor_clist_button_press (GtkWidget *widget,
GdkEventButton *bevent,
gpointer data)
{
if (bevent->button == 2)
{
GSList *list;
gint row;
gint column;
gtk_clist_get_selection_info (GTK_CLIST (g_editor->clist),
bevent->x, bevent->y,
&row, &column);
list = g_slist_nth (gradients_list, row);
dnd_gradient = (gradient_t *) list->data;
return TRUE;
}
return FALSE;
}
static gradient_t *
gradient_editor_drag_gradient (GtkWidget *widget,
gpointer data)
{
return dnd_gradient;
}
static void
gradient_editor_drop_gradient (GtkWidget *widget,
gradient_t *gradient,
@ -1476,7 +1528,7 @@ ed_list_item_update (GtkWidget *widget,
{
/* Update current gradient */
GSList* tmp = g_slist_nth (gradients_list,row);
curr_gradient = (gradient_t *)(tmp->data);
curr_gradient = dnd_gradient = (gradient_t *)(tmp->data);
ed_update_editor (GRAD_UPDATE_PREVIEW | GRAD_RESET_CONTROL);
}
@ -1610,7 +1662,7 @@ ed_do_new_gradient_callback (GtkWidget *widget,
gtk_clist_thaw (GTK_CLIST (g_editor->clist));
gtk_clist_moveto (GTK_CLIST (g_editor->clist), pos, 0, 0.5, 0.0);
curr_gradient = grad;
curr_gradient = dnd_gradient = grad;
ed_update_editor (GRAD_UPDATE_PREVIEW | GRAD_RESET_CONTROL);
@ -1700,7 +1752,7 @@ ed_do_copy_gradient_callback (GtkWidget *widget,
grad, pos, TRUE);
gtk_clist_thaw (GTK_CLIST (g_editor->clist));
curr_gradient = grad;
curr_gradient = dnd_gradient = grad;
ed_update_editor (GRAD_UPDATE_PREVIEW | GRAD_RESET_CONTROL);
@ -2779,8 +2831,8 @@ control_button_press (gint x,
case GRAD_DRAG_MIDDLE:
if (state & GDK_SHIFT_MASK)
{
control_extend_selection(seg, xpos);
ed_update_editor(GRAD_UPDATE_CONTROL);
control_extend_selection (seg, xpos);
ed_update_editor (GRAD_UPDATE_CONTROL);
}
else
{

View file

@ -320,6 +320,13 @@ typedef struct
/***** Local functions *****/
static gint gradient_editor_clist_button_press (GtkWidget *widget,
GdkEventButton *bevent,
gpointer data);
static gradient_t * gradient_editor_drag_gradient (GtkWidget *widget,
gpointer data);
static void gradient_editor_drop_gradient (GtkWidget *widget,
gradient_t *gradient,
gpointer data);
@ -407,7 +414,7 @@ static void control_motion (gint x);
static void control_compress_left (grad_segment_t *range_l,
grad_segment_t *range_r,
grad_segment_t *drag_seg,
double pos);
double pos);
static void control_compress_range (grad_segment_t *range_l,
grad_segment_t *range_r,
double new_l, double new_r);
@ -605,6 +612,7 @@ gint num_gradients = 0;
static GdkColor black;
static gradient_t * curr_gradient = NULL;
static gradient_t * dnd_gradient = NULL;
static GradientEditor * g_editor = NULL;
static gradient_t * standard_gradient = NULL;
@ -913,13 +921,17 @@ gradient_editor_create (void)
g_editor->clist = gtk_clist_new (2);
gtk_clist_set_shadow_type (GTK_CLIST (g_editor->clist), GTK_SHADOW_IN);
gtk_clist_set_row_height (GTK_CLIST (g_editor->clist), 18);
gtk_clist_set_selection_mode (GTK_CLIST (g_editor->clist),
GTK_SELECTION_BROWSE);
gtk_clist_set_column_width (GTK_CLIST (g_editor->clist), 0, 52);
gtk_clist_set_column_title (GTK_CLIST (g_editor->clist), 0, _("Gradient"));
gtk_clist_set_column_title (GTK_CLIST (g_editor->clist), 1, _("Name"));
gtk_clist_column_titles_show (GTK_CLIST (g_editor->clist));
gtk_clist_set_use_drag_icons (GTK_CLIST (g_editor->clist), FALSE);
gtk_clist_column_titles_passive (GTK_CLIST (g_editor->clist));
gtk_box_pack_start (GTK_BOX (hbox), scrolled_win, TRUE, TRUE, 0);
gtk_container_add (GTK_CONTAINER (scrolled_win), g_editor->clist);
@ -927,16 +939,6 @@ gradient_editor_create (void)
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_drag_dest_set (g_editor->clist,
GTK_DEST_DEFAULT_HIGHLIGHT |
GTK_DEST_DEFAULT_MOTION |
GTK_DEST_DEFAULT_DROP,
gradient_target_table, n_gradient_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_dest_set (g_editor->clist,
gradient_editor_drop_gradient,
NULL);
gtk_widget_show (scrolled_win);
gtk_widget_show (g_editor->clist);
@ -944,9 +946,28 @@ gradient_editor_create (void)
gdk_color_parse ("black", &black);
gdk_color_alloc (colormap, &black);
gtk_signal_connect (GTK_OBJECT (g_editor->clist), "button_press_event",
GTK_SIGNAL_FUNC (gradient_editor_clist_button_press),
NULL);
gtk_signal_connect (GTK_OBJECT (g_editor->clist), "select_row",
GTK_SIGNAL_FUNC (ed_list_item_update),
(gpointer) NULL);
NULL);
/* dnd stuff */
gtk_drag_source_set (g_editor->clist,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
gradient_target_table, n_gradient_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_source_set (g_editor->clist, gradient_editor_drag_gradient,
NULL);
gtk_drag_dest_set (g_editor->clist,
GTK_DEST_DEFAULT_ALL,
gradient_target_table, n_gradient_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_dest_set (g_editor->clist, gradient_editor_drop_gradient,
NULL);
/* Frame & vbox for gradient functions */
frame = gtk_frame_new (_("Gradient Ops"));
@ -1222,7 +1243,7 @@ gradient_editor_set_gradient (gradient_t *gradient)
}
else
{
curr_gradient = gradient;
curr_gradient = dnd_gradient = gradient;
}
return TRUE;
@ -1230,6 +1251,37 @@ gradient_editor_set_gradient (gradient_t *gradient)
/***** Gradient editor functions *****/
static gint
gradient_editor_clist_button_press (GtkWidget *widget,
GdkEventButton *bevent,
gpointer data)
{
if (bevent->button == 2)
{
GSList *list;
gint row;
gint column;
gtk_clist_get_selection_info (GTK_CLIST (g_editor->clist),
bevent->x, bevent->y,
&row, &column);
list = g_slist_nth (gradients_list, row);
dnd_gradient = (gradient_t *) list->data;
return TRUE;
}
return FALSE;
}
static gradient_t *
gradient_editor_drag_gradient (GtkWidget *widget,
gpointer data)
{
return dnd_gradient;
}
static void
gradient_editor_drop_gradient (GtkWidget *widget,
gradient_t *gradient,
@ -1476,7 +1528,7 @@ ed_list_item_update (GtkWidget *widget,
{
/* Update current gradient */
GSList* tmp = g_slist_nth (gradients_list,row);
curr_gradient = (gradient_t *)(tmp->data);
curr_gradient = dnd_gradient = (gradient_t *)(tmp->data);
ed_update_editor (GRAD_UPDATE_PREVIEW | GRAD_RESET_CONTROL);
}
@ -1610,7 +1662,7 @@ ed_do_new_gradient_callback (GtkWidget *widget,
gtk_clist_thaw (GTK_CLIST (g_editor->clist));
gtk_clist_moveto (GTK_CLIST (g_editor->clist), pos, 0, 0.5, 0.0);
curr_gradient = grad;
curr_gradient = dnd_gradient = grad;
ed_update_editor (GRAD_UPDATE_PREVIEW | GRAD_RESET_CONTROL);
@ -1700,7 +1752,7 @@ ed_do_copy_gradient_callback (GtkWidget *widget,
grad, pos, TRUE);
gtk_clist_thaw (GTK_CLIST (g_editor->clist));
curr_gradient = grad;
curr_gradient = dnd_gradient = grad;
ed_update_editor (GRAD_UPDATE_PREVIEW | GRAD_RESET_CONTROL);
@ -2779,8 +2831,8 @@ control_button_press (gint x,
case GRAD_DRAG_MIDDLE:
if (state & GDK_SHIFT_MASK)
{
control_extend_selection(seg, xpos);
ed_update_editor(GRAD_UPDATE_CONTROL);
control_extend_selection (seg, xpos);
ed_update_editor (GRAD_UPDATE_CONTROL);
}
else
{

View file

@ -47,7 +47,8 @@
static void gradient_change_callbacks (GradientSelect *gsp,
gboolean closing);
static gradient_t * gradient_select_drag_gradient (GtkWidget *widget,
gpointer data);
static void gradient_select_drop_gradient (GtkWidget *widget,
gradient_t *gradient,
gpointer data);
@ -57,6 +58,9 @@ static void gradient_select_gradient_changed (GimpContext *context,
static void gradient_select_select (GradientSelect *gsp,
gradient_t *gradient);
static gint gradient_select_button_press (GtkWidget *widget,
GdkEventButton *bevent,
gpointer data);
static void gradient_select_list_item_update (GtkWidget *widget,
gint row,
gint column,
@ -131,6 +135,7 @@ gradient_select_new (gchar *title,
gsp = g_new (GradientSelect, 1);
gsp->callback_name = NULL;
gsp->dnd_gradient = NULL;
/* The shell */
gsp->shell = gimp_dialog_new (title ? title : _("Gradient Selection"),
@ -193,20 +198,16 @@ gradient_select_new (gchar *title,
gsp->clist = gtk_clist_new (2);
gtk_clist_set_shadow_type (GTK_CLIST (gsp->clist), GTK_SHADOW_IN);
gtk_clist_set_row_height (GTK_CLIST (gsp->clist), 18);
gtk_clist_set_selection_mode (GTK_CLIST (gsp->clist), GTK_SELECTION_BROWSE);
gtk_clist_set_column_width (GTK_CLIST (gsp->clist), 0, 52);
gtk_clist_set_column_title (GTK_CLIST (gsp->clist), 0, _("Gradient"));
gtk_clist_set_column_title (GTK_CLIST (gsp->clist), 1, _("Name"));
gtk_clist_column_titles_show (GTK_CLIST (gsp->clist));
/* dnd stuff */
gtk_drag_dest_set (gsp->clist,
GTK_DEST_DEFAULT_ALL,
clist_target_table, clist_n_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_dest_set (gsp->clist, gradient_select_drop_gradient, gsp);
gtk_clist_column_titles_show (GTK_CLIST (gsp->clist));
gtk_clist_set_use_drag_icons (GTK_CLIST (gsp->clist), FALSE);
gtk_clist_column_titles_passive (GTK_CLIST (gsp->clist));
gtk_container_add (GTK_CONTAINER (vbox), scrolled_win);
gtk_container_add (GTK_CONTAINER (scrolled_win), gsp->clist);
@ -231,13 +232,30 @@ gradient_select_new (gchar *title,
gtk_widget_show (vbox);
gtk_widget_show (gsp->shell);
gtk_signal_connect (GTK_OBJECT (gsp->clist), "button_press_event",
GTK_SIGNAL_FUNC (gradient_select_button_press),
(gpointer) gsp);
gtk_signal_connect (GTK_OBJECT (gsp->clist), "select_row",
GTK_SIGNAL_FUNC (gradient_select_list_item_update),
(gpointer) gsp);
gtk_signal_connect (GTK_OBJECT (gsp->context), "gradient_changed",
GTK_SIGNAL_FUNC (gradient_select_gradient_changed),
gsp);
(gpointer) gsp);
/* dnd stuff */
gtk_drag_source_set (gsp->clist,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
clist_target_table, clist_n_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_source_set (gsp->clist, gradient_select_drag_gradient, gsp);
gtk_drag_dest_set (gsp->clist,
GTK_DEST_DEFAULT_ALL,
clist_target_table, clist_n_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_dest_set (gsp->clist, gradient_select_drop_gradient, gsp);
if (active)
gradient_select_select (gsp, active);
@ -466,6 +484,17 @@ gradient_select_update_all (gint row,
* Local functions
*/
static gradient_t *
gradient_select_drag_gradient (GtkWidget *widget,
gpointer data)
{
GradientSelect *gsp;
gsp = (GradientSelect *) data;
return gsp->dnd_gradient;
}
static void
gradient_select_drop_gradient (GtkWidget *widget,
gradient_t *gradient,
@ -489,6 +518,8 @@ gradient_select_gradient_changed (GimpContext *context,
if (gsp->callback_name)
gradient_change_callbacks (gsp, FALSE);
gsp->dnd_gradient = gradient;
}
}
@ -511,6 +542,34 @@ gradient_select_select (GradientSelect *gsp,
}
}
static gint
gradient_select_button_press (GtkWidget *widget,
GdkEventButton *bevent,
gpointer data)
{
GradientSelect *gsp;
gsp = (GradientSelect *) data;
if (bevent->button == 2)
{
GSList *list;
gint row;
gint column;
gtk_clist_get_selection_info (GTK_CLIST (gsp->clist),
bevent->x, bevent->y,
&row, &column);
list = g_slist_nth (gradients_list, row);
gsp->dnd_gradient = (gradient_t *) list->data;
return TRUE;
}
return FALSE;
}
static void
gradient_select_list_item_update (GtkWidget *widget,
gint row,
@ -529,6 +588,11 @@ gradient_select_list_item_update (GtkWidget *widget,
gimp_context_set_gradient (gsp->context, (gradient_t *) list->data);
gtk_signal_handler_unblock_by_data (GTK_OBJECT (gsp->context), gsp);
gsp->dnd_gradient = (gradient_t *) list->data;
if (gsp->callback_name)
gradient_change_callbacks (gsp, FALSE);
}
static void

View file

@ -37,6 +37,8 @@ struct _GradientSelect
gchar *callback_name;
gint sample_size;
gradient_t *dnd_gradient;
GdkColor black;
GdkGC *gc;
};

View file

@ -68,6 +68,8 @@
static void brush_change_callbacks (BrushSelect *bsp,
gboolean closing);
static GimpBrush * brush_select_drag_brush (GtkWidget *widget,
gpointer data);
static void brush_select_drop_brush (GtkWidget *widget,
GimpBrush *brush,
gpointer data);
@ -252,6 +254,7 @@ brush_select_new (gchar *title,
bsp = g_new (BrushSelect, 1);
bsp->callback_name = NULL;
bsp->dnd_brush = NULL;
bsp->brush_popup = NULL;
bsp->popup_timeout_tag = 0;
bsp->popup_anim_timeout_tag = 0;
@ -371,6 +374,12 @@ brush_select_new (gchar *title,
bsp);
/* dnd stuff */
gtk_drag_source_set (bsp->preview,
GDK_BUTTON2_MASK,
preview_target_table, preview_n_targets,
GDK_ACTION_COPY);
gimp_dnd_brush_source_set (bsp->preview, brush_select_drag_brush, bsp);
gtk_drag_dest_set (bsp->preview,
GTK_DEST_DEFAULT_ALL,
preview_target_table, preview_n_targets,
@ -736,6 +745,17 @@ brushes_check_dialogs (void)
* Local functions
*/
static GimpBrush *
brush_select_drag_brush (GtkWidget *widget,
gpointer data)
{
BrushSelect *bsp;
bsp = (BrushSelect *) data;
return bsp->dnd_brush;
}
static void
brush_select_drop_brush (GtkWidget *widget,
GimpBrush *brush,
@ -1502,14 +1522,21 @@ brush_select_events (GtkWidget *widget,
case GDK_BUTTON_PRESS:
bevent = (GdkEventButton *) event;
col = bevent->x / bsp->cell_width;
row = (bevent->y + bsp->scroll_offset) / bsp->cell_height;
index = row * bsp->NUM_BRUSH_COLUMNS + col;
brush = gimp_brush_list_get_brush_by_index (brush_list, index);
if (brush)
bsp->dnd_brush = brush;
else
bsp->dnd_brush = gimp_context_get_brush (bsp->context);
if (bevent->button == 1)
{
col = bevent->x / bsp->cell_width;
row = (bevent->y + bsp->scroll_offset) / bsp->cell_height;
index = row * bsp->NUM_BRUSH_COLUMNS + col;
/* Get the brush and display the popup brush preview */
if ((brush = gimp_brush_list_get_brush_by_index (brush_list, index)))
if (brush)
{
gdk_pointer_grab (bsp->preview->window, FALSE,
(GDK_POINTER_MOTION_HINT_MASK |

View file

@ -62,6 +62,8 @@ struct _BrushSelect
GimpContext *context;
gint spacing_value;
GimpBrush *dnd_brush;
/* Some variables to keep the GUI consistent */
gint cell_width;
gint cell_height;

View file

@ -28,7 +28,6 @@
#include "gimpdnd.h"
#include "gimprc.h"
#include "gimpui.h"
#include "interface.h"
#include "layers_dialogP.h"
#include "lc_dialogP.h"
#include "menus.h"
@ -174,7 +173,7 @@ static GdkPixmap *channel_pixmap[] = { NULL, NULL, NULL };
static gint suspend_gimage_notify = 0;
/* the ops buttons */
static OpsButtonCallback to_selection_ext_callbacks[] =
static GtkSignalFunc to_selection_ext_callbacks[] =
{
channels_dialog_add_channel_to_sel_callback, /* SHIFT */
channels_dialog_sub_channel_from_sel_callback, /* CTRL */
@ -268,8 +267,14 @@ channels_dialog_create (void)
}
/* The main vbox */
channelsD->vbox = vbox = gtk_vbox_new (FALSE, 1);
channelsD->vbox = gtk_event_box_new ();
gimp_help_set_help_data (channelsD->vbox, NULL,
"dialogs/channels/channels.html");
vbox = gtk_vbox_new (FALSE, 1);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 2);
gtk_container_add (GTK_CONTAINER (channelsD->vbox), vbox);
/* The channels commands pulldown menu */
menus_get_channels_menu (&channelsD->ops_menu, &channelsD->accel_group);
@ -298,8 +303,8 @@ channels_dialog_create (void)
gtk_widget_show (channelsD->scrolled_win);
/* The ops buttons */
button_box = ops_button_box_new (lc_dialog->shell, tool_tips,
channels_ops_buttons, OPS_BUTTON_NORMAL);
button_box = ops_button_box_new (lc_dialog->shell, channels_ops_buttons,
OPS_BUTTON_NORMAL);
gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, FALSE, 2);
gtk_widget_show (button_box);
@ -348,6 +353,7 @@ channels_dialog_create (void)
NULL);
gtk_widget_show (vbox);
gtk_widget_show (channelsD->vbox);
return channelsD->vbox;
}
@ -1432,7 +1438,7 @@ channel_widget_create (GImage *gimage,
/* dnd source */
gtk_drag_source_set (list_item,
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
channel_target_table, n_channel_targets,
GDK_ACTION_MOVE | GDK_ACTION_COPY);
@ -1447,7 +1453,7 @@ channel_widget_create (GImage *gimage,
{
/* dnd source */
gtk_drag_source_set (list_item,
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
component_target_table, n_component_targets,
GDK_ACTION_MOVE | GDK_ACTION_COPY);

View file

@ -402,7 +402,7 @@ color_area_create (gint width,
/* dnd stuff */
gtk_drag_source_set (color_area,
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_area_target_table, n_color_area_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (color_area, color_area_drag_color, NULL);

View file

@ -338,7 +338,7 @@ color_select_widget_new (ColorSelect *csp,
/* dnd stuff */
gtk_drag_source_set (csp->new_color,
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_select_target_table, n_color_select_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (csp->new_color, color_select_drag_new_color, csp);
@ -365,7 +365,7 @@ color_select_widget_new (ColorSelect *csp,
/* dnd stuff */
gtk_drag_source_set (csp->orig_color,
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_select_target_table, n_color_select_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (csp->orig_color, color_select_drag_old_color, csp);

View file

@ -21,19 +21,19 @@
#include <stdio.h>
#include "appenv.h"
#include "devices.h"
#include "dialog_handler.h"
#include "gimpcontextpreview.h"
#include "gimpdnd.h"
#include "devices.h"
#include "interface.h"
#include "gimpbrushlist.h"
#include "gimpcontext.h"
#include "gimprc.h"
#include "gimpui.h"
#include "gradient.h"
#include "gradient_header.h"
#include "interface.h"
#include "session.h"
#include "tools.h"
#include "dialog_handler.h"
#include "libgimp/gimpintl.h"
#include "libgimp/gimpenv.h"
@ -798,7 +798,7 @@ device_status_create (void)
gtk_pixmap_new (create_tool_pixmap (deviceD->table, RECT_SELECT),
NULL);
gtk_drag_source_set (deviceD->eventboxes[i],
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
tool_target_table, n_tool_targets,
GDK_ACTION_COPY);
gimp_dnd_tool_source_set (deviceD->eventboxes[i],
@ -826,7 +826,7 @@ device_status_create (void)
gtk_preview_size (GTK_PREVIEW (deviceD->colors[i]),
CELL_SIZE, CELL_SIZE);
gtk_drag_source_set (deviceD->colors[i],
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_area_target_table, n_color_area_targets,
GDK_ACTION_COPY);
gimp_dnd_color_source_set (deviceD->colors[i],
@ -849,7 +849,7 @@ device_status_create (void)
deviceD->brushes[i] =
gimp_context_preview_new (GCP_BRUSH,
CELL_SIZE, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_brush),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->brushes[i],
@ -861,7 +861,7 @@ device_status_create (void)
deviceD->patterns[i] =
gimp_context_preview_new (GCP_PATTERN,
CELL_SIZE, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_pattern),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->patterns[i],
@ -873,7 +873,7 @@ device_status_create (void)
deviceD->gradients[i] =
gimp_context_preview_new (GCP_GRADIENT,
CELL_SIZE * 2, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_gradient),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->gradients[i],
@ -1009,9 +1009,9 @@ device_status_update (guint32 deviceid)
gtk_widget_show (deviceD->tools[i]);
gtk_widget_show (deviceD->eventboxes[i]);
gtk_tooltips_set_tip (tool_tips,deviceD->eventboxes[i],
tool_info[(int) gimp_context_get_tool (device_info->context)].tool_desc,
NULL);
gimp_help_set_help_data (deviceD->eventboxes[i],
tool_info[(gint) gimp_context_get_tool (device_info->context)].tool_desc,
tool_info[(gint) gimp_context_get_tool (device_info->context)].private_tip);
for (j = 0; j < CELL_SIZE * 3; j += 3)
{
@ -1033,7 +1033,7 @@ device_status_update (guint32 deviceid)
buffer[j+1],
buffer[j+2]);
gtk_tooltips_set_tip (tool_tips, deviceD->colors[i], ttbuf, NULL);
gimp_help_set_help_data (deviceD->colors[i], ttbuf, NULL);
if (gimp_context_get_brush (device_info->context))
{

View file

@ -320,6 +320,13 @@ typedef struct
/***** Local functions *****/
static gint gradient_editor_clist_button_press (GtkWidget *widget,
GdkEventButton *bevent,
gpointer data);
static gradient_t * gradient_editor_drag_gradient (GtkWidget *widget,
gpointer data);
static void gradient_editor_drop_gradient (GtkWidget *widget,
gradient_t *gradient,
gpointer data);
@ -407,7 +414,7 @@ static void control_motion (gint x);
static void control_compress_left (grad_segment_t *range_l,
grad_segment_t *range_r,
grad_segment_t *drag_seg,
double pos);
double pos);
static void control_compress_range (grad_segment_t *range_l,
grad_segment_t *range_r,
double new_l, double new_r);
@ -605,6 +612,7 @@ gint num_gradients = 0;
static GdkColor black;
static gradient_t * curr_gradient = NULL;
static gradient_t * dnd_gradient = NULL;
static GradientEditor * g_editor = NULL;
static gradient_t * standard_gradient = NULL;
@ -913,13 +921,17 @@ gradient_editor_create (void)
g_editor->clist = gtk_clist_new (2);
gtk_clist_set_shadow_type (GTK_CLIST (g_editor->clist), GTK_SHADOW_IN);
gtk_clist_set_row_height (GTK_CLIST (g_editor->clist), 18);
gtk_clist_set_selection_mode (GTK_CLIST (g_editor->clist),
GTK_SELECTION_BROWSE);
gtk_clist_set_column_width (GTK_CLIST (g_editor->clist), 0, 52);
gtk_clist_set_column_title (GTK_CLIST (g_editor->clist), 0, _("Gradient"));
gtk_clist_set_column_title (GTK_CLIST (g_editor->clist), 1, _("Name"));
gtk_clist_column_titles_show (GTK_CLIST (g_editor->clist));
gtk_clist_set_use_drag_icons (GTK_CLIST (g_editor->clist), FALSE);
gtk_clist_column_titles_passive (GTK_CLIST (g_editor->clist));
gtk_box_pack_start (GTK_BOX (hbox), scrolled_win, TRUE, TRUE, 0);
gtk_container_add (GTK_CONTAINER (scrolled_win), g_editor->clist);
@ -927,16 +939,6 @@ gradient_editor_create (void)
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_drag_dest_set (g_editor->clist,
GTK_DEST_DEFAULT_HIGHLIGHT |
GTK_DEST_DEFAULT_MOTION |
GTK_DEST_DEFAULT_DROP,
gradient_target_table, n_gradient_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_dest_set (g_editor->clist,
gradient_editor_drop_gradient,
NULL);
gtk_widget_show (scrolled_win);
gtk_widget_show (g_editor->clist);
@ -944,9 +946,28 @@ gradient_editor_create (void)
gdk_color_parse ("black", &black);
gdk_color_alloc (colormap, &black);
gtk_signal_connect (GTK_OBJECT (g_editor->clist), "button_press_event",
GTK_SIGNAL_FUNC (gradient_editor_clist_button_press),
NULL);
gtk_signal_connect (GTK_OBJECT (g_editor->clist), "select_row",
GTK_SIGNAL_FUNC (ed_list_item_update),
(gpointer) NULL);
NULL);
/* dnd stuff */
gtk_drag_source_set (g_editor->clist,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
gradient_target_table, n_gradient_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_source_set (g_editor->clist, gradient_editor_drag_gradient,
NULL);
gtk_drag_dest_set (g_editor->clist,
GTK_DEST_DEFAULT_ALL,
gradient_target_table, n_gradient_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_dest_set (g_editor->clist, gradient_editor_drop_gradient,
NULL);
/* Frame & vbox for gradient functions */
frame = gtk_frame_new (_("Gradient Ops"));
@ -1222,7 +1243,7 @@ gradient_editor_set_gradient (gradient_t *gradient)
}
else
{
curr_gradient = gradient;
curr_gradient = dnd_gradient = gradient;
}
return TRUE;
@ -1230,6 +1251,37 @@ gradient_editor_set_gradient (gradient_t *gradient)
/***** Gradient editor functions *****/
static gint
gradient_editor_clist_button_press (GtkWidget *widget,
GdkEventButton *bevent,
gpointer data)
{
if (bevent->button == 2)
{
GSList *list;
gint row;
gint column;
gtk_clist_get_selection_info (GTK_CLIST (g_editor->clist),
bevent->x, bevent->y,
&row, &column);
list = g_slist_nth (gradients_list, row);
dnd_gradient = (gradient_t *) list->data;
return TRUE;
}
return FALSE;
}
static gradient_t *
gradient_editor_drag_gradient (GtkWidget *widget,
gpointer data)
{
return dnd_gradient;
}
static void
gradient_editor_drop_gradient (GtkWidget *widget,
gradient_t *gradient,
@ -1476,7 +1528,7 @@ ed_list_item_update (GtkWidget *widget,
{
/* Update current gradient */
GSList* tmp = g_slist_nth (gradients_list,row);
curr_gradient = (gradient_t *)(tmp->data);
curr_gradient = dnd_gradient = (gradient_t *)(tmp->data);
ed_update_editor (GRAD_UPDATE_PREVIEW | GRAD_RESET_CONTROL);
}
@ -1610,7 +1662,7 @@ ed_do_new_gradient_callback (GtkWidget *widget,
gtk_clist_thaw (GTK_CLIST (g_editor->clist));
gtk_clist_moveto (GTK_CLIST (g_editor->clist), pos, 0, 0.5, 0.0);
curr_gradient = grad;
curr_gradient = dnd_gradient = grad;
ed_update_editor (GRAD_UPDATE_PREVIEW | GRAD_RESET_CONTROL);
@ -1700,7 +1752,7 @@ ed_do_copy_gradient_callback (GtkWidget *widget,
grad, pos, TRUE);
gtk_clist_thaw (GTK_CLIST (g_editor->clist));
curr_gradient = grad;
curr_gradient = dnd_gradient = grad;
ed_update_editor (GRAD_UPDATE_PREVIEW | GRAD_RESET_CONTROL);
@ -2779,8 +2831,8 @@ control_button_press (gint x,
case GRAD_DRAG_MIDDLE:
if (state & GDK_SHIFT_MASK)
{
control_extend_selection(seg, xpos);
ed_update_editor(GRAD_UPDATE_CONTROL);
control_extend_selection (seg, xpos);
ed_update_editor (GRAD_UPDATE_CONTROL);
}
else
{

View file

@ -47,7 +47,8 @@
static void gradient_change_callbacks (GradientSelect *gsp,
gboolean closing);
static gradient_t * gradient_select_drag_gradient (GtkWidget *widget,
gpointer data);
static void gradient_select_drop_gradient (GtkWidget *widget,
gradient_t *gradient,
gpointer data);
@ -57,6 +58,9 @@ static void gradient_select_gradient_changed (GimpContext *context,
static void gradient_select_select (GradientSelect *gsp,
gradient_t *gradient);
static gint gradient_select_button_press (GtkWidget *widget,
GdkEventButton *bevent,
gpointer data);
static void gradient_select_list_item_update (GtkWidget *widget,
gint row,
gint column,
@ -131,6 +135,7 @@ gradient_select_new (gchar *title,
gsp = g_new (GradientSelect, 1);
gsp->callback_name = NULL;
gsp->dnd_gradient = NULL;
/* The shell */
gsp->shell = gimp_dialog_new (title ? title : _("Gradient Selection"),
@ -193,20 +198,16 @@ gradient_select_new (gchar *title,
gsp->clist = gtk_clist_new (2);
gtk_clist_set_shadow_type (GTK_CLIST (gsp->clist), GTK_SHADOW_IN);
gtk_clist_set_row_height (GTK_CLIST (gsp->clist), 18);
gtk_clist_set_selection_mode (GTK_CLIST (gsp->clist), GTK_SELECTION_BROWSE);
gtk_clist_set_column_width (GTK_CLIST (gsp->clist), 0, 52);
gtk_clist_set_column_title (GTK_CLIST (gsp->clist), 0, _("Gradient"));
gtk_clist_set_column_title (GTK_CLIST (gsp->clist), 1, _("Name"));
gtk_clist_column_titles_show (GTK_CLIST (gsp->clist));
/* dnd stuff */
gtk_drag_dest_set (gsp->clist,
GTK_DEST_DEFAULT_ALL,
clist_target_table, clist_n_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_dest_set (gsp->clist, gradient_select_drop_gradient, gsp);
gtk_clist_column_titles_show (GTK_CLIST (gsp->clist));
gtk_clist_set_use_drag_icons (GTK_CLIST (gsp->clist), FALSE);
gtk_clist_column_titles_passive (GTK_CLIST (gsp->clist));
gtk_container_add (GTK_CONTAINER (vbox), scrolled_win);
gtk_container_add (GTK_CONTAINER (scrolled_win), gsp->clist);
@ -231,13 +232,30 @@ gradient_select_new (gchar *title,
gtk_widget_show (vbox);
gtk_widget_show (gsp->shell);
gtk_signal_connect (GTK_OBJECT (gsp->clist), "button_press_event",
GTK_SIGNAL_FUNC (gradient_select_button_press),
(gpointer) gsp);
gtk_signal_connect (GTK_OBJECT (gsp->clist), "select_row",
GTK_SIGNAL_FUNC (gradient_select_list_item_update),
(gpointer) gsp);
gtk_signal_connect (GTK_OBJECT (gsp->context), "gradient_changed",
GTK_SIGNAL_FUNC (gradient_select_gradient_changed),
gsp);
(gpointer) gsp);
/* dnd stuff */
gtk_drag_source_set (gsp->clist,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
clist_target_table, clist_n_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_source_set (gsp->clist, gradient_select_drag_gradient, gsp);
gtk_drag_dest_set (gsp->clist,
GTK_DEST_DEFAULT_ALL,
clist_target_table, clist_n_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_dest_set (gsp->clist, gradient_select_drop_gradient, gsp);
if (active)
gradient_select_select (gsp, active);
@ -466,6 +484,17 @@ gradient_select_update_all (gint row,
* Local functions
*/
static gradient_t *
gradient_select_drag_gradient (GtkWidget *widget,
gpointer data)
{
GradientSelect *gsp;
gsp = (GradientSelect *) data;
return gsp->dnd_gradient;
}
static void
gradient_select_drop_gradient (GtkWidget *widget,
gradient_t *gradient,
@ -489,6 +518,8 @@ gradient_select_gradient_changed (GimpContext *context,
if (gsp->callback_name)
gradient_change_callbacks (gsp, FALSE);
gsp->dnd_gradient = gradient;
}
}
@ -511,6 +542,34 @@ gradient_select_select (GradientSelect *gsp,
}
}
static gint
gradient_select_button_press (GtkWidget *widget,
GdkEventButton *bevent,
gpointer data)
{
GradientSelect *gsp;
gsp = (GradientSelect *) data;
if (bevent->button == 2)
{
GSList *list;
gint row;
gint column;
gtk_clist_get_selection_info (GTK_CLIST (gsp->clist),
bevent->x, bevent->y,
&row, &column);
list = g_slist_nth (gradients_list, row);
gsp->dnd_gradient = (gradient_t *) list->data;
return TRUE;
}
return FALSE;
}
static void
gradient_select_list_item_update (GtkWidget *widget,
gint row,
@ -529,6 +588,11 @@ gradient_select_list_item_update (GtkWidget *widget,
gimp_context_set_gradient (gsp->context, (gradient_t *) list->data);
gtk_signal_handler_unblock_by_data (GTK_OBJECT (gsp->context), gsp);
gsp->dnd_gradient = (gradient_t *) list->data;
if (gsp->callback_name)
gradient_change_callbacks (gsp, FALSE);
}
static void

View file

@ -37,6 +37,8 @@ struct _GradientSelect
gchar *callback_name;
gint sample_size;
gradient_t *dnd_gradient;
GdkColor black;
GdkGC *gc;
};

View file

@ -24,7 +24,6 @@
#include "gimpdnd.h"
#include "gradient_select.h"
#include "indicator_area.h"
#include "interface.h" /* for tool_tips */
#include "pattern_select.h"
#include "libgimp/gimpintl.h"
@ -117,7 +116,7 @@ gradient_preview_drop_gradient (GtkWidget *widget,
}
GtkWidget *
indicator_area_create ()
indicator_area_create (void)
{
GimpContext *context;
GtkWidget *indicator_table;
@ -131,12 +130,12 @@ indicator_area_create ()
brush_preview =
gimp_context_preview_new (GCP_BRUSH,
CELL_SIZE, CELL_SIZE,
TRUE, FALSE, FALSE,
TRUE, FALSE,
(GimpDndDropBrushFunc) brush_preview_drop_brush,
NULL);
gtk_tooltips_set_tip (tool_tips, brush_preview,
_("The active brush.\n"
"Click to open the Brushes Dialog."), NULL);
gimp_help_set_help_data (brush_preview,
_("The active brush.\n"
"Click to open the Brushes Dialog."), NULL);
gtk_signal_connect (GTK_OBJECT (brush_preview), "clicked",
GTK_SIGNAL_FUNC (brush_preview_clicked),
NULL);
@ -149,12 +148,12 @@ indicator_area_create ()
pattern_preview =
gimp_context_preview_new (GCP_PATTERN,
CELL_SIZE, CELL_SIZE,
TRUE, FALSE, FALSE,
TRUE, FALSE,
(GimpDndDropPatternFunc) pattern_preview_drop_pattern,
NULL);
gtk_tooltips_set_tip (tool_tips, pattern_preview,
_("The active pattern.\n"
"Click to open the Patterns Dialog."), NULL);
gimp_help_set_help_data (pattern_preview,
_("The active pattern.\n"
"Click to open the Patterns Dialog."), NULL);
gtk_signal_connect (GTK_OBJECT (pattern_preview), "clicked",
GTK_SIGNAL_FUNC (pattern_preview_clicked),
NULL);
@ -168,13 +167,12 @@ indicator_area_create ()
gimp_context_preview_new (GCP_GRADIENT,
GRAD_CELL_WIDTH,
GRAD_CELL_HEIGHT,
TRUE, FALSE, FALSE,
TRUE, FALSE,
(GimpDndDropGradientFunc) gradient_preview_drop_gradient,
NULL);
gtk_tooltips_set_tip (tool_tips, gradient_preview,
_("The active gradient.\n"
"Click to open the Gradients Dialog."),
NULL);
gimp_help_set_help_data (gradient_preview,
_("The active gradient.\n"
"Click to open the Gradients Dialog."), NULL);
gtk_signal_connect (GTK_OBJECT (gradient_preview), "clicked",
GTK_SIGNAL_FUNC (gradient_preview_clicked),
NULL);

View file

@ -21,19 +21,19 @@
#include <stdio.h>
#include "appenv.h"
#include "devices.h"
#include "dialog_handler.h"
#include "gimpcontextpreview.h"
#include "gimpdnd.h"
#include "devices.h"
#include "interface.h"
#include "gimpbrushlist.h"
#include "gimpcontext.h"
#include "gimprc.h"
#include "gimpui.h"
#include "gradient.h"
#include "gradient_header.h"
#include "interface.h"
#include "session.h"
#include "tools.h"
#include "dialog_handler.h"
#include "libgimp/gimpintl.h"
#include "libgimp/gimpenv.h"
@ -798,7 +798,7 @@ device_status_create (void)
gtk_pixmap_new (create_tool_pixmap (deviceD->table, RECT_SELECT),
NULL);
gtk_drag_source_set (deviceD->eventboxes[i],
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
tool_target_table, n_tool_targets,
GDK_ACTION_COPY);
gimp_dnd_tool_source_set (deviceD->eventboxes[i],
@ -826,7 +826,7 @@ device_status_create (void)
gtk_preview_size (GTK_PREVIEW (deviceD->colors[i]),
CELL_SIZE, CELL_SIZE);
gtk_drag_source_set (deviceD->colors[i],
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_area_target_table, n_color_area_targets,
GDK_ACTION_COPY);
gimp_dnd_color_source_set (deviceD->colors[i],
@ -849,7 +849,7 @@ device_status_create (void)
deviceD->brushes[i] =
gimp_context_preview_new (GCP_BRUSH,
CELL_SIZE, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_brush),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->brushes[i],
@ -861,7 +861,7 @@ device_status_create (void)
deviceD->patterns[i] =
gimp_context_preview_new (GCP_PATTERN,
CELL_SIZE, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_pattern),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->patterns[i],
@ -873,7 +873,7 @@ device_status_create (void)
deviceD->gradients[i] =
gimp_context_preview_new (GCP_GRADIENT,
CELL_SIZE * 2, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_gradient),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->gradients[i],
@ -1009,9 +1009,9 @@ device_status_update (guint32 deviceid)
gtk_widget_show (deviceD->tools[i]);
gtk_widget_show (deviceD->eventboxes[i]);
gtk_tooltips_set_tip (tool_tips,deviceD->eventboxes[i],
tool_info[(int) gimp_context_get_tool (device_info->context)].tool_desc,
NULL);
gimp_help_set_help_data (deviceD->eventboxes[i],
tool_info[(gint) gimp_context_get_tool (device_info->context)].tool_desc,
tool_info[(gint) gimp_context_get_tool (device_info->context)].private_tip);
for (j = 0; j < CELL_SIZE * 3; j += 3)
{
@ -1033,7 +1033,7 @@ device_status_update (guint32 deviceid)
buffer[j+1],
buffer[j+2]);
gtk_tooltips_set_tip (tool_tips, deviceD->colors[i], ttbuf, NULL);
gimp_help_set_help_data (deviceD->colors[i], ttbuf, NULL);
if (gimp_context_get_brush (device_info->context))
{

View file

@ -15,9 +15,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include <stdlib.h>
#include <string.h>
#include "gdk/gdkkeysyms.h"
#include <gdk/gdkkeysyms.h>
#include "appenv.h"
#include "buildmenu.h"
#include "colormaps.h"
@ -31,7 +30,6 @@
#include "gimprc.h"
#include "gimpui.h"
#include "image_render.h"
#include "interface.h"
#include "layers_dialog.h"
#include "layers_dialogP.h"
#include "lc_dialogP.h"
@ -247,12 +245,12 @@ static MenuItem option_items[] =
};
/* the ops buttons */
static OpsButtonCallback raise_layers_ext_callbacks[] =
static GtkSignalFunc raise_layers_ext_callbacks[] =
{
layers_dialog_raise_layer_to_top_callback, NULL, NULL, NULL
};
static OpsButtonCallback lower_layers_ext_callbacks[] =
static GtkSignalFunc lower_layers_ext_callbacks[] =
{
layers_dialog_lower_layer_to_bottom_callback, NULL, NULL, NULL
};
@ -347,8 +345,13 @@ layers_dialog_create (void)
}
/* The main vbox */
layersD->vbox = vbox = gtk_vbox_new (FALSE, 1);
layersD->vbox = gtk_event_box_new ();
gimp_help_set_help_data (layersD->vbox, NULL, "dialogs/layers/layers.html");
vbox = gtk_vbox_new (FALSE, 1);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 2);
gtk_container_add (GTK_CONTAINER (layersD->vbox), vbox);
/* The layers commands pulldown menu */
menus_get_layers_menu (&layersD->ops_menu, &layersD->accel_group);
@ -359,15 +362,16 @@ layers_dialog_create (void)
label = gtk_label_new (_("Mode:"));
gtk_box_pack_start (GTK_BOX (util_box), label, FALSE, FALSE, 2);
gtk_widget_show (label);
menu = build_menu (option_items, NULL);
layersD->mode_option_menu = gtk_option_menu_new ();
gtk_box_pack_start (GTK_BOX (util_box), layersD->mode_option_menu,
FALSE, FALSE, 2);
gtk_widget_show (label);
gtk_widget_show (layersD->mode_option_menu);
gtk_option_menu_set_menu (GTK_OPTION_MENU (layersD->mode_option_menu), menu);
gtk_widget_show (layersD->mode_option_menu);
gimp_help_set_help_data (layersD->mode_option_menu, NULL, "#paint_mode_menu");
layersD->preserve_trans =
gtk_check_button_new_with_label (_("Keep Trans."));
@ -377,6 +381,9 @@ layers_dialog_create (void)
(GtkSignalFunc) preserve_trans_update,
layersD);
gtk_widget_show (layersD->preserve_trans);
gimp_help_set_help_data (layersD->preserve_trans, NULL, "#keep_trans_button");
gtk_widget_show (util_box);
/* Opacity scale */
@ -398,6 +405,8 @@ layers_dialog_create (void)
layersD);
gtk_widget_show (slider);
gimp_help_set_help_data (slider, NULL, "#opacity_scale");
gtk_widget_show (util_box);
/* The layers listbox */
@ -424,7 +433,7 @@ layers_dialog_create (void)
gtk_widget_show (layersD->scrolled_win);
/* The ops buttons */
button_box = ops_button_box_new (lc_dialog->shell, tool_tips,
button_box = ops_button_box_new (lc_dialog->shell,
layers_ops_buttons, OPS_BUTTON_NORMAL);
gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, FALSE, 2);
gtk_widget_show (button_box);
@ -465,6 +474,7 @@ layers_dialog_create (void)
NULL);
gtk_widget_show (vbox);
gtk_widget_show (layersD->vbox);
return layersD->vbox;
}
@ -2028,7 +2038,7 @@ layer_widget_create (GImage *gimage,
/* dnd source */
gtk_drag_source_set (layer_widget->mask_preview,
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
layer_mask_target_table, n_layer_mask_targets,
GDK_ACTION_MOVE | GDK_ACTION_COPY);
@ -2078,7 +2088,7 @@ layer_widget_create (GImage *gimage,
/* dnd source */
gtk_drag_source_set (list_item,
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
layer_target_table, n_layer_targets,
GDK_ACTION_MOVE | GDK_ACTION_COPY);

View file

@ -115,6 +115,7 @@ struct _PaletteDialog
gboolean color_notebook_active;
PaletteEntries *entries;
PaletteEntry *color;
PaletteEntry *dnd_color;
GdkGC *gc;
guint entry_sig_id;
gfloat zoom_factor; /* range from 0.1 to 4.0 */
@ -942,7 +943,7 @@ palette_set_active_color (gint r,
switch (state)
{
case COLOR_NEW:
top_level_edit_palette->color =
top_level_edit_palette->color =
palette_entries_add_entry (top_level_edit_palette->entries,
_("Untitled"), r, g, b);
palette_update_all (top_level_edit_palette->entries);
@ -1163,8 +1164,9 @@ palette_dialog_delete_entry_callback (GtkWidget *widget,
}
if (palette->entries->n_colors == 0)
palette->color = palette_entries_add_entry (palette->entries,
_("Black"), 0, 0, 0);
palette->color =
palette_entries_add_entry (palette->entries,
_("Black"), 0, 0, 0);
palette_update_all (palette->entries);
}
@ -1238,9 +1240,15 @@ palette_dialog_color_area_events (GtkWidget *widget,
row = (bevent->y - 1) / entry_height;
pos = row * palette->columns + col;
tmp_link = g_slist_nth (palette->entries->colors, pos);
if (tmp_link)
palette->dnd_color = tmp_link->data;
else
palette->dnd_color = NULL;
if ((bevent->button == 1 || bevent->button == 3) && palette->entries)
{
tmp_link = g_slist_nth (palette->entries->colors, pos);
if (tmp_link)
{
if (palette->color)
@ -1279,7 +1287,8 @@ palette_dialog_color_area_events (GtkWidget *widget,
gtk_entry_set_text (GTK_ENTRY (palette->color_name),
palette->color->name);
gtk_widget_set_sensitive (palette->color_name, TRUE);
/* palette_update_current_entry (palette); */
/* palette_update_current_entry (palette); */
if (bevent->button == 3)
{
/* Popup the edit menu */
@ -1924,11 +1933,15 @@ palette_dialog_drag_color (GtkWidget *widget,
palette = (PaletteDialog *) data;
if (palette && palette->entries && palette->color)
if (palette && palette->entries && palette->dnd_color)
{
*r = (guchar) palette->color->color[0];
*g = (guchar) palette->color->color[1];
*b = (guchar) palette->color->color[2];
*r = (guchar) palette->dnd_color->color[0];
*g = (guchar) palette->dnd_color->color[1];
*b = (guchar) palette->dnd_color->color[2];
}
else
{
*r = *g = *b = 0;
}
}
@ -1974,17 +1987,17 @@ palette_dialog_new (gint vert)
GtkStyle *style;
palette = g_new (PaletteDialog, 1);
palette->entries = default_palette_entries;
palette->color = NULL;
palette->color_notebook = NULL;
palette->entries = default_palette_entries;
palette->color = NULL;
palette->dnd_color = NULL;
palette->color_notebook = NULL;
palette->color_notebook_active = FALSE;
palette->zoom_factor = 1.0;
palette->xzoom_factor = 1.0;
palette->last_width = 0;
palette->columns = COLUMNS;
palette->columns_valid = TRUE;
palette->freeze_update = FALSE;
palette->zoom_factor = 1.0;
palette->xzoom_factor = 1.0;
palette->last_width = 0;
palette->columns = COLUMNS;
palette->columns_valid = TRUE;
palette->freeze_update = FALSE;
if (!vert)
{
@ -2066,7 +2079,7 @@ palette_dialog_new (gint vert)
/* dnd stuff */
gtk_drag_source_set (palette_region,
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_palette_target_table, n_color_palette_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (palette_region, palette_dialog_drag_color, palette);

View file

@ -40,7 +40,6 @@
#include "gimpset.h"
#include "gimpui.h"
#include "image_render.h"
#include "interface.h"
#include "lc_dialogP.h"
#include "menus.h"
#include "ops_buttons.h"
@ -74,9 +73,10 @@ typedef struct _PathsDialog PathsDialog;
struct _PathsDialog
{
GtkWidget *paths_list;
GtkWidget *vbox;
GtkWidget *ops_menu;
GtkWidget *paths_list;
GtkWidget *ops_menu;
GtkAccelGroup *accel_group;
gdouble ratio;
@ -155,7 +155,7 @@ static void paths_dialog_null_callback (GtkWidget *, gpointer);
static void path_close (PATHP);
/* the ops buttons */
static OpsButtonCallback to_path_ext_callbacks[] =
static GtkSignalFunc to_path_ext_callbacks[] =
{
paths_dialog_advanced_to_path_callback, /* SHIFT */
paths_dialog_null_callback, /* CTRL */
@ -195,16 +195,20 @@ static OpsButton paths_ops_buttons[] =
static OpsButton point_ops_buttons[] =
{
{ pennorm_xpm, paths_dialog_new_point_callback, NULL,
N_("New Point"), NULL,
N_("New Point"),
"#new_point_button",
NULL, 0 },
{ penadd_xpm, paths_dialog_add_point_callback, NULL,
N_("Add Point"), NULL,
N_("Add Point"),
"#add_point_button",
NULL, 0 },
{ pendel_xpm, paths_dialog_delete_point_callback, NULL,
N_("Delete Point"), NULL,
N_("Delete Point"),
"#delete_point_button",
NULL, 0 },
{ penedit_xpm, paths_dialog_edit_point_callback, NULL,
N_("Edit Point"), NULL,
N_("Edit Point"),
"#edit_point_button",
NULL, 0 },
{ NULL, NULL, NULL, NULL, NULL, NULL, 0 }
};
@ -299,11 +303,17 @@ paths_dialog_create (void)
paths_dialog = g_new0 (PathsDialog, 1);
/* The paths box */
paths_dialog->vbox = vbox = gtk_vbox_new (FALSE, 1);
paths_dialog->vbox = gtk_event_box_new ();
gimp_help_set_help_data (paths_dialog->vbox, NULL,
"dialogs/paths/paths.html");
vbox = gtk_vbox_new (FALSE, 1);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 2);
gtk_container_add (GTK_CONTAINER (paths_dialog->vbox), vbox);
/* The point operations */
button_box = ops_button_box_new (lc_dialog->shell, tool_tips,
button_box = ops_button_box_new (lc_dialog->shell,
point_ops_buttons, OPS_BUTTON_RADIO);
/* gtk_container_set_border_width (GTK_CONTAINER (button_box), 2); */
gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, TRUE, 2);
@ -314,7 +324,7 @@ paths_dialog_create (void)
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_widget_set_usize (scrolled_win, LIST_WIDTH, LIST_HEIGHT);
gtk_box_pack_start(GTK_BOX(vbox), scrolled_win, TRUE, TRUE, 2);
gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 2);
paths_dialog->paths_list = paths_list = gtk_clist_new (2);
gtk_signal_connect (GTK_OBJECT (vbox), "destroy",
@ -334,28 +344,30 @@ paths_dialog_create (void)
paths_dialog);
gtk_container_set_focus_vadjustment (GTK_CONTAINER (paths_list),
gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled_win)));
GTK_WIDGET_UNSET_FLAGS (GTK_SCROLLED_WINDOW (scrolled_win)->vscrollbar, GTK_CAN_FOCUS);
GTK_WIDGET_UNSET_FLAGS (GTK_SCROLLED_WINDOW (scrolled_win)->vscrollbar,
GTK_CAN_FOCUS);
paths_dialog->selsigid =
gtk_signal_connect (GTK_OBJECT(paths_list), "select_row",
gtk_signal_connect (GTK_OBJECT (paths_list), "select_row",
GTK_SIGNAL_FUNC (paths_select_row),
NULL);
gtk_signal_connect (GTK_OBJECT(paths_list), "unselect_row",
gtk_signal_connect (GTK_OBJECT (paths_list), "unselect_row",
GTK_SIGNAL_FUNC (paths_unselect_row),
NULL);
gtk_widget_show (scrolled_win);
gtk_widget_show (paths_list);
gtk_signal_connect (GTK_OBJECT(vbox),"realize",
gtk_signal_connect (GTK_OBJECT (vbox),"realize",
GTK_SIGNAL_FUNC (paths_dialog_realized),
NULL);
gtk_widget_show (vbox);
gtk_widget_show (paths_dialog->vbox);
/* The ops buttons */
button_box = ops_button_box_new (lc_dialog->shell, tool_tips,
button_box = ops_button_box_new (lc_dialog->shell,
paths_ops_buttons, OPS_BUTTON_NORMAL);
gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, FALSE, 2);
gtk_widget_show (button_box);
@ -2338,15 +2350,6 @@ file_cancel_callback (GtkWidget *widget,
gtk_widget_hide (file_dlg);
}
static void
path_load_save_help_func (gpointer data)
{
if (load_store)
gimp_help ("paths/dialogs/import_path.html");
else
gimp_help ("paths/dialogs/export_path.html");
}
static void
make_file_dlg (gpointer data)
{
@ -2366,7 +2369,7 @@ make_file_dlg (gpointer data)
NULL);
/* Connect the "F1" help key */
gimp_help_connect_help_accel (file_dlg, path_load_save_help_func, NULL);
gimp_help_connect_help_accel (file_dlg, gimp_standard_help_func, NULL);
}
void
@ -2384,6 +2387,8 @@ paths_dialog_import_path_callback (GtkWidget *widget,
return;
}
gimp_help_set_help_data (file_dlg, NULL, "paths/dialogs/import_path.html");
gtk_window_set_title (GTK_WINDOW (file_dlg), _("Load Path"));
load_store = 1;
gtk_widget_show (file_dlg);
@ -2404,6 +2409,8 @@ paths_dialog_export_path_callback (GtkWidget *widget,
return;
}
gimp_help_set_help_data (file_dlg, NULL, "paths/dialogs/export_path.html");
gtk_window_set_title (GTK_WINDOW (file_dlg), _("Store Path"));
load_store = 0;
gtk_widget_show (file_dlg);

View file

@ -51,6 +51,8 @@
static void pattern_change_callbacks (PatternSelect *psp,
gboolean closing);
static GPattern * pattern_select_drag_pattern (GtkWidget *widget,
gpointer data);
static void pattern_select_drop_pattern (GtkWidget *widget,
GPattern *pattern,
gpointer data);
@ -148,6 +150,7 @@ pattern_select_new (gchar *title,
psp = g_new (PatternSelect, 1);
psp->preview = NULL;
psp->callback_name = NULL;
psp->dnd_pattern = NULL;
psp->pattern_popup = NULL;
psp->popup_timeout_tag = 0;
psp->old_col = 0;
@ -266,6 +269,12 @@ pattern_select_new (gchar *title,
psp);
/* dnd stuff */
gtk_drag_source_set (psp->preview,
GDK_BUTTON2_MASK,
preview_target_table, preview_n_targets,
GDK_ACTION_COPY);
gimp_dnd_pattern_source_set (psp->preview, pattern_select_drag_pattern, psp);
gtk_drag_dest_set (psp->preview,
GTK_DEST_DEFAULT_ALL,
preview_target_table, preview_n_targets,
@ -407,6 +416,17 @@ patterns_check_dialogs (void)
* Local functions
*/
static GPattern *
pattern_select_drag_pattern (GtkWidget *widget,
gpointer data)
{
PatternSelect *psp;
psp = (PatternSelect *) data;
return psp->dnd_pattern;
}
static void
pattern_select_drop_pattern (GtkWidget *widget,
GPattern *pattern,
@ -883,15 +903,21 @@ pattern_select_events (GtkWidget *widget,
case GDK_BUTTON_PRESS:
bevent = (GdkEventButton *) event;
col = bevent->x / psp->cell_width;
row = (bevent->y + psp->scroll_offset) / psp->cell_height;
index = row * psp->NUM_PATTERN_COLUMNS + col;
pattern = pattern_list_get_pattern_by_index (pattern_list, index);
if (pattern)
psp->dnd_pattern = pattern;
else
psp->dnd_pattern = gimp_context_get_pattern (psp->context);
if (bevent->button == 1)
{
col = bevent->x / psp->cell_width;
row = (bevent->y + psp->scroll_offset) / psp->cell_height;
index = row * psp->NUM_PATTERN_COLUMNS + col;
/* Get the pattern and display the popup pattern preview */
if ((pattern = pattern_list_get_pattern_by_index (pattern_list,
index)))
if (pattern)
{
gdk_pointer_grab (psp->preview->window, FALSE,
(GDK_POINTER_MOTION_HINT_MASK |

View file

@ -48,6 +48,8 @@ struct _PatternSelect
/* Context to store the current pattern */
GimpContext *context;
GPattern *dnd_pattern;
/* Some variables to keep the GUI consistent */
gint cell_width;
gint cell_height;

View file

@ -25,7 +25,6 @@
#include "gimprc.h"
#include "gimpui.h"
#include "image_render.h"
#include "interface.h"
#include "lc_dialog.h"
#include "layer_select.h"
#include "session.h"
@ -279,9 +278,9 @@ file_prefs_ok_callback (GtkWidget *widget,
prefs_dlg = NULL;
if (show_tool_tips)
gtk_tooltips_enable (tool_tips);
gimp_help_enable_tooltips ();
else
gtk_tooltips_disable (tool_tips);
gimp_help_disable_tooltips ();
/* This needs modification to notify the user of which simply cannot be
* changed on the fly. Currently it ignores these options if only OK is

View file

@ -24,7 +24,6 @@
#include "gimpdnd.h"
#include "gradient_select.h"
#include "indicator_area.h"
#include "interface.h" /* for tool_tips */
#include "pattern_select.h"
#include "libgimp/gimpintl.h"
@ -117,7 +116,7 @@ gradient_preview_drop_gradient (GtkWidget *widget,
}
GtkWidget *
indicator_area_create ()
indicator_area_create (void)
{
GimpContext *context;
GtkWidget *indicator_table;
@ -131,12 +130,12 @@ indicator_area_create ()
brush_preview =
gimp_context_preview_new (GCP_BRUSH,
CELL_SIZE, CELL_SIZE,
TRUE, FALSE, FALSE,
TRUE, FALSE,
(GimpDndDropBrushFunc) brush_preview_drop_brush,
NULL);
gtk_tooltips_set_tip (tool_tips, brush_preview,
_("The active brush.\n"
"Click to open the Brushes Dialog."), NULL);
gimp_help_set_help_data (brush_preview,
_("The active brush.\n"
"Click to open the Brushes Dialog."), NULL);
gtk_signal_connect (GTK_OBJECT (brush_preview), "clicked",
GTK_SIGNAL_FUNC (brush_preview_clicked),
NULL);
@ -149,12 +148,12 @@ indicator_area_create ()
pattern_preview =
gimp_context_preview_new (GCP_PATTERN,
CELL_SIZE, CELL_SIZE,
TRUE, FALSE, FALSE,
TRUE, FALSE,
(GimpDndDropPatternFunc) pattern_preview_drop_pattern,
NULL);
gtk_tooltips_set_tip (tool_tips, pattern_preview,
_("The active pattern.\n"
"Click to open the Patterns Dialog."), NULL);
gimp_help_set_help_data (pattern_preview,
_("The active pattern.\n"
"Click to open the Patterns Dialog."), NULL);
gtk_signal_connect (GTK_OBJECT (pattern_preview), "clicked",
GTK_SIGNAL_FUNC (pattern_preview_clicked),
NULL);
@ -168,13 +167,12 @@ indicator_area_create ()
gimp_context_preview_new (GCP_GRADIENT,
GRAD_CELL_WIDTH,
GRAD_CELL_HEIGHT,
TRUE, FALSE, FALSE,
TRUE, FALSE,
(GimpDndDropGradientFunc) gradient_preview_drop_gradient,
NULL);
gtk_tooltips_set_tip (tool_tips, gradient_preview,
_("The active gradient.\n"
"Click to open the Gradients Dialog."),
NULL);
gimp_help_set_help_data (gradient_preview,
_("The active gradient.\n"
"Click to open the Gradients Dialog."), NULL);
gtk_signal_connect (GTK_OBJECT (gradient_preview), "clicked",
GTK_SIGNAL_FUNC (gradient_preview_clicked),
NULL);

View file

@ -90,6 +90,8 @@ static gboolean toolbox_drag_drop (GtkWidget *,
gint,
gint,
guint);
static ToolType toolbox_drag_tool (GtkWidget *,
gpointer);
static void toolbox_drop_tool (GtkWidget *,
ToolType,
gpointer);
@ -111,11 +113,8 @@ static int pixmap_colors[8][3] =
#define ROWS 8
#define MARGIN 2
/* global variables */
GtkTooltips * tool_tips;
/* local variables */
static GdkColor colors[12];
static GdkColor colors[11];
static GtkWidget * toolbox_shell = NULL;
static GtkTargetEntry toolbox_target_table[] =
@ -131,6 +130,13 @@ static GtkTargetEntry toolbox_target_table[] =
static guint toolbox_n_targets = (sizeof (toolbox_target_table) /
sizeof (toolbox_target_table[0]));
static GtkTargetEntry tool_target_table[] =
{
GIMP_TARGET_TOOL
};
static guint tool_n_targets = (sizeof (tool_target_table) /
sizeof (tool_target_table[0]));
static GtkTargetEntry display_target_table[] =
{
GIMP_TARGET_LAYER,
@ -237,12 +243,6 @@ allocate_colors (GtkWidget *parent)
colors[10] = parent->style->bg[GTK_STATE_PRELIGHT];
gdk_color_alloc (colormap, &colors[10]);
/* postit yellow (khaki) as background for tooltips */
colors[11].red = 61669;
colors[11].green = 59113;
colors[11].blue = 35979;
gdk_color_alloc (colormap, &colors[11]);
}
static void
@ -263,6 +263,8 @@ create_indicator_area (GtkWidget *parent)
gtk_container_set_border_width (GTK_CONTAINER (alignment), 3);
gtk_container_add (GTK_CONTAINER (frame), alignment);
gimp_help_set_help_data (alignment, NULL, "#indicator_area");
ind_area = indicator_area_create ();
gtk_container_add (GTK_CONTAINER (alignment), ind_area);
gtk_widget_show (ind_area);
@ -295,13 +297,15 @@ create_color_area (GtkWidget *parent)
gtk_container_set_border_width (GTK_CONTAINER (alignment), 3);
gtk_container_add (GTK_CONTAINER (frame), alignment);
gimp_help_set_help_data (alignment, NULL, "#color_area");
col_area = color_area_create (54, 42, default_pixmap, swap_pixmap);
gtk_container_add (GTK_CONTAINER (alignment), col_area);
gtk_tooltips_set_tip (tool_tips, col_area,
_("Foreground & background colors. The black "
"and white squares reset colors. The arrows swap colors. Double "
"click to select a color from a colorrequester."),
NULL);
gimp_help_set_help_data
(col_area,
_("Foreground & background colors. The black "
"and white squares reset colors. The arrows swap colors. Double "
"click to select a color from a colorrequester."), NULL);
gtk_widget_show (col_area);
gtk_widget_show (alignment);
gtk_widget_show (frame);
@ -381,9 +385,17 @@ create_tools (GtkWidget *parent)
GTK_SIGNAL_FUNC (tools_button_press),
(gpointer) tool_info[j].tool_id);
gtk_tooltips_set_tip (tool_tips, button,
gettext(tool_info[j].tool_desc),
tool_info[j].private_tip);
/* dnd stuff */
gtk_drag_source_set (tool_info[j].tool_widget,
GDK_BUTTON2_MASK,
tool_target_table, tool_n_targets,
GDK_ACTION_COPY);
gimp_dnd_tool_source_set (tool_info[j].tool_widget,
toolbox_drag_tool, (gpointer) j);
gimp_help_set_help_data (button,
gettext(tool_info[j].tool_desc),
tool_info[j].private_tip);
gtk_widget_show (pixmap);
gtk_widget_show (alignment);
@ -563,12 +575,9 @@ create_toolbox (void)
allocate_colors (main_vbox);
/* tooltips */
tool_tips = gtk_tooltips_new ();
gtk_tooltips_set_colors (tool_tips,
&colors[11],
&main_vbox->style->fg[GTK_STATE_NORMAL]);
gimp_help_init ();
if (!show_tool_tips)
gtk_tooltips_disable (tool_tips);
gimp_help_disable_tooltips ();
/* Build the menu bar with menus */
menus_get_toolbox_menubar (&menubar, &table);
@ -592,7 +601,7 @@ create_toolbox (void)
create_tools (wbox);
create_color_area (wbox);
if (show_indicators && (!no_data) )
create_indicator_area (wbox);
create_indicator_area (wbox);
gtk_widget_show (window);
toolbox_set_drag_dest (window);
@ -612,8 +621,7 @@ toolbox_free (void)
if (!tool_info[i].icon_data)
gtk_object_sink (GTK_OBJECT (tool_info[i].tool_widget));
}
gtk_object_destroy (GTK_OBJECT (tool_tips));
gtk_object_unref (GTK_OBJECT (tool_tips));
gimp_help_free ();
}
void
@ -645,20 +653,20 @@ create_display_shell (GDisplay* gdisp,
GSList *group = NULL;
int n_width, n_height;
int s_width, s_height;
int scalesrc, scaledest;
int contextid;
gint n_width, n_height;
gint s_width, s_height;
gint scalesrc, scaledest;
gint contextid;
{
/* adjust the initial scale -- so that window fits on screen */
s_width = gdk_screen_width ();
s_width = gdk_screen_width ();
s_height = gdk_screen_height ();
scalesrc = gdisp->scale & 0x00ff;
scaledest = gdisp->scale >> 8;
n_width = (width * scaledest) / scalesrc;
n_width = (width * scaledest) / scalesrc;
n_height = (height * scaledest) / scalesrc;
/* Limit to the size of the screen... */
@ -688,7 +696,12 @@ create_display_shell (GDisplay* gdisp,
gtk_window_set_wmclass (GTK_WINDOW (gdisp->shell), "image_window", "Gimp");
gtk_window_set_policy (GTK_WINDOW (gdisp->shell), TRUE, TRUE, TRUE);
gtk_object_set_user_data (GTK_OBJECT (gdisp->shell), (gpointer) gdisp);
gtk_widget_set_events (gdisp->shell, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK);
gtk_widget_set_events (gdisp->shell,
GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK |
GDK_KEY_PRESS_MASK |
GDK_KEY_RELEASE_MASK);
gtk_signal_connect (GTK_OBJECT (gdisp->shell), "delete_event",
GTK_SIGNAL_FUNC (gdisplay_delete),
gdisp);
@ -734,11 +747,17 @@ create_display_shell (GDisplay* gdisp,
table_lower = gtk_table_new (1,4,FALSE);
gtk_table_set_col_spacing (GTK_TABLE (table_lower), 0, 1);
/* gtk_table_set_row_spacing (GTK_TABLE (table_lower), 0, 1); */
/* gtk_table_set_row_spacing (GTK_TABLE (table_lower), 0, 1); */
/* hbox for statusbar area */
evbox = gtk_event_box_new ();
gtk_box_pack_start (GTK_BOX (vbox), evbox, FALSE, TRUE, 0);
gtk_widget_show (evbox);
gimp_help_set_help_data (evbox, NULL, "#status_area");
/* hbox for statusbar area */
gdisp->statusarea = gtk_hbox_new (FALSE, 2);
gtk_box_pack_start (GTK_BOX (vbox), gdisp->statusarea, FALSE, TRUE, 0);
gtk_container_add (GTK_CONTAINER (evbox), gdisp->statusarea);
/* scrollbars, rulers, canvas, menu popup button */
gdisp->origin = gtk_button_new ();
@ -749,6 +768,8 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (gdisplay_origin_button_press),
gdisp);
gimp_help_set_help_data (gdisp->origin, NULL, "#origin_button");
arrow = gtk_arrow_new (GTK_ARROW_RIGHT, GTK_SHADOW_OUT);
gtk_container_set_border_width (GTK_CONTAINER (gdisp->origin), 0);
gtk_container_add (GTK_CONTAINER (gdisp->origin), arrow);
@ -763,6 +784,8 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (gdisplay_hruler_button_press),
gdisp);
gimp_help_set_help_data (gdisp->hrule, NULL, "#ruler");
gdisp->vrule = gtk_vruler_new ();
gtk_widget_set_events (GTK_WIDGET (gdisp->vrule),
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
@ -773,16 +796,20 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (gdisplay_vruler_button_press),
gdisp);
gimp_help_set_help_data (gdisp->vrule, NULL, "#ruler");
/* The nav window button */
evbox = gtk_event_box_new();
gtk_widget_show(evbox);
navhbox = gtk_hbox_new (FALSE,0);
gtk_container_add(GTK_CONTAINER(evbox),navhbox);
evbox = gtk_event_box_new ();
gtk_widget_show (evbox);
navhbox = gtk_hbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (evbox), navhbox);
GTK_WIDGET_UNSET_FLAGS (evbox, GTK_CAN_FOCUS);
gtk_signal_connect (GTK_OBJECT (evbox), "button_press_event",
GTK_SIGNAL_FUNC (nav_popup_click_handler),
gdisp);
gimp_help_set_help_data (evbox, NULL, "#nav_window_button");
gdisp->hsb = gtk_hscrollbar_new (gdisp->hsbdata);
GTK_WIDGET_UNSET_FLAGS (gdisp->hsb, GTK_CAN_FOCUS);
gdisp->vsb = gtk_vscrollbar_new (gdisp->vsbdata);
@ -799,6 +826,8 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (qmask_click_handler),
gdisp);
gimp_help_set_help_data (gdisp->qmaskoff, NULL, "#qmask_off_button");
gdisp->qmaskon = gtk_radio_button_new (group);
group = gtk_radio_button_group (GTK_RADIO_BUTTON (gdisp->qmaskon));
gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (gdisp->qmaskon), FALSE);
@ -809,6 +838,8 @@ create_display_shell (GDisplay* gdisp,
GTK_SIGNAL_FUNC (qmask_click_handler),
gdisp);
gimp_help_set_help_data (gdisp->qmaskon, NULL, "#qmask_on_button");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gdisp->qmaskoff), TRUE);
gtk_widget_set_usize (GTK_WIDGET (gdisp->qmaskon), 15, 15);
gtk_widget_set_usize (GTK_WIDGET (gdisp->qmaskoff), 15, 15);
@ -918,19 +949,22 @@ create_display_shell (GDisplay* gdisp,
gtk_widget_set_usize (gdisp->statusbar, 1, -1);
gtk_container_set_resize_mode (GTK_CONTAINER (gdisp->statusbar),
GTK_RESIZE_QUEUE);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->statusbar, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->statusbar,
TRUE, TRUE, 0);
contextid = gtk_statusbar_get_context_id (GTK_STATUSBAR (gdisp->statusbar),
"title");
gtk_statusbar_push (GTK_STATUSBAR (gdisp->statusbar),
contextid,
title);
gdisp->progressbar = gtk_progress_bar_new();
gdisp->progressbar = gtk_progress_bar_new ();
gtk_widget_set_usize (gdisp->progressbar, 80, -1);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->progressbar, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->progressbar,
FALSE, TRUE, 0);
gdisp->cancelbutton = gtk_button_new_with_label(_("Cancel"));
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->cancelbutton, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (gdisp->statusarea), gdisp->cancelbutton,
FALSE, TRUE, 0);
gtk_widget_set_sensitive (gdisp->cancelbutton, FALSE);
/* the popup menu */
@ -1177,6 +1211,13 @@ toolbox_drag_drop (GtkWidget *widget,
return return_val;
}
static ToolType
toolbox_drag_tool (GtkWidget *widget,
gpointer data)
{
return (ToolType) data;
}
static void
toolbox_drop_tool (GtkWidget *widget,
ToolType tool,

View file

@ -21,29 +21,25 @@
#include "toolsF.h"
#include "gdisplayF.h"
/* externed variables */
extern GtkWidget * tool_widgets[];
extern GtkTooltips * tool_tips;
/* function declarations */
GtkWidget * create_pixmap_widget (GdkWindow *parent,
gchar **data,
gint width,
gint height);
GtkWidget * create_pixmap_widget (GdkWindow *parent,
gchar **data,
gint width,
gint height);
GdkPixmap * create_tool_pixmap (GtkWidget *parent,
ToolType type);
GdkPixmap * create_tool_pixmap (GtkWidget *parent,
ToolType type);
void create_toolbox (void);
void toolbox_free (void);
void create_toolbox (void);
void toolbox_free (void);
void toolbox_raise_callback (GtkWidget *widget,
gpointer client_data);
void toolbox_raise_callback (GtkWidget *widget,
gpointer data);
void create_display_shell (GDisplay *gdisp,
gint width,
gint height,
gchar *title,
gint type);
void create_display_shell (GDisplay *gdisp,
gint width,
gint height,
gchar *title,
gint type);
#endif /* __INTERFACE_H__ */

View file

@ -15,9 +15,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include <stdlib.h>
#include <string.h>
#include "gdk/gdkkeysyms.h"
#include <gdk/gdkkeysyms.h>
#include "appenv.h"
#include "buildmenu.h"
#include "colormaps.h"
@ -31,7 +30,6 @@
#include "gimprc.h"
#include "gimpui.h"
#include "image_render.h"
#include "interface.h"
#include "layers_dialog.h"
#include "layers_dialogP.h"
#include "lc_dialogP.h"
@ -247,12 +245,12 @@ static MenuItem option_items[] =
};
/* the ops buttons */
static OpsButtonCallback raise_layers_ext_callbacks[] =
static GtkSignalFunc raise_layers_ext_callbacks[] =
{
layers_dialog_raise_layer_to_top_callback, NULL, NULL, NULL
};
static OpsButtonCallback lower_layers_ext_callbacks[] =
static GtkSignalFunc lower_layers_ext_callbacks[] =
{
layers_dialog_lower_layer_to_bottom_callback, NULL, NULL, NULL
};
@ -347,8 +345,13 @@ layers_dialog_create (void)
}
/* The main vbox */
layersD->vbox = vbox = gtk_vbox_new (FALSE, 1);
layersD->vbox = gtk_event_box_new ();
gimp_help_set_help_data (layersD->vbox, NULL, "dialogs/layers/layers.html");
vbox = gtk_vbox_new (FALSE, 1);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 2);
gtk_container_add (GTK_CONTAINER (layersD->vbox), vbox);
/* The layers commands pulldown menu */
menus_get_layers_menu (&layersD->ops_menu, &layersD->accel_group);
@ -359,15 +362,16 @@ layers_dialog_create (void)
label = gtk_label_new (_("Mode:"));
gtk_box_pack_start (GTK_BOX (util_box), label, FALSE, FALSE, 2);
gtk_widget_show (label);
menu = build_menu (option_items, NULL);
layersD->mode_option_menu = gtk_option_menu_new ();
gtk_box_pack_start (GTK_BOX (util_box), layersD->mode_option_menu,
FALSE, FALSE, 2);
gtk_widget_show (label);
gtk_widget_show (layersD->mode_option_menu);
gtk_option_menu_set_menu (GTK_OPTION_MENU (layersD->mode_option_menu), menu);
gtk_widget_show (layersD->mode_option_menu);
gimp_help_set_help_data (layersD->mode_option_menu, NULL, "#paint_mode_menu");
layersD->preserve_trans =
gtk_check_button_new_with_label (_("Keep Trans."));
@ -377,6 +381,9 @@ layers_dialog_create (void)
(GtkSignalFunc) preserve_trans_update,
layersD);
gtk_widget_show (layersD->preserve_trans);
gimp_help_set_help_data (layersD->preserve_trans, NULL, "#keep_trans_button");
gtk_widget_show (util_box);
/* Opacity scale */
@ -398,6 +405,8 @@ layers_dialog_create (void)
layersD);
gtk_widget_show (slider);
gimp_help_set_help_data (slider, NULL, "#opacity_scale");
gtk_widget_show (util_box);
/* The layers listbox */
@ -424,7 +433,7 @@ layers_dialog_create (void)
gtk_widget_show (layersD->scrolled_win);
/* The ops buttons */
button_box = ops_button_box_new (lc_dialog->shell, tool_tips,
button_box = ops_button_box_new (lc_dialog->shell,
layers_ops_buttons, OPS_BUTTON_NORMAL);
gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, FALSE, 2);
gtk_widget_show (button_box);
@ -465,6 +474,7 @@ layers_dialog_create (void)
NULL);
gtk_widget_show (vbox);
gtk_widget_show (layersD->vbox);
return layersD->vbox;
}
@ -2028,7 +2038,7 @@ layer_widget_create (GImage *gimage,
/* dnd source */
gtk_drag_source_set (layer_widget->mask_preview,
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
layer_mask_target_table, n_layer_mask_targets,
GDK_ACTION_MOVE | GDK_ACTION_COPY);
@ -2078,7 +2088,7 @@ layer_widget_create (GImage *gimage,
/* dnd source */
gtk_drag_source_set (list_item,
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
layer_target_table, n_layer_targets,
GDK_ACTION_MOVE | GDK_ACTION_COPY);

View file

@ -46,7 +46,7 @@ static void lc_dialog_add_callback (GimpSet *, GimpImage *, gpointer);
static void lc_dialog_remove_callback (GimpSet *, GimpImage *, gpointer);
static void lc_dialog_change_image (GimpContext *, GimpImage *,
gpointer);
static void lc_dialog_help_func (gpointer);
static void lc_dialog_help_func (gchar *);
static void lc_dialog_image_menu_preview_update_callback (GtkWidget *,
gpointer);
@ -98,7 +98,8 @@ lc_dialog_create (GimpImage* gimage)
lc_dialog = g_new (LCDialog, 1);
lc_dialog->shell =
gimp_dialog_new (_("Layers & Channels"), "layers_and_channels",
lc_dialog_help_func, NULL,
lc_dialog_help_func,
"dialogs/layers_and_channels.html",
GTK_WIN_POS_NONE,
FALSE, TRUE, FALSE,
NULL);
@ -134,6 +135,7 @@ lc_dialog_create (GimpImage* gimage)
lc_dialog_image_menu_callback);
gtk_box_pack_start (GTK_BOX (util_box), lc_dialog->image_option_menu,
TRUE, TRUE, 0);
gimp_help_set_help_data (lc_dialog->image_option_menu, NULL, "#image_menu");
gtk_widget_show (lc_dialog->image_option_menu);
gtk_option_menu_set_menu (GTK_OPTION_MENU (lc_dialog->image_option_menu),
@ -148,6 +150,7 @@ lc_dialog_create (GimpImage* gimage)
gtk_signal_connect (GTK_OBJECT (auto_button), "clicked",
(GtkSignalFunc) lc_dialog_auto_callback,
auto_button);
gimp_help_set_help_data (auto_button, NULL, "#auto_button");
gtk_widget_show (auto_button);
/* State will be set when the sub-dialogs exists (see below) */
@ -707,7 +710,7 @@ lc_dialog_change_image (GimpContext *context,
}
static void
lc_dialog_help_func (gpointer data)
lc_dialog_help_func (gchar *help_data)
{
gchar *help_page;
gint page_num;

View file

@ -19,6 +19,7 @@
#include <gtk/gtk.h>
#include "gimphelp.h"
#include "ops_buttons.h"
#include "libgimp/gimpintl.h"
@ -29,7 +30,6 @@ static void ops_button_extended_callback (GtkWidget*, gpointer);
GtkWidget *
ops_button_box_new (GtkWidget *parent,
GtkTooltips *tool_tips,
OpsButton *ops_button,
OpsButtonType ops_type)
{
@ -89,10 +89,9 @@ ops_button_box_new (GtkWidget *parent,
ops_button);
}
if (tool_tips != NULL)
gtk_tooltips_set_tip (tool_tips, button,
gettext (ops_button->tooltip),
ops_button->private_tip);
gimp_help_set_help_data (button,
gettext (ops_button->tooltip),
ops_button->private_tip);
gtk_box_pack_start (GTK_BOX (button_box), button, TRUE, TRUE, 0);

View file

@ -20,9 +20,6 @@
typedef struct _OpsButton OpsButton;
typedef void (*OpsButtonCallback) (GtkWidget *widget,
gpointer user_data);
typedef enum
{
OPS_BUTTON_MODIFIER_NONE,
@ -41,19 +38,18 @@ typedef enum
struct _OpsButton
{
gchar **xpm_data; /* xpm data for the button */
OpsButtonCallback callback; /* callback function */
OpsButtonCallback *ext_callbacks; /* callback functions when modifiers are pressed */
gchar *tooltip;
gchar *private_tip;
GtkWidget *widget; /* the button widget */
gint modifier;
gchar **xpm_data; /* xpm data for the button */
GtkSignalFunc callback; /* callback function */
GtkSignalFunc *ext_callbacks; /* callback functions when modifiers are pressed */
gchar *tooltip;
gchar *private_tip;
GtkWidget *widget; /* the button widget */
gint modifier;
};
/* Function declarations */
GtkWidget * ops_button_box_new (GtkWidget *parent,
GtkTooltips *tool_tips,
OpsButton *ops_button,
OpsButtonType ops_type);

View file

@ -115,6 +115,7 @@ struct _PaletteDialog
gboolean color_notebook_active;
PaletteEntries *entries;
PaletteEntry *color;
PaletteEntry *dnd_color;
GdkGC *gc;
guint entry_sig_id;
gfloat zoom_factor; /* range from 0.1 to 4.0 */
@ -942,7 +943,7 @@ palette_set_active_color (gint r,
switch (state)
{
case COLOR_NEW:
top_level_edit_palette->color =
top_level_edit_palette->color =
palette_entries_add_entry (top_level_edit_palette->entries,
_("Untitled"), r, g, b);
palette_update_all (top_level_edit_palette->entries);
@ -1163,8 +1164,9 @@ palette_dialog_delete_entry_callback (GtkWidget *widget,
}
if (palette->entries->n_colors == 0)
palette->color = palette_entries_add_entry (palette->entries,
_("Black"), 0, 0, 0);
palette->color =
palette_entries_add_entry (palette->entries,
_("Black"), 0, 0, 0);
palette_update_all (palette->entries);
}
@ -1238,9 +1240,15 @@ palette_dialog_color_area_events (GtkWidget *widget,
row = (bevent->y - 1) / entry_height;
pos = row * palette->columns + col;
tmp_link = g_slist_nth (palette->entries->colors, pos);
if (tmp_link)
palette->dnd_color = tmp_link->data;
else
palette->dnd_color = NULL;
if ((bevent->button == 1 || bevent->button == 3) && palette->entries)
{
tmp_link = g_slist_nth (palette->entries->colors, pos);
if (tmp_link)
{
if (palette->color)
@ -1279,7 +1287,8 @@ palette_dialog_color_area_events (GtkWidget *widget,
gtk_entry_set_text (GTK_ENTRY (palette->color_name),
palette->color->name);
gtk_widget_set_sensitive (palette->color_name, TRUE);
/* palette_update_current_entry (palette); */
/* palette_update_current_entry (palette); */
if (bevent->button == 3)
{
/* Popup the edit menu */
@ -1924,11 +1933,15 @@ palette_dialog_drag_color (GtkWidget *widget,
palette = (PaletteDialog *) data;
if (palette && palette->entries && palette->color)
if (palette && palette->entries && palette->dnd_color)
{
*r = (guchar) palette->color->color[0];
*g = (guchar) palette->color->color[1];
*b = (guchar) palette->color->color[2];
*r = (guchar) palette->dnd_color->color[0];
*g = (guchar) palette->dnd_color->color[1];
*b = (guchar) palette->dnd_color->color[2];
}
else
{
*r = *g = *b = 0;
}
}
@ -1974,17 +1987,17 @@ palette_dialog_new (gint vert)
GtkStyle *style;
palette = g_new (PaletteDialog, 1);
palette->entries = default_palette_entries;
palette->color = NULL;
palette->color_notebook = NULL;
palette->entries = default_palette_entries;
palette->color = NULL;
palette->dnd_color = NULL;
palette->color_notebook = NULL;
palette->color_notebook_active = FALSE;
palette->zoom_factor = 1.0;
palette->xzoom_factor = 1.0;
palette->last_width = 0;
palette->columns = COLUMNS;
palette->columns_valid = TRUE;
palette->freeze_update = FALSE;
palette->zoom_factor = 1.0;
palette->xzoom_factor = 1.0;
palette->last_width = 0;
palette->columns = COLUMNS;
palette->columns_valid = TRUE;
palette->freeze_update = FALSE;
if (!vert)
{
@ -2066,7 +2079,7 @@ palette_dialog_new (gint vert)
/* dnd stuff */
gtk_drag_source_set (palette_region,
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_palette_target_table, n_color_palette_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (palette_region, palette_dialog_drag_color, palette);

View file

@ -40,7 +40,6 @@
#include "gimpset.h"
#include "gimpui.h"
#include "image_render.h"
#include "interface.h"
#include "lc_dialogP.h"
#include "menus.h"
#include "ops_buttons.h"
@ -74,9 +73,10 @@ typedef struct _PathsDialog PathsDialog;
struct _PathsDialog
{
GtkWidget *paths_list;
GtkWidget *vbox;
GtkWidget *ops_menu;
GtkWidget *paths_list;
GtkWidget *ops_menu;
GtkAccelGroup *accel_group;
gdouble ratio;
@ -155,7 +155,7 @@ static void paths_dialog_null_callback (GtkWidget *, gpointer);
static void path_close (PATHP);
/* the ops buttons */
static OpsButtonCallback to_path_ext_callbacks[] =
static GtkSignalFunc to_path_ext_callbacks[] =
{
paths_dialog_advanced_to_path_callback, /* SHIFT */
paths_dialog_null_callback, /* CTRL */
@ -195,16 +195,20 @@ static OpsButton paths_ops_buttons[] =
static OpsButton point_ops_buttons[] =
{
{ pennorm_xpm, paths_dialog_new_point_callback, NULL,
N_("New Point"), NULL,
N_("New Point"),
"#new_point_button",
NULL, 0 },
{ penadd_xpm, paths_dialog_add_point_callback, NULL,
N_("Add Point"), NULL,
N_("Add Point"),
"#add_point_button",
NULL, 0 },
{ pendel_xpm, paths_dialog_delete_point_callback, NULL,
N_("Delete Point"), NULL,
N_("Delete Point"),
"#delete_point_button",
NULL, 0 },
{ penedit_xpm, paths_dialog_edit_point_callback, NULL,
N_("Edit Point"), NULL,
N_("Edit Point"),
"#edit_point_button",
NULL, 0 },
{ NULL, NULL, NULL, NULL, NULL, NULL, 0 }
};
@ -299,11 +303,17 @@ paths_dialog_create (void)
paths_dialog = g_new0 (PathsDialog, 1);
/* The paths box */
paths_dialog->vbox = vbox = gtk_vbox_new (FALSE, 1);
paths_dialog->vbox = gtk_event_box_new ();
gimp_help_set_help_data (paths_dialog->vbox, NULL,
"dialogs/paths/paths.html");
vbox = gtk_vbox_new (FALSE, 1);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 2);
gtk_container_add (GTK_CONTAINER (paths_dialog->vbox), vbox);
/* The point operations */
button_box = ops_button_box_new (lc_dialog->shell, tool_tips,
button_box = ops_button_box_new (lc_dialog->shell,
point_ops_buttons, OPS_BUTTON_RADIO);
/* gtk_container_set_border_width (GTK_CONTAINER (button_box), 2); */
gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, TRUE, 2);
@ -314,7 +324,7 @@ paths_dialog_create (void)
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_widget_set_usize (scrolled_win, LIST_WIDTH, LIST_HEIGHT);
gtk_box_pack_start(GTK_BOX(vbox), scrolled_win, TRUE, TRUE, 2);
gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 2);
paths_dialog->paths_list = paths_list = gtk_clist_new (2);
gtk_signal_connect (GTK_OBJECT (vbox), "destroy",
@ -334,28 +344,30 @@ paths_dialog_create (void)
paths_dialog);
gtk_container_set_focus_vadjustment (GTK_CONTAINER (paths_list),
gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled_win)));
GTK_WIDGET_UNSET_FLAGS (GTK_SCROLLED_WINDOW (scrolled_win)->vscrollbar, GTK_CAN_FOCUS);
GTK_WIDGET_UNSET_FLAGS (GTK_SCROLLED_WINDOW (scrolled_win)->vscrollbar,
GTK_CAN_FOCUS);
paths_dialog->selsigid =
gtk_signal_connect (GTK_OBJECT(paths_list), "select_row",
gtk_signal_connect (GTK_OBJECT (paths_list), "select_row",
GTK_SIGNAL_FUNC (paths_select_row),
NULL);
gtk_signal_connect (GTK_OBJECT(paths_list), "unselect_row",
gtk_signal_connect (GTK_OBJECT (paths_list), "unselect_row",
GTK_SIGNAL_FUNC (paths_unselect_row),
NULL);
gtk_widget_show (scrolled_win);
gtk_widget_show (paths_list);
gtk_signal_connect (GTK_OBJECT(vbox),"realize",
gtk_signal_connect (GTK_OBJECT (vbox),"realize",
GTK_SIGNAL_FUNC (paths_dialog_realized),
NULL);
gtk_widget_show (vbox);
gtk_widget_show (paths_dialog->vbox);
/* The ops buttons */
button_box = ops_button_box_new (lc_dialog->shell, tool_tips,
button_box = ops_button_box_new (lc_dialog->shell,
paths_ops_buttons, OPS_BUTTON_NORMAL);
gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, FALSE, 2);
gtk_widget_show (button_box);
@ -2338,15 +2350,6 @@ file_cancel_callback (GtkWidget *widget,
gtk_widget_hide (file_dlg);
}
static void
path_load_save_help_func (gpointer data)
{
if (load_store)
gimp_help ("paths/dialogs/import_path.html");
else
gimp_help ("paths/dialogs/export_path.html");
}
static void
make_file_dlg (gpointer data)
{
@ -2366,7 +2369,7 @@ make_file_dlg (gpointer data)
NULL);
/* Connect the "F1" help key */
gimp_help_connect_help_accel (file_dlg, path_load_save_help_func, NULL);
gimp_help_connect_help_accel (file_dlg, gimp_standard_help_func, NULL);
}
void
@ -2384,6 +2387,8 @@ paths_dialog_import_path_callback (GtkWidget *widget,
return;
}
gimp_help_set_help_data (file_dlg, NULL, "paths/dialogs/import_path.html");
gtk_window_set_title (GTK_WINDOW (file_dlg), _("Load Path"));
load_store = 1;
gtk_widget_show (file_dlg);
@ -2404,6 +2409,8 @@ paths_dialog_export_path_callback (GtkWidget *widget,
return;
}
gimp_help_set_help_data (file_dlg, NULL, "paths/dialogs/export_path.html");
gtk_window_set_title (GTK_WINDOW (file_dlg), _("Store Path"));
load_store = 0;
gtk_widget_show (file_dlg);

View file

@ -51,6 +51,8 @@
static void pattern_change_callbacks (PatternSelect *psp,
gboolean closing);
static GPattern * pattern_select_drag_pattern (GtkWidget *widget,
gpointer data);
static void pattern_select_drop_pattern (GtkWidget *widget,
GPattern *pattern,
gpointer data);
@ -148,6 +150,7 @@ pattern_select_new (gchar *title,
psp = g_new (PatternSelect, 1);
psp->preview = NULL;
psp->callback_name = NULL;
psp->dnd_pattern = NULL;
psp->pattern_popup = NULL;
psp->popup_timeout_tag = 0;
psp->old_col = 0;
@ -266,6 +269,12 @@ pattern_select_new (gchar *title,
psp);
/* dnd stuff */
gtk_drag_source_set (psp->preview,
GDK_BUTTON2_MASK,
preview_target_table, preview_n_targets,
GDK_ACTION_COPY);
gimp_dnd_pattern_source_set (psp->preview, pattern_select_drag_pattern, psp);
gtk_drag_dest_set (psp->preview,
GTK_DEST_DEFAULT_ALL,
preview_target_table, preview_n_targets,
@ -407,6 +416,17 @@ patterns_check_dialogs (void)
* Local functions
*/
static GPattern *
pattern_select_drag_pattern (GtkWidget *widget,
gpointer data)
{
PatternSelect *psp;
psp = (PatternSelect *) data;
return psp->dnd_pattern;
}
static void
pattern_select_drop_pattern (GtkWidget *widget,
GPattern *pattern,
@ -883,15 +903,21 @@ pattern_select_events (GtkWidget *widget,
case GDK_BUTTON_PRESS:
bevent = (GdkEventButton *) event;
col = bevent->x / psp->cell_width;
row = (bevent->y + psp->scroll_offset) / psp->cell_height;
index = row * psp->NUM_PATTERN_COLUMNS + col;
pattern = pattern_list_get_pattern_by_index (pattern_list, index);
if (pattern)
psp->dnd_pattern = pattern;
else
psp->dnd_pattern = gimp_context_get_pattern (psp->context);
if (bevent->button == 1)
{
col = bevent->x / psp->cell_width;
row = (bevent->y + psp->scroll_offset) / psp->cell_height;
index = row * psp->NUM_PATTERN_COLUMNS + col;
/* Get the pattern and display the popup pattern preview */
if ((pattern = pattern_list_get_pattern_by_index (pattern_list,
index)))
if (pattern)
{
gdk_pointer_grab (psp->preview->window, FALSE,
(GDK_POINTER_MOTION_HINT_MASK |

View file

@ -48,6 +48,8 @@ struct _PatternSelect
/* Context to store the current pattern */
GimpContext *context;
GPattern *dnd_pattern;
/* Some variables to keep the GUI consistent */
gint cell_width;
gint cell_height;

View file

@ -25,7 +25,6 @@
#include "gimprc.h"
#include "gimpui.h"
#include "image_render.h"
#include "interface.h"
#include "lc_dialog.h"
#include "layer_select.h"
#include "session.h"
@ -279,9 +278,9 @@ file_prefs_ok_callback (GtkWidget *widget,
prefs_dlg = NULL;
if (show_tool_tips)
gtk_tooltips_enable (tool_tips);
gimp_help_enable_tooltips ();
else
gtk_tooltips_disable (tool_tips);
gimp_help_disable_tooltips ();
/* This needs modification to notify the user of which simply cannot be
* changed on the fly. Currently it ignores these options if only OK is

View file

@ -968,7 +968,7 @@ tools_new_tool (ToolType tool_type)
}
void
tools_help_func (gpointer help_data)
tools_help_func (gchar *help_data)
{
gimp_help (tool_info[(gint) active_tool->type].private_tip);
}
@ -1005,7 +1005,8 @@ tool_options_dialog_new (void)
/* The shell and main vbox */
options_shell =
gimp_dialog_new (_("Tool Options"), "tool_options",
tools_help_func, NULL,
tools_help_func,
"dialogs/tool_options.html",
GTK_WIN_POS_NONE,
FALSE, TRUE, TRUE,

View file

@ -110,7 +110,7 @@ void tools_initialize (ToolType tool_type,
void active_tool_control (ToolAction action,
void *gdisp_ptr);
void tools_help_func (gpointer);
void tools_help_func (gchar *help_data);
void tools_register (ToolType tool_type,
ToolOptions *tool_options);

View file

@ -968,7 +968,7 @@ tools_new_tool (ToolType tool_type)
}
void
tools_help_func (gpointer help_data)
tools_help_func (gchar *help_data)
{
gimp_help (tool_info[(gint) active_tool->type].private_tip);
}
@ -1005,7 +1005,8 @@ tool_options_dialog_new (void)
/* The shell and main vbox */
options_shell =
gimp_dialog_new (_("Tool Options"), "tool_options",
tools_help_func, NULL,
tools_help_func,
"dialogs/tool_options.html",
GTK_WIN_POS_NONE,
FALSE, TRUE, TRUE,

View file

@ -110,7 +110,7 @@ void tools_initialize (ToolType tool_type,
void active_tool_control (ToolAction action,
void *gdisp_ptr);
void tools_help_func (gpointer);
void tools_help_func (gchar *help_data);
void tools_register (ToolType tool_type,
ToolOptions *tool_options);

View file

@ -102,7 +102,7 @@ color_panel_new (guchar *initial,
/* dnd stuff */
gtk_drag_source_set (private->drawing_area,
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_panel_target_table, n_color_panel_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (private->drawing_area,

View file

@ -21,19 +21,19 @@
#include <stdio.h>
#include "appenv.h"
#include "devices.h"
#include "dialog_handler.h"
#include "gimpcontextpreview.h"
#include "gimpdnd.h"
#include "devices.h"
#include "interface.h"
#include "gimpbrushlist.h"
#include "gimpcontext.h"
#include "gimprc.h"
#include "gimpui.h"
#include "gradient.h"
#include "gradient_header.h"
#include "interface.h"
#include "session.h"
#include "tools.h"
#include "dialog_handler.h"
#include "libgimp/gimpintl.h"
#include "libgimp/gimpenv.h"
@ -798,7 +798,7 @@ device_status_create (void)
gtk_pixmap_new (create_tool_pixmap (deviceD->table, RECT_SELECT),
NULL);
gtk_drag_source_set (deviceD->eventboxes[i],
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
tool_target_table, n_tool_targets,
GDK_ACTION_COPY);
gimp_dnd_tool_source_set (deviceD->eventboxes[i],
@ -826,7 +826,7 @@ device_status_create (void)
gtk_preview_size (GTK_PREVIEW (deviceD->colors[i]),
CELL_SIZE, CELL_SIZE);
gtk_drag_source_set (deviceD->colors[i],
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_area_target_table, n_color_area_targets,
GDK_ACTION_COPY);
gimp_dnd_color_source_set (deviceD->colors[i],
@ -849,7 +849,7 @@ device_status_create (void)
deviceD->brushes[i] =
gimp_context_preview_new (GCP_BRUSH,
CELL_SIZE, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_brush),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->brushes[i],
@ -861,7 +861,7 @@ device_status_create (void)
deviceD->patterns[i] =
gimp_context_preview_new (GCP_PATTERN,
CELL_SIZE, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_pattern),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->patterns[i],
@ -873,7 +873,7 @@ device_status_create (void)
deviceD->gradients[i] =
gimp_context_preview_new (GCP_GRADIENT,
CELL_SIZE * 2, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_gradient),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->gradients[i],
@ -1009,9 +1009,9 @@ device_status_update (guint32 deviceid)
gtk_widget_show (deviceD->tools[i]);
gtk_widget_show (deviceD->eventboxes[i]);
gtk_tooltips_set_tip (tool_tips,deviceD->eventboxes[i],
tool_info[(int) gimp_context_get_tool (device_info->context)].tool_desc,
NULL);
gimp_help_set_help_data (deviceD->eventboxes[i],
tool_info[(gint) gimp_context_get_tool (device_info->context)].tool_desc,
tool_info[(gint) gimp_context_get_tool (device_info->context)].private_tip);
for (j = 0; j < CELL_SIZE * 3; j += 3)
{
@ -1033,7 +1033,7 @@ device_status_update (guint32 deviceid)
buffer[j+1],
buffer[j+2]);
gtk_tooltips_set_tip (tool_tips, deviceD->colors[i], ttbuf, NULL);
gimp_help_set_help_data (deviceD->colors[i], ttbuf, NULL);
if (gimp_context_get_brush (device_info->context))
{

View file

@ -21,19 +21,19 @@
#include <stdio.h>
#include "appenv.h"
#include "devices.h"
#include "dialog_handler.h"
#include "gimpcontextpreview.h"
#include "gimpdnd.h"
#include "devices.h"
#include "interface.h"
#include "gimpbrushlist.h"
#include "gimpcontext.h"
#include "gimprc.h"
#include "gimpui.h"
#include "gradient.h"
#include "gradient_header.h"
#include "interface.h"
#include "session.h"
#include "tools.h"
#include "dialog_handler.h"
#include "libgimp/gimpintl.h"
#include "libgimp/gimpenv.h"
@ -798,7 +798,7 @@ device_status_create (void)
gtk_pixmap_new (create_tool_pixmap (deviceD->table, RECT_SELECT),
NULL);
gtk_drag_source_set (deviceD->eventboxes[i],
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
tool_target_table, n_tool_targets,
GDK_ACTION_COPY);
gimp_dnd_tool_source_set (deviceD->eventboxes[i],
@ -826,7 +826,7 @@ device_status_create (void)
gtk_preview_size (GTK_PREVIEW (deviceD->colors[i]),
CELL_SIZE, CELL_SIZE);
gtk_drag_source_set (deviceD->colors[i],
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_area_target_table, n_color_area_targets,
GDK_ACTION_COPY);
gimp_dnd_color_source_set (deviceD->colors[i],
@ -849,7 +849,7 @@ device_status_create (void)
deviceD->brushes[i] =
gimp_context_preview_new (GCP_BRUSH,
CELL_SIZE, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_brush),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->brushes[i],
@ -861,7 +861,7 @@ device_status_create (void)
deviceD->patterns[i] =
gimp_context_preview_new (GCP_PATTERN,
CELL_SIZE, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_pattern),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->patterns[i],
@ -873,7 +873,7 @@ device_status_create (void)
deviceD->gradients[i] =
gimp_context_preview_new (GCP_GRADIENT,
CELL_SIZE * 2, CELL_SIZE,
FALSE, TRUE, TRUE,
FALSE, TRUE,
GTK_SIGNAL_FUNC (device_status_drop_gradient),
GUINT_TO_POINTER (device_info->device));
gtk_table_attach (GTK_TABLE(deviceD->table), deviceD->gradients[i],
@ -1009,9 +1009,9 @@ device_status_update (guint32 deviceid)
gtk_widget_show (deviceD->tools[i]);
gtk_widget_show (deviceD->eventboxes[i]);
gtk_tooltips_set_tip (tool_tips,deviceD->eventboxes[i],
tool_info[(int) gimp_context_get_tool (device_info->context)].tool_desc,
NULL);
gimp_help_set_help_data (deviceD->eventboxes[i],
tool_info[(gint) gimp_context_get_tool (device_info->context)].tool_desc,
tool_info[(gint) gimp_context_get_tool (device_info->context)].private_tip);
for (j = 0; j < CELL_SIZE * 3; j += 3)
{
@ -1033,7 +1033,7 @@ device_status_update (guint32 deviceid)
buffer[j+1],
buffer[j+2]);
gtk_tooltips_set_tip (tool_tips, deviceD->colors[i], ttbuf, NULL);
gimp_help_set_help_data (deviceD->colors[i], ttbuf, NULL);
if (gimp_context_get_brush (device_info->context))
{

View file

@ -320,6 +320,13 @@ typedef struct
/***** Local functions *****/
static gint gradient_editor_clist_button_press (GtkWidget *widget,
GdkEventButton *bevent,
gpointer data);
static gradient_t * gradient_editor_drag_gradient (GtkWidget *widget,
gpointer data);
static void gradient_editor_drop_gradient (GtkWidget *widget,
gradient_t *gradient,
gpointer data);
@ -407,7 +414,7 @@ static void control_motion (gint x);
static void control_compress_left (grad_segment_t *range_l,
grad_segment_t *range_r,
grad_segment_t *drag_seg,
double pos);
double pos);
static void control_compress_range (grad_segment_t *range_l,
grad_segment_t *range_r,
double new_l, double new_r);
@ -605,6 +612,7 @@ gint num_gradients = 0;
static GdkColor black;
static gradient_t * curr_gradient = NULL;
static gradient_t * dnd_gradient = NULL;
static GradientEditor * g_editor = NULL;
static gradient_t * standard_gradient = NULL;
@ -913,13 +921,17 @@ gradient_editor_create (void)
g_editor->clist = gtk_clist_new (2);
gtk_clist_set_shadow_type (GTK_CLIST (g_editor->clist), GTK_SHADOW_IN);
gtk_clist_set_row_height (GTK_CLIST (g_editor->clist), 18);
gtk_clist_set_selection_mode (GTK_CLIST (g_editor->clist),
GTK_SELECTION_BROWSE);
gtk_clist_set_column_width (GTK_CLIST (g_editor->clist), 0, 52);
gtk_clist_set_column_title (GTK_CLIST (g_editor->clist), 0, _("Gradient"));
gtk_clist_set_column_title (GTK_CLIST (g_editor->clist), 1, _("Name"));
gtk_clist_column_titles_show (GTK_CLIST (g_editor->clist));
gtk_clist_set_use_drag_icons (GTK_CLIST (g_editor->clist), FALSE);
gtk_clist_column_titles_passive (GTK_CLIST (g_editor->clist));
gtk_box_pack_start (GTK_BOX (hbox), scrolled_win, TRUE, TRUE, 0);
gtk_container_add (GTK_CONTAINER (scrolled_win), g_editor->clist);
@ -927,16 +939,6 @@ gradient_editor_create (void)
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_drag_dest_set (g_editor->clist,
GTK_DEST_DEFAULT_HIGHLIGHT |
GTK_DEST_DEFAULT_MOTION |
GTK_DEST_DEFAULT_DROP,
gradient_target_table, n_gradient_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_dest_set (g_editor->clist,
gradient_editor_drop_gradient,
NULL);
gtk_widget_show (scrolled_win);
gtk_widget_show (g_editor->clist);
@ -944,9 +946,28 @@ gradient_editor_create (void)
gdk_color_parse ("black", &black);
gdk_color_alloc (colormap, &black);
gtk_signal_connect (GTK_OBJECT (g_editor->clist), "button_press_event",
GTK_SIGNAL_FUNC (gradient_editor_clist_button_press),
NULL);
gtk_signal_connect (GTK_OBJECT (g_editor->clist), "select_row",
GTK_SIGNAL_FUNC (ed_list_item_update),
(gpointer) NULL);
NULL);
/* dnd stuff */
gtk_drag_source_set (g_editor->clist,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
gradient_target_table, n_gradient_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_source_set (g_editor->clist, gradient_editor_drag_gradient,
NULL);
gtk_drag_dest_set (g_editor->clist,
GTK_DEST_DEFAULT_ALL,
gradient_target_table, n_gradient_targets,
GDK_ACTION_COPY);
gimp_dnd_gradient_dest_set (g_editor->clist, gradient_editor_drop_gradient,
NULL);
/* Frame & vbox for gradient functions */
frame = gtk_frame_new (_("Gradient Ops"));
@ -1222,7 +1243,7 @@ gradient_editor_set_gradient (gradient_t *gradient)
}
else
{
curr_gradient = gradient;
curr_gradient = dnd_gradient = gradient;
}
return TRUE;
@ -1230,6 +1251,37 @@ gradient_editor_set_gradient (gradient_t *gradient)
/***** Gradient editor functions *****/
static gint
gradient_editor_clist_button_press (GtkWidget *widget,
GdkEventButton *bevent,
gpointer data)
{
if (bevent->button == 2)
{
GSList *list;
gint row;
gint column;
gtk_clist_get_selection_info (GTK_CLIST (g_editor->clist),
bevent->x, bevent->y,
&row, &column);
list = g_slist_nth (gradients_list, row);
dnd_gradient = (gradient_t *) list->data;
return TRUE;
}
return FALSE;
}
static gradient_t *
gradient_editor_drag_gradient (GtkWidget *widget,
gpointer data)
{
return dnd_gradient;
}
static void
gradient_editor_drop_gradient (GtkWidget *widget,
gradient_t *gradient,
@ -1476,7 +1528,7 @@ ed_list_item_update (GtkWidget *widget,
{
/* Update current gradient */
GSList* tmp = g_slist_nth (gradients_list,row);
curr_gradient = (gradient_t *)(tmp->data);
curr_gradient = dnd_gradient = (gradient_t *)(tmp->data);
ed_update_editor (GRAD_UPDATE_PREVIEW | GRAD_RESET_CONTROL);
}
@ -1610,7 +1662,7 @@ ed_do_new_gradient_callback (GtkWidget *widget,
gtk_clist_thaw (GTK_CLIST (g_editor->clist));
gtk_clist_moveto (GTK_CLIST (g_editor->clist), pos, 0, 0.5, 0.0);
curr_gradient = grad;
curr_gradient = dnd_gradient = grad;
ed_update_editor (GRAD_UPDATE_PREVIEW | GRAD_RESET_CONTROL);
@ -1700,7 +1752,7 @@ ed_do_copy_gradient_callback (GtkWidget *widget,
grad, pos, TRUE);
gtk_clist_thaw (GTK_CLIST (g_editor->clist));
curr_gradient = grad;
curr_gradient = dnd_gradient = grad;
ed_update_editor (GRAD_UPDATE_PREVIEW | GRAD_RESET_CONTROL);
@ -2779,8 +2831,8 @@ control_button_press (gint x,
case GRAD_DRAG_MIDDLE:
if (state & GDK_SHIFT_MASK)
{
control_extend_selection(seg, xpos);
ed_update_editor(GRAD_UPDATE_CONTROL);
control_extend_selection (seg, xpos);
ed_update_editor (GRAD_UPDATE_CONTROL);
}
else
{

View file

@ -29,15 +29,40 @@
#include "libgimp/gimpintl.h"
#define USE_TIPS_QUERY
#define DEBUG_HELP
static GtkTooltips * tool_tips;
void
gimp_help_init (void)
{
tool_tips = gtk_tooltips_new ();
}
void
gimp_help_free (void)
{
gtk_object_destroy (GTK_OBJECT (tool_tips));
gtk_object_unref (GTK_OBJECT (tool_tips));
}
void
gimp_help_enable_tooltips (void)
{
gtk_tooltips_enable (tool_tips);
}
void
gimp_help_disable_tooltips (void)
{
gtk_tooltips_disable (tool_tips);
}
/* The standard help function */
void
gimp_standard_help_func (gpointer help_data)
gimp_standard_help_func (gchar *help_data)
{
gchar *help_page;
help_page = (gchar *) help_data;
gimp_help (help_page);
gimp_help (help_data);
}
static void
@ -45,11 +70,11 @@ gimp_help_callback (GtkWidget *widget,
gpointer data)
{
GimpHelpFunc help_function;
gpointer help_data;
gchar *help_data;
help_function = (GimpHelpFunc) data;
help_data = gtk_object_get_data (GTK_OBJECT (widget),
"gimp_help_data");
help_data = (gchar *) gtk_object_get_data (GTK_OBJECT (widget),
"gimp_help_data");
if (help_function && use_help)
(* help_function) (help_data);
@ -65,9 +90,80 @@ gimp_help_callback (GtkWidget *widget,
#ifdef USE_TIPS_QUERY
static gint
gimp_help_tips_query_idle_show_help (gpointer help_data)
gimp_help_tips_query_idle_show_help (gpointer data)
{
gimp_help ((gchar *) help_data);
GtkWidget *event_widget;
GtkWidget *toplevel_widget;
GtkWidget *widget;
GtkTooltipsData *tooltips_data;
gchar *help_data = NULL;
event_widget = GTK_WIDGET (data);
toplevel_widget = gtk_widget_get_toplevel (event_widget);
/* search for help_data in this widget's parent containers */
for (widget = event_widget; widget; widget = widget->parent)
{
if ((tooltips_data = gtk_tooltips_data_get (widget)) &&
tooltips_data->tip_private)
{
help_data = tooltips_data->tip_private;
}
else
{
help_data = (gchar *) gtk_object_get_data (GTK_OBJECT (widget),
"gimp_help_data");
}
if (help_data || widget == toplevel_widget)
break;
}
if (! help_data)
return FALSE;
if (help_data[0] == '#')
{
gchar *help_index;
if (widget == toplevel_widget)
return FALSE;
help_index = help_data;
help_data = NULL;
for (widget = widget->parent; widget; widget = widget->parent)
{
if ((tooltips_data = gtk_tooltips_data_get (widget)) &&
tooltips_data->tip_private)
{
help_data = tooltips_data->tip_private;
}
else
{
help_data = (gchar *) gtk_object_get_data (GTK_OBJECT (widget),
"gimp_help_data");
}
if (help_data)
break;
}
if (help_data)
{
gchar *help_text;
help_text = g_strconcat (help_data, help_index, NULL);
gimp_help (help_text);
g_free (help_text);
}
}
else
{
gimp_help (help_data);
}
return FALSE;
}
@ -80,9 +176,9 @@ gimp_help_tips_query_widget_selected (GtkWidget *tips_query,
GdkEventButton *event,
gpointer func_data)
{
if (widget && tip_private && use_help)
if (use_help && widget)
gtk_idle_add ((GtkFunction) gimp_help_tips_query_idle_show_help,
(gpointer) tip_private);
(gpointer) widget);
return TRUE;
}
@ -100,7 +196,7 @@ static void
gimp_help_tips_query_start (GtkWidget *widget,
gpointer tips_query)
{
if (! GTK_TIPS_QUERY (tips_query)->in_query)
if (use_help && ! GTK_TIPS_QUERY (tips_query)->in_query)
gtk_idle_add ((GtkFunction) gimp_help_tips_query_idle_start, tips_query);
}
@ -109,7 +205,7 @@ gimp_help_tips_query_start (GtkWidget *widget,
void
gimp_help_connect_help_accel (GtkWidget *widget,
GimpHelpFunc help_func,
gpointer help_data)
gchar *help_data)
{
GtkAccelGroup *accel_group;
@ -128,6 +224,10 @@ gimp_help_connect_help_accel (GtkWidget *widget,
#ifdef USE_TIPS_QUERY
tips_query = gtk_tips_query_new ();
gtk_widget_set (tips_query,
"GtkTipsQuery::emit_always", TRUE,
NULL);
gtk_signal_connect (GTK_OBJECT (tips_query), "widget_selected",
GTK_SIGNAL_FUNC (gimp_help_tips_query_widget_selected),
NULL);
@ -159,11 +259,7 @@ gimp_help_connect_help_accel (GtkWidget *widget,
NULL);
}
if (help_data)
{
gtk_object_set_data (GTK_OBJECT (widget), "gimp_help_data",
help_data);
}
gimp_help_set_help_data (widget, NULL, help_data);
gtk_signal_connect (GTK_OBJECT (widget), "help",
GTK_SIGNAL_FUNC (gimp_help_callback),
@ -173,6 +269,8 @@ gimp_help_connect_help_accel (GtkWidget *widget,
gtk_signal_connect (GTK_OBJECT (widget), "tips_query",
GTK_SIGNAL_FUNC (gimp_help_tips_query_start),
(gpointer) tips_query);
gtk_widget_add_events (widget, GDK_BUTTON_PRESS_MASK);
#endif
/* a new accelerator group for this widget */
@ -196,12 +294,30 @@ gimp_help_connect_help_accel (GtkWidget *widget,
gtk_accel_group_attach (accel_group, GTK_OBJECT (widget));
}
void
gimp_help_set_help_data (GtkWidget *widget,
gchar *tooltip,
gchar *help_data)
{
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_WIDGET (widget));
if (tooltip)
gtk_tooltips_set_tip (tool_tips, widget, tooltip, help_data);
else if (help_data)
gtk_object_set_data (GTK_OBJECT (widget), "gimp_help_data", help_data);
}
/* the main help function */
void
gimp_help (gchar *help_page)
gimp_help (gchar *help_data)
{
ProcRecord *proc_rec;
#ifdef DEBUG_HELP
g_print ("Help Page: %s\n", help_data);
#endif
/* Check if a help browser is already running */
proc_rec = procedural_db_lookup ("extension_gimp_help_browser_temp");
@ -223,7 +339,7 @@ gimp_help (gchar *help_page)
args[0].arg_type = PDB_INT32;
args[0].value.pdb_int = RUN_INTERACTIVE;
args[1].arg_type = PDB_STRING;
args[1].value.pdb_pointer = help_page;
args[1].value.pdb_pointer = help_data;
plug_in_run (proc_rec, args, 2, FALSE, TRUE, 0);
@ -237,7 +353,7 @@ gimp_help (gchar *help_page)
return_vals =
procedural_db_run_proc ("extension_gimp_help_browser_temp",
&nreturn_vals,
PDB_STRING, help_page,
PDB_STRING, help_data,
PDB_END);
procedural_db_destroy_args (return_vals, nreturn_vals);

View file

@ -21,19 +21,29 @@
#ifndef __GIMP_HELP_H__
#define __GIMP_HELP_H__
#include <glib.h>
typedef void (* GimpHelpFunc) (gchar *);
typedef void (* GimpHelpFunc) (gpointer);
void gimp_help_init (void);
void gimp_help_free (void);
void gimp_help_enable_tooltips (void);
void gimp_help_disable_tooltips (void);
/* the standard help function */
void gimp_standard_help_func (gpointer help_data);
void gimp_standard_help_func (gchar *help_data);
/* connect the "F1" accelerator of a window */
void gimp_help_connect_help_accel (GtkWidget *widget,
GimpHelpFunc help_func,
gpointer help_data);
gchar *help_data);
/* set help data for non-window widgets */
void gimp_help_set_help_data (GtkWidget *widget,
gchar *tool_tip,
gchar *help_data);
/* the main help function */
void gimp_help (gchar *help_page);
void gimp_help (gchar *help_data);
#endif /* __GIMP_HELP_H__ */

View file

@ -115,6 +115,7 @@ struct _PaletteDialog
gboolean color_notebook_active;
PaletteEntries *entries;
PaletteEntry *color;
PaletteEntry *dnd_color;
GdkGC *gc;
guint entry_sig_id;
gfloat zoom_factor; /* range from 0.1 to 4.0 */
@ -942,7 +943,7 @@ palette_set_active_color (gint r,
switch (state)
{
case COLOR_NEW:
top_level_edit_palette->color =
top_level_edit_palette->color =
palette_entries_add_entry (top_level_edit_palette->entries,
_("Untitled"), r, g, b);
palette_update_all (top_level_edit_palette->entries);
@ -1163,8 +1164,9 @@ palette_dialog_delete_entry_callback (GtkWidget *widget,
}
if (palette->entries->n_colors == 0)
palette->color = palette_entries_add_entry (palette->entries,
_("Black"), 0, 0, 0);
palette->color =
palette_entries_add_entry (palette->entries,
_("Black"), 0, 0, 0);
palette_update_all (palette->entries);
}
@ -1238,9 +1240,15 @@ palette_dialog_color_area_events (GtkWidget *widget,
row = (bevent->y - 1) / entry_height;
pos = row * palette->columns + col;
tmp_link = g_slist_nth (palette->entries->colors, pos);
if (tmp_link)
palette->dnd_color = tmp_link->data;
else
palette->dnd_color = NULL;
if ((bevent->button == 1 || bevent->button == 3) && palette->entries)
{
tmp_link = g_slist_nth (palette->entries->colors, pos);
if (tmp_link)
{
if (palette->color)
@ -1279,7 +1287,8 @@ palette_dialog_color_area_events (GtkWidget *widget,
gtk_entry_set_text (GTK_ENTRY (palette->color_name),
palette->color->name);
gtk_widget_set_sensitive (palette->color_name, TRUE);
/* palette_update_current_entry (palette); */
/* palette_update_current_entry (palette); */
if (bevent->button == 3)
{
/* Popup the edit menu */
@ -1924,11 +1933,15 @@ palette_dialog_drag_color (GtkWidget *widget,
palette = (PaletteDialog *) data;
if (palette && palette->entries && palette->color)
if (palette && palette->entries && palette->dnd_color)
{
*r = (guchar) palette->color->color[0];
*g = (guchar) palette->color->color[1];
*b = (guchar) palette->color->color[2];
*r = (guchar) palette->dnd_color->color[0];
*g = (guchar) palette->dnd_color->color[1];
*b = (guchar) palette->dnd_color->color[2];
}
else
{
*r = *g = *b = 0;
}
}
@ -1974,17 +1987,17 @@ palette_dialog_new (gint vert)
GtkStyle *style;
palette = g_new (PaletteDialog, 1);
palette->entries = default_palette_entries;
palette->color = NULL;
palette->color_notebook = NULL;
palette->entries = default_palette_entries;
palette->color = NULL;
palette->dnd_color = NULL;
palette->color_notebook = NULL;
palette->color_notebook_active = FALSE;
palette->zoom_factor = 1.0;
palette->xzoom_factor = 1.0;
palette->last_width = 0;
palette->columns = COLUMNS;
palette->columns_valid = TRUE;
palette->freeze_update = FALSE;
palette->zoom_factor = 1.0;
palette->xzoom_factor = 1.0;
palette->last_width = 0;
palette->columns = COLUMNS;
palette->columns_valid = TRUE;
palette->freeze_update = FALSE;
if (!vert)
{
@ -2066,7 +2079,7 @@ palette_dialog_new (gint vert)
/* dnd stuff */
gtk_drag_source_set (palette_region,
GDK_BUTTON1_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_palette_target_table, n_color_palette_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (palette_region, palette_dialog_drag_color, palette);

View file

@ -402,7 +402,7 @@ color_area_create (gint width,
/* dnd stuff */
gtk_drag_source_set (color_area,
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_area_target_table, n_color_area_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (color_area, color_area_drag_color, NULL);

View file

@ -24,7 +24,6 @@
#include "gimpdnd.h"
#include "gradient_select.h"
#include "indicator_area.h"
#include "interface.h" /* for tool_tips */
#include "pattern_select.h"
#include "libgimp/gimpintl.h"
@ -117,7 +116,7 @@ gradient_preview_drop_gradient (GtkWidget *widget,
}
GtkWidget *
indicator_area_create ()
indicator_area_create (void)
{
GimpContext *context;
GtkWidget *indicator_table;
@ -131,12 +130,12 @@ indicator_area_create ()
brush_preview =
gimp_context_preview_new (GCP_BRUSH,
CELL_SIZE, CELL_SIZE,
TRUE, FALSE, FALSE,
TRUE, FALSE,
(GimpDndDropBrushFunc) brush_preview_drop_brush,
NULL);
gtk_tooltips_set_tip (tool_tips, brush_preview,
_("The active brush.\n"
"Click to open the Brushes Dialog."), NULL);
gimp_help_set_help_data (brush_preview,
_("The active brush.\n"
"Click to open the Brushes Dialog."), NULL);
gtk_signal_connect (GTK_OBJECT (brush_preview), "clicked",
GTK_SIGNAL_FUNC (brush_preview_clicked),
NULL);
@ -149,12 +148,12 @@ indicator_area_create ()
pattern_preview =
gimp_context_preview_new (GCP_PATTERN,
CELL_SIZE, CELL_SIZE,
TRUE, FALSE, FALSE,
TRUE, FALSE,
(GimpDndDropPatternFunc) pattern_preview_drop_pattern,
NULL);
gtk_tooltips_set_tip (tool_tips, pattern_preview,
_("The active pattern.\n"
"Click to open the Patterns Dialog."), NULL);
gimp_help_set_help_data (pattern_preview,
_("The active pattern.\n"
"Click to open the Patterns Dialog."), NULL);
gtk_signal_connect (GTK_OBJECT (pattern_preview), "clicked",
GTK_SIGNAL_FUNC (pattern_preview_clicked),
NULL);
@ -168,13 +167,12 @@ indicator_area_create ()
gimp_context_preview_new (GCP_GRADIENT,
GRAD_CELL_WIDTH,
GRAD_CELL_HEIGHT,
TRUE, FALSE, FALSE,
TRUE, FALSE,
(GimpDndDropGradientFunc) gradient_preview_drop_gradient,
NULL);
gtk_tooltips_set_tip (tool_tips, gradient_preview,
_("The active gradient.\n"
"Click to open the Gradients Dialog."),
NULL);
gimp_help_set_help_data (gradient_preview,
_("The active gradient.\n"
"Click to open the Gradients Dialog."), NULL);
gtk_signal_connect (GTK_OBJECT (gradient_preview), "clicked",
GTK_SIGNAL_FUNC (gradient_preview_clicked),
NULL);

View file

@ -79,7 +79,7 @@ GtkWidget *
gimp_dialog_new (const gchar *title,
const gchar *wmclass_name,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
GtkWindowPosition position,
gint allow_shrink,
gint allow_grow,
@ -120,7 +120,7 @@ GtkWidget *
gimp_dialog_newv (const gchar *title,
const gchar *wmclass_name,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
GtkWindowPosition position,
gint allow_shrink,
gint allow_grow,
@ -419,7 +419,7 @@ struct _QueryBox
gpointer data;
};
static QueryBox * create_query_box (gchar *, GimpHelpFunc, gpointer,
static QueryBox * create_query_box (gchar *, GimpHelpFunc, gchar *,
GtkSignalFunc,
gchar *, GtkObject *, gchar *,
GimpQueryFunc, gpointer);
@ -433,7 +433,7 @@ static void size_query_box_ok_callback (GtkWidget *, gpointer);
static QueryBox *
create_query_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
GtkSignalFunc ok_callback,
gchar *message,
GtkObject *object,
@ -490,7 +490,7 @@ create_query_box (gchar *title,
GtkWidget *
gimp_query_string_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
gchar *message,
gchar *initial,
GtkObject *object,
@ -520,7 +520,7 @@ gimp_query_string_box (gchar *title,
GtkWidget *
gimp_query_int_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
gchar *message,
gint initial,
gint lower,
@ -553,7 +553,7 @@ gimp_query_int_box (gchar *title,
GtkWidget *
gimp_query_double_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
gchar *message,
gdouble initial,
gdouble lower,
@ -587,7 +587,7 @@ gimp_query_double_box (gchar *title,
GtkWidget *
gimp_query_size_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
gchar *message,
gdouble initial,
gdouble lower,

View file

@ -36,7 +36,7 @@ typedef void (* GimpQueryFunc) (GtkWidget *, gpointer, gpointer);
GtkWidget * gimp_dialog_new (const gchar *title,
const gchar *wmclass_name,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
GtkWindowPosition position,
gint allow_shrink,
gint allow_grow,
@ -57,7 +57,7 @@ GtkWidget * gimp_dialog_new (const gchar *title,
GtkWidget * gimp_dialog_newv (const gchar *title,
const gchar *wmclass_name,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
GtkWindowPosition position,
gint allow_shrink,
gint allow_grow,
@ -125,7 +125,7 @@ GtkWidget * gimp_spin_button_new (/* return value: */
GtkWidget * gimp_query_string_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
gchar *message,
gchar *initial,
GtkObject *object,
@ -135,7 +135,7 @@ GtkWidget * gimp_query_string_box (gchar *title,
GtkWidget * gimp_query_int_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
char *message,
gint initial,
gint lower,
@ -147,7 +147,7 @@ GtkWidget * gimp_query_int_box (gchar *title,
GtkWidget * gimp_query_double_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
gchar *message,
gdouble initial,
gdouble lower,
@ -160,7 +160,7 @@ GtkWidget * gimp_query_double_box (gchar *title,
GtkWidget * gimp_query_size_box (gchar *title,
GimpHelpFunc help_func,
gpointer help_data,
gchar *help_data,
gchar *message,
gdouble initial,
gdouble lower,

View file

@ -338,7 +338,7 @@ color_select_widget_new (ColorSelect *csp,
/* dnd stuff */
gtk_drag_source_set (csp->new_color,
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_select_target_table, n_color_select_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (csp->new_color, color_select_drag_new_color, csp);
@ -365,7 +365,7 @@ color_select_widget_new (ColorSelect *csp,
/* dnd stuff */
gtk_drag_source_set (csp->orig_color,
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
GDK_BUTTON1_MASK | GDK_BUTTON2_MASK,
color_select_target_table, n_color_select_targets,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
gimp_dnd_color_source_set (csp->orig_color, color_select_drag_old_color, csp);