mirror of
https://gitlab.gnome.org/GNOME/gimp
synced 2024-10-19 22:34:37 +00:00
Applied patch from Jeroen Lamain to Lighting plug-in (working on #52896) and lots of changes to replace deprecated GtkList widget by GtkTreeView in GIMPressionist code.
This commit is contained in:
parent
d7e228514b
commit
f24a67ab8f
22
ChangeLog
22
ChangeLog
|
@ -1,3 +1,25 @@
|
|||
2002-12-17 Maurits Rijk <lpeek.mrijk@consunet.nl>
|
||||
|
||||
* plug-ins/gimpressionist/Presets/*: changed all \010 in strings by
|
||||
\012 so that the g_strcompress/g_strescape pair now works correctly.
|
||||
|
||||
* plug-ins/gimpressionist/sizemap.c
|
||||
* plug-ins/gimpressionist/orientmap.c: reordered Apply/Cancel/Ok
|
||||
buttons in dialogs.
|
||||
|
||||
* plug-ins/gimpressionist/presets.c
|
||||
* plug-ins/gimpressionist/paper.c
|
||||
* plug-ins/gimpressionist/brush.c
|
||||
* plug-ins/gimpressionist/gimpressionist.[ch]: replace deprecated
|
||||
GtkList by GtkTreeView widgets.
|
||||
|
||||
2002-12-17 Maurits Rijk <lpeek.mrijk@consunet.nl
|
||||
|
||||
* plug-ins/Lighting/lighting_ui.[ch]
|
||||
* plug-ins/Lighting/lighting_preview.c: applied patch from Jeroen
|
||||
Lamain. Dragging of lightsource is more smoothly now plus you can
|
||||
now also drag directional lights.
|
||||
|
||||
2002-12-17 Nathan Summers <rock@gimp.org>
|
||||
|
||||
* libgimp/gimpbrushmenu.c
|
||||
|
|
|
@ -20,7 +20,8 @@
|
|||
|
||||
#define LIGHT_SYMBOL_SIZE 8
|
||||
|
||||
gint lightx, lighty;
|
||||
gint handle_xpos = 0, handle_ypos = 0;
|
||||
|
||||
BackBuffer backbuf = { 0, 0, 0, 0, NULL };
|
||||
|
||||
/* g_free()'ed on exit */
|
||||
|
@ -35,14 +36,14 @@ guint left_button_pressed = FALSE;
|
|||
GtkWidget * spin_pos_x = NULL;
|
||||
GtkWidget * spin_pos_y = NULL;
|
||||
GtkWidget * spin_pos_z = NULL;
|
||||
GtkWidget * spin_dir_x = NULL;
|
||||
GtkWidget * spin_dir_y = NULL;
|
||||
GtkWidget * spin_dir_z = NULL;
|
||||
static guint preview_update_timer = 0;
|
||||
|
||||
|
||||
/* Protos */
|
||||
/* ====== */
|
||||
static void
|
||||
interactive_preview_callback (GtkWidget *widget);
|
||||
|
||||
static void
|
||||
interactive_preview_timer_callback ( void );
|
||||
|
||||
|
@ -80,6 +81,7 @@ compute_preview (gint startx, gint starty, gint w, gint h)
|
|||
ypostab = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (!ypostab)
|
||||
{
|
||||
ypostab = g_new (gdouble, h);
|
||||
|
@ -87,11 +89,9 @@ compute_preview (gint startx, gint starty, gint w, gint h)
|
|||
}
|
||||
|
||||
for (xcnt = 0; xcnt < w; xcnt++)
|
||||
xpostab[xcnt] =
|
||||
(gdouble) width *((gdouble) xcnt / (gdouble) w);
|
||||
xpostab[xcnt] = (gdouble) width *((gdouble) xcnt / (gdouble) w);
|
||||
for (ycnt = 0; ycnt < h; ycnt++)
|
||||
ypostab[ycnt] =
|
||||
(gdouble) height *((gdouble) ycnt / (gdouble) h);
|
||||
ypostab[ycnt] = (gdouble) height *((gdouble) ycnt / (gdouble) h);
|
||||
|
||||
init_compute ();
|
||||
precompute_init (width, height);
|
||||
|
@ -222,11 +222,9 @@ compute_preview_rectangle (gint * xp, gint * yp, gint * wid, gint * heig)
|
|||
{
|
||||
h = (PREVIEW_HEIGHT - 50.0);
|
||||
w = (gdouble) width *(h / (gdouble) height);
|
||||
|
||||
x = (PREVIEW_WIDTH - w) / 2.0;
|
||||
y = (PREVIEW_HEIGHT - h) / 2.0;
|
||||
}
|
||||
|
||||
*xp = RINT (x);
|
||||
*yp = RINT (y);
|
||||
*wid = RINT (w);
|
||||
|
@ -239,34 +237,18 @@ compute_preview_rectangle (gint * xp, gint * yp, gint * wid, gint * heig)
|
|||
/*************************************************/
|
||||
|
||||
gboolean
|
||||
check_marker_hit (gint xpos, gint ypos)
|
||||
check_handle_hit (gint xpos, gint ypos)
|
||||
{
|
||||
gdouble dxpos, dypos;
|
||||
gint lightx, lighty;
|
||||
gdouble dx, dy, r;
|
||||
gint startx, starty, pw, ph;
|
||||
GimpVector3 viewpoint;
|
||||
gint dx,dy,r;
|
||||
|
||||
/* swap z to reverse light position */
|
||||
viewpoint = mapvals.viewpoint;
|
||||
viewpoint.z = -viewpoint.z;
|
||||
|
||||
compute_preview_rectangle (&startx, &starty, &pw, &ph);
|
||||
|
||||
gimp_vector_3d_to_2d (startx, starty, pw, ph, &dxpos, &dypos,
|
||||
&viewpoint, &mapvals.lightsource.position);
|
||||
|
||||
lightx = (gint) (dxpos + 0.5);
|
||||
lighty = (gint) (dypos + 0.5);
|
||||
|
||||
dx = lightx - xpos;
|
||||
dy = lighty - ypos;
|
||||
dx = handle_xpos - xpos;
|
||||
dy = handle_ypos - ypos;
|
||||
|
||||
|
||||
if (mapvals.lightsource.type == POINT_LIGHT)
|
||||
if (mapvals.lightsource.type == POINT_LIGHT ||
|
||||
mapvals.lightsource.type == DIRECTIONAL_LIGHT)
|
||||
{
|
||||
r = sqrt (dx * dx + dy * dy) + 0.5;
|
||||
|
||||
if ((gint) r > 7)
|
||||
{
|
||||
return (FALSE);
|
||||
|
@ -275,9 +257,7 @@ check_marker_hit (gint xpos, gint ypos)
|
|||
{
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -287,10 +267,9 @@ check_marker_hit (gint xpos, gint ypos)
|
|||
|
||||
|
||||
static void
|
||||
draw_lights ()
|
||||
draw_handles ()
|
||||
{
|
||||
gdouble dxpos, dypos;
|
||||
gint xpos, ypos;
|
||||
gint startx, starty, pw, ph;
|
||||
GimpVector3 viewpoint;
|
||||
GimpVector3 light_position;
|
||||
|
@ -299,28 +278,35 @@ draw_lights ()
|
|||
gfloat delta_x = 0.0,
|
||||
delta_y = 0.0;
|
||||
|
||||
/* calculate handle position */
|
||||
compute_preview_rectangle (&startx, &starty, &pw, &ph);
|
||||
switch (mapvals.lightsource.type)
|
||||
{
|
||||
case POINT_LIGHT:
|
||||
case SPOT_LIGHT:
|
||||
case NO_LIGHT:
|
||||
/* swap z to reverse light position */
|
||||
viewpoint = mapvals.viewpoint;
|
||||
viewpoint.z = -viewpoint.z;
|
||||
|
||||
compute_preview_rectangle (&startx, &starty, &pw, &ph);
|
||||
|
||||
if (mapvals.lightsource.type == DIRECTIONAL_LIGHT)
|
||||
{
|
||||
light_position.x = light_position.y = 0.5;
|
||||
light_position.z = 0.0;
|
||||
} else
|
||||
{
|
||||
light_position = mapvals.lightsource.position;
|
||||
}
|
||||
|
||||
gimp_vector_3d_to_2d (startx, starty, pw, ph, &dxpos, &dypos,
|
||||
&viewpoint, &light_position);
|
||||
|
||||
xpos = (gint) (dxpos + 0.5);
|
||||
ypos = (gint) (dypos + 0.5);
|
||||
|
||||
compute_preview_rectangle (&startx, &starty, &pw, &ph);
|
||||
handle_xpos = (gint) (dxpos + 0.5);
|
||||
handle_ypos = (gint) (dypos + 0.5);
|
||||
break;
|
||||
case DIRECTIONAL_LIGHT:
|
||||
light_position.x = light_position.y = 0.5;
|
||||
light_position.z = 0;
|
||||
viewpoint.z = -viewpoint.z;
|
||||
gimp_vector_3d_to_2d (startx, starty, pw, ph, &dxpos, &dypos,
|
||||
&viewpoint, &light_position);
|
||||
length = PREVIEW_HEIGHT / 4;
|
||||
delta_x = mapvals.lightsource.direction.x * length;
|
||||
delta_y = mapvals.lightsource.direction.y * length;
|
||||
handle_xpos = dxpos + delta_x;
|
||||
handle_ypos = dypos + delta_y;
|
||||
break;
|
||||
}
|
||||
|
||||
gdk_gc_set_function (gc, GDK_COPY);
|
||||
|
||||
|
@ -339,30 +325,33 @@ draw_lights ()
|
|||
backbuf.image = NULL;
|
||||
}
|
||||
|
||||
/* calculate symbol size */
|
||||
/* calculate backbuffer */
|
||||
switch (mapvals.lightsource.type)
|
||||
{
|
||||
case POINT_LIGHT:
|
||||
backbuf.x = xpos - LIGHT_SYMBOL_SIZE / 2;
|
||||
backbuf.y = ypos - LIGHT_SYMBOL_SIZE / 2;
|
||||
backbuf.x = handle_xpos - LIGHT_SYMBOL_SIZE / 2;
|
||||
backbuf.y = handle_ypos - LIGHT_SYMBOL_SIZE / 2;
|
||||
backbuf.w = LIGHT_SYMBOL_SIZE;
|
||||
backbuf.h = LIGHT_SYMBOL_SIZE;
|
||||
break;
|
||||
case DIRECTIONAL_LIGHT:
|
||||
length = sqrt( (mapvals.lightsource.direction.x * mapvals.lightsource.direction.x) +
|
||||
(mapvals.lightsource.direction.y * mapvals.lightsource.direction.y));
|
||||
length = (1.0 / length) * (PREVIEW_HEIGHT/4.0);
|
||||
delta_x = mapvals.lightsource.direction.x * length;
|
||||
delta_y = mapvals.lightsource.direction.y * length;
|
||||
backbuf.x = xpos - fabs(delta_x);
|
||||
backbuf.y = ypos - fabs(delta_y);
|
||||
backbuf.w = fabs(delta_x * 2.0);
|
||||
backbuf.h = fabs(delta_y * 2.0);
|
||||
if (delta_x <= 0)
|
||||
backbuf.x = handle_xpos;
|
||||
else
|
||||
backbuf.x = startx + pw/2;
|
||||
if (delta_y <= 0)
|
||||
backbuf.y = handle_ypos;
|
||||
else
|
||||
backbuf.y = starty + ph/2;
|
||||
backbuf.x -= LIGHT_SYMBOL_SIZE/2;
|
||||
backbuf.y -= LIGHT_SYMBOL_SIZE/2;
|
||||
backbuf.w = fabs(delta_x) + LIGHT_SYMBOL_SIZE;
|
||||
backbuf.h = fabs(delta_y) + LIGHT_SYMBOL_SIZE;
|
||||
break;
|
||||
case SPOT_LIGHT:
|
||||
case NO_LIGHT:
|
||||
backbuf.x = xpos - LIGHT_SYMBOL_SIZE / 2;
|
||||
backbuf.y = ypos - LIGHT_SYMBOL_SIZE / 2;
|
||||
backbuf.x = handle_xpos - LIGHT_SYMBOL_SIZE / 2;
|
||||
backbuf.y = handle_ypos - LIGHT_SYMBOL_SIZE / 2;
|
||||
backbuf.w = LIGHT_SYMBOL_SIZE;
|
||||
backbuf.h = LIGHT_SYMBOL_SIZE;
|
||||
break;
|
||||
|
@ -374,17 +363,14 @@ draw_lights ()
|
|||
(backbuf.x <= PREVIEW_WIDTH) &&
|
||||
(backbuf.y >= 0) && (backbuf.y <= PREVIEW_HEIGHT))
|
||||
{
|
||||
|
||||
/* clip coordinates to preview widget sizes */
|
||||
|
||||
if ((backbuf.x + backbuf.w) > PREVIEW_WIDTH)
|
||||
backbuf.w = (PREVIEW_WIDTH - backbuf.x);
|
||||
|
||||
if ((backbuf.y + backbuf.h) > PREVIEW_HEIGHT)
|
||||
backbuf.h = (PREVIEW_HEIGHT - backbuf.y);
|
||||
|
||||
backbuf.image =
|
||||
gdk_drawable_get_image (previewarea->window,
|
||||
backbuf.image = gdk_drawable_get_image (previewarea->window,
|
||||
backbuf.x, backbuf.y,
|
||||
backbuf.w, backbuf.h);
|
||||
}
|
||||
|
@ -399,23 +385,22 @@ draw_lights ()
|
|||
case POINT_LIGHT:
|
||||
case SPOT_LIGHT:
|
||||
gdk_draw_arc ( previewarea->window, gc, TRUE,
|
||||
xpos - LIGHT_SYMBOL_SIZE / 2,
|
||||
ypos - LIGHT_SYMBOL_SIZE / 2,
|
||||
handle_xpos - LIGHT_SYMBOL_SIZE / 2,
|
||||
handle_ypos - LIGHT_SYMBOL_SIZE / 2,
|
||||
LIGHT_SYMBOL_SIZE,
|
||||
LIGHT_SYMBOL_SIZE, 0, 360 * 64);
|
||||
break;
|
||||
case DIRECTIONAL_LIGHT:
|
||||
gdk_draw_arc ( previewarea->window, gc, TRUE,
|
||||
xpos - LIGHT_SYMBOL_SIZE / 2,
|
||||
ypos - LIGHT_SYMBOL_SIZE / 2,
|
||||
handle_xpos - LIGHT_SYMBOL_SIZE / 2,
|
||||
handle_ypos - LIGHT_SYMBOL_SIZE / 2,
|
||||
LIGHT_SYMBOL_SIZE,
|
||||
LIGHT_SYMBOL_SIZE, 0, 360 * 64);
|
||||
gdk_draw_line( previewarea->window, gc,
|
||||
xpos, ypos, xpos+delta_x, ypos+delta_y);
|
||||
handle_xpos, handle_ypos, startx+pw/2 , starty + ph/2);
|
||||
break;
|
||||
case NO_LIGHT:
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -436,11 +421,25 @@ update_light (gint xpos, gint ypos)
|
|||
vp = mapvals.viewpoint;
|
||||
vp.z = -vp.z;
|
||||
|
||||
switch (mapvals.lightsource.type)
|
||||
{
|
||||
case NO_LIGHT:
|
||||
case POINT_LIGHT:
|
||||
case SPOT_LIGHT:
|
||||
gimp_vector_2d_to_3d (startx,
|
||||
starty,
|
||||
pw,
|
||||
ph,
|
||||
xpos, ypos, &vp, &mapvals.lightsource.position);
|
||||
break;
|
||||
case DIRECTIONAL_LIGHT:
|
||||
gimp_vector_2d_to_3d (startx,
|
||||
starty,
|
||||
pw,
|
||||
ph,
|
||||
xpos, ypos, &vp, &mapvals.lightsource.direction);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -455,7 +454,6 @@ draw_preview_image (gint recompute)
|
|||
|
||||
gck_gc_set_foreground (visinfo, gc, 255, 255, 255);
|
||||
gck_gc_set_background (visinfo, gc, 0, 0, 0);
|
||||
|
||||
gdk_gc_set_function (gc, GDK_COPY);
|
||||
|
||||
compute_preview_rectangle (&startx, &starty, &pw, &ph);
|
||||
|
@ -470,7 +468,6 @@ draw_preview_image (gint recompute)
|
|||
gdk_flush ();
|
||||
|
||||
compute_preview (startx, starty, pw, ph);
|
||||
|
||||
newcursor = gdk_cursor_new (GDK_HAND2);
|
||||
gdk_window_set_cursor (previewarea->window, newcursor);
|
||||
gdk_cursor_unref (newcursor);
|
||||
|
@ -482,8 +479,6 @@ draw_preview_image (gint recompute)
|
|||
g_object_unref (backbuf.image);
|
||||
backbuf.image = NULL;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
gdk_draw_image (previewarea->window, gc, image,
|
||||
|
@ -492,9 +487,8 @@ draw_preview_image (gint recompute)
|
|||
/* draw symbols if enabled in UI */
|
||||
if (mapvals.interactive_preview)
|
||||
{
|
||||
draw_lights ();
|
||||
draw_handles ();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/******************************/
|
||||
|
@ -505,14 +499,12 @@ gint
|
|||
preview_events (GtkWidget *area,
|
||||
GdkEvent *event)
|
||||
{
|
||||
|
||||
switch (event->type)
|
||||
{
|
||||
case GDK_EXPOSE:
|
||||
|
||||
/* Is this the first exposure? */
|
||||
/* =========================== */
|
||||
|
||||
if (!gc)
|
||||
{
|
||||
gc = gdk_gc_new (area->window);
|
||||
|
@ -526,21 +518,21 @@ preview_events (GtkWidget *area,
|
|||
case GDK_LEAVE_NOTIFY:
|
||||
break;
|
||||
case GDK_BUTTON_PRESS:
|
||||
light_hit = check_marker_hit (event->button.x, event->button.y);
|
||||
light_hit = check_handle_hit (event->button.x, event->button.y);
|
||||
left_button_pressed = TRUE;
|
||||
break;
|
||||
case GDK_BUTTON_RELEASE:
|
||||
left_button_pressed = FALSE;
|
||||
break;
|
||||
case GDK_MOTION_NOTIFY:
|
||||
if (left_button_pressed == TRUE && light_hit == TRUE) {
|
||||
if (left_button_pressed == TRUE &&
|
||||
light_hit == TRUE &&
|
||||
mapvals.interactive_preview == TRUE )
|
||||
{
|
||||
draw_handles();
|
||||
interactive_preview_callback(NULL);
|
||||
update_light (event->motion.x, event->motion.y);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_pos_x), mapvals.lightsource.position.x);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_pos_y), mapvals.lightsource.position.y);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_pos_z), mapvals.lightsource.position.z);
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -549,10 +541,9 @@ preview_events (GtkWidget *area,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
interactive_preview_callback (GtkWidget *widget)
|
||||
{
|
||||
|
||||
if ( preview_update_timer != 0)
|
||||
{
|
||||
gtk_timeout_remove ( preview_update_timer );
|
||||
|
@ -561,23 +552,16 @@ interactive_preview_callback (GtkWidget *widget)
|
|||
preview_update_timer = gtk_timeout_add(100, (GtkFunction) interactive_preview_timer_callback, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
interactive_preview_timer_callback ( void )
|
||||
{
|
||||
|
||||
gtk_timeout_remove ( preview_update_timer );
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_pos_x), mapvals.lightsource.position.x);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_pos_y), mapvals.lightsource.position.y);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_pos_z), mapvals.lightsource.position.z);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_dir_x), mapvals.lightsource.direction.x);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_dir_y), mapvals.lightsource.direction.y);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_dir_z), mapvals.lightsource.direction.z);
|
||||
|
||||
if (mapvals.interactive_preview)
|
||||
{
|
||||
draw_preview_image (TRUE);
|
||||
} else {
|
||||
draw_preview_image(FALSE);
|
||||
}
|
||||
}
|
||||
void update_preview_image(void)
|
||||
{
|
||||
interactive_preview_callback(NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -37,11 +37,16 @@ extern guint left_button_pressed;
|
|||
extern GtkWidget * spin_pos_x;
|
||||
extern GtkWidget * spin_pos_y;
|
||||
extern GtkWidget * spin_pos_z;
|
||||
extern GtkWidget * spin_dir_x;
|
||||
extern GtkWidget * spin_dir_y;
|
||||
extern GtkWidget * spin_dir_z;
|
||||
|
||||
/* Externally visible functions */
|
||||
|
||||
void draw_preview_image (gint recompute);
|
||||
void update_preview_image(void);
|
||||
|
||||
void interactive_preview_callback (GtkWidget *widget);
|
||||
|
||||
gint preview_events (GtkWidget *area,
|
||||
GdkEvent *event);
|
||||
|
||||
|
@ -51,6 +56,4 @@ gint check_marker_hit (gint xpos,
|
|||
void update_light (gint xpos,
|
||||
gint ypos);
|
||||
|
||||
void preview_callback (GtkWidget *widget);
|
||||
|
||||
#endif /* __LIGHTING_PREVIEW_H__ */
|
||||
|
|
|
@ -87,9 +87,6 @@ static void toggleenvironment_update (GtkWidget *widget,
|
|||
static void lightmenu_callback (GtkWidget *widget,
|
||||
gpointer data);
|
||||
|
||||
static void interactive_preview_timer_callback( void );
|
||||
|
||||
|
||||
static void apply_callback (GtkWidget *widget);
|
||||
|
||||
static gint bumpmap_constrain (gint32 image_id,
|
||||
|
@ -225,7 +222,7 @@ lightmenu_callback (GtkWidget *widget,
|
|||
gtk_widget_hide (dirlightwid);
|
||||
}
|
||||
|
||||
update_preview_image();
|
||||
interactive_preview_callback(NULL);
|
||||
|
||||
}
|
||||
|
||||
|
@ -497,7 +494,6 @@ create_light_page (void)
|
|||
GtkWidget *table;
|
||||
GtkWidget *optionmenu;
|
||||
GtkWidget *colorbutton;
|
||||
GtkWidget *spinbutton;
|
||||
GtkObject *adj;
|
||||
|
||||
page = gtk_vbox_new (FALSE, 4);
|
||||
|
@ -543,7 +539,7 @@ create_light_page (void)
|
|||
G_CALLBACK (gimp_color_button_get_color),
|
||||
&mapvals.lightsource.color);
|
||||
g_signal_connect(G_OBJECT(colorbutton), "color_changed",
|
||||
G_CALLBACK (update_preview_image),
|
||||
G_CALLBACK (interactive_preview_callback),
|
||||
NULL);
|
||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
|
||||
_("Lig_ht Color:"), 1.0, 0.5,
|
||||
|
@ -577,7 +573,7 @@ create_light_page (void)
|
|||
&mapvals.lightsource.position.x);
|
||||
|
||||
g_signal_connect(G_OBJECT(adj), "value_changed",
|
||||
G_CALLBACK (update_preview_image),
|
||||
G_CALLBACK (interactive_preview_callback),
|
||||
NULL);
|
||||
|
||||
gimp_help_set_help_data ( spin_pos_x,
|
||||
|
@ -593,7 +589,7 @@ create_light_page (void)
|
|||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&mapvals.lightsource.position.y);
|
||||
g_signal_connect(G_OBJECT(adj), "value_changed",
|
||||
G_CALLBACK (update_preview_image),
|
||||
G_CALLBACK (interactive_preview_callback),
|
||||
NULL);
|
||||
|
||||
|
||||
|
@ -610,7 +606,7 @@ create_light_page (void)
|
|||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&mapvals.lightsource.position.z);
|
||||
g_signal_connect(G_OBJECT(adj), "value_changed",
|
||||
G_CALLBACK (update_preview_image),
|
||||
G_CALLBACK (interactive_preview_callback),
|
||||
NULL);
|
||||
|
||||
gimp_help_set_help_data ( spin_pos_z,
|
||||
|
@ -630,50 +626,50 @@ create_light_page (void)
|
|||
gtk_container_add (GTK_CONTAINER (dirlightwid), table);
|
||||
gtk_widget_show (table);
|
||||
|
||||
spinbutton = gimp_spin_button_new (&adj, mapvals.lightsource.direction.x,
|
||||
spin_dir_x = gimp_spin_button_new (&adj, mapvals.lightsource.direction.x,
|
||||
-1.0, 1.0, 0.01, 0.1, 1.0, 0.0, 2);
|
||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
|
||||
_("X:"), 1.0, 0.5,
|
||||
spinbutton, 1, TRUE);
|
||||
spin_dir_x, 1, TRUE);
|
||||
g_signal_connect (G_OBJECT (adj), "value_changed",
|
||||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&mapvals.lightsource.direction.x);
|
||||
g_signal_connect(G_OBJECT(adj), "value_changed",
|
||||
G_CALLBACK (update_preview_image),
|
||||
G_CALLBACK (interactive_preview_callback),
|
||||
NULL);
|
||||
|
||||
|
||||
gimp_help_set_help_data (spinbutton,
|
||||
gimp_help_set_help_data (spin_dir_x,
|
||||
_("Light source X direction in XYZ space"), NULL);
|
||||
|
||||
spinbutton = gimp_spin_button_new (&adj, mapvals.lightsource.direction.y,
|
||||
spin_dir_y = gimp_spin_button_new (&adj, mapvals.lightsource.direction.y,
|
||||
-1.0, 1.0, 0.01, 0.1, 1.0, 0.0, 2);
|
||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
|
||||
_("Y:"), 1.0, 0.5,
|
||||
spinbutton, 1, TRUE);
|
||||
spin_dir_y, 1, TRUE);
|
||||
g_signal_connect (G_OBJECT (adj), "value_changed",
|
||||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&mapvals.lightsource.direction.y);
|
||||
g_signal_connect(G_OBJECT(adj), "value_changed",
|
||||
G_CALLBACK (update_preview_image),
|
||||
G_CALLBACK (interactive_preview_callback),
|
||||
NULL);
|
||||
|
||||
gimp_help_set_help_data (spinbutton,
|
||||
gimp_help_set_help_data (spin_dir_y,
|
||||
_("Light source Y direction in XYZ space"), NULL);
|
||||
|
||||
spinbutton = gimp_spin_button_new (&adj, mapvals.lightsource.direction.z,
|
||||
spin_dir_z = gimp_spin_button_new (&adj, mapvals.lightsource.direction.z,
|
||||
-1.0, 1.0, 0.01, 0.1, 1.0, 0.0, 2);
|
||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, 2,
|
||||
_("Z:"), 1.0, 0.5,
|
||||
spinbutton, 1, TRUE);
|
||||
spin_dir_z, 1, TRUE);
|
||||
g_signal_connect (G_OBJECT (adj), "value_changed",
|
||||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&mapvals.lightsource.direction.z);
|
||||
g_signal_connect(G_OBJECT(adj), "value_changed",
|
||||
G_CALLBACK (update_preview_image),
|
||||
G_CALLBACK (interactive_preview_callback),
|
||||
NULL);
|
||||
|
||||
gimp_help_set_help_data (spinbutton,
|
||||
gimp_help_set_help_data (spin_dir_z,
|
||||
_("Light source Z direction in XYZ space"), NULL);
|
||||
|
||||
gtk_widget_show (page);
|
||||
|
@ -729,7 +725,7 @@ create_material_page (void)
|
|||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&mapvals.material.ambient_int);
|
||||
g_signal_connect(G_OBJECT(adj), "value_changed",
|
||||
G_CALLBACK (update_preview_image),
|
||||
G_CALLBACK (interactive_preview_callback),
|
||||
NULL);
|
||||
|
||||
gtk_widget_show (spinbutton);
|
||||
|
@ -759,7 +755,7 @@ create_material_page (void)
|
|||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&mapvals.material.diffuse_int);
|
||||
g_signal_connect(G_OBJECT(adj), "value_changed",
|
||||
G_CALLBACK (update_preview_image),
|
||||
G_CALLBACK (interactive_preview_callback),
|
||||
NULL);
|
||||
|
||||
gtk_widget_show (spinbutton);
|
||||
|
@ -802,6 +798,11 @@ create_material_page (void)
|
|||
g_signal_connect (G_OBJECT (adj), "value_changed",
|
||||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&mapvals.material.diffuse_ref);
|
||||
g_signal_connect(G_OBJECT(adj), "value_changed",
|
||||
G_CALLBACK (interactive_preview_callback),
|
||||
NULL);
|
||||
|
||||
|
||||
gtk_widget_show (spinbutton);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), spinbutton);
|
||||
|
||||
|
@ -828,6 +829,11 @@ create_material_page (void)
|
|||
g_signal_connect (G_OBJECT (adj), "value_changed",
|
||||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&mapvals.material.specular_ref);
|
||||
g_signal_connect(G_OBJECT(adj), "value_changed",
|
||||
G_CALLBACK (interactive_preview_callback),
|
||||
NULL);
|
||||
|
||||
|
||||
gtk_widget_show (spinbutton);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), spinbutton);
|
||||
|
||||
|
@ -854,6 +860,10 @@ create_material_page (void)
|
|||
g_signal_connect (G_OBJECT (adj), "value_changed",
|
||||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&mapvals.material.highlight);
|
||||
g_signal_connect(G_OBJECT(adj), "value_changed",
|
||||
G_CALLBACK(interactive_preview_callback),
|
||||
NULL);
|
||||
|
||||
gtk_widget_show (spinbutton);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), spinbutton);
|
||||
|
||||
|
@ -924,17 +934,14 @@ create_bump_page (void)
|
|||
_("Bumpm_ap Image:"), 1.0, 0.5,
|
||||
optionmenu, 1, TRUE);
|
||||
|
||||
optionmenu =
|
||||
gimp_option_menu_new2 (FALSE,
|
||||
optionmenu = gimp_option_menu_new2 (FALSE,
|
||||
G_CALLBACK (mapmenu2_callback),
|
||||
&mapvals.bumpmaptype,
|
||||
(gpointer) mapvals.bumpmaptype,
|
||||
|
||||
_("Linear"), (gpointer) LINEAR_MAP, NULL,
|
||||
_("Logarithmic"), (gpointer) LOGARITHMIC_MAP, NULL,
|
||||
_("Sinusoidal"), (gpointer) SINUSOIDAL_MAP, NULL,
|
||||
_("Spherical"), (gpointer) SPHERICAL_MAP, NULL,
|
||||
|
||||
NULL);
|
||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
|
||||
_("Cu_rve:"), 1.0, 0.5,
|
||||
|
@ -1196,7 +1203,7 @@ main_dialog (GimpDrawable *drawable)
|
|||
G_CALLBACK (gimp_toggle_button_update),
|
||||
&mapvals.interactive_preview);
|
||||
g_signal_connect(G_OBJECT(toggle), "toggled",
|
||||
G_CALLBACK (update_preview_image),
|
||||
G_CALLBACK (interactive_preview_callback),
|
||||
NULL);
|
||||
|
||||
|
||||
|
@ -1217,7 +1224,6 @@ main_dialog (GimpDrawable *drawable)
|
|||
create_main_notebook (main_hbox);
|
||||
|
||||
gtk_widget_show (appwin);
|
||||
|
||||
{
|
||||
GdkCursor *newcursor;
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Preset
|
||||
desc=Simulates the Apply Canvas\010plugin, by just adding a\010paper relief to the image.
|
||||
desc=Simulates the Apply Canvas\012plugin, by just adding a\012paper relief to the image.
|
||||
orientnum=1
|
||||
orientfirst=0.000000
|
||||
orientlast=0.000000
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Preset
|
||||
desc=Huge spheres! Tileable,\010might be suitable as a\010background somewhere.
|
||||
desc=Huge spheres! Tileable,\012might be suitable as a\012background somewhere.
|
||||
orientnum=1
|
||||
orientfirst=0.000000
|
||||
orientlast=60.000000
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Preset
|
||||
desc=Turns the image into a layer\010of small pebbles.
|
||||
desc=Turns the image into a layer\012of small pebbles.
|
||||
orientnum=1
|
||||
orientfirst=47.790001
|
||||
orientlast=0.000000
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Preset
|
||||
desc=Sends a horde of maggots\010to gnaw at your image.
|
||||
desc=Sends a horde of maggots\012to gnaw at your image.
|
||||
orientnum=30
|
||||
orientfirst=0.000000
|
||||
orientlast=360.000000
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Preset
|
||||
desc=Quite close to the original\010Cryptiq-plugins effect.
|
||||
desc=Quite close to the original\012Cryptiq-plugins effect.
|
||||
orientnum=1
|
||||
orientfirst=0.000000
|
||||
orientlast=0.000000
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Preset
|
||||
desc=Very rough moss-like\010texture. Works quite well\010for tileable backgrounds\010and other textures.
|
||||
desc=Very rough moss-like\012texture. Works quite well\012for tileable backgrounds\012and other textures.
|
||||
orientnum=21
|
||||
orientfirst=31.860001
|
||||
orientlast=180.220001
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Preset
|
||||
desc=Rough paint-on-rock\010sort of texture. Good for\010tileable backgrounds.
|
||||
desc=Rough paint-on-rock\012sort of texture. Good for\012tileable backgrounds.
|
||||
orientnum=30
|
||||
orientfirst=0.000000
|
||||
orientlast=360.000000
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Preset
|
||||
desc=Plain oil-painting. Good for\010big pictures, as much of\010the details are lost.
|
||||
desc=Plain oil-painting. Good for\012big pictures, as much of\012the details are lost.
|
||||
orientnum=30
|
||||
orientfirst=70.089996
|
||||
orientlast=360.000000
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Preset
|
||||
desc=Looks like a mixture between\010a spiderweb and a smashed\010window.
|
||||
desc=Looks like a mixture between\012a spiderweb and a smashed\012window.
|
||||
orientnum=17
|
||||
orientfirst=15.930000
|
||||
orientlast=360.000000
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Preset
|
||||
desc=The image looks like it is made\010up of small pieces of straw\010or chips of wood. Tilable.
|
||||
desc=The image looks like it is made\012up of small pieces of straw\012or chips of wood. Tileable.
|
||||
orientnum=30
|
||||
orientfirst=41.419998
|
||||
orientlast=360.000000
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Preset
|
||||
desc=Makes the image look like\010some sort of woven quilt\010or rug, or something in that\010direction.
|
||||
desc=Makes the image look like\012some sort of woven quilt\012or rug, or something in that\012direction.
|
||||
orientnum=4
|
||||
orientfirst=9.560000
|
||||
orientlast=360.000000
|
||||
|
|
|
@ -33,6 +33,7 @@ static GtkWidget *brushprev = NULL;
|
|||
GtkObject *brushreliefadjust = NULL;
|
||||
GtkObject *brushaspectadjust = NULL;
|
||||
GtkObject *brushgammaadjust = NULL;
|
||||
static GtkListStore *brushstore;
|
||||
|
||||
GtkWidget *brushdrawablemenu = NULL;
|
||||
static GtkWidget *brushemptyitem;
|
||||
|
@ -50,7 +51,7 @@ static gboolean colorfile(char *fn)
|
|||
return fn && strstr(fn, ".ppm");
|
||||
}
|
||||
|
||||
void brushdmenuselect(gint32 id, gpointer data)
|
||||
static void brushdmenuselect(gint32 id, gpointer data)
|
||||
{
|
||||
GimpPixelRgn src_rgn;
|
||||
guchar *src_row;
|
||||
|
@ -65,8 +66,8 @@ void brushdmenuselect(gint32 id, gpointer data)
|
|||
|
||||
if(brushfile == 2) return; /* Not finished GUI-building yet */
|
||||
|
||||
if(brushfile) {
|
||||
unselectall(brushlist);
|
||||
if (brushfile) {
|
||||
/* unselectall(brushlist); */
|
||||
if(GTK_IS_WIDGET(presetsavebutton))
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(presetsavebutton), FALSE);
|
||||
}
|
||||
|
@ -157,17 +158,15 @@ void dummybrushdmenuselect(GtkWidget *w, gpointer data)
|
|||
updatebrushprev(NULL);
|
||||
}
|
||||
|
||||
void destroy_window (GtkWidget *widget, GtkWidget **window)
|
||||
static void destroy_window (GtkWidget *widget, GtkWidget **window)
|
||||
{
|
||||
*window = NULL;
|
||||
}
|
||||
|
||||
void brushlistrefresh(void)
|
||||
static void brushlistrefresh(void)
|
||||
{
|
||||
GtkWidget *list = brushlist;
|
||||
int n = g_list_length(GTK_LIST(list)->children);
|
||||
gtk_list_clear_items(GTK_LIST(list), 0, n);
|
||||
readdirintolist("Brushes", list, NULL);
|
||||
gtk_list_store_clear (brushstore);
|
||||
readdirintolist("Brushes", brushlist, NULL);
|
||||
}
|
||||
|
||||
void savebrush_ok(GtkWidget *w, GtkFileSelection *fs, gpointer data)
|
||||
|
@ -199,14 +198,11 @@ void savebrush(GtkWidget *wg, gpointer data)
|
|||
|
||||
gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), path);
|
||||
|
||||
g_signal_connect (G_OBJECT(window), "destroy",
|
||||
G_CALLBACK (destroy_window),
|
||||
g_signal_connect (G_OBJECT(window), "destroy", G_CALLBACK (destroy_window),
|
||||
&window);
|
||||
|
||||
g_signal_connect (G_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
|
||||
"clicked",
|
||||
G_CALLBACK (savebrush_ok),
|
||||
window);
|
||||
"clicked", G_CALLBACK (savebrush_ok), window);
|
||||
|
||||
g_signal_connect_swapped (G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button),
|
||||
"clicked",
|
||||
|
@ -217,7 +213,7 @@ void savebrush(GtkWidget *wg, gpointer data)
|
|||
return;
|
||||
}
|
||||
|
||||
gint validdrawable(gint32 imageid, gint32 drawableid, gpointer data)
|
||||
static gboolean validdrawable(gint32 imageid, gint32 drawableid, gpointer data)
|
||||
{
|
||||
if(drawableid == -1) return TRUE;
|
||||
return (gimp_drawable_is_rgb(drawableid) || gimp_drawable_is_gray(drawableid));
|
||||
|
@ -300,13 +296,11 @@ void updatebrushprev(char *fn)
|
|||
|
||||
static gboolean brushdontupdate = FALSE;
|
||||
|
||||
void selectbrush(GtkWidget *wg, GtkWidget *p)
|
||||
static void selectbrush(GtkTreeSelection *selection, gpointer data)
|
||||
{
|
||||
GList *h;
|
||||
GtkWidget *tmpw;
|
||||
char *l;
|
||||
static char *oldl = NULL;
|
||||
static char fname[200];
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model;
|
||||
char fname[200];
|
||||
|
||||
if (brushdontupdate) return;
|
||||
|
||||
|
@ -315,50 +309,47 @@ void selectbrush(GtkWidget *wg, GtkWidget *p)
|
|||
return;
|
||||
}
|
||||
|
||||
/* Argh! Doesn't work! WHY!? :-( */
|
||||
/*
|
||||
gtk_menu_set_active(GTK_MENU(brushdrawablemenu),0);
|
||||
gtk_menu_item_select(GTK_MENU_ITEM(brushemptyitem));
|
||||
gtk_widget_draw_default(brushdrawablemenu);
|
||||
gtk_widget_bite_me(brushdrawablemenu);
|
||||
*/
|
||||
if (gtk_tree_selection_get_selected (selection, &model, &iter))
|
||||
{
|
||||
gchar *brush;
|
||||
|
||||
if(!p) return;
|
||||
h = GTK_LIST(p)->selection;
|
||||
if(!h) return;
|
||||
tmpw = h->data;
|
||||
if(!tmpw) return;
|
||||
l = (gchar *) gtk_label_get_text(GTK_LABEL(GTK_BIN(tmpw)->child));
|
||||
gtk_tree_model_get (model, &iter, 0, &brush, -1);
|
||||
|
||||
if (oldl && strcmp(oldl, l)) {
|
||||
brushdontupdate = TRUE;
|
||||
gtk_adjustment_set_value(GTK_ADJUSTMENT(brushgammaadjust), 1.0);
|
||||
gtk_adjustment_set_value(GTK_ADJUSTMENT(brushaspectadjust), 0.0);
|
||||
brushdontupdate = FALSE;
|
||||
}
|
||||
oldl = l;
|
||||
|
||||
sprintf(fname, "Brushes/%s", l);
|
||||
sprintf(fname, "Brushes/%s", brush);
|
||||
strcpy(pcvals.selectedbrush, fname);
|
||||
|
||||
updatebrushprev(fname);
|
||||
|
||||
g_free (brush);
|
||||
}
|
||||
}
|
||||
|
||||
static void selectbrushfile(GtkWidget *wg, GtkWidget *p)
|
||||
static void selectbrushfile(GtkTreeSelection *selection, gpointer data)
|
||||
{
|
||||
brushfile = 1;
|
||||
if(GTK_IS_WIDGET(presetsavebutton))
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(presetsavebutton), TRUE);
|
||||
selectbrush(wg,p);
|
||||
gtk_widget_set_sensitive (presetsavebutton, TRUE);
|
||||
selectbrush (selection, NULL);
|
||||
}
|
||||
|
||||
static void brushaspectadjust_cb(GtkWidget *w, gpointer data)
|
||||
{
|
||||
gimp_double_adjustment_update (GTK_ADJUSTMENT(w), data);
|
||||
updatebrushprev (pcvals.selectedbrush);
|
||||
}
|
||||
|
||||
void create_brushpage(GtkNotebook *notebook)
|
||||
{
|
||||
GtkWidget *box1, *box2, *box3, *thispage;
|
||||
GtkWidget *scrolled_win, *list;
|
||||
GtkWidget *view;
|
||||
GtkWidget *tmpw, *table;
|
||||
GtkWidget *dmenu;
|
||||
GtkWidget *label;
|
||||
GtkTreeSelection *selection;
|
||||
|
||||
label = gtk_label_new_with_mnemonic (_("_Brush"));
|
||||
|
||||
|
@ -370,22 +361,10 @@ void create_brushpage(GtkNotebook *notebook)
|
|||
gtk_box_pack_start(GTK_BOX(thispage), box1, TRUE,TRUE,0);
|
||||
gtk_widget_show (box1);
|
||||
|
||||
scrolled_win = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_box_pack_start (GTK_BOX (box1), scrolled_win, FALSE, FALSE, 0);
|
||||
gtk_widget_show (scrolled_win);
|
||||
gtk_widget_set_size_request(scrolled_win, 150,-1);
|
||||
|
||||
brushlist = list = gtk_list_new ();
|
||||
gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_BROWSE);
|
||||
|
||||
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_win),
|
||||
list);
|
||||
gtk_widget_show (list);
|
||||
|
||||
readdirintolist("Brushes", list, pcvals.selectedbrush);
|
||||
view = createonecolumnlist (box1, selectbrushfile);
|
||||
brushlist = view;
|
||||
brushstore = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (view)));
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
|
||||
|
||||
box2 = gtk_vbox_new (FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(box1), box2,FALSE,FALSE,0);
|
||||
|
@ -405,16 +384,17 @@ void create_brushpage(GtkNotebook *notebook)
|
|||
gtk_box_pack_start(GTK_BOX(box2), tmpw,FALSE,FALSE,0);
|
||||
gtk_widget_show (tmpw);
|
||||
|
||||
brushgammaadjust = gtk_adjustment_new(pcvals.brushgamma, 0.5, 3.0, 0.1, 0.1, 1.0);
|
||||
brushgammaadjust = gtk_adjustment_new(pcvals.brushgamma, 0.5, 3.0, 0.1,
|
||||
0.1, 1.0);
|
||||
tmpw = gtk_hscale_new(GTK_ADJUSTMENT(brushgammaadjust));
|
||||
gtk_widget_set_size_request (GTK_WIDGET(tmpw), 100, 30);
|
||||
gtk_scale_set_draw_value (GTK_SCALE (tmpw), FALSE);
|
||||
gtk_scale_set_digits(GTK_SCALE (tmpw), 2);
|
||||
gtk_box_pack_start (GTK_BOX (box2), tmpw, FALSE, FALSE, 0);
|
||||
gtk_widget_show (tmpw);
|
||||
g_signal_connect(G_OBJECT(brushgammaadjust), "value_changed",
|
||||
G_CALLBACK(selectbrush),
|
||||
list);
|
||||
g_signal_connect_swapped (G_OBJECT(brushgammaadjust), "value_changed",
|
||||
G_CALLBACK(updatebrushprev), pcvals.selectedbrush);
|
||||
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(tooltips), tmpw, _("Changes the gamma (brightness) of the selected brush"), NULL);
|
||||
|
||||
box1 = gtk_hbox_new (FALSE, 0);
|
||||
|
@ -469,8 +449,7 @@ void create_brushpage(GtkNotebook *notebook)
|
|||
_("Specifies the aspect ratio of the brush"),
|
||||
NULL);
|
||||
g_signal_connect (brushaspectadjust, "value_changed",
|
||||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&pcvals.brushaspect);
|
||||
G_CALLBACK (brushaspectadjust_cb), &pcvals.brushaspect);
|
||||
|
||||
brushreliefadjust =
|
||||
gimp_scale_entry_new (GTK_TABLE(table), 0, 1,
|
||||
|
@ -484,12 +463,8 @@ void create_brushpage(GtkNotebook *notebook)
|
|||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&pcvals.brushrelief);
|
||||
|
||||
g_signal_connect (G_OBJECT(list), "selection_changed",
|
||||
G_CALLBACK(selectbrushfile),
|
||||
list);
|
||||
if(!GTK_LIST(list)->selection)
|
||||
gtk_list_select_item(GTK_LIST(list), 0);
|
||||
selectbrush(NULL, list);
|
||||
selectbrush(selection, NULL);
|
||||
readdirintolist("Brushes", view, pcvals.selectedbrush);
|
||||
|
||||
gtk_notebook_append_page_menu (notebook, thispage, label, NULL);
|
||||
}
|
||||
|
|
|
@ -193,8 +193,6 @@ static void dialog_ok_callback(GtkWidget *widget, gpointer data)
|
|||
storevals();
|
||||
pcvals.run = 1;
|
||||
gtk_widget_destroy(dlg);
|
||||
if (omwindow)
|
||||
gtk_widget_destroy(GTK_WIDGET(omwindow));
|
||||
}
|
||||
|
||||
static void dialog_cancel_callback(GtkWidget *widget, gpointer data)
|
||||
|
@ -203,58 +201,56 @@ static void dialog_cancel_callback(GtkWidget *widget, gpointer data)
|
|||
gtk_widget_destroy(dlg);
|
||||
}
|
||||
|
||||
void unselectall(GtkWidget *list)
|
||||
void reselect(GtkWidget *view, char *fname)
|
||||
{
|
||||
GList *h;
|
||||
GtkWidget *tmpw;
|
||||
for(;;) {
|
||||
h = GTK_LIST(list)->selection;
|
||||
if(!h) break;
|
||||
tmpw = h->data;
|
||||
if(!tmpw) break;
|
||||
gtk_list_unselect_child(GTK_LIST(list), tmpw);
|
||||
}
|
||||
}
|
||||
|
||||
void reselect(GtkWidget *list, char *fname)
|
||||
{
|
||||
GList *h;
|
||||
GtkWidget *tmpw;
|
||||
char *tmps, *tmpfile;
|
||||
GtkTreeModel *model;
|
||||
GtkTreeSelection *selection;
|
||||
GtkTreeIter iter;
|
||||
char *tmpfile;
|
||||
|
||||
tmpfile = strrchr(fname, '/');
|
||||
if(tmpfile)
|
||||
if (tmpfile)
|
||||
fname = ++tmpfile;
|
||||
|
||||
unselectall(list);
|
||||
model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
|
||||
|
||||
h = GTK_LIST(list)->children;
|
||||
while(h) {
|
||||
tmpw = h->data;
|
||||
gtk_label_get(GTK_LABEL(GTK_BIN(tmpw)->child), &tmps);
|
||||
if(!strcmp(tmps, fname)) {
|
||||
gtk_list_select_child(GTK_LIST(list), tmpw);
|
||||
if (gtk_tree_model_get_iter_first (model, &iter)) {
|
||||
do {
|
||||
gchar *name;
|
||||
|
||||
gtk_tree_model_get (model, &iter, 0, &name, -1);
|
||||
if (!strcmp(name, fname)) {
|
||||
gtk_tree_selection_select_iter (selection, &iter);
|
||||
g_free (name);
|
||||
break;
|
||||
}
|
||||
h = g_list_next(h);
|
||||
g_free (name);
|
||||
|
||||
} while (gtk_tree_model_iter_next (model, &iter));
|
||||
}
|
||||
}
|
||||
|
||||
void readdirintolist_real(char *subdir, GtkWidget *list, char *selected)
|
||||
static void readdirintolist_real(char *subdir, GtkWidget *view,
|
||||
char *selected)
|
||||
{
|
||||
gchar *fpath;
|
||||
const gchar *de;
|
||||
GtkWidget *selectedw = NULL, *tmpw;
|
||||
GDir *dir;
|
||||
GList *flist = NULL;
|
||||
GtkTreeIter iter;
|
||||
GtkListStore *store;
|
||||
GtkTreeSelection *selection;
|
||||
|
||||
if(selected) {
|
||||
if(!selected[0])
|
||||
store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (view)));
|
||||
|
||||
if (selected) {
|
||||
if (!selected[0])
|
||||
selected = NULL;
|
||||
else {
|
||||
char *nsel;
|
||||
nsel = strrchr(selected, '/');
|
||||
if(nsel) selected = ++nsel;
|
||||
if (nsel) selected = ++nsel;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -278,40 +274,93 @@ void readdirintolist_real(char *subdir, GtkWidget *list, char *selected)
|
|||
if (!file_exists)
|
||||
continue;
|
||||
|
||||
flist = g_list_insert_sorted(flist, g_strdup(de), (GCompareFunc)g_ascii_strcasecmp);
|
||||
flist = g_list_insert_sorted(flist, g_strdup(de),
|
||||
(GCompareFunc)g_ascii_strcasecmp);
|
||||
}
|
||||
g_dir_close(dir);
|
||||
|
||||
while(flist) {
|
||||
tmpw = gtk_list_item_new_with_label(flist->data);
|
||||
if(selected)
|
||||
if(!strcmp(flist->data, selected))
|
||||
selectedw = tmpw;
|
||||
gtk_container_add(GTK_CONTAINER(list), tmpw);
|
||||
gtk_widget_show(tmpw);
|
||||
g_free(flist->data);
|
||||
flist = g_list_remove(flist,flist->data);
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
|
||||
|
||||
while (flist)
|
||||
{
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter, 0, flist->data, -1);
|
||||
|
||||
if (selected)
|
||||
{
|
||||
if (!strcmp(flist->data, selected))
|
||||
{
|
||||
gtk_tree_selection_select_iter (selection, &iter);
|
||||
}
|
||||
}
|
||||
g_free (flist->data);
|
||||
flist = g_list_remove (flist, flist->data);
|
||||
}
|
||||
|
||||
if (!selected)
|
||||
{
|
||||
if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter))
|
||||
gtk_tree_selection_select_iter (selection, &iter);
|
||||
}
|
||||
if(selectedw)
|
||||
gtk_list_select_child(GTK_LIST(list), selectedw);
|
||||
else
|
||||
gtk_list_select_item(GTK_LIST(list), 0);
|
||||
}
|
||||
|
||||
void readdirintolist(char *subdir, GtkWidget *list, char *selected)
|
||||
void readdirintolist(char *subdir, GtkWidget *view, char *selected)
|
||||
{
|
||||
char *tmpdir;
|
||||
GList *thispath = parsepath();
|
||||
|
||||
while(thispath)
|
||||
while (thispath)
|
||||
{
|
||||
tmpdir = g_build_filename ((gchar *) thispath->data, subdir, NULL);
|
||||
readdirintolist_real (tmpdir, list, selected);
|
||||
readdirintolist_real (tmpdir, view, selected);
|
||||
g_free (tmpdir);
|
||||
thispath = thispath->next;
|
||||
}
|
||||
}
|
||||
|
||||
GtkWidget *createonecolumnlist(GtkWidget *parent,
|
||||
void (*changed_cb)
|
||||
(GtkTreeSelection *selection, gpointer data))
|
||||
{
|
||||
GtkListStore *store;
|
||||
GtkTreeSelection *selection;
|
||||
GtkCellRenderer *renderer;
|
||||
GtkTreeViewColumn *column;
|
||||
GtkWidget *swin, *view;
|
||||
|
||||
swin = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(swin),
|
||||
GTK_SHADOW_IN);
|
||||
gtk_box_pack_start (GTK_BOX (parent), swin, FALSE, FALSE, 0);
|
||||
gtk_widget_show (swin);
|
||||
gtk_widget_set_size_request(swin, 150,-1);
|
||||
|
||||
store = gtk_list_store_new (1, G_TYPE_STRING);
|
||||
view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
|
||||
|
||||
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE);
|
||||
g_object_unref (G_OBJECT (store));
|
||||
gtk_widget_show (view);
|
||||
|
||||
renderer = gtk_cell_renderer_text_new ();
|
||||
column = gtk_tree_view_column_new_with_attributes ("Preset", renderer,
|
||||
"text", 0,
|
||||
NULL);
|
||||
gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (swin), view);
|
||||
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
|
||||
gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
|
||||
g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (changed_cb),
|
||||
NULL);
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
static void showabout(void)
|
||||
{
|
||||
static GtkWidget *window = NULL;
|
||||
|
@ -376,7 +425,7 @@ static void showabout(void)
|
|||
tmphbox = gtk_hbox_new(FALSE, 5);
|
||||
gtk_box_pack_start(GTK_BOX(tmpvbox), tmphbox, TRUE, TRUE, 0);
|
||||
|
||||
tmpw = gtk_label_new("\xa9 1999 Vidar Madsen\n"
|
||||
tmpw = gtk_label_new("(C) 1999 Vidar Madsen\n"
|
||||
"vidar@prosalg.no\n"
|
||||
"http://www.prosalg.no/~vidar/gimpressionist/\n"
|
||||
PLUG_IN_VERSION
|
||||
|
@ -447,7 +496,6 @@ static int create_dialog(void)
|
|||
|
||||
notebook = gtk_notebook_new ();
|
||||
gtk_box_pack_start (GTK_BOX (box1), notebook, TRUE, TRUE, 5);
|
||||
/* gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook)); */
|
||||
gtk_widget_show(notebook);
|
||||
|
||||
create_presetpage(GTK_NOTEBOOK (notebook));
|
||||
|
|
|
@ -97,7 +97,6 @@ extern char *path;
|
|||
extern struct ppm infile;
|
||||
extern struct ppm inalpha;
|
||||
extern GtkWidget *window;
|
||||
extern GtkWidget *omwindow;
|
||||
|
||||
extern int brushfile;
|
||||
extern struct ppm brushppm;
|
||||
|
@ -174,13 +173,17 @@ gchar *findfile(const gchar *);
|
|||
|
||||
void unselectall(GtkWidget *list);
|
||||
void reselect(GtkWidget *list, char *fname);
|
||||
void readdirintolist(char *subdir, GtkWidget *list, char *selected);
|
||||
void readdirintolist(char *subdir, GtkWidget *view, char *selected);
|
||||
void orientchange(GtkWidget *wg, void *d, int num);
|
||||
void sizechange(GtkWidget *wg, void *d, int num);
|
||||
void placechange(int num);
|
||||
void colorchange(int num);
|
||||
void generalbgchange(GtkWidget *wg, void *d, int num);
|
||||
|
||||
GtkWidget *createonecolumnlist(GtkWidget *parent,
|
||||
void (*changed_cb)
|
||||
(GtkTreeSelection *selection, gpointer data));
|
||||
|
||||
void reloadbrush(char *fn, struct ppm *p);
|
||||
|
||||
void create_orientmap_dialog(void);
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
#define NUMVECTYPES 4
|
||||
|
||||
GtkWidget *omwindow = NULL;
|
||||
static GtkWidget *omwindow;
|
||||
|
||||
static GtkWidget *vectorprev;
|
||||
static GtkWidget *ompreviewprev;
|
||||
|
@ -437,12 +437,12 @@ void create_orientmap_dialog(void)
|
|||
GTK_WIN_POS_MOUSE,
|
||||
FALSE, TRUE, FALSE,
|
||||
|
||||
GTK_STOCK_CANCEL, gtk_widget_hide,
|
||||
NULL, 1, NULL, FALSE, FALSE,
|
||||
|
||||
GTK_STOCK_APPLY, omapplyclick,
|
||||
NULL, NULL, NULL, FALSE, FALSE,
|
||||
|
||||
GTK_STOCK_CANCEL, gtk_widget_hide,
|
||||
NULL, 1, NULL, FALSE, FALSE,
|
||||
|
||||
GTK_STOCK_OK, omokclick,
|
||||
NULL, 1, NULL, TRUE, FALSE,
|
||||
|
||||
|
|
|
@ -28,65 +28,63 @@ GtkObject *paperreliefadjust = NULL;
|
|||
GtkObject *paperscaleadjust = NULL;
|
||||
GtkWidget *paperinvert = NULL;
|
||||
GtkWidget *paperoverlay = NULL;
|
||||
static GtkListStore *paperstore;
|
||||
|
||||
void updatepaperprev(char *fn)
|
||||
static void updatepaperprev(char *fn)
|
||||
{
|
||||
int i, j;
|
||||
char buf[100];
|
||||
|
||||
if(!fn) {
|
||||
memset(buf, 0, 100);
|
||||
for(i = 0; i < 100; i++) {
|
||||
gtk_preview_draw_row (GTK_PREVIEW (paperprev), buf, 0, i, 100);
|
||||
}
|
||||
|
||||
} else {
|
||||
double sc;
|
||||
ppm_t p = {0,0,NULL};
|
||||
|
||||
loadppm(fn, &p);
|
||||
sc = p.width > p.height ? p.width : p.height;
|
||||
sc = 100.0 / sc;
|
||||
resize(&p, p.width*sc,p.height*sc);
|
||||
for(i = 0; i < 100; i++) {
|
||||
for (i = 0; i < 100; i++) {
|
||||
int k = i * p.width * 3;
|
||||
memset(buf,0,100);
|
||||
memset(buf, 0, 100);
|
||||
if(i < p.height) {
|
||||
for(j = 0; j < p.width; j++)
|
||||
buf[j] = p.col[k + j * 3];
|
||||
if(GTK_TOGGLE_BUTTON(paperinvert)->active)
|
||||
for(j = 0; j < p.width; j++)
|
||||
if (GTK_TOGGLE_BUTTON(paperinvert)->active)
|
||||
for (j = 0; j < p.width; j++)
|
||||
buf[j] = 255 - buf[j];
|
||||
}
|
||||
gtk_preview_draw_row (GTK_PREVIEW (paperprev), buf, 0, i, 100);
|
||||
}
|
||||
killppm(&p);
|
||||
}
|
||||
|
||||
gtk_widget_draw (paperprev, NULL);
|
||||
}
|
||||
|
||||
static void selectpaper(GtkWidget *wg, GtkWidget *p)
|
||||
static void selectpaper(GtkTreeSelection *selection, gpointer data)
|
||||
{
|
||||
GList *h = GTK_LIST(p)->selection;
|
||||
GtkWidget *tmpw;
|
||||
char *l;
|
||||
static char fname[200];
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model;
|
||||
char fname[200];
|
||||
|
||||
if(!h) return;
|
||||
tmpw = h->data;
|
||||
if(!tmpw) return;
|
||||
if (gtk_tree_selection_get_selected (selection, &model, &iter))
|
||||
{
|
||||
gchar *paper;
|
||||
|
||||
gtk_label_get(GTK_LABEL(GTK_BIN(tmpw)->child), &l);
|
||||
gtk_tree_model_get (model, &iter, 0, &paper, -1);
|
||||
|
||||
sprintf(fname, "Paper/%s", l);
|
||||
sprintf(fname, "Paper/%s", paper);
|
||||
strcpy(pcvals.selectedpaper, fname);
|
||||
updatepaperprev(fname);
|
||||
|
||||
g_free (paper);
|
||||
}
|
||||
}
|
||||
|
||||
void create_paperpage(GtkNotebook *notebook)
|
||||
{
|
||||
GtkWidget *box1, *thispage, *box2;
|
||||
GtkWidget *label, *tmpw, *table;
|
||||
GtkWidget *scrolled_win, *list;
|
||||
GtkWidget *view;
|
||||
GtkTreeSelection *selection;
|
||||
GtkTreeIter iter;
|
||||
|
||||
label = gtk_label_new_with_mnemonic (_("P_aper"));
|
||||
|
||||
|
@ -98,23 +96,9 @@ void create_paperpage(GtkNotebook *notebook)
|
|||
gtk_box_pack_start(GTK_BOX(thispage), box1, TRUE, TRUE, 0);
|
||||
gtk_widget_show (box1);
|
||||
|
||||
scrolled_win = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_box_pack_start (GTK_BOX (box1), scrolled_win, FALSE, FALSE, 0);
|
||||
gtk_widget_show (scrolled_win);
|
||||
gtk_widget_set_size_request(scrolled_win, 150,-1);
|
||||
|
||||
paperlist = list = gtk_list_new ();
|
||||
gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_BROWSE);
|
||||
|
||||
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(scrolled_win),
|
||||
list);
|
||||
|
||||
gtk_widget_show (list);
|
||||
|
||||
readdirintolist("Paper", list, pcvals.selectedpaper);
|
||||
paperlist = view = createonecolumnlist (box1, selectpaper);
|
||||
paperstore = GTK_LIST_STORE(gtk_tree_view_get_model (GTK_TREE_VIEW (view)));
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
|
||||
|
||||
box2 = gtk_vbox_new (FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(box1), box2, FALSE, FALSE, 0);
|
||||
|
@ -134,7 +118,9 @@ void create_paperpage(GtkNotebook *notebook)
|
|||
gtk_box_pack_start (GTK_BOX (box2), tmpw, FALSE, FALSE, 0);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tmpw), FALSE);
|
||||
gtk_widget_show (tmpw);
|
||||
g_signal_connect (G_OBJECT(tmpw), "clicked", G_CALLBACK(selectpaper), list);
|
||||
g_signal_connect_swapped (G_OBJECT(tmpw), "clicked",
|
||||
G_CALLBACK(selectpaper), selection);
|
||||
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(tooltips), tmpw,
|
||||
_("Inverts the Papers texture"), NULL);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tmpw), pcvals.paperinvert);
|
||||
|
@ -181,11 +167,11 @@ void create_paperpage(GtkNotebook *notebook)
|
|||
G_CALLBACK (gimp_double_adjustment_update),
|
||||
&pcvals.paperrelief);
|
||||
|
||||
g_signal_connect (G_OBJECT(list), "selection_changed",
|
||||
G_CALLBACK(selectpaper), list);
|
||||
if (!GTK_LIST(list)->selection)
|
||||
gtk_list_select_item(GTK_LIST(list), 0);
|
||||
selectpaper(NULL,list);
|
||||
|
||||
if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL(paperstore), &iter))
|
||||
gtk_tree_selection_select_iter (selection, &iter);
|
||||
|
||||
selectpaper(selection, NULL);
|
||||
readdirintolist("Paper", view, pcvals.selectedpaper);
|
||||
gtk_notebook_append_page_menu (notebook, thispage, label, NULL);
|
||||
}
|
||||
|
|
|
@ -8,11 +8,6 @@
|
|||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
#warning GTK_DISABLE_DEPRECATED
|
||||
#endif
|
||||
#undef GTK_DISABLE_DEPRECATED
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include <libgimp/gimp.h>
|
||||
|
@ -23,27 +18,28 @@
|
|||
|
||||
GtkWidget *presetnameentry = NULL;
|
||||
GtkWidget *presetsavebutton = NULL;
|
||||
GtkWidget *presetlist = NULL;
|
||||
static GtkWidget *presetlist = NULL;
|
||||
GtkWidget *presetdesctext = NULL;
|
||||
GtkWidget *presetdesclabel = NULL;
|
||||
static GtkListStore *store;
|
||||
|
||||
static char presetdesc[4096] = "";
|
||||
|
||||
static char *factory_defaults = "<Factory defaults>";
|
||||
|
||||
static void addfactorydefaults(GtkListStore *store)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter, 0, factory_defaults, -1);
|
||||
}
|
||||
|
||||
static void presetsrefresh(void)
|
||||
{
|
||||
GtkWidget *list = presetlist;
|
||||
GtkWidget *tmpw;
|
||||
int n = g_list_length(GTK_LIST(list)->children);
|
||||
|
||||
gtk_list_clear_items(GTK_LIST(list), 0, n);
|
||||
|
||||
tmpw = gtk_list_item_new_with_label(factory_defaults);
|
||||
gtk_container_add(GTK_CONTAINER(list), tmpw);
|
||||
gtk_widget_show(tmpw);
|
||||
|
||||
readdirintolist("Presets", list, NULL);
|
||||
gtk_list_store_clear (store);
|
||||
addfactorydefaults (store);
|
||||
readdirintolist ("Presets", presetlist, NULL);
|
||||
}
|
||||
|
||||
#define PRESETMAGIC "Preset"
|
||||
|
@ -119,7 +115,6 @@ static void setorientvector(char *str)
|
|||
|
||||
static void setsizevector(char *str)
|
||||
{
|
||||
/* num,x,y,siz,str,type */
|
||||
char *tmps = str;
|
||||
int n;
|
||||
|
||||
|
@ -281,46 +276,50 @@ static int loadpreset(char *fn)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void applypreset(void)
|
||||
static void applypreset(GtkWidget *w, GtkTreeSelection *selection)
|
||||
{
|
||||
GList *h = GTK_LIST(presetlist)->selection;
|
||||
GtkWidget *tmpw = h->data;
|
||||
char *l;
|
||||
static char fname[200];
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model;
|
||||
|
||||
gtk_label_get(GTK_LABEL(GTK_BIN(tmpw)->child), &l);
|
||||
if (gtk_tree_selection_get_selected (selection, &model, &iter))
|
||||
{
|
||||
char fname[200];
|
||||
gchar *preset;
|
||||
|
||||
/* Restore defaults, in case of old/short Preset file */
|
||||
pcvals = defaultpcvals;
|
||||
presetdesc[0] = '\0';
|
||||
gtk_tree_model_get (model, &iter, 0, &preset, -1);
|
||||
|
||||
if(!strcmp(l, factory_defaults)) {
|
||||
restorevals();
|
||||
return;
|
||||
}
|
||||
|
||||
sprintf(fname, "Presets/%s", l);
|
||||
if (strcmp(preset, factory_defaults))
|
||||
{
|
||||
sprintf(fname, "Presets/%s", preset);
|
||||
strcpy(fname, findfile(fname));
|
||||
|
||||
loadpreset(fname);
|
||||
|
||||
}
|
||||
restorevals();
|
||||
|
||||
g_free (preset);
|
||||
}
|
||||
}
|
||||
|
||||
static void deletepreset(void)
|
||||
static void deletepreset(GtkWidget *w, GtkTreeSelection *selection)
|
||||
{
|
||||
GList *h = GTK_LIST(presetlist)->selection;
|
||||
GtkWidget *tmpw = h->data;
|
||||
char *l;
|
||||
static char fname[200];
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model;
|
||||
|
||||
gtk_label_get(GTK_LABEL(GTK_BIN(tmpw)->child), &l);
|
||||
if (gtk_tree_selection_get_selected (selection, &model, &iter))
|
||||
{
|
||||
char fname[200];
|
||||
gchar *preset;
|
||||
|
||||
sprintf(fname, "Presets/%s", l);
|
||||
gtk_tree_model_get (model, &iter, 0, &preset, -1);
|
||||
|
||||
sprintf(fname, "Presets/%s", preset);
|
||||
strcpy(fname, findfile(fname));
|
||||
|
||||
unlink(fname);
|
||||
presetsrefresh();
|
||||
|
||||
g_free (preset);
|
||||
}
|
||||
}
|
||||
|
||||
static void savepreset(void);
|
||||
|
@ -331,7 +330,7 @@ static void presetdesccallback(GtkTextBuffer *buffer, gpointer data)
|
|||
GtkTextIter start, end;
|
||||
|
||||
gtk_text_buffer_get_bounds (buffer, &start, &end);
|
||||
str = gtk_text_buffer_get_text (buffer, &start, &end, TRUE);
|
||||
str = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
|
||||
dest = g_strescape (str, NULL);
|
||||
strcpy (presetdesc, dest);
|
||||
g_free (dest);
|
||||
|
@ -379,6 +378,8 @@ static void create_savepreset(void)
|
|||
gtk_widget_show (label);
|
||||
|
||||
swin = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(swin),
|
||||
GTK_SHADOW_IN);
|
||||
gtk_container_add (GTK_CONTAINER(box), swin);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(swin),
|
||||
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||
|
@ -529,8 +530,7 @@ static void readdesc(char *fn)
|
|||
|
||||
sprintf(fname, "Presets/%s", fn);
|
||||
tmp = findfile(fname);
|
||||
if(!tmp) {
|
||||
if(presetdesclabel)
|
||||
if (!tmp) {
|
||||
gtk_label_set_text(GTK_LABEL(presetdesclabel), "");
|
||||
return;
|
||||
}
|
||||
|
@ -552,37 +552,35 @@ static void readdesc(char *fn)
|
|||
fclose(f);
|
||||
}
|
||||
gtk_label_set_text(GTK_LABEL(presetdesclabel), "");
|
||||
return;
|
||||
}
|
||||
|
||||
static void selectpreset(GtkWidget *wg, GtkWidget *p)
|
||||
static void selectpreset(GtkTreeSelection *selection, gpointer data)
|
||||
{
|
||||
GList *h = GTK_LIST(p)->selection;
|
||||
GtkWidget *tmpw;
|
||||
char *l;
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model;
|
||||
|
||||
if(!h) return;
|
||||
tmpw = h->data;
|
||||
if(!tmpw) return;
|
||||
if (gtk_tree_selection_get_selected (selection, &model, &iter))
|
||||
{
|
||||
gchar *preset;
|
||||
|
||||
gtk_label_get(GTK_LABEL(GTK_BIN(tmpw)->child), &l);
|
||||
if(strcmp(l, factory_defaults))
|
||||
gtk_entry_set_text(GTK_ENTRY(presetnameentry), l);
|
||||
|
||||
readdesc(l);
|
||||
gtk_tree_model_get (model, &iter, 0, &preset, -1);
|
||||
if(strcmp(preset, factory_defaults))
|
||||
gtk_entry_set_text (GTK_ENTRY(presetnameentry), preset);
|
||||
readdesc (preset);
|
||||
g_free (preset);
|
||||
}
|
||||
}
|
||||
|
||||
void create_presetpage(GtkNotebook *notebook)
|
||||
{
|
||||
GtkWidget *box1, *box2, *hbox, *vbox, *thispage;
|
||||
GtkWidget *scrolled_win, *list;
|
||||
GtkWidget *view;
|
||||
GtkWidget *tmpw;
|
||||
GtkWidget *label;
|
||||
GtkTreeSelection *selection;
|
||||
|
||||
label = gtk_label_new_with_mnemonic (_("_Presets"));
|
||||
|
||||
presetlist = list = gtk_list_new ();
|
||||
|
||||
thispage = gtk_vbox_new(FALSE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (thispage), 5);
|
||||
gtk_widget_show(thispage);
|
||||
|
@ -596,8 +594,8 @@ void create_presetpage(GtkNotebook *notebook)
|
|||
gtk_widget_set_size_request(tmpw, 150, -1);
|
||||
gtk_widget_show(tmpw);
|
||||
|
||||
presetsavebutton = tmpw = gtk_button_new_with_label( _("Save current"));
|
||||
gtk_box_pack_start(GTK_BOX(box1), tmpw,FALSE,FALSE,5);
|
||||
presetsavebutton = tmpw = gtk_button_new_with_label( _("Save current..."));
|
||||
gtk_box_pack_start(GTK_BOX(box1), tmpw, FALSE, FALSE, 5);
|
||||
gtk_widget_show (tmpw);
|
||||
g_signal_connect (G_OBJECT(tmpw), "clicked", G_CALLBACK(create_savepreset),
|
||||
NULL);
|
||||
|
@ -609,28 +607,10 @@ void create_presetpage(GtkNotebook *notebook)
|
|||
gtk_box_pack_start(GTK_BOX(thispage), box1, TRUE, TRUE, 0);
|
||||
gtk_widget_show (box1);
|
||||
|
||||
scrolled_win = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_box_pack_start (GTK_BOX (box1), scrolled_win, FALSE, FALSE, 0);
|
||||
gtk_widget_show (scrolled_win);
|
||||
gtk_widget_set_size_request(scrolled_win, 150, -1);
|
||||
|
||||
gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_BROWSE);
|
||||
|
||||
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_win),
|
||||
list);
|
||||
gtk_widget_show (list);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT(list), "selection_changed",
|
||||
GTK_SIGNAL_FUNC(selectpreset), list);
|
||||
|
||||
tmpw = gtk_list_item_new_with_label(factory_defaults);
|
||||
gtk_container_add(GTK_CONTAINER(list), tmpw);
|
||||
gtk_widget_show(tmpw);
|
||||
|
||||
readdirintolist("Presets", list, NULL);
|
||||
presetlist = view = createonecolumnlist (box1, selectpreset);
|
||||
store = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
|
||||
addfactorydefaults (store);
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(box1), vbox, FALSE, FALSE, 0);
|
||||
|
@ -647,14 +627,16 @@ void create_presetpage(GtkNotebook *notebook)
|
|||
tmpw = gtk_button_new_from_stock (GTK_STOCK_APPLY);
|
||||
gtk_box_pack_start(GTK_BOX(box2), tmpw, FALSE, FALSE, 0);
|
||||
gtk_widget_show (tmpw);
|
||||
g_signal_connect (G_OBJECT(tmpw), "clicked", G_CALLBACK(applypreset), NULL);
|
||||
g_signal_connect (G_OBJECT(tmpw), "clicked", G_CALLBACK(applypreset),
|
||||
selection);
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(tooltips), tmpw,
|
||||
_("Reads the selected Preset into memory"), NULL);
|
||||
|
||||
tmpw = gtk_button_new_from_stock (GTK_STOCK_DELETE);
|
||||
gtk_box_pack_start(GTK_BOX(box2), tmpw, FALSE, FALSE,0);
|
||||
gtk_widget_show (tmpw);
|
||||
g_signal_connect (G_OBJECT(tmpw), "clicked", G_CALLBACK(deletepreset), NULL);
|
||||
g_signal_connect (G_OBJECT(tmpw), "clicked", G_CALLBACK(deletepreset),
|
||||
selection);
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(tooltips), tmpw,
|
||||
_("Deletes the selected Preset"), NULL);
|
||||
|
||||
|
@ -671,7 +653,6 @@ void create_presetpage(GtkNotebook *notebook)
|
|||
gtk_widget_show (hbox);
|
||||
|
||||
presetdesclabel = tmpw = gtk_label_new( _("(Desc)"));
|
||||
/* gtk_box_pack_start(GTK_BOX(box2), tmpw, FALSE, FALSE,0); */
|
||||
gtk_box_pack_start(GTK_BOX(hbox), tmpw, FALSE, FALSE, 0);
|
||||
gtk_widget_show(tmpw);
|
||||
|
||||
|
@ -682,5 +663,7 @@ for inclusion into the next release!\n"));
|
|||
gtk_box_pack_start(GTK_BOX(thispage), tmpw, FALSE, FALSE, 0);
|
||||
gtk_widget_show(tmpw);
|
||||
|
||||
readdirintolist("Presets", view, NULL);
|
||||
|
||||
gtk_notebook_append_page_menu (notebook, thispage, label, NULL);
|
||||
}
|
||||
|
|
|
@ -20,8 +20,7 @@
|
|||
|
||||
#define MAPFILE "data.out"
|
||||
|
||||
GtkWidget *smwindow = NULL;
|
||||
|
||||
static GtkWidget *smwindow;
|
||||
static GtkWidget *smvectorprev;
|
||||
static GtkWidget *smpreviewprev;
|
||||
static GtkWidget *prev_button;
|
||||
|
@ -376,12 +375,12 @@ void create_sizemap_dialog(void)
|
|||
GTK_WIN_POS_MOUSE,
|
||||
FALSE, TRUE, FALSE,
|
||||
|
||||
GTK_STOCK_CANCEL, gtk_widget_hide,
|
||||
NULL, 1, NULL, FALSE, FALSE,
|
||||
|
||||
GTK_STOCK_APPLY, smapplyclick,
|
||||
NULL, NULL, NULL, FALSE, FALSE,
|
||||
|
||||
GTK_STOCK_CANCEL, gtk_widget_hide,
|
||||
NULL, 1, NULL, FALSE, FALSE,
|
||||
|
||||
GTK_STOCK_OK, smokclick,
|
||||
NULL, 1, NULL, TRUE, FALSE,
|
||||
|
||||
|
|
Loading…
Reference in a new issue