source: tags/initial/NTREE/ad_ext.cxx

Last change on this file was 2, checked in by oldcode, 23 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.6 KB
Line 
1#include <stdio.h>
2#include <memory.h>
3#include <malloc.h>
4#include <string.h>
5
6#include <arbdb.h>
7#include <arbdbt.h>
8#include <aw_root.hxx>
9#include <aw_device.hxx>
10#include <aw_window.hxx>
11#include <awt.hxx>
12
13#define AWAR_EX_NAME "tmp/focus/extended_name"
14#define AWAR_EX_DEST "tmp/focus/extended_dest"
15
16extern GBDATA *gb_main;
17
18void create_extendeds_var(AW_root *aw_root, AW_default aw_def)
19        {
20        aw_root->awar_string( AWAR_EX_NAME, "" ,        aw_def);
21        aw_root->awar_string( AWAR_EX_DEST, "" ,        aw_def);
22}
23
24void extended_rename_cb(AW_window *aww){
25        GB_ERROR error = 0;
26        char *source = aww->get_root()->awar(AWAR_EX_NAME)->read_string();
27        char *dest = aww->get_root()->awar(AWAR_EX_DEST)->read_string();
28        GB_begin_transaction(gb_main);
29        GBDATA *gb_extended_data =      GB_search(gb_main,"extended_data",GB_CREATE_CONTAINER);
30        GBDATA *gb_extended =           GBT_find_SAI_rel_exdata(gb_extended_data,source);
31        GBDATA *gb_dest =               GBT_find_SAI_rel_exdata(gb_extended_data,dest);
32        if (gb_dest) {
33                error = "Sorry: SAI already exists";
34        }else   if (gb_extended) {
35                GBDATA *gb_name =
36                        GB_search(gb_extended,"name",GB_STRING);
37                error = GB_write_string(gb_name,dest);
38        }else{
39                error = "Please select a SAI first";
40        }
41        if (!error) GB_commit_transaction(gb_main);
42        else    GB_abort_transaction(gb_main);
43        if (error) aw_message(error);
44        delete source;
45        delete dest;
46}
47
48void extended_copy_cb(AW_window *aww){
49        GB_ERROR error = 0;
50        char *source = aww->get_root()->awar(AWAR_EX_NAME)->read_string();
51        char *dest = aww->get_root()->awar(AWAR_EX_DEST)->read_string();
52        GB_begin_transaction(gb_main);
53        GBDATA *gb_extended_data =      GB_search(gb_main,"extended_data",GB_CREATE_CONTAINER);
54        GBDATA *gb_extended =           GBT_find_SAI_rel_exdata(gb_extended_data,source);
55        GBDATA *gb_dest =               GBT_find_SAI_rel_exdata(gb_extended_data,dest);
56        if (gb_dest) {
57                error = "Sorry: SAI already exists";
58        }else   if (gb_extended) {
59                gb_dest = GB_create_container(gb_extended_data,"extended");
60                error = GB_copy(gb_dest,gb_extended);
61                if (!error) {
62                        GBDATA *gb_name =
63                        GB_search(gb_dest,"name",GB_STRING);
64                        error = GB_write_string(gb_name,dest);
65                }
66
67        }else{
68                error = "Please select a SAI first";
69        }
70        if (!error) GB_commit_transaction(gb_main);
71        else    GB_abort_transaction(gb_main);
72        if (error) aw_message(error);
73        delete source;
74        delete dest;
75}
76void move_to_sepcies(AW_window *aww) 
77        {
78        GB_ERROR error = 0;
79        char *source = aww->get_root()->awar(AWAR_EX_NAME)->read_string();
80        GB_begin_transaction(gb_main);
81
82        GBDATA *gb_species_data =       GB_search(gb_main,"species_data",GB_CREATE_CONTAINER);
83        GBDATA *gb_dest =               GBT_find_species_rel_species_data(gb_species_data,source);
84        GBDATA *gb_extended =           GBT_find_SAI(gb_main,source);
85        if (gb_dest) {
86                error = "Sorry: species already exists";
87        }else   if (gb_extended) {
88                gb_dest = GB_create_container(gb_species_data,"species");
89                error = GB_copy(gb_dest,gb_extended);
90        }else{
91                error = "Please select a SAI first";
92        }
93
94        if (!error) GB_commit_transaction(gb_main);
95        else    GB_abort_transaction(gb_main);
96        if (error) aw_message(error);
97        delete source;
98}
99
100AW_window *create_extended_rename_window(AW_root *root)
101        {
102        AW_window_simple *aws = new AW_window_simple;
103        aws->init( root, "RENAME_SAI", "SAI RENAME", 100, 100 );
104        aws->load_xfig("ad_al_si.fig");
105
106        aws->callback( (AW_CB0)AW_POPDOWN);
107        aws->at("close");
108        aws->create_button("CLOSE","CLOSE","C");                           
109
110        aws->at("label");
111        aws->create_button(0,"Please enter the new name\nof the SAI");
112
113        aws->at("input");
114        aws->create_input_field(AWAR_EX_DEST,15);
115
116        aws->at("ok");
117        aws->callback(extended_rename_cb);
118        aws->create_button("GO","GO","G");                         
119
120        return (AW_window *)aws;
121}
122
123AW_window *create_extended_copy_window(AW_root *root)
124        {
125        AW_window_simple *aws = new AW_window_simple;
126        aws->init( root, "COPY_SAI", "SAI COPY", 100, 100 );
127        aws->load_xfig("ad_al_si.fig");
128
129        aws->callback( (AW_CB0)AW_POPDOWN);
130        aws->at("close");
131        aws->create_button("CLOSE","CLOSE","C");                           
132
133        aws->at("label");
134        aws->create_button(0,"Please enter the name\nof the new SAI");
135
136        aws->at("input");
137        aws->create_input_field(AWAR_EX_DEST,15);
138
139        aws->at("ok");
140        aws->callback(extended_copy_cb);
141        aws->create_button("GO","GO","G");                         
142
143        return (AW_window *)aws;
144}
145
146void ad_extended_delete_cb(AW_window *aww){
147        GB_ERROR error = 0;
148        char *source = aww->get_root()->awar(AWAR_EX_NAME)->read_string();
149        GB_begin_transaction(gb_main);
150        GBDATA *gb_extended =           GBT_find_SAI(gb_main,source);
151        if (gb_extended) {
152                        error = GB_delete(gb_extended);
153        }else{
154                        error = "Please select a SAI first";
155        }
156
157        if (!error) GB_commit_transaction(gb_main);
158        else    GB_abort_transaction(gb_main);
159
160        if (error) aw_message(error);
161        delete source;
162}
163
164void AD_map_extended(AW_root *aw_root, AW_CL scannerid)
165{
166        char *source = aw_root->awar(AWAR_EX_NAME)->read_string();
167        GB_push_transaction(gb_main);
168        GBDATA *gb_extended = GBT_find_SAI(gb_main,source);
169        awt_map_arbdb_scanner(scannerid,gb_extended,0);
170        GB_pop_transaction(gb_main);
171        delete source;
172}
173
174void ad_ad_remark(AW_window *aww){
175        AW_root *awr = aww->get_root();
176        GB_transaction dummy(gb_main);
177        char *source = awr->awar(AWAR_EX_NAME)->read_string();
178        GBDATA *gb_sai = GBT_find_SAI(gb_main,source);
179        if (gb_sai){
180                char *use = GBT_get_default_alignment(gb_main);
181                GBDATA *gb_ali = GB_search(gb_sai,use,GB_FIND);
182                if (gb_ali){
183                        GBDATA *typ = GB_search(gb_ali,"_TYPE",GB_STRING);
184                        awr->awar_string("/tmp/ntree/sai/add_remark")->map(typ);
185                        char *error = aw_input("Change SAI description",
186                                        "/tmp/ntree/sai/add_remark");
187                        delete error;
188                }else{
189                        aw_message("Please select an alignment which is valid for the selected SAI");
190                }       
191                delete use;
192        }else{
193                aw_message("Please select a SAI first");
194        }
195        delete source;
196}
197
198void ad_ad_group(AW_window *aww){
199        AW_root *awr = aww->get_root();
200        GB_transaction dummy(gb_main);
201        char *source = awr->awar(AWAR_EX_NAME)->read_string();
202        GBDATA *gb_sai = GBT_find_SAI(gb_main,source);
203        if (gb_sai){
204            delete GBT_read_string2(gb_sai,"sai_group","default_group");
205            GBDATA *gb_gn = GB_search(gb_sai,"sai_group",GB_STRING);
206            awr->awar_string("/tmp/ntree/sai/add_group")->map(gb_gn);
207            char *res = aw_input("Assign Group to  SAI","/tmp/ntree/sai/add_group");
208            if (!res || !strlen(res)){
209                GB_delete(gb_gn);
210            }
211            delete res;
212        }else{
213            aw_message("Please select a SAI first");
214        }
215        delete source;
216}
217
218AW_window *create_extendeds_window(AW_root *aw_root)
219        {
220        AW_window_simple *aws = new AW_window_simple;
221        aws->init( aw_root, "INFO_OF_SAI", "SAI INFORMATION", 200, 0 );
222        aws->load_xfig("ad_ext.fig");
223
224        aws->callback( (AW_CB0)AW_POPDOWN);
225        aws->at("close");
226        aws->create_button("CLOSE","CLOSE","C");                           
227
228        aws->callback( AW_POPUP_HELP,(AW_CL)"ad_extended.hlp");
229        aws->at("help");
230        aws->create_button("HELP","HELP","H");                     
231
232        aws->button_length(13);
233
234        aws->at("delete");
235        aws->callback(ad_extended_delete_cb);
236        aws->create_button("DELETE","DELETE","D");                         
237
238        aws->at("rename");
239        aws->callback(AW_POPUP,(AW_CL)create_extended_rename_window,0);
240        aws->create_button("RENAME","RENAME","R");                         
241
242        aws->at("copy");
243        aws->callback(AW_POPUP,(AW_CL)create_extended_copy_window,0);
244        aws->create_button("COPY","COPY","C");                     
245
246        aws->at("remark");
247        aws->callback(ad_ad_remark);
248        aws->create_button("EDIT_COMMENT","EDIT COMMENT","R");                     
249
250        aws->at("group");
251        aws->callback(ad_ad_group);
252        aws->create_button("ASSIGN_GROUP","ASSIGN GROUP","R");                     
253
254        aws->at("makespec");
255        aws->callback((AW_CB0)move_to_sepcies);
256        aws->create_button("COPY_TO_SPECIES","COPY TO\nSPECIES","C");                     
257
258        aws->at("list");
259        awt_create_selection_list_on_extendeds(gb_main,(AW_window *)aws,AWAR_EX_NAME);
260
261        AW_CL scannerid=awt_create_arbdb_scanner(gb_main, aws,
262                "info",0,0,0,AWT_SCANNER,0,0,0);
263        aws->get_root()->awar(AWAR_EX_NAME)->add_callback(
264                AD_map_extended,scannerid);
265        return (AW_window *)aws;
266}
Note: See TracBrowser for help on using the repository browser.