source: tags/cvs_2_svn/MERGE/MG_extendeds.cxx

Last change on this file was 5168, checked in by westram, 17 years ago
  • gb_merge → GLOBAL_gb_merge, gb_dest → GLOBAL_gb_dest
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.7 KB
Line 
1#include <stdio.h>
2#include <stdlib.h>
3#include <arbdb.h>
4#include <arbdbt.h>
5#include <aw_root.hxx>
6#include <aw_device.hxx>
7#include <aw_window.hxx>
8#include <awt.hxx>
9#include <awt_sel_boxes.hxx>
10#include <aw_awars.hxx>
11#include <db_scanner.hxx>
12#include "merge.hxx"
13
14#define AWAR_EX_NAME1 "tmp/merge1/extended_name"
15#define AWAR_EX_DEST1 "tmp/merge1/extended_dest"
16#define AWAR_EX_NAME2 "tmp/merge2/extended_name"
17#define AWAR_EX_DEST2 "tmp/merge2/extended_dest"
18
19void MG_create_extendeds_awars(AW_root *aw_root, AW_default aw_def)
20{
21    aw_root->awar_string( AWAR_EX_NAME1, "" ,   aw_def);
22    aw_root->awar_string( AWAR_EX_DEST1, "" ,   aw_def);
23    aw_root->awar_string( AWAR_EX_NAME2, "" ,   aw_def);
24    aw_root->awar_string( AWAR_EX_DEST2, "" ,   aw_def);
25}
26
27void MG_extended_rename_cb(AW_window *aww,GBDATA *gbmain, int ex_nr){
28    GB_ERROR error = 0;
29    char tsource[256];
30    char tdest[256];
31    sprintf(tsource,"tmp/merge%i/extended_name",ex_nr);
32    sprintf(tdest,"tmp/merge%i/extended_dest",ex_nr);
33
34    char *source = aww->get_root()->awar(tsource)->read_string();
35    char *dest = aww->get_root()->awar(tdest)->read_string();
36    GB_begin_transaction(gbmain);
37    GBDATA *gb_extended_data =GB_search(gbmain,"extended_data",GB_CREATE_CONTAINER);
38    GBDATA *gb_extended =GBT_find_SAI_rel_exdata(gb_extended_data,source);
39    GBDATA *gb_dest_sai =GBT_find_SAI_rel_exdata(gb_extended_data,dest);
40    if (gb_dest_sai) {
41        error = "Sorry: SAI already exists";
42    }else   if (gb_extended) {
43        GBDATA *gb_name =
44            GB_search(gb_extended,"name",GB_STRING);
45        error = GB_write_string(gb_name,dest);
46    }else{
47        error = "Please select a SAI first";
48    }
49    if (!error) GB_commit_transaction(gbmain);
50    else    GB_abort_transaction(gbmain);
51    if (error) aw_message(error);
52    else aww->hide();
53    delete source;
54    delete dest;
55}
56
57
58AW_window *MG_create_extended_rename_window1(AW_root *root)
59{
60    AW_window_simple *aws = new AW_window_simple;
61    aws->init( root, "MERGE_RENAME_SAI_1", "SAI RENAME 1");
62    aws->load_xfig("ad_al_si.fig");
63
64    aws->callback( (AW_CB0)AW_POPDOWN);
65    aws->at("close");
66    aws->create_button("CLOSE","CLOSE","C");
67
68    aws->at("label");
69    aws->create_autosize_button(0,"Please enter the new name\nof the SAI");
70
71    aws->at("input");
72    aws->create_input_field(AWAR_EX_DEST1,15);
73
74    aws->at("ok");
75    aws->callback((AW_CB)MG_extended_rename_cb,(AW_CL)GLOBAL_gb_merge,1);
76    aws->create_button("GO","GO","G");
77
78    return (AW_window *)aws;
79}
80
81AW_window *MG_create_extended_rename_window2(AW_root *root)
82{
83    AW_window_simple *aws = new AW_window_simple;
84    aws->init( root, "MERGE_RENAME_SAI_2", "SAI RENAME 2");
85    aws->load_xfig("ad_al_si.fig");
86
87    aws->callback( (AW_CB0)AW_POPDOWN);
88    aws->at("close");
89    aws->create_button("CLOSE","CLOSE","C");
90
91    aws->at("label");
92    aws->create_autosize_button(0,"Please enter the new name\nof the SAI");
93
94    aws->at("input");
95    aws->create_input_field(AWAR_EX_DEST2,15);
96
97    aws->at("ok");
98    aws->callback((AW_CB)MG_extended_rename_cb,(AW_CL)GLOBAL_gb_dest,2);
99    aws->create_button("GO","GO","G");
100
101    return (AW_window *)aws;
102}
103
104void MG_extended_delete_cb(AW_window *aww, GBDATA *gbmain, int ex_nr){
105    GB_ERROR error = 0;
106    char tsource[256];
107    sprintf(tsource,"tmp/merge%i/extended_name",ex_nr);
108    char *source = aww->get_root()->awar(tsource)->read_string();
109    GB_begin_transaction(gbmain);
110    GBDATA *gb_extended = GBT_find_SAI(gbmain,source);
111
112    if (gb_extended) {
113        error = GB_delete(gb_extended);
114    }else{
115        error = "Please select a SAI first";
116    }
117
118    if (!error) GB_commit_transaction(gbmain);
119    else    GB_abort_transaction(gbmain);
120
121    if (error) aw_message(error);
122    delete source;
123}
124
125void MG_transfer_extended(AW_window *aww, AW_CL force){
126    AW_root *awr = aww->get_root();
127    char *source = awr->awar(AWAR_EX_NAME1)->read_string();
128    char *dest = awr->awar(AWAR_EX_NAME1)->read_string();
129    GB_ERROR error = 0;
130    GB_begin_transaction(GLOBAL_gb_dest);
131    GB_begin_transaction(GLOBAL_gb_merge);
132
133    GBDATA *gb_source = GBT_find_SAI(GLOBAL_gb_merge,dest);
134    GBDATA *gb_extended_data2 = GB_search(GLOBAL_gb_dest,"extended_data",GB_CREATE_CONTAINER);
135    GBDATA *gb_dest_sai = GBT_find_SAI_rel_exdata(gb_extended_data2,dest);
136
137    if (!gb_source) error = "Please select an SAI you want to transfer !!!";
138    else if(gb_dest_sai) {
139        if (force) {
140            error = GB_delete(gb_dest_sai);
141        }else{
142            error = "Sorry, You cannot destroy an old SAI, delete it first";
143        }
144    }
145    if (!error) {
146        gb_dest_sai = GB_create_container(gb_extended_data2,"extended");
147        error = GB_copy(gb_dest_sai,gb_source);
148    }
149
150    if (!error) {
151        GB_commit_transaction(GLOBAL_gb_dest);
152        GB_commit_transaction(GLOBAL_gb_merge);
153    }else{
154        GB_abort_transaction(GLOBAL_gb_dest);
155        GB_abort_transaction(GLOBAL_gb_merge);
156    }
157    if (error) aw_message(error);
158    delete source;
159    delete dest;
160}
161
162void MG_map_extended1(AW_root *aw_root, AW_CL scannerid)
163{
164    char *source = aw_root->awar(AWAR_EX_NAME1)->read_string();
165    GB_push_transaction(GLOBAL_gb_merge);
166    GBDATA *gb_extended = GBT_find_SAI(GLOBAL_gb_merge,source);
167    awt_map_arbdb_scanner(scannerid,gb_extended,0, CHANGE_KEY_PATH);
168    GB_pop_transaction(GLOBAL_gb_merge);
169    delete source;
170}
171void MG_map_extended2(AW_root *aw_root, AW_CL scannerid)
172{
173    char *source = aw_root->awar(AWAR_EX_NAME2)->read_string();
174    GB_push_transaction(GLOBAL_gb_dest);
175    GBDATA *gb_extended = GBT_find_SAI(GLOBAL_gb_dest,source);
176    awt_map_arbdb_scanner(scannerid,gb_extended,0, CHANGE_KEY_PATH);
177    GB_pop_transaction(GLOBAL_gb_dest);
178    delete source;
179}
180
181
182AW_window *MG_merge_extendeds_cb(AW_root *awr){
183    static AW_window_simple *aws = 0;
184    if (aws) return (AW_window *)aws;
185
186    aws = new AW_window_simple;
187    aws->init( awr, "MERGE_SAI", "MERGE SAI");
188    aws->load_xfig("merge/extended.fig");
189
190    aws->at("close");aws->callback((AW_CB0)AW_POPDOWN);
191    aws->create_button("CLOSE","CLOSE","C");
192
193    aws->at("help");
194    aws->callback(AW_POPUP_HELP,(AW_CL)"mg_extendeds.hlp");
195    aws->create_button("HELP","HELP","H");
196
197    aws->at("ex1");
198    awt_create_selection_list_on_extendeds(GLOBAL_gb_merge,(AW_window *)aws,AWAR_EX_NAME1);
199    AW_CL scannerid = awt_create_arbdb_scanner(GLOBAL_gb_merge, aws, "info1",0,0,0,AWT_SCANNER,0,0,0, &AWT_species_selector);
200    aws->get_root()->awar(AWAR_EX_NAME1)->add_callback(MG_map_extended1,scannerid);
201
202    aws->at("ex2");
203    awt_create_selection_list_on_extendeds(GLOBAL_gb_dest,(AW_window *)aws,AWAR_EX_NAME2);
204    scannerid = awt_create_arbdb_scanner(GLOBAL_gb_dest, aws, "info2",0,0,0,AWT_SCANNER,0,0,0, &AWT_species_selector);
205    aws->get_root()->awar(AWAR_EX_NAME2)->add_callback(MG_map_extended2,scannerid);
206
207    aws->button_length(20);
208
209    aws->at("delete1");
210    aws->callback((AW_CB)MG_extended_delete_cb,(AW_CL)GLOBAL_gb_merge,1);
211    aws->create_button("DELETE_SAI_DB1", "Delete SAI");
212
213    aws->at("delete2");
214    aws->callback((AW_CB)MG_extended_delete_cb,(AW_CL)GLOBAL_gb_dest,2);
215    aws->create_button("DELETE_SAI_DB2", "Delete SAI");
216
217    aws->at("rename1");
218    aws->callback((AW_CB1)AW_POPUP,(AW_CL)MG_create_extended_rename_window1);
219    aws->create_button("RENAME_SAI_DB1", "Rename SAI");
220
221    aws->at("rename2");
222    aws->callback((AW_CB1)AW_POPUP,(AW_CL)MG_create_extended_rename_window2);
223    aws->create_button("RENAME_SAI_DB2", "Rename SAI");
224
225    aws->at("transfer");
226    aws->callback(MG_transfer_extended,0);
227    aws->create_button("TRANSFER_SAI", "Transfer SAI");
228
229    aws->button_length(0);
230    aws->shadow_width(1);
231    aws->at("icon");
232    aws->callback(AW_POPUP_HELP,(AW_CL)"mg_extendeds.hlp");
233    aws->create_button("HELP_MERGE", "#merge/icon.bitmap");
234
235    return (AW_window *)aws;
236}
Note: See TracBrowser for help on using the repository browser.