mirror of https://github.com/GNOME/gimp.git
app/commands.c app/layers_dialog.c behave like a widget: removed
2000-04-06 Michael Natterer <mitch@gimp.org> * app/commands.c * app/layers_dialog.c * app/resize.[ch]: behave like a widget: removed resize_widget_free() and call gtk_widget_destroy(resize->resize_shell) instead. * app/interface.c: s/0/FALSE/ * app/color_area.c * libgimp/gimpchainbutton.c: show the correct background also for engine driven themes. The chainbutton's lines still don't draw with the pixmap theme, which is probably a bug of the theme's draw_polygon method.
This commit is contained in:
parent
56f1372519
commit
61184c16c9
16
ChangeLog
16
ChangeLog
|
@ -1,3 +1,19 @@
|
||||||
|
2000-04-06 Michael Natterer <mitch@gimp.org>
|
||||||
|
|
||||||
|
* app/commands.c
|
||||||
|
* app/layers_dialog.c
|
||||||
|
* app/resize.[ch]: behave like a widget:
|
||||||
|
removed resize_widget_free() and call
|
||||||
|
gtk_widget_destroy(resize->resize_shell) instead.
|
||||||
|
|
||||||
|
* app/interface.c: s/0/FALSE/
|
||||||
|
|
||||||
|
* app/color_area.c
|
||||||
|
* libgimp/gimpchainbutton.c: show the correct background also for
|
||||||
|
engine driven themes. The chainbutton's lines still don't draw
|
||||||
|
with the pixmap theme, which is probably a bug of the theme's
|
||||||
|
draw_polygon method.
|
||||||
|
|
||||||
2000-04-06 Sven Neumann <sven@gimp.org>
|
2000-04-06 Sven Neumann <sven@gimp.org>
|
||||||
|
|
||||||
* app/gimage_cmds.c
|
* app/gimage_cmds.c
|
||||||
|
|
|
@ -71,7 +71,6 @@ extern void layers_dialog_layer_merge_query (GImage *, gboolean);
|
||||||
/* local functions */
|
/* local functions */
|
||||||
static void image_resize_callback (GtkWidget *, gpointer);
|
static void image_resize_callback (GtkWidget *, gpointer);
|
||||||
static void image_scale_callback (GtkWidget *, gpointer);
|
static void image_scale_callback (GtkWidget *, gpointer);
|
||||||
static void image_cancel_callback (GtkWidget *, gpointer);
|
|
||||||
static void gimage_mask_feather_callback (GtkWidget *, gdouble, GimpUnit,
|
static void gimage_mask_feather_callback (GtkWidget *, gdouble, GimpUnit,
|
||||||
gpointer);
|
gpointer);
|
||||||
static void gimage_mask_border_callback (GtkWidget *, gdouble, GimpUnit,
|
static void gimage_mask_border_callback (GtkWidget *, gdouble, GimpUnit,
|
||||||
|
@ -806,6 +805,7 @@ image_resize_cmd_callback (GtkWidget *widget,
|
||||||
image_resize->resize = resize_widget_new (ResizeWidget,
|
image_resize->resize = resize_widget_new (ResizeWidget,
|
||||||
ResizeImage,
|
ResizeImage,
|
||||||
GTK_OBJECT (gimage),
|
GTK_OBJECT (gimage),
|
||||||
|
"destroy",
|
||||||
gimage->width,
|
gimage->width,
|
||||||
gimage->height,
|
gimage->height,
|
||||||
gimage->xresolution,
|
gimage->xresolution,
|
||||||
|
@ -813,9 +813,14 @@ image_resize_cmd_callback (GtkWidget *widget,
|
||||||
gimage->unit,
|
gimage->unit,
|
||||||
gdisp->dot_for_dot,
|
gdisp->dot_for_dot,
|
||||||
image_resize_callback,
|
image_resize_callback,
|
||||||
image_cancel_callback,
|
NULL,
|
||||||
image_resize);
|
image_resize);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (image_resize->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) image_resize);
|
||||||
|
|
||||||
gtk_widget_show (image_resize->resize->resize_shell);
|
gtk_widget_show (image_resize->resize->resize_shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -837,6 +842,7 @@ image_scale_cmd_callback (GtkWidget *widget,
|
||||||
image_scale->resize = resize_widget_new (ScaleWidget,
|
image_scale->resize = resize_widget_new (ScaleWidget,
|
||||||
ResizeImage,
|
ResizeImage,
|
||||||
GTK_OBJECT (gimage),
|
GTK_OBJECT (gimage),
|
||||||
|
"destroy",
|
||||||
gimage->width,
|
gimage->width,
|
||||||
gimage->height,
|
gimage->height,
|
||||||
gimage->xresolution,
|
gimage->xresolution,
|
||||||
|
@ -844,9 +850,14 @@ image_scale_cmd_callback (GtkWidget *widget,
|
||||||
gimage->unit,
|
gimage->unit,
|
||||||
gdisp->dot_for_dot,
|
gdisp->dot_for_dot,
|
||||||
image_scale_callback,
|
image_scale_callback,
|
||||||
image_cancel_callback,
|
NULL,
|
||||||
image_scale);
|
image_scale);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (image_scale->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) image_scale);
|
||||||
|
|
||||||
gtk_widget_show (image_scale->resize->resize_shell);
|
gtk_widget_show (image_scale->resize->resize_shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1307,7 +1318,7 @@ image_resize_callback (GtkWidget *widget,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
resize_widget_free (image_resize->resize);
|
gtk_widget_destroy (image_resize->resize->resize_shell);
|
||||||
g_free (image_resize);
|
g_free (image_resize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1317,29 +1328,16 @@ image_scale_callback (GtkWidget *widget,
|
||||||
{
|
{
|
||||||
ImageResize *image_scale = NULL;
|
ImageResize *image_scale = NULL;
|
||||||
|
|
||||||
g_assert((image_scale = (ImageResize *) client_data) != NULL);
|
g_assert ((image_scale = (ImageResize *) client_data) != NULL);
|
||||||
g_assert(image_scale->gimage != NULL);
|
g_assert (image_scale->gimage != NULL);
|
||||||
|
|
||||||
if(TRUE == resize_check_layer_scaling(image_scale))
|
if (TRUE == resize_check_layer_scaling (image_scale))
|
||||||
{
|
{
|
||||||
resize_scale_implement(image_scale);
|
resize_scale_implement (image_scale);
|
||||||
resize_widget_free (image_scale->resize);
|
gtk_widget_destroy (image_scale->resize->resize_shell);
|
||||||
g_free (image_scale);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
image_cancel_callback (GtkWidget *widget,
|
|
||||||
gpointer client_data)
|
|
||||||
{
|
|
||||||
ImageResize *image_scale;
|
|
||||||
|
|
||||||
image_scale = (ImageResize *) client_data;
|
|
||||||
|
|
||||||
resize_widget_free (image_scale->resize);
|
|
||||||
g_free (image_scale);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gimage_mask_feather_callback (GtkWidget *widget,
|
gimage_mask_feather_callback (GtkWidget *widget,
|
||||||
gdouble size,
|
gdouble size,
|
||||||
|
|
|
@ -438,6 +438,14 @@ color_area_events (GtkWidget *widget,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
color_area_realize (GtkWidget *widget,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
|
||||||
|
gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
color_area_create (gint width,
|
color_area_create (gint width,
|
||||||
gint height,
|
gint height,
|
||||||
|
@ -458,6 +466,10 @@ color_area_create (gint width,
|
||||||
GTK_SIGNAL_FUNC (color_area_events),
|
GTK_SIGNAL_FUNC (color_area_events),
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
gtk_signal_connect (GTK_OBJECT (color_area), "realize",
|
||||||
|
GTK_SIGNAL_FUNC (color_area_realize),
|
||||||
|
NULL);
|
||||||
|
|
||||||
default_pixmap = default_pmap;
|
default_pixmap = default_pmap;
|
||||||
default_mask = default_msk;
|
default_mask = default_msk;
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,6 @@ extern void layers_dialog_layer_merge_query (GImage *, gboolean);
|
||||||
/* local functions */
|
/* local functions */
|
||||||
static void image_resize_callback (GtkWidget *, gpointer);
|
static void image_resize_callback (GtkWidget *, gpointer);
|
||||||
static void image_scale_callback (GtkWidget *, gpointer);
|
static void image_scale_callback (GtkWidget *, gpointer);
|
||||||
static void image_cancel_callback (GtkWidget *, gpointer);
|
|
||||||
static void gimage_mask_feather_callback (GtkWidget *, gdouble, GimpUnit,
|
static void gimage_mask_feather_callback (GtkWidget *, gdouble, GimpUnit,
|
||||||
gpointer);
|
gpointer);
|
||||||
static void gimage_mask_border_callback (GtkWidget *, gdouble, GimpUnit,
|
static void gimage_mask_border_callback (GtkWidget *, gdouble, GimpUnit,
|
||||||
|
@ -806,6 +805,7 @@ image_resize_cmd_callback (GtkWidget *widget,
|
||||||
image_resize->resize = resize_widget_new (ResizeWidget,
|
image_resize->resize = resize_widget_new (ResizeWidget,
|
||||||
ResizeImage,
|
ResizeImage,
|
||||||
GTK_OBJECT (gimage),
|
GTK_OBJECT (gimage),
|
||||||
|
"destroy",
|
||||||
gimage->width,
|
gimage->width,
|
||||||
gimage->height,
|
gimage->height,
|
||||||
gimage->xresolution,
|
gimage->xresolution,
|
||||||
|
@ -813,9 +813,14 @@ image_resize_cmd_callback (GtkWidget *widget,
|
||||||
gimage->unit,
|
gimage->unit,
|
||||||
gdisp->dot_for_dot,
|
gdisp->dot_for_dot,
|
||||||
image_resize_callback,
|
image_resize_callback,
|
||||||
image_cancel_callback,
|
NULL,
|
||||||
image_resize);
|
image_resize);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (image_resize->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) image_resize);
|
||||||
|
|
||||||
gtk_widget_show (image_resize->resize->resize_shell);
|
gtk_widget_show (image_resize->resize->resize_shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -837,6 +842,7 @@ image_scale_cmd_callback (GtkWidget *widget,
|
||||||
image_scale->resize = resize_widget_new (ScaleWidget,
|
image_scale->resize = resize_widget_new (ScaleWidget,
|
||||||
ResizeImage,
|
ResizeImage,
|
||||||
GTK_OBJECT (gimage),
|
GTK_OBJECT (gimage),
|
||||||
|
"destroy",
|
||||||
gimage->width,
|
gimage->width,
|
||||||
gimage->height,
|
gimage->height,
|
||||||
gimage->xresolution,
|
gimage->xresolution,
|
||||||
|
@ -844,9 +850,14 @@ image_scale_cmd_callback (GtkWidget *widget,
|
||||||
gimage->unit,
|
gimage->unit,
|
||||||
gdisp->dot_for_dot,
|
gdisp->dot_for_dot,
|
||||||
image_scale_callback,
|
image_scale_callback,
|
||||||
image_cancel_callback,
|
NULL,
|
||||||
image_scale);
|
image_scale);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (image_scale->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) image_scale);
|
||||||
|
|
||||||
gtk_widget_show (image_scale->resize->resize_shell);
|
gtk_widget_show (image_scale->resize->resize_shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1307,7 +1318,7 @@ image_resize_callback (GtkWidget *widget,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
resize_widget_free (image_resize->resize);
|
gtk_widget_destroy (image_resize->resize->resize_shell);
|
||||||
g_free (image_resize);
|
g_free (image_resize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1317,29 +1328,16 @@ image_scale_callback (GtkWidget *widget,
|
||||||
{
|
{
|
||||||
ImageResize *image_scale = NULL;
|
ImageResize *image_scale = NULL;
|
||||||
|
|
||||||
g_assert((image_scale = (ImageResize *) client_data) != NULL);
|
g_assert ((image_scale = (ImageResize *) client_data) != NULL);
|
||||||
g_assert(image_scale->gimage != NULL);
|
g_assert (image_scale->gimage != NULL);
|
||||||
|
|
||||||
if(TRUE == resize_check_layer_scaling(image_scale))
|
if (TRUE == resize_check_layer_scaling (image_scale))
|
||||||
{
|
{
|
||||||
resize_scale_implement(image_scale);
|
resize_scale_implement (image_scale);
|
||||||
resize_widget_free (image_scale->resize);
|
gtk_widget_destroy (image_scale->resize->resize_shell);
|
||||||
g_free (image_scale);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
image_cancel_callback (GtkWidget *widget,
|
|
||||||
gpointer client_data)
|
|
||||||
{
|
|
||||||
ImageResize *image_scale;
|
|
||||||
|
|
||||||
image_scale = (ImageResize *) client_data;
|
|
||||||
|
|
||||||
resize_widget_free (image_scale->resize);
|
|
||||||
g_free (image_scale);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gimage_mask_feather_callback (GtkWidget *widget,
|
gimage_mask_feather_callback (GtkWidget *widget,
|
||||||
gdouble size,
|
gdouble size,
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
#include <math.h>
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "appenv.h"
|
#include "appenv.h"
|
||||||
#include "gdisplay.h"
|
#include "gdisplay.h"
|
||||||
#include "resize.h"
|
#include "resize.h"
|
||||||
|
@ -26,7 +26,9 @@
|
||||||
|
|
||||||
#include "libgimp/gimpchainbutton.h"
|
#include "libgimp/gimpchainbutton.h"
|
||||||
#include "libgimp/gimplimits.h"
|
#include "libgimp/gimplimits.h"
|
||||||
|
#include "libgimp/gimpmath.h"
|
||||||
#include "libgimp/gimpsizeentry.h"
|
#include "libgimp/gimpsizeentry.h"
|
||||||
|
|
||||||
#include "libgimp/gimpintl.h"
|
#include "libgimp/gimpintl.h"
|
||||||
|
|
||||||
#define EVENT_MASK GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK
|
#define EVENT_MASK GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK
|
||||||
|
@ -56,9 +58,6 @@ struct _ResizePrivate
|
||||||
GtkWidget *resolution_se;
|
GtkWidget *resolution_se;
|
||||||
GtkWidget *equal_res;
|
GtkWidget *equal_res;
|
||||||
|
|
||||||
GtkObject *object;
|
|
||||||
guint object_destroy_handler;
|
|
||||||
|
|
||||||
gdouble ratio;
|
gdouble ratio;
|
||||||
gint old_width, old_height;
|
gint old_width, old_height;
|
||||||
gdouble old_res_x, old_res_y;
|
gdouble old_res_x, old_res_y;
|
||||||
|
@ -85,6 +84,7 @@ Resize *
|
||||||
resize_widget_new (ResizeType type,
|
resize_widget_new (ResizeType type,
|
||||||
ResizeTarget target,
|
ResizeTarget target,
|
||||||
GtkObject *object,
|
GtkObject *object,
|
||||||
|
gchar *signal,
|
||||||
gint width,
|
gint width,
|
||||||
gint height,
|
gint height,
|
||||||
gdouble resolution_x,
|
gdouble resolution_x,
|
||||||
|
@ -112,8 +112,13 @@ resize_widget_new (ResizeType type,
|
||||||
alignment = NULL;
|
alignment = NULL;
|
||||||
frame = NULL;
|
frame = NULL;
|
||||||
|
|
||||||
resize = g_new (Resize, 1);
|
|
||||||
private = g_new (ResizePrivate, 1);
|
private = g_new (ResizePrivate, 1);
|
||||||
|
private->old_width = width;
|
||||||
|
private->old_height = height;
|
||||||
|
private->old_res_x = resolution_x;
|
||||||
|
private->old_res_y = resolution_y;
|
||||||
|
|
||||||
|
resize = g_new (Resize, 1);
|
||||||
resize->type = type;
|
resize->type = type;
|
||||||
resize->target = target;
|
resize->target = target;
|
||||||
resize->private_part = private;
|
resize->private_part = private;
|
||||||
|
@ -126,11 +131,6 @@ resize_widget_new (ResizeType type,
|
||||||
resize->ratio_y = 1.0;
|
resize->ratio_y = 1.0;
|
||||||
resize->offset_x = 0;
|
resize->offset_x = 0;
|
||||||
resize->offset_y = 0;
|
resize->offset_y = 0;
|
||||||
private->old_width = width;
|
|
||||||
private->old_height = height;
|
|
||||||
private->old_res_x = resolution_x;
|
|
||||||
private->old_res_y = resolution_y;
|
|
||||||
private->object = NULL;
|
|
||||||
|
|
||||||
/* Get the image width and height variables, based on the gimage */
|
/* Get the image width and height variables, based on the gimage */
|
||||||
if (width > height)
|
if (width > height)
|
||||||
|
@ -192,21 +192,33 @@ resize_widget_new (ResizeType type,
|
||||||
|
|
||||||
_("OK"), ok_cb,
|
_("OK"), ok_cb,
|
||||||
user_data, NULL, NULL, TRUE, FALSE,
|
user_data, NULL, NULL, TRUE, FALSE,
|
||||||
_("Cancel"), cancel_cb,
|
_("Cancel"), cancel_cb ? cancel_cb : gtk_widget_destroy,
|
||||||
user_data, NULL, NULL, FALSE, TRUE,
|
cancel_cb ? user_data : NULL,
|
||||||
|
cancel_cb ? NULL : (gpointer) 1,
|
||||||
|
NULL, FALSE, TRUE,
|
||||||
|
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (resize->resize_shell), "destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) private);
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (resize->resize_shell), "destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) resize);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* handle the image disappearing under our feet */
|
/* handle the image disappearing under our feet */
|
||||||
if (object)
|
if (object && signal)
|
||||||
{
|
{
|
||||||
const gchar *signame;
|
if (cancel_cb)
|
||||||
|
gtk_signal_connect (GTK_OBJECT (object), signal,
|
||||||
signame = (target == ResizeLayer) ? "removed" : "destroy";
|
cancel_cb,
|
||||||
private->object = object;
|
user_data);
|
||||||
private->object_destroy_handler =
|
else
|
||||||
gtk_signal_connect (GTK_OBJECT (object), signame, cancel_cb, user_data);
|
gtk_signal_connect_object_while_alive
|
||||||
|
(GTK_OBJECT (object), signal,
|
||||||
|
GTK_SIGNAL_FUNC (gtk_widget_destroy),
|
||||||
|
GTK_OBJECT (resize->resize_shell));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the main vbox */
|
/* the main vbox */
|
||||||
|
@ -638,28 +650,14 @@ resize_widget_new (ResizeType type,
|
||||||
return resize;
|
return resize;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
resize_widget_free (Resize *resize)
|
|
||||||
{
|
|
||||||
ResizePrivate *private = resize->private_part;
|
|
||||||
|
|
||||||
if (private->object)
|
|
||||||
gtk_signal_disconnect (GTK_OBJECT (private->object),
|
|
||||||
private->object_destroy_handler);
|
|
||||||
|
|
||||||
gtk_widget_destroy (resize->resize_shell);
|
|
||||||
g_free (resize->private_part);
|
|
||||||
g_free (resize);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
resize_draw (Resize *resize)
|
resize_draw (Resize *resize)
|
||||||
{
|
{
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
ResizePrivate *private;
|
ResizePrivate *private;
|
||||||
int aw, ah;
|
gint aw, ah;
|
||||||
int x, y;
|
gint x, y;
|
||||||
int w, h;
|
gint w, h;
|
||||||
|
|
||||||
/* Only need to draw if it's a resize widget */
|
/* Only need to draw if it's a resize widget */
|
||||||
if (resize->type != ResizeWidget)
|
if (resize->type != ResizeWidget)
|
||||||
|
@ -1196,7 +1194,8 @@ resize_events (GtkWidget *widget,
|
||||||
|
|
||||||
/*** Resize sanity checks ***/
|
/*** Resize sanity checks ***/
|
||||||
|
|
||||||
void resize_scale_implement (ImageResize *image_scale)
|
void
|
||||||
|
resize_scale_implement (ImageResize *image_scale)
|
||||||
{
|
{
|
||||||
GImage *gimage = NULL;
|
GImage *gimage = NULL;
|
||||||
gboolean rulers_flush = FALSE;
|
gboolean rulers_flush = FALSE;
|
||||||
|
@ -1270,24 +1269,23 @@ void resize_scale_implement (ImageResize *image_scale)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static void
|
||||||
void resize_scale_warn_callback (GtkWidget *widget,
|
resize_scale_warn_callback (GtkWidget *widget,
|
||||||
gboolean do_scale,
|
gboolean do_scale,
|
||||||
gpointer client_data)
|
gpointer client_data)
|
||||||
{
|
{
|
||||||
ImageResize *image_scale = NULL;
|
ImageResize *image_scale = NULL;
|
||||||
GImage *gimage = NULL;
|
GImage *gimage = NULL;
|
||||||
|
|
||||||
g_assert(client_data != NULL);
|
g_assert (client_data != NULL);
|
||||||
image_scale = (ImageResize *) client_data;
|
image_scale = (ImageResize *) client_data;
|
||||||
gimage = image_scale->gimage;
|
gimage = image_scale->gimage;
|
||||||
g_assert(gimage != NULL);
|
g_assert (gimage != NULL);
|
||||||
|
|
||||||
if(do_scale == TRUE) /* User doesn't mind losing layers... */
|
if (do_scale == TRUE) /* User doesn't mind losing layers... */
|
||||||
{
|
{
|
||||||
resize_scale_implement(image_scale);
|
resize_scale_implement (image_scale);
|
||||||
resize_widget_free (image_scale->resize);
|
gtk_widget_destroy (image_scale->resize->resize_shell);
|
||||||
g_free (image_scale);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
gtk_widget_set_sensitive (image_scale->resize->resize_shell, TRUE);
|
gtk_widget_set_sensitive (image_scale->resize->resize_shell, TRUE);
|
||||||
|
@ -1309,17 +1307,16 @@ resize_check_layer_scaling (ImageResize *image_scale)
|
||||||
GSList *list = NULL;
|
GSList *list = NULL;
|
||||||
Layer *layer = NULL;
|
Layer *layer = NULL;
|
||||||
GtkWidget *dialog = NULL;
|
GtkWidget *dialog = NULL;
|
||||||
gchar *str = NULL;
|
|
||||||
|
|
||||||
g_assert(image_scale != NULL);
|
g_assert (image_scale != NULL);
|
||||||
|
|
||||||
if(NULL != (gimage = image_scale->gimage))
|
if (NULL != (gimage = image_scale->gimage))
|
||||||
{
|
{
|
||||||
/* Step through layers; test scaled dimensions. */
|
/* Step through layers; test scaled dimensions. */
|
||||||
|
|
||||||
success = TRUE;
|
success = TRUE;
|
||||||
list = gimage->layers;
|
list = gimage->layers;
|
||||||
while(list && success == TRUE)
|
while (list && success == TRUE)
|
||||||
{
|
{
|
||||||
layer = (Layer *)list->data;
|
layer = (Layer *)list->data;
|
||||||
success = layer_check_scaling (layer,
|
success = layer_check_scaling (layer,
|
||||||
|
@ -1329,25 +1326,23 @@ resize_check_layer_scaling (ImageResize *image_scale)
|
||||||
|
|
||||||
}
|
}
|
||||||
/* Warn user on failure */
|
/* Warn user on failure */
|
||||||
if(success == FALSE)
|
if (success == FALSE)
|
||||||
{
|
{
|
||||||
gtk_widget_set_sensitive (image_scale->resize->resize_shell, FALSE);
|
gtk_widget_set_sensitive (image_scale->resize->resize_shell, FALSE);
|
||||||
|
|
||||||
str = g_strdup (_("The chosen image size will shrink\n"
|
|
||||||
"some layers completely away.\nIs this what you want?"));
|
|
||||||
|
|
||||||
dialog =
|
dialog =
|
||||||
gimp_query_boolean_box (_("Layer Too Small"),
|
gimp_query_boolean_box (_("Layer Too Small"),
|
||||||
gimp_standard_help_func,
|
gimp_standard_help_func,
|
||||||
"dialogs/scale_layer_warn.html",
|
"dialogs/scale_layer_warn.html",
|
||||||
FALSE,
|
FALSE,
|
||||||
str,
|
_("The chosen image size will shrink\n"
|
||||||
|
"some layers completely away.\n"
|
||||||
|
"Is this what you want?"),
|
||||||
_("OK"), _("Cancel"),
|
_("OK"), _("Cancel"),
|
||||||
NULL, NULL,
|
GTK_OBJECT (image_scale->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
resize_scale_warn_callback,
|
resize_scale_warn_callback,
|
||||||
image_scale);
|
image_scale);
|
||||||
|
|
||||||
g_free (str);
|
|
||||||
gtk_widget_show (dialog);
|
gtk_widget_show (dialog);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,6 @@ typedef struct _Resize Resize;
|
||||||
|
|
||||||
struct _Resize
|
struct _Resize
|
||||||
{
|
{
|
||||||
/* The calling procedure is respondible for showing this widget */
|
|
||||||
GtkWidget *resize_shell;
|
GtkWidget *resize_shell;
|
||||||
|
|
||||||
ResizeType type;
|
ResizeType type;
|
||||||
|
@ -67,12 +66,17 @@ typedef struct
|
||||||
} ImageResize;
|
} ImageResize;
|
||||||
|
|
||||||
/* If resolution_x is zero, then don't show resolution modification
|
/* If resolution_x is zero, then don't show resolution modification
|
||||||
* parts of the dialog. If object is non-NULL, then attach the cancel
|
* parts of the dialog.
|
||||||
* callback to its destroy signal. */
|
*
|
||||||
|
* If object and signal are non-NULL, then attach the cancel callback to signal.
|
||||||
|
*
|
||||||
|
* If cancel_callback is NULL, then the dialog will be destroyed on "Cancel".
|
||||||
|
*/
|
||||||
|
|
||||||
Resize * resize_widget_new (ResizeType type,
|
Resize * resize_widget_new (ResizeType type,
|
||||||
ResizeTarget target,
|
ResizeTarget target,
|
||||||
GtkObject * object,
|
GtkObject *object,
|
||||||
|
gchar *signal,
|
||||||
gint width,
|
gint width,
|
||||||
gint height,
|
gint height,
|
||||||
gdouble resolution_x,
|
gdouble resolution_x,
|
||||||
|
@ -82,11 +86,10 @@ Resize * resize_widget_new (ResizeType type,
|
||||||
GtkSignalFunc ok_cb,
|
GtkSignalFunc ok_cb,
|
||||||
GtkSignalFunc cancel_cb,
|
GtkSignalFunc cancel_cb,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
void resize_widget_free (Resize * resize);
|
|
||||||
|
|
||||||
/* Layer scaling sanity check and warning dialogs */
|
/* Layer scaling sanity check and warning dialogs */
|
||||||
|
|
||||||
gboolean resize_check_layer_scaling (ImageResize *);
|
gboolean resize_check_layer_scaling (ImageResize *image_resize);
|
||||||
void resize_scale_implement (ImageResize *);
|
void resize_scale_implement (ImageResize *image_resize);
|
||||||
|
|
||||||
#endif /* __RESIZE_H__ */
|
#endif /* __RESIZE_H__ */
|
||||||
|
|
|
@ -1077,7 +1077,7 @@ create_display_shell (GDisplay *gdisp,
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_widget_realize (gdisp->canvas);
|
gtk_widget_realize (gdisp->canvas);
|
||||||
gdk_window_set_back_pixmap (gdisp->canvas->window, NULL, 0);
|
gdk_window_set_back_pixmap (gdisp->canvas->window, NULL, FALSE);
|
||||||
|
|
||||||
/* we need to realize the cursor_label widget here, so the size gets
|
/* we need to realize the cursor_label widget here, so the size gets
|
||||||
* computed correctly
|
* computed correctly
|
||||||
|
|
|
@ -1077,7 +1077,7 @@ create_display_shell (GDisplay *gdisp,
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_widget_realize (gdisp->canvas);
|
gtk_widget_realize (gdisp->canvas);
|
||||||
gdk_window_set_back_pixmap (gdisp->canvas->window, NULL, 0);
|
gdk_window_set_back_pixmap (gdisp->canvas->window, NULL, FALSE);
|
||||||
|
|
||||||
/* we need to realize the cursor_label widget here, so the size gets
|
/* we need to realize the cursor_label widget here, so the size gets
|
||||||
* computed correctly
|
* computed correctly
|
||||||
|
|
|
@ -438,6 +438,14 @@ color_area_events (GtkWidget *widget,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
color_area_realize (GtkWidget *widget,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
|
||||||
|
gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
color_area_create (gint width,
|
color_area_create (gint width,
|
||||||
gint height,
|
gint height,
|
||||||
|
@ -458,6 +466,10 @@ color_area_create (gint width,
|
||||||
GTK_SIGNAL_FUNC (color_area_events),
|
GTK_SIGNAL_FUNC (color_area_events),
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
gtk_signal_connect (GTK_OBJECT (color_area), "realize",
|
||||||
|
GTK_SIGNAL_FUNC (color_area_realize),
|
||||||
|
NULL);
|
||||||
|
|
||||||
default_pixmap = default_pmap;
|
default_pixmap = default_pmap;
|
||||||
default_mask = default_msk;
|
default_mask = default_msk;
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,6 @@ extern void layers_dialog_layer_merge_query (GImage *, gboolean);
|
||||||
/* local functions */
|
/* local functions */
|
||||||
static void image_resize_callback (GtkWidget *, gpointer);
|
static void image_resize_callback (GtkWidget *, gpointer);
|
||||||
static void image_scale_callback (GtkWidget *, gpointer);
|
static void image_scale_callback (GtkWidget *, gpointer);
|
||||||
static void image_cancel_callback (GtkWidget *, gpointer);
|
|
||||||
static void gimage_mask_feather_callback (GtkWidget *, gdouble, GimpUnit,
|
static void gimage_mask_feather_callback (GtkWidget *, gdouble, GimpUnit,
|
||||||
gpointer);
|
gpointer);
|
||||||
static void gimage_mask_border_callback (GtkWidget *, gdouble, GimpUnit,
|
static void gimage_mask_border_callback (GtkWidget *, gdouble, GimpUnit,
|
||||||
|
@ -806,6 +805,7 @@ image_resize_cmd_callback (GtkWidget *widget,
|
||||||
image_resize->resize = resize_widget_new (ResizeWidget,
|
image_resize->resize = resize_widget_new (ResizeWidget,
|
||||||
ResizeImage,
|
ResizeImage,
|
||||||
GTK_OBJECT (gimage),
|
GTK_OBJECT (gimage),
|
||||||
|
"destroy",
|
||||||
gimage->width,
|
gimage->width,
|
||||||
gimage->height,
|
gimage->height,
|
||||||
gimage->xresolution,
|
gimage->xresolution,
|
||||||
|
@ -813,9 +813,14 @@ image_resize_cmd_callback (GtkWidget *widget,
|
||||||
gimage->unit,
|
gimage->unit,
|
||||||
gdisp->dot_for_dot,
|
gdisp->dot_for_dot,
|
||||||
image_resize_callback,
|
image_resize_callback,
|
||||||
image_cancel_callback,
|
NULL,
|
||||||
image_resize);
|
image_resize);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (image_resize->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) image_resize);
|
||||||
|
|
||||||
gtk_widget_show (image_resize->resize->resize_shell);
|
gtk_widget_show (image_resize->resize->resize_shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -837,6 +842,7 @@ image_scale_cmd_callback (GtkWidget *widget,
|
||||||
image_scale->resize = resize_widget_new (ScaleWidget,
|
image_scale->resize = resize_widget_new (ScaleWidget,
|
||||||
ResizeImage,
|
ResizeImage,
|
||||||
GTK_OBJECT (gimage),
|
GTK_OBJECT (gimage),
|
||||||
|
"destroy",
|
||||||
gimage->width,
|
gimage->width,
|
||||||
gimage->height,
|
gimage->height,
|
||||||
gimage->xresolution,
|
gimage->xresolution,
|
||||||
|
@ -844,9 +850,14 @@ image_scale_cmd_callback (GtkWidget *widget,
|
||||||
gimage->unit,
|
gimage->unit,
|
||||||
gdisp->dot_for_dot,
|
gdisp->dot_for_dot,
|
||||||
image_scale_callback,
|
image_scale_callback,
|
||||||
image_cancel_callback,
|
NULL,
|
||||||
image_scale);
|
image_scale);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (image_scale->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) image_scale);
|
||||||
|
|
||||||
gtk_widget_show (image_scale->resize->resize_shell);
|
gtk_widget_show (image_scale->resize->resize_shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1307,7 +1318,7 @@ image_resize_callback (GtkWidget *widget,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
resize_widget_free (image_resize->resize);
|
gtk_widget_destroy (image_resize->resize->resize_shell);
|
||||||
g_free (image_resize);
|
g_free (image_resize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1317,29 +1328,16 @@ image_scale_callback (GtkWidget *widget,
|
||||||
{
|
{
|
||||||
ImageResize *image_scale = NULL;
|
ImageResize *image_scale = NULL;
|
||||||
|
|
||||||
g_assert((image_scale = (ImageResize *) client_data) != NULL);
|
g_assert ((image_scale = (ImageResize *) client_data) != NULL);
|
||||||
g_assert(image_scale->gimage != NULL);
|
g_assert (image_scale->gimage != NULL);
|
||||||
|
|
||||||
if(TRUE == resize_check_layer_scaling(image_scale))
|
if (TRUE == resize_check_layer_scaling (image_scale))
|
||||||
{
|
{
|
||||||
resize_scale_implement(image_scale);
|
resize_scale_implement (image_scale);
|
||||||
resize_widget_free (image_scale->resize);
|
gtk_widget_destroy (image_scale->resize->resize_shell);
|
||||||
g_free (image_scale);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
image_cancel_callback (GtkWidget *widget,
|
|
||||||
gpointer client_data)
|
|
||||||
{
|
|
||||||
ImageResize *image_scale;
|
|
||||||
|
|
||||||
image_scale = (ImageResize *) client_data;
|
|
||||||
|
|
||||||
resize_widget_free (image_scale->resize);
|
|
||||||
g_free (image_scale);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gimage_mask_feather_callback (GtkWidget *widget,
|
gimage_mask_feather_callback (GtkWidget *widget,
|
||||||
gdouble size,
|
gdouble size,
|
||||||
|
|
|
@ -71,7 +71,6 @@ extern void layers_dialog_layer_merge_query (GImage *, gboolean);
|
||||||
/* local functions */
|
/* local functions */
|
||||||
static void image_resize_callback (GtkWidget *, gpointer);
|
static void image_resize_callback (GtkWidget *, gpointer);
|
||||||
static void image_scale_callback (GtkWidget *, gpointer);
|
static void image_scale_callback (GtkWidget *, gpointer);
|
||||||
static void image_cancel_callback (GtkWidget *, gpointer);
|
|
||||||
static void gimage_mask_feather_callback (GtkWidget *, gdouble, GimpUnit,
|
static void gimage_mask_feather_callback (GtkWidget *, gdouble, GimpUnit,
|
||||||
gpointer);
|
gpointer);
|
||||||
static void gimage_mask_border_callback (GtkWidget *, gdouble, GimpUnit,
|
static void gimage_mask_border_callback (GtkWidget *, gdouble, GimpUnit,
|
||||||
|
@ -806,6 +805,7 @@ image_resize_cmd_callback (GtkWidget *widget,
|
||||||
image_resize->resize = resize_widget_new (ResizeWidget,
|
image_resize->resize = resize_widget_new (ResizeWidget,
|
||||||
ResizeImage,
|
ResizeImage,
|
||||||
GTK_OBJECT (gimage),
|
GTK_OBJECT (gimage),
|
||||||
|
"destroy",
|
||||||
gimage->width,
|
gimage->width,
|
||||||
gimage->height,
|
gimage->height,
|
||||||
gimage->xresolution,
|
gimage->xresolution,
|
||||||
|
@ -813,9 +813,14 @@ image_resize_cmd_callback (GtkWidget *widget,
|
||||||
gimage->unit,
|
gimage->unit,
|
||||||
gdisp->dot_for_dot,
|
gdisp->dot_for_dot,
|
||||||
image_resize_callback,
|
image_resize_callback,
|
||||||
image_cancel_callback,
|
NULL,
|
||||||
image_resize);
|
image_resize);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (image_resize->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) image_resize);
|
||||||
|
|
||||||
gtk_widget_show (image_resize->resize->resize_shell);
|
gtk_widget_show (image_resize->resize->resize_shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -837,6 +842,7 @@ image_scale_cmd_callback (GtkWidget *widget,
|
||||||
image_scale->resize = resize_widget_new (ScaleWidget,
|
image_scale->resize = resize_widget_new (ScaleWidget,
|
||||||
ResizeImage,
|
ResizeImage,
|
||||||
GTK_OBJECT (gimage),
|
GTK_OBJECT (gimage),
|
||||||
|
"destroy",
|
||||||
gimage->width,
|
gimage->width,
|
||||||
gimage->height,
|
gimage->height,
|
||||||
gimage->xresolution,
|
gimage->xresolution,
|
||||||
|
@ -844,9 +850,14 @@ image_scale_cmd_callback (GtkWidget *widget,
|
||||||
gimage->unit,
|
gimage->unit,
|
||||||
gdisp->dot_for_dot,
|
gdisp->dot_for_dot,
|
||||||
image_scale_callback,
|
image_scale_callback,
|
||||||
image_cancel_callback,
|
NULL,
|
||||||
image_scale);
|
image_scale);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (image_scale->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) image_scale);
|
||||||
|
|
||||||
gtk_widget_show (image_scale->resize->resize_shell);
|
gtk_widget_show (image_scale->resize->resize_shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1307,7 +1318,7 @@ image_resize_callback (GtkWidget *widget,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
resize_widget_free (image_resize->resize);
|
gtk_widget_destroy (image_resize->resize->resize_shell);
|
||||||
g_free (image_resize);
|
g_free (image_resize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1317,29 +1328,16 @@ image_scale_callback (GtkWidget *widget,
|
||||||
{
|
{
|
||||||
ImageResize *image_scale = NULL;
|
ImageResize *image_scale = NULL;
|
||||||
|
|
||||||
g_assert((image_scale = (ImageResize *) client_data) != NULL);
|
g_assert ((image_scale = (ImageResize *) client_data) != NULL);
|
||||||
g_assert(image_scale->gimage != NULL);
|
g_assert (image_scale->gimage != NULL);
|
||||||
|
|
||||||
if(TRUE == resize_check_layer_scaling(image_scale))
|
if (TRUE == resize_check_layer_scaling (image_scale))
|
||||||
{
|
{
|
||||||
resize_scale_implement(image_scale);
|
resize_scale_implement (image_scale);
|
||||||
resize_widget_free (image_scale->resize);
|
gtk_widget_destroy (image_scale->resize->resize_shell);
|
||||||
g_free (image_scale);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
image_cancel_callback (GtkWidget *widget,
|
|
||||||
gpointer client_data)
|
|
||||||
{
|
|
||||||
ImageResize *image_scale;
|
|
||||||
|
|
||||||
image_scale = (ImageResize *) client_data;
|
|
||||||
|
|
||||||
resize_widget_free (image_scale->resize);
|
|
||||||
g_free (image_scale);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gimage_mask_feather_callback (GtkWidget *widget,
|
gimage_mask_feather_callback (GtkWidget *widget,
|
||||||
gdouble size,
|
gdouble size,
|
||||||
|
|
|
@ -2616,7 +2616,6 @@ layer_widget_button_events (GtkWidget *widget,
|
||||||
{
|
{
|
||||||
layer_widget_exclusive_visible (layer_widget);
|
layer_widget_exclusive_visible (layer_widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GIMP_DRAWABLE (layer_widget->layer)->visible =
|
GIMP_DRAWABLE (layer_widget->layer)->visible =
|
||||||
|
@ -3073,17 +3072,20 @@ layer_widget_eye_redraw (LayerWidget *layer_widget)
|
||||||
{
|
{
|
||||||
eye_pixmap[NORMAL] =
|
eye_pixmap[NORMAL] =
|
||||||
gdk_pixmap_create_from_data (layer_widget->eye_widget->window,
|
gdk_pixmap_create_from_data (layer_widget->eye_widget->window,
|
||||||
(gchar*) eye_bits, eye_width, eye_height, -1,
|
(gchar*) eye_bits,
|
||||||
|
eye_width, eye_height, -1,
|
||||||
&layer_widget->eye_widget->style->fg[GTK_STATE_NORMAL],
|
&layer_widget->eye_widget->style->fg[GTK_STATE_NORMAL],
|
||||||
&layer_widget->eye_widget->style->white);
|
&layer_widget->eye_widget->style->white);
|
||||||
eye_pixmap[SELECTED] =
|
eye_pixmap[SELECTED] =
|
||||||
gdk_pixmap_create_from_data (layer_widget->eye_widget->window,
|
gdk_pixmap_create_from_data (layer_widget->eye_widget->window,
|
||||||
(gchar*) eye_bits, eye_width, eye_height, -1,
|
(gchar*) eye_bits,
|
||||||
|
eye_width, eye_height, -1,
|
||||||
&layer_widget->eye_widget->style->fg[GTK_STATE_SELECTED],
|
&layer_widget->eye_widget->style->fg[GTK_STATE_SELECTED],
|
||||||
&layer_widget->eye_widget->style->bg[GTK_STATE_SELECTED]);
|
&layer_widget->eye_widget->style->bg[GTK_STATE_SELECTED]);
|
||||||
eye_pixmap[INSENSITIVE] =
|
eye_pixmap[INSENSITIVE] =
|
||||||
gdk_pixmap_create_from_data (layer_widget->eye_widget->window,
|
gdk_pixmap_create_from_data (layer_widget->eye_widget->window,
|
||||||
(gchar*) eye_bits, eye_width, eye_height, -1,
|
(gchar*) eye_bits,
|
||||||
|
eye_width, eye_height, -1,
|
||||||
&layer_widget->eye_widget->style->fg[GTK_STATE_INSENSITIVE],
|
&layer_widget->eye_widget->style->fg[GTK_STATE_INSENSITIVE],
|
||||||
&layer_widget->eye_widget->style->bg[GTK_STATE_INSENSITIVE]);
|
&layer_widget->eye_widget->style->bg[GTK_STATE_INSENSITIVE]);
|
||||||
}
|
}
|
||||||
|
@ -3233,13 +3235,15 @@ layer_widget_layer_flush (GtkWidget *widget,
|
||||||
/* Set sensitivity */
|
/* Set sensitivity */
|
||||||
|
|
||||||
/* to false if there is a floating selection, and this aint it */
|
/* to false if there is a floating selection, and this aint it */
|
||||||
if (! layer_is_floating_sel (layer_widget->layer) && layersD->floating_sel != NULL)
|
if (! layer_is_floating_sel (layer_widget->layer) &&
|
||||||
|
layersD->floating_sel != NULL)
|
||||||
{
|
{
|
||||||
if (GTK_WIDGET_IS_SENSITIVE (layer_widget->list_item))
|
if (GTK_WIDGET_IS_SENSITIVE (layer_widget->list_item))
|
||||||
gtk_widget_set_sensitive (layer_widget->list_item, FALSE);
|
gtk_widget_set_sensitive (layer_widget->list_item, FALSE);
|
||||||
}
|
}
|
||||||
/* to true if there is a floating selection, and this is it */
|
/* to true if there is a floating selection, and this is it */
|
||||||
if (layer_is_floating_sel (layer_widget->layer) && layersD->floating_sel != NULL)
|
if (layer_is_floating_sel (layer_widget->layer) &&
|
||||||
|
layersD->floating_sel != NULL)
|
||||||
{
|
{
|
||||||
if (! GTK_WIDGET_IS_SENSITIVE (layer_widget->list_item))
|
if (! GTK_WIDGET_IS_SENSITIVE (layer_widget->list_item))
|
||||||
gtk_widget_set_sensitive (layer_widget->list_item, TRUE);
|
gtk_widget_set_sensitive (layer_widget->list_item, TRUE);
|
||||||
|
@ -3779,25 +3783,13 @@ scale_layer_query_ok_callback (GtkWidget *widget,
|
||||||
gdisplays_flush ();
|
gdisplays_flush ();
|
||||||
}
|
}
|
||||||
|
|
||||||
resize_widget_free (options->resize);
|
gtk_widget_destroy (options->resize->resize_shell);
|
||||||
g_free (options);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
g_message (_("Invalid width or height.\n"
|
g_message (_("Invalid width or height.\n"
|
||||||
"Both must be positive."));
|
"Both must be positive."));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
scale_layer_query_cancel_callback (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
ScaleLayerOptions *options;
|
|
||||||
options = (ScaleLayerOptions *) data;
|
|
||||||
|
|
||||||
resize_widget_free (options->resize);
|
|
||||||
g_free (options);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
layers_dialog_scale_layer_query (GimpImage *gimage,
|
layers_dialog_scale_layer_query (GimpImage *gimage,
|
||||||
Layer *layer)
|
Layer *layer)
|
||||||
|
@ -3810,16 +3802,22 @@ layers_dialog_scale_layer_query (GimpImage *gimage,
|
||||||
options->resize = resize_widget_new (ScaleWidget,
|
options->resize = resize_widget_new (ScaleWidget,
|
||||||
ResizeLayer,
|
ResizeLayer,
|
||||||
GTK_OBJECT (layer),
|
GTK_OBJECT (layer),
|
||||||
drawable_width (GIMP_DRAWABLE(layer)),
|
"removed",
|
||||||
drawable_height (GIMP_DRAWABLE(layer)),
|
drawable_width (GIMP_DRAWABLE (layer)),
|
||||||
|
drawable_height (GIMP_DRAWABLE (layer)),
|
||||||
gimage->xresolution,
|
gimage->xresolution,
|
||||||
gimage->yresolution,
|
gimage->yresolution,
|
||||||
gimage->unit,
|
gimage->unit,
|
||||||
TRUE,
|
TRUE,
|
||||||
scale_layer_query_ok_callback,
|
scale_layer_query_ok_callback,
|
||||||
scale_layer_query_cancel_callback,
|
NULL,
|
||||||
options);
|
options);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (options->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) options);
|
||||||
|
|
||||||
gtk_widget_show (options->resize->resize_shell);
|
gtk_widget_show (options->resize->resize_shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3867,25 +3865,13 @@ resize_layer_query_ok_callback (GtkWidget *widget,
|
||||||
gdisplays_flush ();
|
gdisplays_flush ();
|
||||||
}
|
}
|
||||||
|
|
||||||
resize_widget_free (options->resize);
|
gtk_widget_destroy (options->resize->resize_shell);
|
||||||
g_free (options);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
g_message (_("Invalid width or height.\n"
|
g_message (_("Invalid width or height.\n"
|
||||||
"Both must be positive."));
|
"Both must be positive."));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
resize_layer_query_cancel_callback (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
ResizeLayerOptions *options;
|
|
||||||
options = (ResizeLayerOptions *) data;
|
|
||||||
|
|
||||||
resize_widget_free (options->resize);
|
|
||||||
g_free (options);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
layers_dialog_resize_layer_query (GimpImage *gimage,
|
layers_dialog_resize_layer_query (GimpImage *gimage,
|
||||||
Layer *layer)
|
Layer *layer)
|
||||||
|
@ -3898,16 +3884,22 @@ layers_dialog_resize_layer_query (GimpImage *gimage,
|
||||||
options->resize = resize_widget_new (ResizeWidget,
|
options->resize = resize_widget_new (ResizeWidget,
|
||||||
ResizeLayer,
|
ResizeLayer,
|
||||||
GTK_OBJECT (layer),
|
GTK_OBJECT (layer),
|
||||||
drawable_width (GIMP_DRAWABLE(layer)),
|
"removed",
|
||||||
drawable_height (GIMP_DRAWABLE(layer)),
|
drawable_width (GIMP_DRAWABLE (layer)),
|
||||||
|
drawable_height (GIMP_DRAWABLE (layer)),
|
||||||
gimage->xresolution,
|
gimage->xresolution,
|
||||||
gimage->yresolution,
|
gimage->yresolution,
|
||||||
gimage->unit,
|
gimage->unit,
|
||||||
TRUE,
|
TRUE,
|
||||||
resize_layer_query_ok_callback,
|
resize_layer_query_ok_callback,
|
||||||
resize_layer_query_cancel_callback,
|
NULL,
|
||||||
options);
|
options);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (options->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) options);
|
||||||
|
|
||||||
gtk_widget_show (options->resize->resize_shell);
|
gtk_widget_show (options->resize->resize_shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
#include <math.h>
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "appenv.h"
|
#include "appenv.h"
|
||||||
#include "gdisplay.h"
|
#include "gdisplay.h"
|
||||||
#include "resize.h"
|
#include "resize.h"
|
||||||
|
@ -26,7 +26,9 @@
|
||||||
|
|
||||||
#include "libgimp/gimpchainbutton.h"
|
#include "libgimp/gimpchainbutton.h"
|
||||||
#include "libgimp/gimplimits.h"
|
#include "libgimp/gimplimits.h"
|
||||||
|
#include "libgimp/gimpmath.h"
|
||||||
#include "libgimp/gimpsizeentry.h"
|
#include "libgimp/gimpsizeentry.h"
|
||||||
|
|
||||||
#include "libgimp/gimpintl.h"
|
#include "libgimp/gimpintl.h"
|
||||||
|
|
||||||
#define EVENT_MASK GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK
|
#define EVENT_MASK GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK
|
||||||
|
@ -56,9 +58,6 @@ struct _ResizePrivate
|
||||||
GtkWidget *resolution_se;
|
GtkWidget *resolution_se;
|
||||||
GtkWidget *equal_res;
|
GtkWidget *equal_res;
|
||||||
|
|
||||||
GtkObject *object;
|
|
||||||
guint object_destroy_handler;
|
|
||||||
|
|
||||||
gdouble ratio;
|
gdouble ratio;
|
||||||
gint old_width, old_height;
|
gint old_width, old_height;
|
||||||
gdouble old_res_x, old_res_y;
|
gdouble old_res_x, old_res_y;
|
||||||
|
@ -85,6 +84,7 @@ Resize *
|
||||||
resize_widget_new (ResizeType type,
|
resize_widget_new (ResizeType type,
|
||||||
ResizeTarget target,
|
ResizeTarget target,
|
||||||
GtkObject *object,
|
GtkObject *object,
|
||||||
|
gchar *signal,
|
||||||
gint width,
|
gint width,
|
||||||
gint height,
|
gint height,
|
||||||
gdouble resolution_x,
|
gdouble resolution_x,
|
||||||
|
@ -112,8 +112,13 @@ resize_widget_new (ResizeType type,
|
||||||
alignment = NULL;
|
alignment = NULL;
|
||||||
frame = NULL;
|
frame = NULL;
|
||||||
|
|
||||||
resize = g_new (Resize, 1);
|
|
||||||
private = g_new (ResizePrivate, 1);
|
private = g_new (ResizePrivate, 1);
|
||||||
|
private->old_width = width;
|
||||||
|
private->old_height = height;
|
||||||
|
private->old_res_x = resolution_x;
|
||||||
|
private->old_res_y = resolution_y;
|
||||||
|
|
||||||
|
resize = g_new (Resize, 1);
|
||||||
resize->type = type;
|
resize->type = type;
|
||||||
resize->target = target;
|
resize->target = target;
|
||||||
resize->private_part = private;
|
resize->private_part = private;
|
||||||
|
@ -126,11 +131,6 @@ resize_widget_new (ResizeType type,
|
||||||
resize->ratio_y = 1.0;
|
resize->ratio_y = 1.0;
|
||||||
resize->offset_x = 0;
|
resize->offset_x = 0;
|
||||||
resize->offset_y = 0;
|
resize->offset_y = 0;
|
||||||
private->old_width = width;
|
|
||||||
private->old_height = height;
|
|
||||||
private->old_res_x = resolution_x;
|
|
||||||
private->old_res_y = resolution_y;
|
|
||||||
private->object = NULL;
|
|
||||||
|
|
||||||
/* Get the image width and height variables, based on the gimage */
|
/* Get the image width and height variables, based on the gimage */
|
||||||
if (width > height)
|
if (width > height)
|
||||||
|
@ -192,21 +192,33 @@ resize_widget_new (ResizeType type,
|
||||||
|
|
||||||
_("OK"), ok_cb,
|
_("OK"), ok_cb,
|
||||||
user_data, NULL, NULL, TRUE, FALSE,
|
user_data, NULL, NULL, TRUE, FALSE,
|
||||||
_("Cancel"), cancel_cb,
|
_("Cancel"), cancel_cb ? cancel_cb : gtk_widget_destroy,
|
||||||
user_data, NULL, NULL, FALSE, TRUE,
|
cancel_cb ? user_data : NULL,
|
||||||
|
cancel_cb ? NULL : (gpointer) 1,
|
||||||
|
NULL, FALSE, TRUE,
|
||||||
|
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (resize->resize_shell), "destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) private);
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (resize->resize_shell), "destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) resize);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* handle the image disappearing under our feet */
|
/* handle the image disappearing under our feet */
|
||||||
if (object)
|
if (object && signal)
|
||||||
{
|
{
|
||||||
const gchar *signame;
|
if (cancel_cb)
|
||||||
|
gtk_signal_connect (GTK_OBJECT (object), signal,
|
||||||
signame = (target == ResizeLayer) ? "removed" : "destroy";
|
cancel_cb,
|
||||||
private->object = object;
|
user_data);
|
||||||
private->object_destroy_handler =
|
else
|
||||||
gtk_signal_connect (GTK_OBJECT (object), signame, cancel_cb, user_data);
|
gtk_signal_connect_object_while_alive
|
||||||
|
(GTK_OBJECT (object), signal,
|
||||||
|
GTK_SIGNAL_FUNC (gtk_widget_destroy),
|
||||||
|
GTK_OBJECT (resize->resize_shell));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the main vbox */
|
/* the main vbox */
|
||||||
|
@ -638,28 +650,14 @@ resize_widget_new (ResizeType type,
|
||||||
return resize;
|
return resize;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
resize_widget_free (Resize *resize)
|
|
||||||
{
|
|
||||||
ResizePrivate *private = resize->private_part;
|
|
||||||
|
|
||||||
if (private->object)
|
|
||||||
gtk_signal_disconnect (GTK_OBJECT (private->object),
|
|
||||||
private->object_destroy_handler);
|
|
||||||
|
|
||||||
gtk_widget_destroy (resize->resize_shell);
|
|
||||||
g_free (resize->private_part);
|
|
||||||
g_free (resize);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
resize_draw (Resize *resize)
|
resize_draw (Resize *resize)
|
||||||
{
|
{
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
ResizePrivate *private;
|
ResizePrivate *private;
|
||||||
int aw, ah;
|
gint aw, ah;
|
||||||
int x, y;
|
gint x, y;
|
||||||
int w, h;
|
gint w, h;
|
||||||
|
|
||||||
/* Only need to draw if it's a resize widget */
|
/* Only need to draw if it's a resize widget */
|
||||||
if (resize->type != ResizeWidget)
|
if (resize->type != ResizeWidget)
|
||||||
|
@ -1196,7 +1194,8 @@ resize_events (GtkWidget *widget,
|
||||||
|
|
||||||
/*** Resize sanity checks ***/
|
/*** Resize sanity checks ***/
|
||||||
|
|
||||||
void resize_scale_implement (ImageResize *image_scale)
|
void
|
||||||
|
resize_scale_implement (ImageResize *image_scale)
|
||||||
{
|
{
|
||||||
GImage *gimage = NULL;
|
GImage *gimage = NULL;
|
||||||
gboolean rulers_flush = FALSE;
|
gboolean rulers_flush = FALSE;
|
||||||
|
@ -1270,24 +1269,23 @@ void resize_scale_implement (ImageResize *image_scale)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static void
|
||||||
void resize_scale_warn_callback (GtkWidget *widget,
|
resize_scale_warn_callback (GtkWidget *widget,
|
||||||
gboolean do_scale,
|
gboolean do_scale,
|
||||||
gpointer client_data)
|
gpointer client_data)
|
||||||
{
|
{
|
||||||
ImageResize *image_scale = NULL;
|
ImageResize *image_scale = NULL;
|
||||||
GImage *gimage = NULL;
|
GImage *gimage = NULL;
|
||||||
|
|
||||||
g_assert(client_data != NULL);
|
g_assert (client_data != NULL);
|
||||||
image_scale = (ImageResize *) client_data;
|
image_scale = (ImageResize *) client_data;
|
||||||
gimage = image_scale->gimage;
|
gimage = image_scale->gimage;
|
||||||
g_assert(gimage != NULL);
|
g_assert (gimage != NULL);
|
||||||
|
|
||||||
if(do_scale == TRUE) /* User doesn't mind losing layers... */
|
if (do_scale == TRUE) /* User doesn't mind losing layers... */
|
||||||
{
|
{
|
||||||
resize_scale_implement(image_scale);
|
resize_scale_implement (image_scale);
|
||||||
resize_widget_free (image_scale->resize);
|
gtk_widget_destroy (image_scale->resize->resize_shell);
|
||||||
g_free (image_scale);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
gtk_widget_set_sensitive (image_scale->resize->resize_shell, TRUE);
|
gtk_widget_set_sensitive (image_scale->resize->resize_shell, TRUE);
|
||||||
|
@ -1309,17 +1307,16 @@ resize_check_layer_scaling (ImageResize *image_scale)
|
||||||
GSList *list = NULL;
|
GSList *list = NULL;
|
||||||
Layer *layer = NULL;
|
Layer *layer = NULL;
|
||||||
GtkWidget *dialog = NULL;
|
GtkWidget *dialog = NULL;
|
||||||
gchar *str = NULL;
|
|
||||||
|
|
||||||
g_assert(image_scale != NULL);
|
g_assert (image_scale != NULL);
|
||||||
|
|
||||||
if(NULL != (gimage = image_scale->gimage))
|
if (NULL != (gimage = image_scale->gimage))
|
||||||
{
|
{
|
||||||
/* Step through layers; test scaled dimensions. */
|
/* Step through layers; test scaled dimensions. */
|
||||||
|
|
||||||
success = TRUE;
|
success = TRUE;
|
||||||
list = gimage->layers;
|
list = gimage->layers;
|
||||||
while(list && success == TRUE)
|
while (list && success == TRUE)
|
||||||
{
|
{
|
||||||
layer = (Layer *)list->data;
|
layer = (Layer *)list->data;
|
||||||
success = layer_check_scaling (layer,
|
success = layer_check_scaling (layer,
|
||||||
|
@ -1329,25 +1326,23 @@ resize_check_layer_scaling (ImageResize *image_scale)
|
||||||
|
|
||||||
}
|
}
|
||||||
/* Warn user on failure */
|
/* Warn user on failure */
|
||||||
if(success == FALSE)
|
if (success == FALSE)
|
||||||
{
|
{
|
||||||
gtk_widget_set_sensitive (image_scale->resize->resize_shell, FALSE);
|
gtk_widget_set_sensitive (image_scale->resize->resize_shell, FALSE);
|
||||||
|
|
||||||
str = g_strdup (_("The chosen image size will shrink\n"
|
|
||||||
"some layers completely away.\nIs this what you want?"));
|
|
||||||
|
|
||||||
dialog =
|
dialog =
|
||||||
gimp_query_boolean_box (_("Layer Too Small"),
|
gimp_query_boolean_box (_("Layer Too Small"),
|
||||||
gimp_standard_help_func,
|
gimp_standard_help_func,
|
||||||
"dialogs/scale_layer_warn.html",
|
"dialogs/scale_layer_warn.html",
|
||||||
FALSE,
|
FALSE,
|
||||||
str,
|
_("The chosen image size will shrink\n"
|
||||||
|
"some layers completely away.\n"
|
||||||
|
"Is this what you want?"),
|
||||||
_("OK"), _("Cancel"),
|
_("OK"), _("Cancel"),
|
||||||
NULL, NULL,
|
GTK_OBJECT (image_scale->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
resize_scale_warn_callback,
|
resize_scale_warn_callback,
|
||||||
image_scale);
|
image_scale);
|
||||||
|
|
||||||
g_free (str);
|
|
||||||
gtk_widget_show (dialog);
|
gtk_widget_show (dialog);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,6 @@ typedef struct _Resize Resize;
|
||||||
|
|
||||||
struct _Resize
|
struct _Resize
|
||||||
{
|
{
|
||||||
/* The calling procedure is respondible for showing this widget */
|
|
||||||
GtkWidget *resize_shell;
|
GtkWidget *resize_shell;
|
||||||
|
|
||||||
ResizeType type;
|
ResizeType type;
|
||||||
|
@ -67,12 +66,17 @@ typedef struct
|
||||||
} ImageResize;
|
} ImageResize;
|
||||||
|
|
||||||
/* If resolution_x is zero, then don't show resolution modification
|
/* If resolution_x is zero, then don't show resolution modification
|
||||||
* parts of the dialog. If object is non-NULL, then attach the cancel
|
* parts of the dialog.
|
||||||
* callback to its destroy signal. */
|
*
|
||||||
|
* If object and signal are non-NULL, then attach the cancel callback to signal.
|
||||||
|
*
|
||||||
|
* If cancel_callback is NULL, then the dialog will be destroyed on "Cancel".
|
||||||
|
*/
|
||||||
|
|
||||||
Resize * resize_widget_new (ResizeType type,
|
Resize * resize_widget_new (ResizeType type,
|
||||||
ResizeTarget target,
|
ResizeTarget target,
|
||||||
GtkObject * object,
|
GtkObject *object,
|
||||||
|
gchar *signal,
|
||||||
gint width,
|
gint width,
|
||||||
gint height,
|
gint height,
|
||||||
gdouble resolution_x,
|
gdouble resolution_x,
|
||||||
|
@ -82,11 +86,10 @@ Resize * resize_widget_new (ResizeType type,
|
||||||
GtkSignalFunc ok_cb,
|
GtkSignalFunc ok_cb,
|
||||||
GtkSignalFunc cancel_cb,
|
GtkSignalFunc cancel_cb,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
void resize_widget_free (Resize * resize);
|
|
||||||
|
|
||||||
/* Layer scaling sanity check and warning dialogs */
|
/* Layer scaling sanity check and warning dialogs */
|
||||||
|
|
||||||
gboolean resize_check_layer_scaling (ImageResize *);
|
gboolean resize_check_layer_scaling (ImageResize *image_resize);
|
||||||
void resize_scale_implement (ImageResize *);
|
void resize_scale_implement (ImageResize *image_resize);
|
||||||
|
|
||||||
#endif /* __RESIZE_H__ */
|
#endif /* __RESIZE_H__ */
|
||||||
|
|
|
@ -1077,7 +1077,7 @@ create_display_shell (GDisplay *gdisp,
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_widget_realize (gdisp->canvas);
|
gtk_widget_realize (gdisp->canvas);
|
||||||
gdk_window_set_back_pixmap (gdisp->canvas->window, NULL, 0);
|
gdk_window_set_back_pixmap (gdisp->canvas->window, NULL, FALSE);
|
||||||
|
|
||||||
/* we need to realize the cursor_label widget here, so the size gets
|
/* we need to realize the cursor_label widget here, so the size gets
|
||||||
* computed correctly
|
* computed correctly
|
||||||
|
|
|
@ -2616,7 +2616,6 @@ layer_widget_button_events (GtkWidget *widget,
|
||||||
{
|
{
|
||||||
layer_widget_exclusive_visible (layer_widget);
|
layer_widget_exclusive_visible (layer_widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GIMP_DRAWABLE (layer_widget->layer)->visible =
|
GIMP_DRAWABLE (layer_widget->layer)->visible =
|
||||||
|
@ -3073,17 +3072,20 @@ layer_widget_eye_redraw (LayerWidget *layer_widget)
|
||||||
{
|
{
|
||||||
eye_pixmap[NORMAL] =
|
eye_pixmap[NORMAL] =
|
||||||
gdk_pixmap_create_from_data (layer_widget->eye_widget->window,
|
gdk_pixmap_create_from_data (layer_widget->eye_widget->window,
|
||||||
(gchar*) eye_bits, eye_width, eye_height, -1,
|
(gchar*) eye_bits,
|
||||||
|
eye_width, eye_height, -1,
|
||||||
&layer_widget->eye_widget->style->fg[GTK_STATE_NORMAL],
|
&layer_widget->eye_widget->style->fg[GTK_STATE_NORMAL],
|
||||||
&layer_widget->eye_widget->style->white);
|
&layer_widget->eye_widget->style->white);
|
||||||
eye_pixmap[SELECTED] =
|
eye_pixmap[SELECTED] =
|
||||||
gdk_pixmap_create_from_data (layer_widget->eye_widget->window,
|
gdk_pixmap_create_from_data (layer_widget->eye_widget->window,
|
||||||
(gchar*) eye_bits, eye_width, eye_height, -1,
|
(gchar*) eye_bits,
|
||||||
|
eye_width, eye_height, -1,
|
||||||
&layer_widget->eye_widget->style->fg[GTK_STATE_SELECTED],
|
&layer_widget->eye_widget->style->fg[GTK_STATE_SELECTED],
|
||||||
&layer_widget->eye_widget->style->bg[GTK_STATE_SELECTED]);
|
&layer_widget->eye_widget->style->bg[GTK_STATE_SELECTED]);
|
||||||
eye_pixmap[INSENSITIVE] =
|
eye_pixmap[INSENSITIVE] =
|
||||||
gdk_pixmap_create_from_data (layer_widget->eye_widget->window,
|
gdk_pixmap_create_from_data (layer_widget->eye_widget->window,
|
||||||
(gchar*) eye_bits, eye_width, eye_height, -1,
|
(gchar*) eye_bits,
|
||||||
|
eye_width, eye_height, -1,
|
||||||
&layer_widget->eye_widget->style->fg[GTK_STATE_INSENSITIVE],
|
&layer_widget->eye_widget->style->fg[GTK_STATE_INSENSITIVE],
|
||||||
&layer_widget->eye_widget->style->bg[GTK_STATE_INSENSITIVE]);
|
&layer_widget->eye_widget->style->bg[GTK_STATE_INSENSITIVE]);
|
||||||
}
|
}
|
||||||
|
@ -3233,13 +3235,15 @@ layer_widget_layer_flush (GtkWidget *widget,
|
||||||
/* Set sensitivity */
|
/* Set sensitivity */
|
||||||
|
|
||||||
/* to false if there is a floating selection, and this aint it */
|
/* to false if there is a floating selection, and this aint it */
|
||||||
if (! layer_is_floating_sel (layer_widget->layer) && layersD->floating_sel != NULL)
|
if (! layer_is_floating_sel (layer_widget->layer) &&
|
||||||
|
layersD->floating_sel != NULL)
|
||||||
{
|
{
|
||||||
if (GTK_WIDGET_IS_SENSITIVE (layer_widget->list_item))
|
if (GTK_WIDGET_IS_SENSITIVE (layer_widget->list_item))
|
||||||
gtk_widget_set_sensitive (layer_widget->list_item, FALSE);
|
gtk_widget_set_sensitive (layer_widget->list_item, FALSE);
|
||||||
}
|
}
|
||||||
/* to true if there is a floating selection, and this is it */
|
/* to true if there is a floating selection, and this is it */
|
||||||
if (layer_is_floating_sel (layer_widget->layer) && layersD->floating_sel != NULL)
|
if (layer_is_floating_sel (layer_widget->layer) &&
|
||||||
|
layersD->floating_sel != NULL)
|
||||||
{
|
{
|
||||||
if (! GTK_WIDGET_IS_SENSITIVE (layer_widget->list_item))
|
if (! GTK_WIDGET_IS_SENSITIVE (layer_widget->list_item))
|
||||||
gtk_widget_set_sensitive (layer_widget->list_item, TRUE);
|
gtk_widget_set_sensitive (layer_widget->list_item, TRUE);
|
||||||
|
@ -3779,25 +3783,13 @@ scale_layer_query_ok_callback (GtkWidget *widget,
|
||||||
gdisplays_flush ();
|
gdisplays_flush ();
|
||||||
}
|
}
|
||||||
|
|
||||||
resize_widget_free (options->resize);
|
gtk_widget_destroy (options->resize->resize_shell);
|
||||||
g_free (options);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
g_message (_("Invalid width or height.\n"
|
g_message (_("Invalid width or height.\n"
|
||||||
"Both must be positive."));
|
"Both must be positive."));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
scale_layer_query_cancel_callback (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
ScaleLayerOptions *options;
|
|
||||||
options = (ScaleLayerOptions *) data;
|
|
||||||
|
|
||||||
resize_widget_free (options->resize);
|
|
||||||
g_free (options);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
layers_dialog_scale_layer_query (GimpImage *gimage,
|
layers_dialog_scale_layer_query (GimpImage *gimage,
|
||||||
Layer *layer)
|
Layer *layer)
|
||||||
|
@ -3810,16 +3802,22 @@ layers_dialog_scale_layer_query (GimpImage *gimage,
|
||||||
options->resize = resize_widget_new (ScaleWidget,
|
options->resize = resize_widget_new (ScaleWidget,
|
||||||
ResizeLayer,
|
ResizeLayer,
|
||||||
GTK_OBJECT (layer),
|
GTK_OBJECT (layer),
|
||||||
drawable_width (GIMP_DRAWABLE(layer)),
|
"removed",
|
||||||
drawable_height (GIMP_DRAWABLE(layer)),
|
drawable_width (GIMP_DRAWABLE (layer)),
|
||||||
|
drawable_height (GIMP_DRAWABLE (layer)),
|
||||||
gimage->xresolution,
|
gimage->xresolution,
|
||||||
gimage->yresolution,
|
gimage->yresolution,
|
||||||
gimage->unit,
|
gimage->unit,
|
||||||
TRUE,
|
TRUE,
|
||||||
scale_layer_query_ok_callback,
|
scale_layer_query_ok_callback,
|
||||||
scale_layer_query_cancel_callback,
|
NULL,
|
||||||
options);
|
options);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (options->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) options);
|
||||||
|
|
||||||
gtk_widget_show (options->resize->resize_shell);
|
gtk_widget_show (options->resize->resize_shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3867,25 +3865,13 @@ resize_layer_query_ok_callback (GtkWidget *widget,
|
||||||
gdisplays_flush ();
|
gdisplays_flush ();
|
||||||
}
|
}
|
||||||
|
|
||||||
resize_widget_free (options->resize);
|
gtk_widget_destroy (options->resize->resize_shell);
|
||||||
g_free (options);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
g_message (_("Invalid width or height.\n"
|
g_message (_("Invalid width or height.\n"
|
||||||
"Both must be positive."));
|
"Both must be positive."));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
resize_layer_query_cancel_callback (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
ResizeLayerOptions *options;
|
|
||||||
options = (ResizeLayerOptions *) data;
|
|
||||||
|
|
||||||
resize_widget_free (options->resize);
|
|
||||||
g_free (options);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
layers_dialog_resize_layer_query (GimpImage *gimage,
|
layers_dialog_resize_layer_query (GimpImage *gimage,
|
||||||
Layer *layer)
|
Layer *layer)
|
||||||
|
@ -3898,16 +3884,22 @@ layers_dialog_resize_layer_query (GimpImage *gimage,
|
||||||
options->resize = resize_widget_new (ResizeWidget,
|
options->resize = resize_widget_new (ResizeWidget,
|
||||||
ResizeLayer,
|
ResizeLayer,
|
||||||
GTK_OBJECT (layer),
|
GTK_OBJECT (layer),
|
||||||
drawable_width (GIMP_DRAWABLE(layer)),
|
"removed",
|
||||||
drawable_height (GIMP_DRAWABLE(layer)),
|
drawable_width (GIMP_DRAWABLE (layer)),
|
||||||
|
drawable_height (GIMP_DRAWABLE (layer)),
|
||||||
gimage->xresolution,
|
gimage->xresolution,
|
||||||
gimage->yresolution,
|
gimage->yresolution,
|
||||||
gimage->unit,
|
gimage->unit,
|
||||||
TRUE,
|
TRUE,
|
||||||
resize_layer_query_ok_callback,
|
resize_layer_query_ok_callback,
|
||||||
resize_layer_query_cancel_callback,
|
NULL,
|
||||||
options);
|
options);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (options->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) options);
|
||||||
|
|
||||||
gtk_widget_show (options->resize->resize_shell);
|
gtk_widget_show (options->resize->resize_shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
109
app/resize.c
109
app/resize.c
|
@ -15,8 +15,8 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
#include <math.h>
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "appenv.h"
|
#include "appenv.h"
|
||||||
#include "gdisplay.h"
|
#include "gdisplay.h"
|
||||||
#include "resize.h"
|
#include "resize.h"
|
||||||
|
@ -26,7 +26,9 @@
|
||||||
|
|
||||||
#include "libgimp/gimpchainbutton.h"
|
#include "libgimp/gimpchainbutton.h"
|
||||||
#include "libgimp/gimplimits.h"
|
#include "libgimp/gimplimits.h"
|
||||||
|
#include "libgimp/gimpmath.h"
|
||||||
#include "libgimp/gimpsizeentry.h"
|
#include "libgimp/gimpsizeentry.h"
|
||||||
|
|
||||||
#include "libgimp/gimpintl.h"
|
#include "libgimp/gimpintl.h"
|
||||||
|
|
||||||
#define EVENT_MASK GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK
|
#define EVENT_MASK GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK
|
||||||
|
@ -56,9 +58,6 @@ struct _ResizePrivate
|
||||||
GtkWidget *resolution_se;
|
GtkWidget *resolution_se;
|
||||||
GtkWidget *equal_res;
|
GtkWidget *equal_res;
|
||||||
|
|
||||||
GtkObject *object;
|
|
||||||
guint object_destroy_handler;
|
|
||||||
|
|
||||||
gdouble ratio;
|
gdouble ratio;
|
||||||
gint old_width, old_height;
|
gint old_width, old_height;
|
||||||
gdouble old_res_x, old_res_y;
|
gdouble old_res_x, old_res_y;
|
||||||
|
@ -85,6 +84,7 @@ Resize *
|
||||||
resize_widget_new (ResizeType type,
|
resize_widget_new (ResizeType type,
|
||||||
ResizeTarget target,
|
ResizeTarget target,
|
||||||
GtkObject *object,
|
GtkObject *object,
|
||||||
|
gchar *signal,
|
||||||
gint width,
|
gint width,
|
||||||
gint height,
|
gint height,
|
||||||
gdouble resolution_x,
|
gdouble resolution_x,
|
||||||
|
@ -112,8 +112,13 @@ resize_widget_new (ResizeType type,
|
||||||
alignment = NULL;
|
alignment = NULL;
|
||||||
frame = NULL;
|
frame = NULL;
|
||||||
|
|
||||||
resize = g_new (Resize, 1);
|
|
||||||
private = g_new (ResizePrivate, 1);
|
private = g_new (ResizePrivate, 1);
|
||||||
|
private->old_width = width;
|
||||||
|
private->old_height = height;
|
||||||
|
private->old_res_x = resolution_x;
|
||||||
|
private->old_res_y = resolution_y;
|
||||||
|
|
||||||
|
resize = g_new (Resize, 1);
|
||||||
resize->type = type;
|
resize->type = type;
|
||||||
resize->target = target;
|
resize->target = target;
|
||||||
resize->private_part = private;
|
resize->private_part = private;
|
||||||
|
@ -126,11 +131,6 @@ resize_widget_new (ResizeType type,
|
||||||
resize->ratio_y = 1.0;
|
resize->ratio_y = 1.0;
|
||||||
resize->offset_x = 0;
|
resize->offset_x = 0;
|
||||||
resize->offset_y = 0;
|
resize->offset_y = 0;
|
||||||
private->old_width = width;
|
|
||||||
private->old_height = height;
|
|
||||||
private->old_res_x = resolution_x;
|
|
||||||
private->old_res_y = resolution_y;
|
|
||||||
private->object = NULL;
|
|
||||||
|
|
||||||
/* Get the image width and height variables, based on the gimage */
|
/* Get the image width and height variables, based on the gimage */
|
||||||
if (width > height)
|
if (width > height)
|
||||||
|
@ -192,21 +192,33 @@ resize_widget_new (ResizeType type,
|
||||||
|
|
||||||
_("OK"), ok_cb,
|
_("OK"), ok_cb,
|
||||||
user_data, NULL, NULL, TRUE, FALSE,
|
user_data, NULL, NULL, TRUE, FALSE,
|
||||||
_("Cancel"), cancel_cb,
|
_("Cancel"), cancel_cb ? cancel_cb : gtk_widget_destroy,
|
||||||
user_data, NULL, NULL, FALSE, TRUE,
|
cancel_cb ? user_data : NULL,
|
||||||
|
cancel_cb ? NULL : (gpointer) 1,
|
||||||
|
NULL, FALSE, TRUE,
|
||||||
|
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (resize->resize_shell), "destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) private);
|
||||||
|
gtk_signal_connect_object (GTK_OBJECT (resize->resize_shell), "destroy",
|
||||||
|
GTK_SIGNAL_FUNC (g_free),
|
||||||
|
(GtkObject *) resize);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* handle the image disappearing under our feet */
|
/* handle the image disappearing under our feet */
|
||||||
if (object)
|
if (object && signal)
|
||||||
{
|
{
|
||||||
const gchar *signame;
|
if (cancel_cb)
|
||||||
|
gtk_signal_connect (GTK_OBJECT (object), signal,
|
||||||
signame = (target == ResizeLayer) ? "removed" : "destroy";
|
cancel_cb,
|
||||||
private->object = object;
|
user_data);
|
||||||
private->object_destroy_handler =
|
else
|
||||||
gtk_signal_connect (GTK_OBJECT (object), signame, cancel_cb, user_data);
|
gtk_signal_connect_object_while_alive
|
||||||
|
(GTK_OBJECT (object), signal,
|
||||||
|
GTK_SIGNAL_FUNC (gtk_widget_destroy),
|
||||||
|
GTK_OBJECT (resize->resize_shell));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the main vbox */
|
/* the main vbox */
|
||||||
|
@ -638,28 +650,14 @@ resize_widget_new (ResizeType type,
|
||||||
return resize;
|
return resize;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
resize_widget_free (Resize *resize)
|
|
||||||
{
|
|
||||||
ResizePrivate *private = resize->private_part;
|
|
||||||
|
|
||||||
if (private->object)
|
|
||||||
gtk_signal_disconnect (GTK_OBJECT (private->object),
|
|
||||||
private->object_destroy_handler);
|
|
||||||
|
|
||||||
gtk_widget_destroy (resize->resize_shell);
|
|
||||||
g_free (resize->private_part);
|
|
||||||
g_free (resize);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
resize_draw (Resize *resize)
|
resize_draw (Resize *resize)
|
||||||
{
|
{
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
ResizePrivate *private;
|
ResizePrivate *private;
|
||||||
int aw, ah;
|
gint aw, ah;
|
||||||
int x, y;
|
gint x, y;
|
||||||
int w, h;
|
gint w, h;
|
||||||
|
|
||||||
/* Only need to draw if it's a resize widget */
|
/* Only need to draw if it's a resize widget */
|
||||||
if (resize->type != ResizeWidget)
|
if (resize->type != ResizeWidget)
|
||||||
|
@ -1196,7 +1194,8 @@ resize_events (GtkWidget *widget,
|
||||||
|
|
||||||
/*** Resize sanity checks ***/
|
/*** Resize sanity checks ***/
|
||||||
|
|
||||||
void resize_scale_implement (ImageResize *image_scale)
|
void
|
||||||
|
resize_scale_implement (ImageResize *image_scale)
|
||||||
{
|
{
|
||||||
GImage *gimage = NULL;
|
GImage *gimage = NULL;
|
||||||
gboolean rulers_flush = FALSE;
|
gboolean rulers_flush = FALSE;
|
||||||
|
@ -1270,24 +1269,23 @@ void resize_scale_implement (ImageResize *image_scale)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static void
|
||||||
void resize_scale_warn_callback (GtkWidget *widget,
|
resize_scale_warn_callback (GtkWidget *widget,
|
||||||
gboolean do_scale,
|
gboolean do_scale,
|
||||||
gpointer client_data)
|
gpointer client_data)
|
||||||
{
|
{
|
||||||
ImageResize *image_scale = NULL;
|
ImageResize *image_scale = NULL;
|
||||||
GImage *gimage = NULL;
|
GImage *gimage = NULL;
|
||||||
|
|
||||||
g_assert(client_data != NULL);
|
g_assert (client_data != NULL);
|
||||||
image_scale = (ImageResize *) client_data;
|
image_scale = (ImageResize *) client_data;
|
||||||
gimage = image_scale->gimage;
|
gimage = image_scale->gimage;
|
||||||
g_assert(gimage != NULL);
|
g_assert (gimage != NULL);
|
||||||
|
|
||||||
if(do_scale == TRUE) /* User doesn't mind losing layers... */
|
if (do_scale == TRUE) /* User doesn't mind losing layers... */
|
||||||
{
|
{
|
||||||
resize_scale_implement(image_scale);
|
resize_scale_implement (image_scale);
|
||||||
resize_widget_free (image_scale->resize);
|
gtk_widget_destroy (image_scale->resize->resize_shell);
|
||||||
g_free (image_scale);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
gtk_widget_set_sensitive (image_scale->resize->resize_shell, TRUE);
|
gtk_widget_set_sensitive (image_scale->resize->resize_shell, TRUE);
|
||||||
|
@ -1309,17 +1307,16 @@ resize_check_layer_scaling (ImageResize *image_scale)
|
||||||
GSList *list = NULL;
|
GSList *list = NULL;
|
||||||
Layer *layer = NULL;
|
Layer *layer = NULL;
|
||||||
GtkWidget *dialog = NULL;
|
GtkWidget *dialog = NULL;
|
||||||
gchar *str = NULL;
|
|
||||||
|
|
||||||
g_assert(image_scale != NULL);
|
g_assert (image_scale != NULL);
|
||||||
|
|
||||||
if(NULL != (gimage = image_scale->gimage))
|
if (NULL != (gimage = image_scale->gimage))
|
||||||
{
|
{
|
||||||
/* Step through layers; test scaled dimensions. */
|
/* Step through layers; test scaled dimensions. */
|
||||||
|
|
||||||
success = TRUE;
|
success = TRUE;
|
||||||
list = gimage->layers;
|
list = gimage->layers;
|
||||||
while(list && success == TRUE)
|
while (list && success == TRUE)
|
||||||
{
|
{
|
||||||
layer = (Layer *)list->data;
|
layer = (Layer *)list->data;
|
||||||
success = layer_check_scaling (layer,
|
success = layer_check_scaling (layer,
|
||||||
|
@ -1329,25 +1326,23 @@ resize_check_layer_scaling (ImageResize *image_scale)
|
||||||
|
|
||||||
}
|
}
|
||||||
/* Warn user on failure */
|
/* Warn user on failure */
|
||||||
if(success == FALSE)
|
if (success == FALSE)
|
||||||
{
|
{
|
||||||
gtk_widget_set_sensitive (image_scale->resize->resize_shell, FALSE);
|
gtk_widget_set_sensitive (image_scale->resize->resize_shell, FALSE);
|
||||||
|
|
||||||
str = g_strdup (_("The chosen image size will shrink\n"
|
|
||||||
"some layers completely away.\nIs this what you want?"));
|
|
||||||
|
|
||||||
dialog =
|
dialog =
|
||||||
gimp_query_boolean_box (_("Layer Too Small"),
|
gimp_query_boolean_box (_("Layer Too Small"),
|
||||||
gimp_standard_help_func,
|
gimp_standard_help_func,
|
||||||
"dialogs/scale_layer_warn.html",
|
"dialogs/scale_layer_warn.html",
|
||||||
FALSE,
|
FALSE,
|
||||||
str,
|
_("The chosen image size will shrink\n"
|
||||||
|
"some layers completely away.\n"
|
||||||
|
"Is this what you want?"),
|
||||||
_("OK"), _("Cancel"),
|
_("OK"), _("Cancel"),
|
||||||
NULL, NULL,
|
GTK_OBJECT (image_scale->resize->resize_shell),
|
||||||
|
"destroy",
|
||||||
resize_scale_warn_callback,
|
resize_scale_warn_callback,
|
||||||
image_scale);
|
image_scale);
|
||||||
|
|
||||||
g_free (str);
|
|
||||||
gtk_widget_show (dialog);
|
gtk_widget_show (dialog);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
17
app/resize.h
17
app/resize.h
|
@ -37,7 +37,6 @@ typedef struct _Resize Resize;
|
||||||
|
|
||||||
struct _Resize
|
struct _Resize
|
||||||
{
|
{
|
||||||
/* The calling procedure is respondible for showing this widget */
|
|
||||||
GtkWidget *resize_shell;
|
GtkWidget *resize_shell;
|
||||||
|
|
||||||
ResizeType type;
|
ResizeType type;
|
||||||
|
@ -67,12 +66,17 @@ typedef struct
|
||||||
} ImageResize;
|
} ImageResize;
|
||||||
|
|
||||||
/* If resolution_x is zero, then don't show resolution modification
|
/* If resolution_x is zero, then don't show resolution modification
|
||||||
* parts of the dialog. If object is non-NULL, then attach the cancel
|
* parts of the dialog.
|
||||||
* callback to its destroy signal. */
|
*
|
||||||
|
* If object and signal are non-NULL, then attach the cancel callback to signal.
|
||||||
|
*
|
||||||
|
* If cancel_callback is NULL, then the dialog will be destroyed on "Cancel".
|
||||||
|
*/
|
||||||
|
|
||||||
Resize * resize_widget_new (ResizeType type,
|
Resize * resize_widget_new (ResizeType type,
|
||||||
ResizeTarget target,
|
ResizeTarget target,
|
||||||
GtkObject * object,
|
GtkObject *object,
|
||||||
|
gchar *signal,
|
||||||
gint width,
|
gint width,
|
||||||
gint height,
|
gint height,
|
||||||
gdouble resolution_x,
|
gdouble resolution_x,
|
||||||
|
@ -82,11 +86,10 @@ Resize * resize_widget_new (ResizeType type,
|
||||||
GtkSignalFunc ok_cb,
|
GtkSignalFunc ok_cb,
|
||||||
GtkSignalFunc cancel_cb,
|
GtkSignalFunc cancel_cb,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
void resize_widget_free (Resize * resize);
|
|
||||||
|
|
||||||
/* Layer scaling sanity check and warning dialogs */
|
/* Layer scaling sanity check and warning dialogs */
|
||||||
|
|
||||||
gboolean resize_check_layer_scaling (ImageResize *);
|
gboolean resize_check_layer_scaling (ImageResize *image_resize);
|
||||||
void resize_scale_implement (ImageResize *);
|
void resize_scale_implement (ImageResize *image_resize);
|
||||||
|
|
||||||
#endif /* __RESIZE_H__ */
|
#endif /* __RESIZE_H__ */
|
||||||
|
|
|
@ -438,6 +438,14 @@ color_area_events (GtkWidget *widget,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
color_area_realize (GtkWidget *widget,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
|
||||||
|
gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
color_area_create (gint width,
|
color_area_create (gint width,
|
||||||
gint height,
|
gint height,
|
||||||
|
@ -458,6 +466,10 @@ color_area_create (gint width,
|
||||||
GTK_SIGNAL_FUNC (color_area_events),
|
GTK_SIGNAL_FUNC (color_area_events),
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
gtk_signal_connect (GTK_OBJECT (color_area), "realize",
|
||||||
|
GTK_SIGNAL_FUNC (color_area_realize),
|
||||||
|
NULL);
|
||||||
|
|
||||||
default_pixmap = default_pmap;
|
default_pixmap = default_pmap;
|
||||||
default_mask = default_msk;
|
default_mask = default_msk;
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ static void gimp_chain_button_realize (GtkWidget *widget);
|
||||||
static void gimp_chain_button_clicked_callback (GtkWidget *widget,
|
static void gimp_chain_button_clicked_callback (GtkWidget *widget,
|
||||||
GimpChainButton *gcb);
|
GimpChainButton *gcb);
|
||||||
static gint gimp_chain_button_draw_lines (GtkWidget *widget,
|
static gint gimp_chain_button_draw_lines (GtkWidget *widget,
|
||||||
GdkEvent *event,
|
GdkEventExpose *eevent,
|
||||||
GimpChainButton *gcb);
|
GimpChainButton *gcb);
|
||||||
|
|
||||||
static GtkTableClass *parent_class = NULL;
|
static GtkTableClass *parent_class = NULL;
|
||||||
|
@ -278,6 +278,14 @@ gimp_chain_button_realize (GtkWidget *widget)
|
||||||
gtk_pixmap_set (GTK_PIXMAP (gcb->pixmap), gcb->chain, gcb->chain_mask);
|
gtk_pixmap_set (GTK_PIXMAP (gcb->pixmap), gcb->chain, gcb->chain_mask);
|
||||||
else
|
else
|
||||||
gtk_pixmap_set (GTK_PIXMAP (gcb->pixmap), gcb->broken, gcb->broken_mask);
|
gtk_pixmap_set (GTK_PIXMAP (gcb->pixmap), gcb->broken, gcb->broken_mask);
|
||||||
|
|
||||||
|
gtk_widget_realize (gcb->line1);
|
||||||
|
gtk_style_set_background (widget->style, gcb->line1->window, GTK_STATE_NORMAL);
|
||||||
|
gdk_window_set_back_pixmap (gcb->line1->window, NULL, TRUE);
|
||||||
|
|
||||||
|
gtk_widget_realize (gcb->line2);
|
||||||
|
gtk_style_set_background (widget->style, gcb->line2->window, GTK_STATE_NORMAL);
|
||||||
|
gdk_window_set_back_pixmap (gcb->line2->window, NULL, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -299,7 +307,7 @@ gimp_chain_button_clicked_callback (GtkWidget *widget,
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
gimp_chain_button_draw_lines (GtkWidget *widget,
|
gimp_chain_button_draw_lines (GtkWidget *widget,
|
||||||
GdkEvent *event,
|
GdkEventExpose *eevent,
|
||||||
GimpChainButton *gcb)
|
GimpChainButton *gcb)
|
||||||
{
|
{
|
||||||
GdkPoint points[3];
|
GdkPoint points[3];
|
||||||
|
@ -313,13 +321,6 @@ gimp_chain_button_draw_lines (GtkWidget *widget,
|
||||||
|
|
||||||
g_return_val_if_fail (GIMP_IS_CHAIN_BUTTON (gcb), FALSE);
|
g_return_val_if_fail (GIMP_IS_CHAIN_BUTTON (gcb), FALSE);
|
||||||
|
|
||||||
/*
|
|
||||||
gdk_window_clear_area (widget->window,
|
|
||||||
0, 0,
|
|
||||||
widget->allocation.width,
|
|
||||||
widget->allocation.height);
|
|
||||||
*/
|
|
||||||
|
|
||||||
points[0].x = widget->allocation.width / 2;
|
points[0].x = widget->allocation.width / 2;
|
||||||
points[0].y = widget->allocation.height / 2;
|
points[0].y = widget->allocation.height / 2;
|
||||||
|
|
||||||
|
@ -371,10 +372,13 @@ gimp_chain_button_draw_lines (GtkWidget *widget,
|
||||||
points[2] = buf;
|
points[2] = buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_draw_polygon (widget->style,
|
gtk_paint_polygon (widget->style,
|
||||||
widget->window,
|
widget->window,
|
||||||
GTK_STATE_NORMAL,
|
GTK_STATE_NORMAL,
|
||||||
shadow,
|
shadow,
|
||||||
|
&eevent->area,
|
||||||
|
widget,
|
||||||
|
"chainbutton",
|
||||||
points,
|
points,
|
||||||
3,
|
3,
|
||||||
FALSE);
|
FALSE);
|
||||||
|
|
|
@ -53,7 +53,7 @@ static void gimp_chain_button_realize (GtkWidget *widget);
|
||||||
static void gimp_chain_button_clicked_callback (GtkWidget *widget,
|
static void gimp_chain_button_clicked_callback (GtkWidget *widget,
|
||||||
GimpChainButton *gcb);
|
GimpChainButton *gcb);
|
||||||
static gint gimp_chain_button_draw_lines (GtkWidget *widget,
|
static gint gimp_chain_button_draw_lines (GtkWidget *widget,
|
||||||
GdkEvent *event,
|
GdkEventExpose *eevent,
|
||||||
GimpChainButton *gcb);
|
GimpChainButton *gcb);
|
||||||
|
|
||||||
static GtkTableClass *parent_class = NULL;
|
static GtkTableClass *parent_class = NULL;
|
||||||
|
@ -278,6 +278,14 @@ gimp_chain_button_realize (GtkWidget *widget)
|
||||||
gtk_pixmap_set (GTK_PIXMAP (gcb->pixmap), gcb->chain, gcb->chain_mask);
|
gtk_pixmap_set (GTK_PIXMAP (gcb->pixmap), gcb->chain, gcb->chain_mask);
|
||||||
else
|
else
|
||||||
gtk_pixmap_set (GTK_PIXMAP (gcb->pixmap), gcb->broken, gcb->broken_mask);
|
gtk_pixmap_set (GTK_PIXMAP (gcb->pixmap), gcb->broken, gcb->broken_mask);
|
||||||
|
|
||||||
|
gtk_widget_realize (gcb->line1);
|
||||||
|
gtk_style_set_background (widget->style, gcb->line1->window, GTK_STATE_NORMAL);
|
||||||
|
gdk_window_set_back_pixmap (gcb->line1->window, NULL, TRUE);
|
||||||
|
|
||||||
|
gtk_widget_realize (gcb->line2);
|
||||||
|
gtk_style_set_background (widget->style, gcb->line2->window, GTK_STATE_NORMAL);
|
||||||
|
gdk_window_set_back_pixmap (gcb->line2->window, NULL, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -299,7 +307,7 @@ gimp_chain_button_clicked_callback (GtkWidget *widget,
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
gimp_chain_button_draw_lines (GtkWidget *widget,
|
gimp_chain_button_draw_lines (GtkWidget *widget,
|
||||||
GdkEvent *event,
|
GdkEventExpose *eevent,
|
||||||
GimpChainButton *gcb)
|
GimpChainButton *gcb)
|
||||||
{
|
{
|
||||||
GdkPoint points[3];
|
GdkPoint points[3];
|
||||||
|
@ -313,13 +321,6 @@ gimp_chain_button_draw_lines (GtkWidget *widget,
|
||||||
|
|
||||||
g_return_val_if_fail (GIMP_IS_CHAIN_BUTTON (gcb), FALSE);
|
g_return_val_if_fail (GIMP_IS_CHAIN_BUTTON (gcb), FALSE);
|
||||||
|
|
||||||
/*
|
|
||||||
gdk_window_clear_area (widget->window,
|
|
||||||
0, 0,
|
|
||||||
widget->allocation.width,
|
|
||||||
widget->allocation.height);
|
|
||||||
*/
|
|
||||||
|
|
||||||
points[0].x = widget->allocation.width / 2;
|
points[0].x = widget->allocation.width / 2;
|
||||||
points[0].y = widget->allocation.height / 2;
|
points[0].y = widget->allocation.height / 2;
|
||||||
|
|
||||||
|
@ -371,10 +372,13 @@ gimp_chain_button_draw_lines (GtkWidget *widget,
|
||||||
points[2] = buf;
|
points[2] = buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_draw_polygon (widget->style,
|
gtk_paint_polygon (widget->style,
|
||||||
widget->window,
|
widget->window,
|
||||||
GTK_STATE_NORMAL,
|
GTK_STATE_NORMAL,
|
||||||
shadow,
|
shadow,
|
||||||
|
&eevent->area,
|
||||||
|
widget,
|
||||||
|
"chainbutton",
|
||||||
points,
|
points,
|
||||||
3,
|
3,
|
||||||
FALSE);
|
FALSE);
|
||||||
|
|
Loading…
Reference in New Issue