aboutsummaryrefslogtreecommitdiff
path: root/src/refine.c
diff options
context:
space:
mode:
authortaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-11-27 12:06:42 +0000
committertaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-11-27 12:06:42 +0000
commit328958a4608b337ee912abb5ab141b2caebfd870 (patch)
tree2987d749134a24669e5be2e9e8276b01703afbb6 /src/refine.c
parent75dba987380b56cba95624b79b85b7de37210531 (diff)
Tidying up
git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@213 bf6ca9ba-c028-0410-8290-897cf20841d1
Diffstat (limited to 'src/refine.c')
-rw-r--r--src/refine.c142
1 files changed, 35 insertions, 107 deletions
diff --git a/src/refine.c b/src/refine.c
index 6b4fa9c..ec74b8d 100644
--- a/src/refine.c
+++ b/src/refine.c
@@ -228,97 +228,6 @@ static ImageFeature *refine_fit_image(Basis *cell, ImageRecord *image, Reflectio
}
-static gint refine_step(GtkWidget *step_button, ControlContext *ctx) {
-
- if ( (ctx->reproject_id) && (ctx->cell_lattice) ) {
-
- ImageFeature *fitted;
-
- fitted = refine_fit_image(ctx->cell, &ctx->images->images[ctx->reproject_cur_image], ctx->cell_lattice);
-
- ctx->images->images[ctx->reproject_cur_image].rflist = NULL;
- reproject_lattice_changed(ctx);
- displaywindow_update(ctx->dw);
-
- if ( fitted ) {
- imagedisplay_add_mark(ctx->reproject_id, fitted->x,fitted->y, IMAGEDISPLAY_MARK_CIRCLE_3);
- }
-
- } else {
- displaywindow_error("Please first open the reprojection window and select the image to fit", ctx->dw);
- }
-
- return 0;
-
-}
-
-static int refine_sequence_random(ControlContext *ctx, double *fit, double *warp) {
-
- int i;
-
- for ( i=0; i<1000; i++ ) {
-
- int ni;
- int nf;
- ImageRecord *image;
- ImageFeature *feature;
- Basis *cell;
- Basis cd;
- RefinementIndex shared;
-
- /* Ensure lattice is up to date */
- reproject_lattice_changed(ctx);
-
- cell = ctx->cell;
-
- /* Select a random feature from a random image */
- ni = ((float)ctx->images->n_images * random()) / RAND_MAX;
- image = &ctx->images->images[ni];
- nf = ((float)image->features->n_features * random()) / RAND_MAX;
- feature = &image->features->features[nf];
-
- image->rflist = reproject_get_reflections(image, ctx->cell_lattice);
-
- if ( !feature->partner ) continue;
-
- cd = refine_cell_delta(cell, feature, &shared);
-
- cell->a.x += cd.a.x; cell->a.y += cd.a.y; cell->a.z += cd.a.z;
- cell->b.x += cd.b.x; cell->b.y += cd.b.y; cell->b.z += cd.b.z;
- cell->c.x += cd.c.x; cell->c.y += cd.c.y; cell->c.z += cd.c.z;
-
- }
-
- *fit = 0.0;
- *warp = 0.0;
-
- return 0;
-
-}
-
-static gint refine_random_sequence(GtkWidget *widget, ControlContext *ctx) {
-
- ImageDisplay *id;
- double fit, warp;
-
- if ( !ctx->cell ) {
- displaywindow_error("No reciprocal unit cell has been found.", ctx->dw);
- return 0;
- }
-
- /* Temporarily disable ImageDisplay stuff */
- id = ctx->reproject_id;
- ctx->reproject_id = NULL;
-
- refine_sequence_random(ctx, &fit, &warp);
-
- ctx->reproject_id = id;
- reproject_lattice_changed(ctx);
-
- return 0;
-
-}
-
static int refine_sequence_sweep(ControlContext *ctx, double *fit, double *warp) {
int i;
@@ -376,7 +285,7 @@ static int refine_sequence_sweep(ControlContext *ctx, double *fit, double *warp)
}
-static gint refine_sequence(GtkWidget *widget, ControlContext *ctx) {
+static gint refine_dialog_sequence(GtkWidget *widget, ControlContext *ctx) {
double omega_offs;
GtkWidget *window_fit;
@@ -450,7 +359,31 @@ static gint refine_sequence(GtkWidget *widget, ControlContext *ctx) {
}
-static gint refine_response(GtkWidget *refine_window, gint response, ControlContext *ctx) {
+static gint refine_dialog_fit_image(GtkWidget *step_button, ControlContext *ctx) {
+
+ if ( (ctx->reproject_id) && (ctx->cell_lattice) ) {
+
+ ImageFeature *fitted;
+
+ fitted = refine_fit_image(ctx->cell, &ctx->images->images[ctx->reproject_cur_image], ctx->cell_lattice);
+
+ ctx->images->images[ctx->reproject_cur_image].rflist = NULL;
+ reproject_lattice_changed(ctx);
+ displaywindow_update(ctx->dw);
+
+ if ( fitted ) {
+ imagedisplay_add_mark(ctx->reproject_id, fitted->x,fitted->y, IMAGEDISPLAY_MARK_CIRCLE_3);
+ }
+
+ } else {
+ displaywindow_error("Please first open the reprojection window and select the image to fit", ctx->dw);
+ }
+
+ return 0;
+
+}
+
+static gint refine_dialog_response(GtkWidget *refine_window, gint response, ControlContext *ctx) {
ctx->refine_window = NULL;
gtk_widget_destroy(refine_window);
@@ -467,23 +400,22 @@ void refine_open(ControlContext *ctx) {
GtkWidget *label;
GtkWidget *step_button;
GtkWidget *sequence_button;
- GtkWidget *sequence_random_button;
if ( ctx->refine_window ) return;
ctx->refine_window = gtk_dialog_new_with_buttons("Refine Reconstruction", GTK_WINDOW(ctx->dw->window),
GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
- gtk_window_set_default_size(GTK_WINDOW(ctx->refine_window), 256, -1);
+ gtk_window_set_default_size(GTK_WINDOW(ctx->refine_window), 280, -1);
vbox = gtk_vbox_new(FALSE, 0);
hbox = gtk_hbox_new(TRUE, 0);
- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(ctx->refine_window)->vbox), GTK_WIDGET(hbox), FALSE, FALSE, 7);
- gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), FALSE, FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(ctx->refine_window)->vbox), GTK_WIDGET(hbox), FALSE, TRUE, 7);
+ gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), FALSE, TRUE, 5);
table = gtk_table_new(5, 1, FALSE);
gtk_table_set_row_spacings(GTK_TABLE(table), 5);
gtk_table_set_col_spacings(GTK_TABLE(table), 5);
- gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(table), FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(table), FALSE, TRUE, 0);
label = gtk_label_new("Steps");
gtk_label_set_markup(GTK_LABEL(label), "<span weight=\"bold\">Steps</span>");
@@ -491,22 +423,18 @@ void refine_open(ControlContext *ctx) {
gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 1, 2);
step_button = gtk_button_new_with_label("Refine Lattice to Fit Current Pattern");
gtk_table_attach_defaults(GTK_TABLE(table), step_button, 1, 2, 2, 3);
- g_signal_connect(G_OBJECT(step_button), "clicked", G_CALLBACK(refine_step), ctx);
+ g_signal_connect(G_OBJECT(step_button), "clicked", G_CALLBACK(refine_dialog_fit_image), ctx);
label = gtk_label_new("Sequencing");
gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
gtk_label_set_markup(GTK_LABEL(label), "<span weight=\"bold\">Sequencing</span>");
gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 4, 5);
-
- sequence_button = gtk_button_new_with_label("Run Sweeping Sequencer");
+
+ sequence_button = gtk_button_new_with_label("Run Sequencer");
gtk_table_attach_defaults(GTK_TABLE(table), sequence_button, 1, 2, 5, 6);
- g_signal_connect(G_OBJECT(sequence_button), "clicked", G_CALLBACK(refine_sequence), ctx);
-
- sequence_random_button = gtk_button_new_with_label("Run Random Sequencer");
- gtk_table_attach_defaults(GTK_TABLE(table), sequence_random_button, 1, 2, 6, 7);
- g_signal_connect(G_OBJECT(sequence_random_button), "clicked", G_CALLBACK(refine_random_sequence), ctx);
+ g_signal_connect(G_OBJECT(sequence_button), "clicked", G_CALLBACK(refine_dialog_sequence), ctx);
- g_signal_connect(G_OBJECT(ctx->refine_window), "response", G_CALLBACK(refine_response), ctx);
+ g_signal_connect(G_OBJECT(ctx->refine_window), "response", G_CALLBACK(refine_dialog_response), ctx);
gtk_widget_show_all(ctx->refine_window);