static gint layer_list_events (GtkWidget *widget, GdkEvent *event) { GdkEventKey *kevent; GdkEventButton *bevent; GtkWidget *event_widget; DiaLayerWidget *layer_widget; event_widget = gtk_get_event_widget (event); if (GTK_IS_LIST_ITEM (event_widget)) { layer_widget = DIA_LAYER_WIDGET(event_widget); switch (event->type) { case GDK_BUTTON_PRESS: bevent = (GdkEventButton *) event; break; case GDK_2BUTTON_PRESS: bevent = (GdkEventButton *) event; layer_dialog_edit_layer(layer_widget, NULL, NULL); return TRUE; case GDK_KEY_PRESS: kevent = (GdkEventKey *) event; switch (kevent->keyval) { case GDK_Up: /* printf ("up arrow\n"); */ break; case GDK_Down: /* printf ("down arrow\n"); */ break; default: return FALSE; } return TRUE; default: break; } } return FALSE; }
/* Inserts items at the beginning of the list. */ int clip_GTK_LISTPREPENDITEMS(ClipMachine * ClipMachineMemory) { C_widget *clst = _fetch_cw_arg(ClipMachineMemory); ClipVar *cv = _clip_spar(ClipMachineMemory, 2); GList *items = NULL; CHECKCWID(clst, GTK_IS_LIST); CHECKARG4(2, ARRAY_type_of_ClipVarType, CHARACTER_type_of_ClipVarType, MAP_type_of_ClipVarType, NUMERIC_type_of_ClipVarType); switch (cv->ClipType_t_of_ClipVar.ClipVartype_type_of_ClipType) { case CHARACTER_type_of_ClipVarType: items = g_list_append(items, gtk_list_item_new_with_label(cv->ClipStrVar_s_of_ClipVar.ClipBuf_str_of_ClipStrVar.buf_of_ClipBuf)); break; case MAP_type_of_ClipVarType: case NUMERIC_type_of_ClipVarType: { C_widget *citem = _fetch_cwidget(ClipMachineMemory, cv); CHECKCWID(citem, GTK_IS_WIDGET); if (GTK_IS_LIST_ITEM(citem->widget)) items = g_list_append(items, citem->widget); else { GtkWidget *item = gtk_list_item_new(); gtk_container_add(GTK_CONTAINER(item), citem->widget); items = g_list_append(items, item); } break; } case ARRAY_type_of_ClipVarType: { C_widget *citem; GtkWidget *item; int i; for (i = 0; i < cv->ClipArrVar_a_of_ClipVar.count_of_ClipArrVar; i++) { switch (cv->ClipArrVar_a_of_ClipVar.ClipVar_items_of_ClipArrVar[i].ClipType_t_of_ClipVar. ClipVartype_type_of_ClipType) { case CHARACTER_type_of_ClipVarType: items = g_list_append(items, gtk_list_item_new_with_label(cv->ClipArrVar_a_of_ClipVar. ClipVar_items_of_ClipArrVar[i].ClipStrVar_s_of_ClipVar. ClipBuf_str_of_ClipStrVar.buf_of_ClipBuf)); break; case MAP_type_of_ClipVarType: case NUMERIC_type_of_ClipVarType: citem = _fetch_cwidget(ClipMachineMemory, &cv->ClipArrVar_a_of_ClipVar.ClipVar_items_of_ClipArrVar[i]); CHECKCWID(citem, GTK_IS_WIDGET); if (GTK_IS_LIST_ITEM(citem->widget)) items = g_list_append(items, citem->widget); else { item = gtk_list_item_new(); gtk_container_add(GTK_CONTAINER(item), citem->widget); items = g_list_append(items, item); } break; default: break; } } } default: break; } gtk_list_prepend_items(GTK_LIST(clst->widget), items); return 0; err: return 1; }