From 796a08dc359328939feb9b7052849cab704f720e Mon Sep 17 00:00:00 2001 From: Thomas White Date: Wed, 17 Feb 2021 11:10:04 +0100 Subject: GUI: Generalise job notes page --- src/crystfel_gui.c | 39 +++++++++++++++++++++++++++++++++++++++ src/crystfel_gui.h | 9 +++++++++ src/gui_ambi.c | 41 ++--------------------------------------- 3 files changed, 50 insertions(+), 39 deletions(-) diff --git a/src/crystfel_gui.c b/src/crystfel_gui.c index f32153aa..ad0b58a6 100644 --- a/src/crystfel_gui.c +++ b/src/crystfel_gui.c @@ -45,6 +45,7 @@ #include "crystfelimageview.h" #include "crystfelimageview.h" +#include "crystfel_gui.h" #include "gui_peaksearch.h" #include "gui_index.h" #include "gui_merge.h" @@ -1289,3 +1290,41 @@ char *get_crystfel_exe(const char *program) return exe_path; } + + +struct gui_job_notes_page *add_job_notes_page(GtkWidget *notebook) +{ + GtkWidget *box; + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *scroll; + struct gui_job_notes_page *notes; + + notes = malloc(sizeof(struct gui_job_notes_page)); + if ( notes == NULL ) return NULL; + + box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 8); + gtk_container_set_border_width(GTK_CONTAINER(box), 8); + + label = gtk_label_new("Whatever you enter here will be placed in " + "the job's folder as 'notes.txt'"); + gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(label), + FALSE, FALSE, 0); + + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); + gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(hbox), + TRUE, TRUE, 0); + notes->textview = gtk_text_view_new(); + gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(notes->textview), + GTK_WRAP_WORD_CHAR); + scroll = gtk_scrolled_window_new(NULL, NULL); + gtk_container_add(GTK_CONTAINER(scroll), notes->textview); + gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll), + GTK_SHADOW_ETCHED_IN); + gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(scroll), + TRUE, TRUE, 2.0); + + gtk_notebook_append_page(GTK_NOTEBOOK(notebook), box, + gtk_label_new("Notes")); + return notes; +} diff --git a/src/crystfel_gui.h b/src/crystfel_gui.h index c8492499..7dce84c4 100644 --- a/src/crystfel_gui.h +++ b/src/crystfel_gui.h @@ -31,6 +31,13 @@ #include "gui_project.h" + +struct gui_job_notes_page +{ + GtkWidget *textview; +}; + + extern void add_running_task(struct crystfelproject *proj, const char *task_desc, struct crystfel_backend *backend, @@ -45,4 +52,6 @@ extern char *get_crystfel_path_str(void); extern char *get_crystfel_exe(const char *program); +extern struct gui_job_notes_page *add_job_notes_page(GtkWidget *notebook); + #endif diff --git a/src/gui_ambi.c b/src/gui_ambi.c index 79bbde7e..20cc8055 100644 --- a/src/gui_ambi.c +++ b/src/gui_ambi.c @@ -45,6 +45,7 @@ struct ambi_window { struct crystfelproject *proj; + struct gui_job_notes_page *notes_page; GtkWidget *jobname; GtkWidget *dataset; GtkWidget *limit_res; @@ -222,40 +223,6 @@ static GtkWidget *make_ambigator_options(struct ambi_window *win) } -static GtkWidget *make_job_notes_page() -{ - GtkWidget *box; - GtkWidget *hbox; - GtkWidget *label; - GtkWidget *scroll; - GtkWidget *job_notes_text; - - box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 8); - gtk_container_set_border_width(GTK_CONTAINER(box), 8); - - label = gtk_label_new("Whatever you enter here will be placed in the job's folder as 'notes.txt'"); - gtk_label_set_markup(GTK_LABEL(label), - "Whatever you enter here will be placed in the job's folder as 'notes.txt'"); - gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(label), - FALSE, FALSE, 0); - - hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); - gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(hbox), - TRUE, TRUE, 0); - job_notes_text = gtk_text_view_new(); - gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(job_notes_text), - GTK_WRAP_WORD_CHAR); - scroll = gtk_scrolled_window_new(NULL, NULL); - gtk_container_add(GTK_CONTAINER(scroll), job_notes_text); - gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll), - GTK_SHADOW_ETCHED_IN); - gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(scroll), - TRUE, TRUE, 2.0); - - return box; -} - - static GtkWidget *make_ambi_backend_opts(struct ambi_window *win) { return gtk_vbox_new(FALSE, 0.0); @@ -271,7 +238,6 @@ gint ambi_sig(GtkWidget *widget, struct crystfelproject *proj) GtkWidget *label; GtkWidget *notebook; GtkWidget *backend_page; - GtkWidget *notes_page; struct ambi_window *win; int i; @@ -336,10 +302,7 @@ gint ambi_sig(GtkWidget *widget, struct crystfelproject *proj) backend_page, gtk_label_new("Cluster/batch system")); - notes_page = make_job_notes_page(); - gtk_notebook_append_page(GTK_NOTEBOOK(notebook), - notes_page, - gtk_label_new("Notes")); + win->notes_page = add_job_notes_page(notebook); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CLOSE); -- cgit v1.2.3