GObjectListStore

From Buzztard

Jump to: navigation, search

[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);

[edit] idea

 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

[edit] todo

  • need insert/remove callbacks for the model
Personal tools
collaboration

SourceForge Logo

GStreamer Logo

Become a Friend of GNOME

Linux Sound Logo

MediaWiki

Valgrind

GNU Library Public Licence

GNU Free Documentation License 1.2