mirror of
https://gitlab.gnome.org/GNOME/gimp
synced 2024-10-19 14:23:33 +00:00
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:
parent
46c8110fdf
commit
0302ed0a10
40
ChangeLog
40
ChangeLog
|
@ -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
|
||||
|
|
|
@ -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 |
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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__ */
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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__ */
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
160
app/gimphelp.c
160
app/gimphelp.c
|
@ -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);
|
||||
|
|
|
@ -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__ */
|
||||
|
|
16
app/gimpui.c
16
app/gimpui.c
|
@ -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,
|
||||
|
|
12
app/gimpui.h
12
app/gimpui.h
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -37,6 +37,8 @@ struct _GradientSelect
|
|||
gchar *callback_name;
|
||||
gint sample_size;
|
||||
|
||||
gradient_t *dnd_gradient;
|
||||
|
||||
GdkColor black;
|
||||
GdkGC *gc;
|
||||
};
|
||||
|
|
|
@ -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 |
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -37,6 +37,8 @@ struct _GradientSelect
|
|||
gchar *callback_name;
|
||||
gint sample_size;
|
||||
|
||||
gradient_t *dnd_gradient;
|
||||
|
||||
GdkColor black;
|
||||
GdkGC *gc;
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 |
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
129
app/interface.c
129
app/interface.c
|
@ -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,
|
||||
|
|
|
@ -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__ */
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 |
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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__ */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue