Re: gtk question from a gtk lamer
- From: Todd Graham Lewis <tlewis mindspring net>
- To: gnome-list gnome org
- Subject: Re: gtk question from a gtk lamer
- Date: Mon, 9 Nov 1998 04:42:35 -0500 (EST)
I'm back!
I've done everything that I can think to do on the same-gnome preview
project. From my careful cribbing from the imlib sources and the other
place in same-gnome where themes are loaded, my belief is that the
enclosed patch should work.
Can someone please enlighten me as to why, when the following patch is
applied to gnome-games/same-gnome/same-gnome.c, it does not have the
desired effect, i.e., that a frame is plucked from the .png file and
thrown into the chooser widget as a preview?
When you select a theme, there is a significant pause which indicates,
to me, that the theme is being parsed internally, a supposition which
my now-removed debugging code also verified.
1) /opt/gnome is hardcoded; search for FIXME
2) I chose "STONE_SIZE * 3" as the 4th and 5th args to gdk_draw_pixmap
as a mildly-informed guess. Caveat.
I'm sure that it's an obvious mistake on my part, so apologies in
advance for wasting people's time. I'm not a very good programmer,
but I do want previews in same-gnome, so here you go.
TIA for any tips people can give.
--
Todd Graham Lewis 32°49'N,83°36'W (800) 719-4664, x2804
******Linux****** MindSpring Enterprises tlewis@mindspring.net
--- same-gnome.c.orig Mon Nov 9 04:28:22 1998
+++ same-gnome.c Mon Nov 9 04:31:39 1998
@@ -52,6 +52,8 @@
int frame;
} field [STONE_COLS][STONE_LINES];
+static GtkWidget *pv;
+
static int nstones;
static int ncolors;
static int sync_stones = 0;
@@ -429,8 +431,28 @@
}
static void
+set_selection_preview (char *name)
+{
+ char *foo;
+ static GdkImlibImage *pvimage;
+ GdkPixmap *pvp;
+
+ /* FIXME: hardcoded */
+ foo=g_copy_strings("/opt/gnome/share/pixmaps/same-gnome/", name, NULL);
+ pvimage=gdk_imlib_load_image(foo);
+ gdk_imlib_render(pvimage,STONE_SIZE,STONE_SIZE);
+ pvp=gdk_imlib_move_image(pvimage);
+ gdk_draw_pixmap(pv->window, \
+ pv->style->black_gc, \
+ pvp, STONE_SIZE * 3, STONE_SIZE * 3, STONE_SIZE, \
+ STONE_SIZE, STONE_SIZE, STONE_SIZE);
+}
+
+static void
set_selection (GtkWidget *widget, void *data)
{
+ /* printf("New selection is %s.\n", data); */
+ set_selection_preview(data);
selected_scenario.scenario = data;
}
@@ -577,6 +599,10 @@
gtk_box_pack_start_defaults (GTK_BOX(hb), l);
gtk_box_pack_start_defaults (GTK_BOX(hb), omenu);
+ pv = gtk_drawing_area_new();
+ gtk_drawing_area_size (GTK_DRAWING_AREA (pv), STONE_SIZE, STONE_SIZE);
+ gtk_widget_show(pv);
+
cb = gtk_check_button_new_with_label ( _("Make it the default scenario") );
gtk_signal_connect (GTK_OBJECT(cb), "clicked", (GtkSignalFunc)set_selection_def, NULL);
gtk_widget_show (cb);
@@ -585,6 +611,7 @@
gtk_container_border_width (GTK_CONTAINER (fv), 5);
gtk_widget_show (fv);
+ gtk_box_pack_start_defaults (GTK_BOX(fv), pv);
gtk_box_pack_start_defaults (GTK_BOX(fv), hb);
gtk_box_pack_start_defaults (GTK_BOX(fv), cb);
gtk_box_pack_start_defaults (GTK_BOX(d->vbox), f);
@@ -605,6 +632,7 @@
gtk_widget_show(button);
gtk_widget_show (pref_dialog);
+ set_selection_preview("stones.png");
}
static int
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]