source: tags/svn.1.5.4/NTREE/NT_ins_col.cxx

Last change on this file was 8309, checked in by westram, 12 years ago
  • moved much code into static scope

(partly reverted by [8310])

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.2 KB
Line 
1// =============================================================== //
2//                                                                 //
3//   File      : NT_ins_col.cxx                                    //
4//   Purpose   :                                                   //
5//                                                                 //
6//   Institute of Microbiology (Technical University Munich)       //
7//   http://www.arb-home.de/                                       //
8//                                                                 //
9// =============================================================== //
10
11#include <arbdbt.h>
12#include <aw_window.hxx>
13#include <aw_root.hxx>
14#include <aw_awars.hxx>
15#include <aw_msg.hxx>
16#include <arb_defs.h>
17
18#define nt_assert(bed) arb_assert(bed)
19
20extern GBDATA *GLOBAL_gb_main;     // muss existieren
21
22void create_insertchar_variables(AW_root *root, AW_default db1) {
23    root->awar_int   (AWAR_CURSOR_POSITION,    info2bio(0),  GLOBAL_gb_main);
24    root->awar_int   ("insertchar/nchar",      0,  db1)->set_minmax(0, 999000);
25    root->awar_string("insertchar/characters", "", db1);
26}
27
28static void awt_inserchar_event(AW_window *aws, AW_CL awcl_mode) {
29    int mode = (int)awcl_mode; // 1 = insert, -1 = delete
30    nt_assert(mode == -1 || mode == 1);
31
32    AW_root *root    = aws->get_root();
33    long     pos     = bio2info(root->awar(AWAR_CURSOR_POSITION)->read_int());
34    long     nchar   = root->awar("insertchar/nchar")->read_int() * mode;
35    char    *deletes = root->awar("insertchar/characters")->read_string();
36
37    GB_ERROR error = GB_begin_transaction(GLOBAL_gb_main);
38    if (!error) {
39        char *alignment = GBT_get_default_alignment(GLOBAL_gb_main);
40
41        if (alignment) {
42            error             = GBT_insert_character(GLOBAL_gb_main, alignment, pos, nchar, deletes);
43            if (!error) error = GBT_check_data(GLOBAL_gb_main, 0);
44        }
45        else {
46            error = "no alignment found";
47        }
48        free(alignment);
49    }
50
51    GB_end_transaction_show_error(GLOBAL_gb_main, error, aw_message);
52    free(deletes);
53}
54
55AW_window *create_insertchar_window(AW_root *root, AW_default /*def*/) {
56    static AW_window_simple *aws = 0;
57    if (aws) return aws;
58    aws = new AW_window_simple;
59
60    aws->init(root, "INSERT_COLUMN", "INSERT CHAR");
61
62    aws->load_xfig("inschar.fig");
63    aws->button_length(8);
64
65    aws->callback((AW_CB0)AW_POPDOWN);
66    aws->at("close");
67    aws->create_button("CLOSE", "CLOSE", "C");
68
69    aws->callback(AW_POPUP_HELP, (AW_CL)"insdelchar.hlp");
70    aws->at("help");
71    aws->create_button("HELP", "HELP", "H");
72
73    aws->label_length(27);
74
75    aws->at("pos");
76    aws->label("Sequence Position");
77    aws->create_input_field(AWAR_CURSOR_POSITION, 6);
78
79    aws->at("len");
80    aws->label("How many Characters");
81    aws->create_input_field("insertchar/nchar", 6);
82
83    aws->at("characters");
84    aws->label("Delete Only (% = all)");
85    aws->create_input_field("insertchar/characters", 6);
86
87    aws->callback(awt_inserchar_event, (AW_CL)1);
88    aws->at("insert");
89    aws->create_button("INSERT", "INSERT", "I");
90
91    aws->callback(awt_inserchar_event, (AW_CL)-1);
92    aws->at("delete");
93    aws->create_button("DELETE", "DELETE", "D");
94
95    return (AW_window *)aws;
96}
Note: See TracBrowser for help on using the repository browser.