From Buzztard
[edit] situation
- bt-edit uses gtk_list_store_new in 7 files 15 times together
- often we actualy have a GList pointing to GObjects
machine-preferences-dialog.c:
// enum: enum value, enum nick
store=gtk_list_store_new(2,G_TYPE_ULONG,G_TYPE_STRING);
machine-properties-dialog.c:
// preset array: name, comment
store=gtk_list_store_new(2,G_TYPE_STRING,G_TYPE_STRING);
// enum: enum value, enum nick
store=gtk_list_store_new(2,G_TYPE_ULONG,G_TYPE_STRING);
main-page-patterns.c:
// list (name, machine, pixbuf)
store=gtk_list_store_new(3,GDK_TYPE_PIXBUF,G_TYPE_STRING,BT_TYPE_MACHINE);
// list (name, pattern, is_used) + filter to hide internal patterns
store=gtk_list_store_new(3,G_TYPE_STRING,BT_TYPE_PATTERN,G_TYPE_BOOLEAN);
// waves (name, index, index_as_hex)
store=gtk_list_store_new(2,G_TYPE_STRING,G_TYPE_STRING);
main-page-sequence.c:
label_menu_store=gtk_list_store_new(3,G_TYPE_ULONG,G_TYPE_STRING,G_TYPE_STRING);
store=gtk_list_store_newv(col_ct,store_types);
// list (name, pattern, is_used) + filter to hide internal patterns
store=gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN);
// bars-combo
store=gtk_list_store_new(1,G_TYPE_STRING);
main-page-waves.c:
// waves (name, index, index_as_hex)
store=gtk_list_store_new(WAVE_TABLE_CT,G_TYPE_ULONG,G_TYPE_STRING,G_TYPE_STRING);
// list (wavelevels properties)
store=gtk_list_store_new(WAVELEVEL_TABLE_CT,G_TYPE_ULONG,G_TYPE_STRING,G_TYPE_ULONG,G_TYPE_ULONG,G_TYPE_UINT,G_TYPE_LONG,G_TYPE_LONG);
settings-dialog.c:
// settings selection
store=gtk_list_store_new(4,G_TYPE_STRING,G_TYPE_LONG,GDK_TYPE_PIXBUF,G_TYPE_STRING);
settings-page-interaction-controller.c:
// list (name, device)
store=gtk_list_store_new(2,G_TYPE_STRING,BTIC_TYPE_DEVICE);
store=gtk_gobject_store_new_from_list(list, 2
G_TYPE_STRING, "name",
BT_TYPE_MACHINE, NULL);
store=gtk_gobject_store_new_from_slist(slist, 2
G_TYPE_STRING, "name",
BT_TYPE_MACHINE, NULL);
store=gtk_gobject_store_new_from_array(slist, 2
G_TYPE_STRING, "name",
BT_TYPE_MACHINE, NULL);
- it assumes that each of the list/array item has a gobject
- it pairs the model columns with object-properties
- if propertyname is NULL it put the object itself there
- need insert/remove callbacks for the model