From 32fa3814ff7f70acddf0d9de2e1184bd10affaec Mon Sep 17 00:00:00 2001 From: Thomas White Date: Thu, 25 Feb 2021 16:39:11 +0100 Subject: GUI: Complain more loudly if geometry can't be loaded --- src/crystfel_gui.c | 15 +++++++++++++++ src/crystfel_gui.h | 2 ++ src/gui_import.c | 13 +++++++++---- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/crystfel_gui.c b/src/crystfel_gui.c index e29548bd..d50d9942 100644 --- a/src/crystfel_gui.c +++ b/src/crystfel_gui.c @@ -96,6 +96,21 @@ static int confirm_exit(struct crystfelproject *proj) } +void error_box(struct crystfelproject *proj, const char *message) +{ + GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(proj->window), + 0, + GTK_MESSAGE_WARNING, + GTK_BUTTONS_NONE, + message); + gtk_dialog_add_buttons(GTK_DIALOG(dialog), + "OK", GTK_RESPONSE_OK, + NULL); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + + /* Main window destroyed */ static gboolean delete_event_sig(GtkWidget *da, GdkEvent *event, struct crystfelproject *proj) diff --git a/src/crystfel_gui.h b/src/crystfel_gui.h index 61d39f60..69dffdda 100644 --- a/src/crystfel_gui.h +++ b/src/crystfel_gui.h @@ -47,6 +47,8 @@ enum gui_job_type GUI_JOB_AMBIGATOR, }; +extern void error_box(struct crystfelproject *proj, const char *message); + extern void add_running_task(struct crystfelproject *proj, const char *task_desc, struct crystfel_backend *backend, diff --git a/src/gui_import.c b/src/gui_import.c index f6e36b85..94d04d24 100644 --- a/src/gui_import.c +++ b/src/gui_import.c @@ -387,19 +387,24 @@ static void finddata_response_sig(GtkWidget *dialog, gint resp, gchar *geom_filename; geom_filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(ctx->geom_file)); - if ( geom_filename == NULL ) return; + if ( geom_filename == NULL ) { + error_box(proj, "Geometry file not found"); + return; + } g_free(proj->geom_filename); proj->geom_filename = geom_filename; data_template_free(proj->dtempl); proj->dtempl = data_template_new_from_file(geom_filename); - if ( proj->dtempl == NULL ) return; + if ( proj->dtempl == NULL ) { + error_box(proj, "Invalid geometry file"); + return; + } } } /* else don't touch the geometry */ if ( (import_mode(ctx) != IMPORT_STREAM) && (proj->dtempl == NULL) ) { - printf("No geometry!\n"); - ERROR("No geom!\n"); + error_box(proj, "You must specify the geometry file."); return; } -- cgit v1.2.3