diff options
-rw-r--r-- | gtk/ui_util.c | 87 | ||||
-rw-r--r-- | gtk/ui_util.h | 10 |
2 files changed, 95 insertions, 2 deletions
diff --git a/gtk/ui_util.c b/gtk/ui_util.c index fedf0dc595..541c94dcdc 100644 --- a/gtk/ui_util.c +++ b/gtk/ui_util.c @@ -1,7 +1,7 @@ /* ui_util.c * UI utility routines * - * $Id: ui_util.c,v 1.20 2004/05/02 08:54:32 ulfl Exp $ + * $Id: ui_util.c,v 1.21 2004/05/20 18:18:12 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -482,3 +482,88 @@ set_tree_styles_all(void) { g_list_foreach(trees, set_tree_styles_cb, NULL); } + + + + +#if GTK_MAJOR_VERSION < 2 +/* convert variable argument list of values to array of strings (GTK2 -> GTK1) */ +void +simple_list_convert(GtkWidget *list, gchar **ent, va_list ap) +{ + int i; + char *s; + + while( (i = va_arg(ap, int)) != -1 ) { + s = va_arg(ap, char *); + ent[i] = s; + } +} +#endif + + +/* append a row to the simple list */ +/* use it like: simple_list_append(list, 0, "first", 1, "second", -1) */ +void +simple_list_append(GtkWidget *list, ...) +{ + va_list ap; + +#if GTK_MAJOR_VERSION < 2 + gchar *ent[10]; /* new entry added in clist */ +#else + GtkTreeIter iter; + GtkListStore *store; +#endif + + va_start(ap, list); +#if GTK_MAJOR_VERSION < 2 + simple_list_convert(list, ent, ap); + gtk_clist_append(GTK_CLIST(list), ent); +#else + store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(list))); + gtk_list_store_append(store, &iter); + gtk_list_store_set_valist(store, &iter, ap); +#endif + va_end(ap); +} + +/* create a simple list widget */ +GtkWidget * +simple_list_new(gint cols, gchar **titles) { + GtkWidget *plugins_list; +#if GTK_MAJOR_VERSION >= 2 + int i; + GtkListStore *store; + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; +#endif + + +#if GTK_MAJOR_VERSION < 2 + plugins_list = gtk_clist_new_with_titles(cols, titles); + gtk_clist_set_selection_mode(GTK_CLIST(plugins_list), GTK_SELECTION_SINGLE); + gtk_clist_column_titles_passive(GTK_CLIST(plugins_list)); + gtk_clist_column_titles_show(GTK_CLIST(plugins_list)); + gtk_clist_set_column_auto_resize(GTK_CLIST(plugins_list), 0, TRUE); + gtk_clist_set_column_auto_resize(GTK_CLIST(plugins_list), 1, TRUE); +#else + g_assert(cols <= 10); + store = gtk_list_store_new(cols, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); + plugins_list = tree_view_new(GTK_TREE_MODEL(store)); + g_object_unref(G_OBJECT(store)); + + for(i=0; i<cols; i++) { + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(titles[i], renderer, + "text", i, NULL); + gtk_tree_view_column_set_sort_column_id(column, i); + gtk_tree_view_append_column(GTK_TREE_VIEW(plugins_list), column); + } +#endif + + return plugins_list; +} + diff --git a/gtk/ui_util.h b/gtk/ui_util.h index bba3bdc590..b8e1d0cb9c 100644 --- a/gtk/ui_util.h +++ b/gtk/ui_util.h @@ -1,7 +1,7 @@ /* ui_util.h * Definitions for UI utility routines * - * $Id: ui_util.h,v 1.8 2004/05/02 08:54:32 ulfl Exp $ + * $Id: ui_util.h,v 1.9 2004/05/20 18:18:12 ulfl Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -54,6 +54,14 @@ GtkWidget *ctree_new_with_titles(gint columns, gint tree_column, GtkWidget *tree_view_new(GtkTreeModel *model); #endif +/* create a simple list widget */ +extern GtkWidget *simple_list_new(gint cols, gchar **titles); +/* append a row to the simple list */ +/* use it like: simple_list_append(list, 0, "first", 1, "second", -1) */ +extern void simple_list_append(GtkWidget *list, ...); + + + /* Set the styles of all Trees based upon user preferences. */ void set_tree_styles_all(void); |