diff options
Diffstat (limited to 'crystfel-demo.c')
-rw-r--r-- | crystfel-demo.c | 104 |
1 files changed, 93 insertions, 11 deletions
diff --git a/crystfel-demo.c b/crystfel-demo.c index 365dd40..3bde9d8 100644 --- a/crystfel-demo.c +++ b/crystfel-demo.c @@ -36,6 +36,7 @@ struct crystfeldemo { GSubprocess *examine_raw_files; GSubprocess *check_peak_detection; + GSubprocess *check_near_bragg; }; @@ -64,9 +65,9 @@ gint examine_raw_files(GtkWidget *widget, struct crystfeldemo *demo) } demo->examine_raw_files = g_subprocess_new(G_SUBPROCESS_FLAGS_NONE, - &error, - "/home/taw/crystfel-demo/files/random-image", - "/home/taw/crystfel-demo/files/files.lst", + &error, "sh", "-c", + "${CRYSTFEL_DEMO_FILES}/random-image " + "${CRYSTFEL_DEMO_FILES}/files.lst", NULL); if ( demo->examine_raw_files == NULL ) { @@ -101,10 +102,10 @@ gint check_peak_detection(GtkWidget *widget, struct crystfeldemo *demo) } demo->check_peak_detection = g_subprocess_new(G_SUBPROCESS_FLAGS_NONE, - &error, - "/home/taw/crystfel-demo/files/check-peak-detection", - "/home/taw/crystfel-demo/files/peaks.stream", - "--geometry=/home/taw/crystfel-demo/files/5HT2B.geom", + &error, "sh", "-c", + "${CRYSTFEL_DEMO_FILES}/check-peak-detection " + "${CRYSTFEL_DEMO_FILES}/peaks.stream " + "--geometry=${CRYSTFEL_DEMO_FILES}/5HT2B-Liu-2013.geom", NULL); if ( demo->check_peak_detection == NULL ) { @@ -124,10 +125,10 @@ gint examine_geom_files(GtkWidget *widget, struct crystfeldemo *demo) } demo->examine_raw_files = g_subprocess_new(G_SUBPROCESS_FLAGS_NONE, - &error, - "/home/taw/crystfel-demo/files/random-image", - "/home/taw/crystfel-demo/files/files.lst", - "--geometry=/home/taw/crystfel-demo/files/5HT2B.geom", + &error, "sh", "-c", + "${CRYSTFEL_DEMO_FILES}/random-image " + "${CRYSTFEL_DEMO_FILES}/files.lst " + "--geometry=${CRYSTFEL_DEMO_FILES}/5HT2B-Liu-2013.geom", NULL); if ( demo->examine_raw_files == NULL ) { @@ -155,6 +156,78 @@ gint show_stream(GtkWidget *widget, struct crystfeldemo *demo) } +gint cell_explorer_nocell(GtkWidget *widget, struct crystfeldemo *demo) +{ + GError *error = NULL; + GSubprocess *sub; + + sub = g_subprocess_new(G_SUBPROCESS_FLAGS_NONE, + &error, "sh", "-c", + "cell_explorer ${CRYSTFEL_DEMO_FILES}/nocell.stream", + NULL); + + if ( sub == NULL ) { + printf("Failed to start demo process\n"); + } + return 0; +} + + +gint cell_explorer_cell(GtkWidget *widget, struct crystfeldemo *demo) +{ + GError *error = NULL; + GSubprocess *sub; + + sub = g_subprocess_new(G_SUBPROCESS_FLAGS_NONE, + &error, "sh", "-c", + "cell_explorer ${CRYSTFEL_DEMO_FILES}/final.stream", + NULL); + + if ( sub == NULL ) { + printf("Failed to start demo process\n"); + } + return 0; +} + + +gint stop_near_bragg(GtkWidget *widget, struct crystfeldemo *demo) +{ + if ( demo->check_near_bragg == NULL ) { + printf("Not running!\n"); + return 0; + } + + g_subprocess_send_signal(demo->check_near_bragg, SIGTERM); + g_subprocess_wait(demo->check_near_bragg, NULL, NULL); + demo->check_near_bragg = NULL; + + return 0; +} + + +gint check_near_bragg(GtkWidget *widget, struct crystfeldemo *demo) +{ + GError *error = NULL; + + if ( demo->check_near_bragg != NULL ) { + printf("Already running!\n"); + return 0; + } + + demo->check_near_bragg = g_subprocess_new(G_SUBPROCESS_FLAGS_NONE, + &error, "sh", "-c", + "${CRYSTFEL_DEMO_FILES}/check-near-bragg " + "${CRYSTFEL_DEMO_FILES}/final.stream " + "--geometry=${CRYSTFEL_DEMO_FILES}/5HT2B-Liu-2013.geom", + NULL); + + if ( demo->check_near_bragg == NULL ) { + printf("Failed to start demo process\n"); + } + return 0; +} + + static int change_to_tempdir() { char tmpdir[64]; @@ -219,6 +292,15 @@ int main(int argc, char *argv[]) gtk_builder_add_callback_symbol(builder, "show_stream", G_CALLBACK(show_stream)); + gtk_builder_add_callback_symbol(builder, "cell_explorer_nocell", + G_CALLBACK(cell_explorer_nocell)); + + gtk_builder_add_callback_symbol(builder, "cell_explorer_cell", + G_CALLBACK(cell_explorer_cell)); + gtk_builder_add_callback_symbol(builder, "check_near_bragg", + G_CALLBACK(check_near_bragg)); + gtk_builder_add_callback_symbol(builder, "stop_near_bragg", + G_CALLBACK(stop_near_bragg)); gtk_builder_connect_signals(builder, &demo); gtk_widget_show_all(window); |