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 | |
---|
20 | extern GBDATA *GLOBAL_gb_main; // muss existieren |
---|
21 | |
---|
22 | void 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 | |
---|
28 | static 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 | |
---|
55 | AW_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 | } |
---|