aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2013-02-25 23:38:01 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-02-25 13:56:22 -0800
commitaa5f1f0ce24307d6f1a8f0cf125766cb5ae00b68 (patch)
tree4a31d8fa35f1fdf8f095a9b6c518e2922b5dcfc9
parent31b2a6ffa839ad107706516e166f13b0b88bae08 (diff)
downloadsubsurface-aa5f1f0ce24307d6f1a8f0cf125766cb5ae00b68.tar.gz
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 <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--dive.h2
-rw-r--r--gtk-gui.c12
-rw-r--r--profile.c3
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)