aboutsummaryrefslogtreecommitdiff
path: root/src/crystfelmergeopts.h
blob: 4346a71ed4a612e42e3e390d21122641935d5d0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
 * crystfelmergeopts.h
 *
 * A GTK widget to set merge options
 *
 * Copyright © 2020 Deutsches Elektronen-Synchrotron DESY,
 *                  a research centre of the Helmholtz Association.
 *
 * Authors:
 *  2020 Thomas White <taw@physics.org>
 *
 * This file is part of CrystFEL.
 *
 * CrystFEL is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * CrystFEL is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with CrystFEL.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#ifndef CRYSTFELMERGEOPTS_H
#define CRYSTFELMERGEOPTS_H

#include <gtk/gtk.h>
#include <glib-object.h>

#define CRYSTFEL_TYPE_MERGE_OPTS (crystfel_merge_opts_get_type())

#define CRYSTFEL_MERGE_OPTS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \
                                 CRYSTFEL_TYPE_MERGE_OPTS, CrystFELMergeOpts))

#define CRYSTFEL_IS_MERGE_OPTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
                                    CRYSTFEL_TYPE_MERGE_OPTS))

#define CRYSTFEL_MERGE_OPTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((obj), \
                                         CRYSTFEL_TYPE_MERGE_OPTS, CrystFELMergeOpts))

#define CRYSTFEL_IS_MERGE_OPTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((obj), \
                                            CRYSTFEL_TYPE_MERGE_OPTS))

#define CRYSTFEL_MERGE_OPTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), \
                                           CRYSTFEL_TYPE_MERGE_OPTS, CrystFELMergeOpts))

struct _crystfelmergeopts
{
	GtkNotebook parent_instance;

	/*< private >*/
	GtkWidget *model_combo;
	GtkWidget *symmetry;
	GtkWidget *scale;
	GtkWidget *bscale;
	GtkWidget *postref;
	GtkWidget *niter;
	GtkWidget *polarisation;
	GtkWidget *deltacchalf;
	GtkWidget *min_measurements;
	GtkWidget *use_max_adu;
	GtkWidget *max_adu;
	GtkWidget *custom_split;
	GtkWidget *custom_split_file;
	GtkWidget *detwin;
	GtkWidget *detwin_sym;
	GtkWidget *min_res;
	GtkWidget *min_res_val;
	GtkWidget *limit_res;  /* check box for push-res < infinity */
	GtkWidget *push_res;   /* entry for push-res value */
};

struct _crystfelmergeoptsclass
{
	GtkNotebookClass parent_class;
};

typedef struct _crystfelmergeopts CrystFELMergeOpts;
typedef struct _crystfelmergeoptsclass CrystFELMergeOptsClass;

extern GType crystfel_merge_opts_get_type(void);
extern GtkWidget *crystfel_merge_opts_new(void);

extern void crystfel_merge_opts_set_model(CrystFELMergeOpts *opts,
                                          const char *model);
extern void crystfel_merge_opts_set_symmetry(CrystFELMergeOpts *opts,
                                             const char *sym);
extern void crystfel_merge_opts_set_scale(CrystFELMergeOpts *opts,
                                          int scale);
extern void crystfel_merge_opts_set_bscale(CrystFELMergeOpts *opts,
                                           int bscale);
extern void crystfel_merge_opts_set_postref(CrystFELMergeOpts *opts,
                                            int postref);
extern void crystfel_merge_opts_set_niter(CrystFELMergeOpts *opts,
                                          int niter);
extern void crystfel_merge_opts_set_polarisation(CrystFELMergeOpts *opts,
                                                 const char *polar);
extern void crystfel_merge_opts_set_deltacchalf(CrystFELMergeOpts *opts,
                                                int deltacchalf);
extern void crystfel_merge_opts_set_min_measurements(CrystFELMergeOpts *opts,
                                                     int min_measurements);
extern void crystfel_merge_opts_set_max_adu(CrystFELMergeOpts *opts,
                                            float max_adu);
extern void crystfel_merge_opts_set_custom_split(CrystFELMergeOpts *opts,
                                                 const char *custom_split_file);
extern void crystfel_merge_opts_set_twin_sym(CrystFELMergeOpts *opts,
                                             const char *twin_sym);
extern void crystfel_merge_opts_set_min_res(CrystFELMergeOpts *opts,
                                            float min_res);
extern void crystfel_merge_opts_set_push_res(CrystFELMergeOpts *opts,
                                             float push_res);

extern float crystfel_merge_opts_get_push_res(CrystFELMergeOpts *opts);
extern const char *crystfel_merge_opts_get_model(CrystFELMergeOpts *opts);
extern const char *crystfel_merge_opts_get_symmetry(CrystFELMergeOpts *opts);
extern int crystfel_merge_opts_get_scale(CrystFELMergeOpts *opts);
extern int crystfel_merge_opts_get_bscale(CrystFELMergeOpts *opts);
extern int crystfel_merge_opts_get_postref(CrystFELMergeOpts *opts);
extern int crystfel_merge_opts_get_niter(CrystFELMergeOpts *opts);
extern const char *crystfel_merge_opts_get_polarisation(CrystFELMergeOpts *opts);
extern int crystfel_merge_opts_get_deltacchalf(CrystFELMergeOpts *opts);
extern int crystfel_merge_opts_get_min_measurements(CrystFELMergeOpts *opts);
extern float crystfel_merge_opts_get_max_adu(CrystFELMergeOpts *opts);
extern const char *crystfel_merge_opts_get_custom_split(CrystFELMergeOpts *opts);
extern const char *crystfel_merge_opts_get_twin_sym(CrystFELMergeOpts *opts);
extern float crystfel_merge_opts_get_min_res(CrystFELMergeOpts *opts);
extern float crystfel_merge_opts_get_push_res(CrystFELMergeOpts *opts);

#endif	/* CRYSTFELMERGEOPTS_H */