Also one pointer and changing the value for every button was not good, in hindside very obvious because every button needs a different pointer otherwise every button will do the same (pointing to the same data). So I made an array of pointers.
That leaves me only with two questions:
1) Can this be achieved more simple ?
2) I declared "struct _buttonreeks *buttonreeks[30]; " because this is in most cases large enough, but how can I make it lenght-independant (what if I need 32 ??).
struct _buttonreeks *buttonreeks[] does not compile !!
for those who are interested the solution given below:
struct _buttonreeks *buttonreeks[30]; GtkWidget *button; struct table_description foo; GArray *buts = NULL;
buts = g_array_sized_new (FALSE, FALSE, sizeof (struct table_description), 1);
...etc...
for (i=0; i < vertical - 1; i++)
{
.... other things . for (j=1; j < vertical; j++)
{
if ((i < j) && Link_exists(i,j))
{
button = gtk_button_new ();
gtk_button_set_label ((GtkButton *) button , " x");
gtk_table_attach_defaults (GTK_TABLE (table), button , 1 + j, 2 + j, 1 + i, 2 +
i);
foo.buttons = button; // get the information and store it in the GArray
foo.i = i;
foo.j = j;
g_array_append_vals (buts, &foo, 1);
}
}
}// g_signal_connect for all buttons
for (i=0; i < buts->len; i++)
{
buttonreeks[i] = (struct _buttonreeks *) g_malloc(sizeof(struct _buttonreeks));
buttonreeks[i]->buttonids = buts;
buttonreeks[i]->i = g_array_index (buts, struct table_description, i).i;
buttonreeks[i]->j = g_array_index (buts, struct table_description, i).j;
button = g_array_index (buts, struct table_description, i).buttons;
g_signal_connect (G_OBJECT(button), "clicked",
(GCallback) toggle_location_event, buttonreeks[i]);
}edward hage wrote:
Tiago Cogumbreiro wrote:
You can cache a matrix with your buttons and the last changed buttons in a structure[1] and then send this structure[2] as user data (in the callback).
...........
Thank you for the advice,
Got that, I made the following structures. Looks much like you proposed, only use GArray to fill it with buttons and location (i,j) info.
struct _buttonreeks { GArray *buttonids; guint i; guint j; };
struct table_description { GtkButton *buttons; guint i; guint j; };
I get the following error-message when I run the program (compiling and linking all okay!)
[EMAIL PROTECTED]:~/Projects/modeller> ./modeller9
(modeller9:8722): GLib-GObject-WARNING **: invalid (NULL) pointer instance
(modeller9:8722): GLib-GObject-CRITICAL **: file gsignal.c: line 1861 (g_signal_connect_data): assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
Segmentatie fout
[EMAIL PROTECTED]:~/Projects/modeller>
How can I solve this problem ?
_______________________________________________ gtk-list mailing list [EMAIL PROTECTED] http://mail.gnome.org/mailman/listinfo/gtk-list
