1
// =============================================================== //
3
// File : MG_alignment.cxx //
6
// Institute of Microbiology (Technical University Munich) //
7
// http://www.arb-home.de/ //
9
// =============================================================== //
13
#include <awt_sel_boxes.hxx>
14
#include <aw_root.hxx>
15
#include <aw_question.hxx>
16
#include <aw_awar.hxx>
19
#include <arb_strarray.h>
8
#include <aw_device.hxx>
9
#include <aw_window.hxx>
11
#include <awt_sel_boxes.hxx>
14
#define AWAR1 "tmp/merge1/"
15
#define AWAR2 "tmp/merge2/"
16
#define AWAR_ALI1 AWAR1"alignment_name"
17
#define AWAR_ALI2 AWAR2"alignment_name"
19
void MG_alignment_vars_callback(AW_root *aw_root,GBDATA *gbd, long ali_nr)
23
GB_push_transaction(gbd);
24
sprintf(buffer,"tmp/merge%li/alignment_name",ali_nr);
25
char *use = aw_root->awar(buffer)->read_string();
26
GBDATA *ali_cont = GBT_get_alignment(gbd,use);
23
#define AWAR_ALI_NAME(db_nr) awar_name_tmp(db_nr, "alignment_name")
24
#define AWAR_ALI_DEST(db_nr) awar_name_tmp(db_nr, "alignment_dest")
25
#define AWAR_ALI_TYPE(db_nr) awar_name_tmp(db_nr, "alignment_type")
26
#define AWAR_ALI_LEN(db_nr) awar_name_tmp(db_nr, "alignment_len")
27
#define AWAR_ALIGNED(db_nr) awar_name_tmp(db_nr, "aligned")
28
#define AWAR_SECURITY(db_nr) awar_name_tmp(db_nr, "security")
30
#define AWAR_ALI_SRC AWAR_MERGE_TMP_SRC "alignment_name"
31
#define AWAR_ALI_DST AWAR_MERGE_TMP_DST "alignment_name"
33
static void MG_alignment_vars_callback(AW_root *aw_root, int db_nr) {
34
GBDATA *gb_main = get_gb_main(db_nr);
35
GB_transaction ta(gb_main);
37
char *use = aw_root->awar(AWAR_ALI_NAME(db_nr))->read_string();
38
GBDATA *ali_cont = GBT_get_alignment(gb_main, use);
28
sprintf(buffer,"tmp/merge%li/alignment_type",ali_nr);
29
aw_root->awar(buffer)->unmap();
31
sprintf(buffer,"tmp/merge%li/alignment_len",ali_nr);
32
aw_root->awar(buffer)->unmap();
34
sprintf(buffer,"tmp/merge%li/aligned",ali_nr);
35
aw_root->awar(buffer)->unmap();
37
sprintf(buffer,"tmp/merge%li/security",ali_nr);
38
aw_root->awar(buffer)->unmap();
41
GBDATA *ali_len = GB_entry(ali_cont,"alignment_len");
42
GBDATA *ali_aligned = GB_entry(ali_cont,"aligned");
43
GBDATA *ali_type = GB_entry(ali_cont,"alignment_type");
44
GBDATA *ali_security = GB_entry(ali_cont,"alignment_write_security");
46
sprintf(buffer,"tmp/merge%li/alignment_type",ali_nr);
47
aw_root->awar(buffer)->map(ali_type);
49
sprintf(buffer,"tmp/merge%li/alignment_len",ali_nr);
50
aw_root->awar(buffer)->map(ali_len);
52
sprintf(buffer,"tmp/merge%li/aligned",ali_nr);
53
aw_root->awar(buffer)->map(ali_aligned);
55
sprintf(buffer,"tmp/merge%li/security",ali_nr);
56
aw_root->awar(buffer)->map(ali_security);
59
GB_pop_transaction(gbd);
41
aw_root->awar(AWAR_ALI_TYPE(db_nr))->unmap();
42
aw_root->awar(AWAR_ALI_LEN (db_nr))->unmap();
43
aw_root->awar(AWAR_ALIGNED (db_nr))->unmap();
44
aw_root->awar(AWAR_SECURITY(db_nr))->unmap();
47
GBDATA *ali_len = GB_entry(ali_cont, "alignment_len");
48
GBDATA *ali_aligned = GB_entry(ali_cont, "aligned");
49
GBDATA *ali_type = GB_entry(ali_cont, "alignment_type");
50
GBDATA *ali_security = GB_entry(ali_cont, "alignment_write_security");
52
aw_root->awar(AWAR_ALI_TYPE(db_nr))->map(ali_type);
53
aw_root->awar(AWAR_ALI_LEN (db_nr))->map(ali_len);
54
aw_root->awar(AWAR_ALIGNED (db_nr))->map(ali_aligned);
55
aw_root->awar(AWAR_SECURITY(db_nr))->map(ali_security);
64
void MG_create_alignment_awars(AW_root *aw_root,AW_default aw_def)
66
aw_root->awar_string( AWAR_ALI1, "" , aw_def);
67
aw_root->awar_string( AWAR_ALI2, "" , aw_def);
69
aw_root->awar_string( AWAR1"alignment_dest", "" , aw_def);
70
aw_root->awar_string( AWAR2"alignment_dest", "" , aw_def);
71
aw_root->awar_string( AWAR1"alignment_type", "" , aw_def);
72
aw_root->awar_string( AWAR2"alignment_type", "" , aw_def);
73
aw_root->awar_int( AWAR1"alignment_len", 0 , aw_def);
74
aw_root->awar_int( AWAR2"alignment_len", 0 , aw_def);
75
aw_root->awar_int( AWAR1"aligned", 0 , aw_def);
76
aw_root->awar_int( AWAR2"aligned", 0 , aw_def);
77
aw_root->awar_int( AWAR1"security", 0 , aw_def);
78
aw_root->awar_int( AWAR2"security", 0 , aw_def);
82
int MG_check_alignment(AW_window *aww,int fast)
85
// check type and names !!!!
89
aw_openstatus("Checking alignments");
92
GB_begin_transaction(GLOBAL_gb_dest);
93
GB_begin_transaction(GLOBAL_gb_merge);
94
char **names = GBT_get_alignment_names(GLOBAL_gb_merge);
100
for (name = names; *name; name++) {
101
if (! (gb_ali2 = GBT_get_alignment(GLOBAL_gb_dest,*name)) ) {
102
gb_ali1 = GBT_get_alignment(GLOBAL_gb_merge,*name);
103
gb_presets2 = GB_search(GLOBAL_gb_dest,"presets",GB_CREATE_CONTAINER);
104
gb_ali2 = GB_create_container(gb_presets2,"alignment");
105
GB_copy(gb_ali2,gb_ali1);
106
GBT_add_new_changekey( GLOBAL_gb_dest, (char *)GBS_global_string("%s/data",*name),GB_STRING);
108
char *type1 = GBT_get_alignment_type_string(GLOBAL_gb_merge,*name);
109
char *type2 = GBT_get_alignment_type_string(GLOBAL_gb_dest,*name);
110
if (strcmp(type1,type2)) {
111
sprintf(result,"The alignments '%s' have different types (%s != %s)", *name,type1,type2);
117
GBT_free_names(names);
118
GB_commit_transaction(GLOBAL_gb_dest);
119
GB_commit_transaction(GLOBAL_gb_merge);
120
if (strlen(result)) aw_message(result);
124
return strlen(result);
127
void MG_ad_al_delete_cb(AW_window *aww,AW_CL db_nr)
129
if (aw_ask_sure("Are you sure to delete all data belonging to this alignment?")) {
131
sprintf(buffer,"tmp/merge%li/alignment_name",db_nr);
133
GBDATA *gbd = (db_nr == 1) ? GLOBAL_gb_merge : GLOBAL_gb_dest;
134
char *source = aww->get_root()->awar(buffer)->read_string();
62
void MG_create_alignment_awars(AW_root *aw_root, AW_default aw_def) {
63
for (int db_nr = 1; db_nr <= 2; ++db_nr) {
64
aw_root->awar_string(AWAR_ALI_NAME(db_nr), "", aw_def);
65
aw_root->awar_string(AWAR_ALI_DEST(db_nr), "", aw_def);
66
aw_root->awar_string(AWAR_ALI_TYPE(db_nr), "", aw_def);
67
aw_root->awar_int (AWAR_ALI_LEN (db_nr), 0, aw_def);
68
aw_root->awar_int (AWAR_ALIGNED (db_nr), 0, aw_def);
69
aw_root->awar_int (AWAR_SECURITY(db_nr), 0, aw_def);
73
static void copy_and_check_alignments_ignoreResult() { MG_copy_and_check_alignments(); }
74
int MG_copy_and_check_alignments() {
75
// returns 0 if alignments are ok for merging.
76
// otherwise an error message is shown in message box.
77
// checks types and names.
79
GB_ERROR error = NULL;
81
GB_begin_transaction(GLOBAL_gb_dst);
82
GB_begin_transaction(GLOBAL_gb_src);
85
GBT_get_alignment_names(names, GLOBAL_gb_src);
87
GBDATA *gb_dst_presets = NULL;
89
for (int i = 0; names[i] && !error; ++i) {
90
const char *name = names[i];
91
GBDATA *gb_dst_ali = GBT_get_alignment(GLOBAL_gb_dst, name);
94
GB_clear_error(); // ignore "alignment not found"
96
GBDATA *gb_src_ali = GBT_get_alignment(GLOBAL_gb_src, name);
97
mg_assert(gb_src_ali);
99
if (!gb_dst_presets) gb_dst_presets = GBT_get_presets(GLOBAL_gb_dst);
101
gb_dst_ali = GB_create_container(gb_dst_presets, "alignment");
102
GB_copy(gb_dst_ali, gb_src_ali);
103
GBT_add_new_changekey(GLOBAL_gb_dst, (char *)GBS_global_string("%s/data", name), GB_STRING);
106
char *src_type = GBT_get_alignment_type_string(GLOBAL_gb_src, name);
107
char *dst_type = GBT_get_alignment_type_string(GLOBAL_gb_dst, name);
109
if (strcmp(src_type, dst_type) != 0) {
110
error = GBS_global_string("The alignments '%s' have different types (%s != %s)", name, src_type, dst_type);
116
GB_commit_transaction(GLOBAL_gb_dst);
117
GB_commit_transaction(GLOBAL_gb_src);
119
if (error) aw_message(error);
124
static void MG_ad_al_delete_cb(AW_window *aww, int db_nr) {
125
if (aw_ask_sure("merge_delete_ali", "Are you sure to delete all data belonging to this alignment?")) {
126
GBDATA *gb_main = get_gb_main(db_nr);
127
char *source = aww->get_root()->awar(AWAR_ALI_NAME(db_nr))->read_string();
136
GB_transaction ta(gbd);
137
GB_ERROR error = GBT_rename_alignment(gbd,source,0,0,1);
129
GB_transaction ta(gb_main);
130
GB_ERROR error = GBT_rename_alignment(gb_main, source, 0, 0, 1);
140
error = ta.close(error);
132
error = ta.close(error);
133
if (error) aw_message(error);
149
void MG_ed_al_check_len_cb(AW_window *aww,AW_CL db_nr)
153
sprintf(buffer,"tmp/merge%li/alignment_name",db_nr);
155
GBDATA *gbd = (db_nr == 1) ? GLOBAL_gb_merge : GLOBAL_gb_dest;
156
char *use = aww->get_root()->awar(buffer)->read_string();
158
GB_begin_transaction(gbd);
159
if (!error) error = (char *)GBT_check_data(gbd,use);
160
GB_commit_transaction(gbd);
161
if (error) aw_message(error);
140
static void MG_ed_al_check_len_cb(AW_window *aww, int db_nr) {
141
GBDATA *gb_main = get_gb_main(db_nr);
142
char *use = aww->get_root()->awar(AWAR_ALI_NAME(db_nr))->read_string();
144
GB_transaction ta(gb_main);
146
GB_ERROR error = GBT_check_data(gb_main, use);
147
error = ta.close(error);
149
aw_message_if(error);
165
void MG_copy_delete_rename(AW_window * aww, AW_CL db_nr, AW_CL dele)
167
GBDATA *gbd = (db_nr == 1) ? GLOBAL_gb_merge : GLOBAL_gb_dest;
168
char *source = aww->get_root()->awar(GBS_global_string("tmp/merge%li/alignment_name", db_nr))->read_string();
169
char *dest = aww->get_root()->awar(GBS_global_string("tmp/merge%li/alignment_dest", db_nr))->read_string();
170
GB_ERROR error = GB_begin_transaction(gbd);
172
if (!error) error = GBT_rename_alignment(gbd, source, dest, (int)1, (int)dele);
173
if (!error) error = GBT_add_new_changekey(gbd, GBS_global_string("%s/data", dest), GB_STRING);
175
error = GB_end_transaction(gbd, error);
153
static void MG_copy_delete_rename(AW_window * aww, int db_nr, int dele) {
154
GBDATA *gb_main = get_gb_main(db_nr);
156
AW_root *awr = aww->get_root();
157
char *source = awr->awar(AWAR_ALI_NAME(db_nr))->read_string();
158
char *dest = awr->awar(AWAR_ALI_DEST(db_nr))->read_string();
160
GB_ERROR error = GB_begin_transaction(gb_main);
162
if (!error) error = GBT_rename_alignment(gb_main, source, dest, (int)1, (int)dele);
163
if (!error) error = GBT_add_new_changekey(gb_main, GBS_global_string("%s/data", dest), GB_STRING);
165
error = GB_end_transaction(gb_main, error);
176
166
aww->hide_or_notify(error);
183
AW_window *create_alignment_copy_window(AW_root *root,AW_CL db_nr)
185
AW_window_simple *aws = new AW_window_simple;
187
sprintf(header,"ALIGNMENT COPY %li",db_nr);
188
aws->init( root, header, header);
189
aws->load_xfig("ad_al_si.fig");
191
aws->callback( (AW_CB0)AW_POPDOWN);
193
aws->create_button("CLOSE","CLOSE","C");
196
aws->create_autosize_button(0,"Please enter the new name\nof the alignment");
200
sprintf(buffer,"tmp/merge%li/alignment_dest",db_nr);
201
aws->create_input_field(buffer,15);
204
aws->callback(MG_copy_delete_rename,db_nr,0);
205
aws->create_button("GO","GO","G");
207
return (AW_window *)aws;
209
AW_window *MG_create_alignment_rename_window(AW_root *root,AW_CL db_nr)
211
AW_window_simple *aws = new AW_window_simple;
213
sprintf(header,"ALIGNMENT RENAME %li",db_nr);
214
aws->init( root, header,header);
215
aws->load_xfig("ad_al_si.fig");
217
aws->callback( (AW_CB0)AW_POPDOWN);
219
aws->create_button("CLOSE","CLOSE","C");
222
aws->create_autosize_button(0,"Please enter the name\nof the new alignment");
226
sprintf(buffer,"tmp/merge%li/alignment_dest",db_nr);
227
aws->create_input_field(buffer,15);
230
aws->callback(MG_copy_delete_rename,db_nr,1);
231
aws->create_button("GO","GO","G");
233
return (AW_window *)aws;
236
void MG_aa_create_alignment(AW_window *aww,AW_CL db_nr)
238
GBDATA *gbd = (db_nr == 1) ? GLOBAL_gb_merge : GLOBAL_gb_dest;
239
const char *name_field = GBS_global_string("tmp/merge%li/alignment_dest", db_nr);
240
char *name = aww->get_root()->awar(name_field)->read_string();
241
GB_ERROR error = GB_begin_transaction(gbd);
242
GBDATA *gb_alignment = GBT_create_alignment(gbd,name,0,0,0,"dna");
173
static AW_window *create_alignment_copy_window(AW_root *root, int db_nr)
175
AW_window_simple *aws = new AW_window_simple;
177
sprintf(header, "ALIGNMENT COPY %i", db_nr);
178
aws->init(root, header, header);
179
aws->load_xfig("ad_al_si.fig");
181
aws->callback((AW_CB0)AW_POPDOWN);
183
aws->create_button("CLOSE", "CLOSE", "C");
186
aws->create_autosize_button(0, "Please enter the new name\nof the alignment");
189
aws->create_input_field(AWAR_ALI_DEST(db_nr), 15);
192
aws->callback(makeWindowCallback(MG_copy_delete_rename, db_nr, 0));
193
aws->create_button("GO", "GO", "G");
195
return (AW_window *)aws;
197
static AW_window *MG_create_alignment_rename_window(AW_root *root, int db_nr)
199
AW_window_simple *aws = new AW_window_simple;
201
sprintf(header, "ALIGNMENT RENAME %i", db_nr);
202
aws->init(root, header, header);
203
aws->load_xfig("ad_al_si.fig");
205
aws->callback((AW_CB0)AW_POPDOWN);
207
aws->create_button("CLOSE", "CLOSE", "C");
210
aws->create_autosize_button(0, "Please enter the name\nof the new alignment");
213
aws->create_input_field(AWAR_ALI_DEST(db_nr), 15);
216
aws->callback(makeWindowCallback(MG_copy_delete_rename, db_nr, 1));
217
aws->create_button("GO", "GO", "G");
219
return (AW_window *)aws;
222
static void MG_aa_create_alignment(AW_window *aww, int db_nr) {
223
GBDATA *gb_main = get_gb_main(db_nr);
224
char *name = aww->get_root()->awar(AWAR_ALI_DEST(db_nr))->read_string();
225
GB_ERROR error = GB_begin_transaction(gb_main);
226
GBDATA *gb_alignment = GBT_create_alignment(gb_main, name, 0, 0, 0, "dna");
244
228
if (!gb_alignment) error = GB_await_error();
245
GB_end_transaction_show_error(gbd, error, aw_message);
229
GB_end_transaction_show_error(gb_main, error, aw_message);
249
AW_window *MG_create_alignment_create_window(AW_root *root,AW_CL db_nr)
233
static AW_window *MG_create_alignment_create_window(AW_root *root, int db_nr) {
251
234
AW_window_simple *aws = new AW_window_simple;
253
sprintf(header,"ALIGNMENT CREATE %li",db_nr);
254
aws->init( root, header,header);
236
sprintf(header, "ALIGNMENT CREATE %i", db_nr);
237
aws->init(root, header, header);
255
238
aws->load_xfig("ad_al_si.fig");
257
aws->callback( (AW_CB0)AW_POPDOWN);
240
aws->callback((AW_CB0)AW_POPDOWN);
258
241
aws->at("close");
259
aws->create_button("CLOSE","CLOSE","C");
242
aws->create_button("CLOSE", "CLOSE", "C");
261
244
aws->at("label");
262
aws->create_autosize_button(0,"Please enter the new name\nof the alignment");
245
aws->create_autosize_button(0, "Please enter the new name\nof the alignment");
264
247
aws->at("input");
266
sprintf(buffer,"tmp/merge%li/alignment_dest",db_nr);
267
aws->create_input_field(buffer,15);
248
aws->create_input_field(AWAR_ALI_DEST(db_nr), 15);
270
aws->callback(MG_aa_create_alignment,db_nr);
271
aws->create_button("GO","GO","G");
251
aws->callback(makeWindowCallback(MG_aa_create_alignment, db_nr));
252
aws->create_button("GO", "GO", "G");
273
254
return (AW_window *)aws;
278
AW_window *MG_create_alignment_window(AW_root *root,AW_CL db_nr)
281
GBDATA *gbd = (db_nr == 1) ? GLOBAL_gb_merge : GLOBAL_gb_dest;
259
static AW_window *MG_create_alignment_window(AW_root *root, int db_nr) {
260
GBDATA *gb_main = get_gb_main(db_nr);
282
261
AW_window_simple *aws = new AW_window_simple;
285
sprintf(header,"ALIGNMENT CONTROL %li",db_nr);
286
aws->init( root, header, header);
264
sprintf(header, "ALIGNMENT CONTROL %i", db_nr);
265
aws->init(root, header, header);
287
266
aws->load_xfig("merge/ad_align.fig");
289
aws->callback( (AW_CB0)AW_POPDOWN);
268
aws->callback((AW_CB0)AW_POPDOWN);
290
269
aws->at("close");
291
aws->create_button("CLOSE","CLOSE","C");
270
aws->create_button("CLOSE", "CLOSE", "C");
293
aws->callback( AW_POPUP_HELP,(AW_CL)"ad_align.hlp");
272
aws->callback(makeHelpCallback("ad_align.hlp"));
295
aws->create_button("HELP","HELP","H");
274
aws->create_button("HELP", "HELP", "H");
297
276
aws->button_length(13);
300
sprintf(buffer,"tmp/merge%li/alignment_name",db_nr);
301
awt_create_selection_list_on_ad(gbd,(AW_window *)aws,buffer,"*=");
279
awt_create_selection_list_on_alignments(gb_main, aws, AWAR_ALI_NAME(db_nr), "*=");
303
281
aws->at("delete");
304
aws->callback(MG_ad_al_delete_cb,db_nr);
305
aws->create_button("DELETE","DELETE","D");
282
aws->callback(makeWindowCallback(MG_ad_al_delete_cb, db_nr));
283
aws->create_button("DELETE", "DELETE", "D");
307
285
aws->at("rename");
308
aws->callback(AW_POPUP,(AW_CL)MG_create_alignment_rename_window,db_nr);
309
aws->create_button("RENAME","RENAME","R");
286
aws->callback(makeCreateWindowCallback(MG_create_alignment_rename_window, db_nr));
287
aws->create_button("RENAME", "RENAME", "R");
311
289
aws->at("create");
312
aws->callback(AW_POPUP,(AW_CL)MG_create_alignment_create_window,db_nr);
313
aws->create_button("CREATE","CREATE","N");
290
aws->callback(makeCreateWindowCallback(MG_create_alignment_create_window, db_nr));
291
aws->create_button("CREATE", "CREATE", "N");
316
aws->callback(AW_POPUP,(AW_CL)create_alignment_copy_window,db_nr);
317
aws->create_button("COPY","COPY","C");
294
aws->callback(makeCreateWindowCallback(create_alignment_copy_window, db_nr));
295
aws->create_button("COPY", "COPY", "C");
319
297
aws->at("aligned");
320
sprintf(buffer,"tmp/merge%li/aligned",db_nr);
321
aws->create_option_menu(buffer);
322
aws->insert_option("justified","j",1);
323
aws->insert_default_option("not justified","n",0);
298
aws->create_option_menu(AWAR_ALIGNED(db_nr), true);
299
aws->insert_option("justified", "j", 1);
300
aws->insert_default_option("not justified", "n", 0);
324
301
aws->update_option_menu();
329
sprintf(buffer,"tmp/merge%li/alignment_len",db_nr);
330
aws->create_input_field(buffer,8);
304
aws->create_input_field(AWAR_ALI_LEN(db_nr), 8);
333
sprintf(buffer,"tmp/merge%li/alignment_type",db_nr);
334
aws->create_option_menu(buffer);
335
aws->insert_option("dna","d","dna");
336
aws->insert_option("rna","r","rna");
337
aws->insert_option("pro","p","ami");
338
aws->insert_default_option("???","?","usr");
307
aws->create_option_menu(AWAR_ALI_TYPE(db_nr), true);
308
aws->insert_option("dna", "d", "dna");
309
aws->insert_option("rna", "r", "rna");
310
aws->insert_option("pro", "p", "ami");
311
aws->insert_default_option("???", "?", "usr");
339
312
aws->update_option_menu();
341
314
aws->at("security");
342
sprintf(buffer,"tmp/merge%li/security",db_nr);
343
// aws->get_root()->awar(buffer)->add_callback(MG_ed_al_check_len_cb,db_nr);
344
aws->callback(MG_ed_al_check_len_cb,db_nr);
345
aws->create_option_menu(buffer);
346
aws->insert_option("0","0",0);
347
aws->insert_option("1","1",1);
348
aws->insert_option("2","2",2);
349
aws->insert_option("3","3",3);
350
aws->insert_option("4","4",4);
351
aws->insert_option("5","5",5);
352
aws->insert_default_option("6","6",6);
315
aws->callback(makeWindowCallback(MG_ed_al_check_len_cb, db_nr));
316
aws->create_option_menu(AWAR_SECURITY(db_nr), true);
317
aws->insert_option("0", "0", 0);
318
aws->insert_option("1", "1", 1);
319
aws->insert_option("2", "2", 2);
320
aws->insert_option("3", "3", 3);
321
aws->insert_option("4", "4", 4);
322
aws->insert_option("5", "5", 5);
323
aws->insert_default_option("6", "6", 6);
353
324
aws->update_option_menu();
355
return (AW_window *)aws;
359
AW_window *MG_merge_alignment_cb(AW_root *awr){
360
static AW_window_simple *aws = 0;
361
if (aws) return (AW_window *)aws;
363
awr->awar(AWAR_ALI1)->add_callback( (AW_RCB)MG_alignment_vars_callback,(AW_CL)GLOBAL_gb_merge,1);
364
awr->awar(AWAR_ALI2)->add_callback( (AW_RCB)MG_alignment_vars_callback,(AW_CL)GLOBAL_gb_dest,2);
366
aws = new AW_window_simple;
367
aws->init( awr, "MERGE_ALIGNMENTS", "MERGE ALIGNMENTS");
329
AW_window *MG_create_merge_alignment_window(AW_root *awr) {
330
AW_window_simple *aws = new AW_window_simple;
332
awr->awar(AWAR_ALI_SRC)->add_callback(makeRootCallback(MG_alignment_vars_callback, 1));
333
awr->awar(AWAR_ALI_DST)->add_callback(makeRootCallback(MG_alignment_vars_callback, 2));
335
aws->init(awr, "MERGE_ALIGNMENTS", "MERGE ALIGNMENTS");
368
336
aws->load_xfig("merge/alignment.fig");
370
aws->at("close");aws->callback((AW_CB0)AW_POPDOWN);
371
aws->create_button("CLOSE","CLOSE","C");
338
aws->at("close"); aws->callback((AW_CB0)AW_POPDOWN);
339
aws->create_button("CLOSE", "CLOSE", "C");
374
aws->callback(AW_POPUP_HELP,(AW_CL)"mg_alignment.hlp");
375
aws->create_button("HELP","HELP","H");
342
aws->callback(makeHelpCallback("mg_alignment.hlp"));
343
aws->create_button("HELP", "HELP", "H");
377
345
aws->at("check");
378
aws->callback((AW_CB1)MG_check_alignment,0);
379
aws->create_button("CHECK","Check");
346
aws->callback(makeWindowCallback(copy_and_check_alignments_ignoreResult));
347
aws->create_button("CHECK", "Check");
382
awt_create_selection_list_on_ad(GLOBAL_gb_merge,(AW_window *)aws,AWAR_ALI1,"*=");
350
awt_create_selection_list_on_alignments(GLOBAL_gb_src, aws, AWAR_ALI_SRC, "*=");
385
awt_create_selection_list_on_ad(GLOBAL_gb_dest,(AW_window *)aws,AWAR_ALI2,"*=");
353
awt_create_selection_list_on_alignments(GLOBAL_gb_dst, aws, AWAR_ALI_DST, "*=");
387
355
aws->at("modify1");
388
aws->callback(AW_POPUP,(AW_CL)MG_create_alignment_window,1);
389
aws->create_button("MODIFY_DB1","MODIFY");
356
aws->callback(makeCreateWindowCallback(MG_create_alignment_window, 1));
357
aws->create_button("MODIFY_DB1", "MODIFY");
391
359
aws->at("modify2");
392
aws->callback(AW_POPUP,(AW_CL)MG_create_alignment_window,2);
393
aws->create_button("MODIFY_DB2","MODIFY");
360
aws->callback(makeCreateWindowCallback(MG_create_alignment_window, 2));
361
aws->create_button("MODIFY_DB2", "MODIFY");
396
364
aws->button_length(0);
397
365
aws->shadow_width(1);
399
aws->callback(AW_POPUP_HELP,(AW_CL)"mg_alignment.hlp");
400
aws->create_button("HELP_MERGE", "#merge/icon.bitmap");
367
aws->callback(makeHelpCallback("mg_alignment.hlp"));
368
aws->create_button("HELP_MERGE", "#merge/icon.xpm");
402
return (AW_window *)aws;