From aa5f1f0ce24307d6f1a8f0cf125766cb5ae00b68 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Mon, 25 Feb 2013 23:38:01 +0200 Subject: Show a "No Events" label when there are no events in the filter dialog Uses profile.c:evn_foreach() to retrieve the number of events, which if zero, no table is added in the dialog and the label is added instead. Signed-off-by: Lubomir I. Ivanov Signed-off-by: Dirk Hohndel --- dive.h | 2 +- gtk-gui.c | 12 ++++++++---- profile.c | 3 ++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/dive.h b/dive.h index 727f03033..201363153 100644 --- a/dive.h +++ b/dive.h @@ -581,7 +581,7 @@ extern void add_people(const char *string); extern void add_location(const char *string); extern void add_suit(const char *string); extern void remember_event(const char *eventname); -extern void evn_foreach(void (*callback)(const char *, int *, void *), void *data); +extern int evn_foreach(void (*callback)(const char *, int *, void *), void *data); extern void clear_events(void); extern int add_new_dive(struct dive *dive); diff --git a/gtk-gui.c b/gtk-gui.c index 0ee0e3e23..bb30dcddb 100644 --- a/gtk-gui.c +++ b/gtk-gui.c @@ -952,7 +952,7 @@ static void create_toggle(const char* label, int *on, void *_data) static void selectevents_dialog(GtkWidget *w, gpointer data) { int result; - GtkWidget *dialog, *frame, *vbox, *table; + GtkWidget *dialog, *frame, *vbox, *table, *label; dialog = gtk_dialog_new_with_buttons(_("Select Events"), GTK_WINDOW(main_window), @@ -968,9 +968,13 @@ static void selectevents_dialog(GtkWidget *w, gpointer data) gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 5); table = gtk_table_new(1, 4, TRUE); - gtk_container_add(GTK_CONTAINER(frame), table); - - evn_foreach(&create_toggle, table); + if (!evn_foreach(&create_toggle, table)) { + g_object_ref_sink(G_OBJECT(table)); + label = gtk_label_new(_("\nNo Events\n")); + gtk_container_add(GTK_CONTAINER(frame), label); + } else { + gtk_container_add(GTK_CONTAINER(frame), table); + } gtk_widget_show_all(dialog); result = gtk_dialog_run(GTK_DIALOG(dialog)); diff --git a/profile.c b/profile.c index 62b465dfb..8b5feae23 100644 --- a/profile.c +++ b/profile.c @@ -303,7 +303,7 @@ static struct ev_select *ev_namelist; static int evn_allocated; static int evn_used; -void evn_foreach(void (*callback)(const char *, int *, void *), void *data) +int evn_foreach(void (*callback)(const char *, int *, void *), void *data) { int i; @@ -311,6 +311,7 @@ void evn_foreach(void (*callback)(const char *, int *, void *), void *data) /* here we display an event name on screen - so translate */ callback(_(ev_namelist[i].ev_name), &ev_namelist[i].plot_ev, data); } + return i; } void clear_events(void) -- cgit v1.2.3-70-g09d2