source: branches/port5/NTREE/NT_ins_col.cxx

Last change on this file was 5894, checked in by westram, 16 years ago
  • reactivated original GB_close
  • removed GB_exit (use GB_close)
  • gb_delete_entry now takes and invalidates a GBDATA (to avoid further undetected usage)
  • gb_do_callback_list called with GB_MAIN_TYPE (instead of possibly already deleted gb_main)
  • added some missing transactions
  • moved declaration of GBDATA into arbdb_base.h (and include where needed)
  • GB_MAIN_TYPE is no longer void
  • AW_default is no longer void
  • replaced the 3 differing ways to exit EDIT4 by ED4_exit()
  • added AW_root::unlink_awars_from_DB() and call in arb_ntree, arb_dist, arb_edit4, arb_pars and arb_phylo
  • rewrote arb_2_ascii, arb_2_bin, arb_perf_test, arb_read_tree (single exit point, error handling)
  • unlinked AWARs now return "" not "?????"
  • AW_awar::read_string works only with awars of type AW_STRING. Added assertion + fixed one wrong usage.
  • inlined AW_awar::get()
  • added AW_awar::remove_all_callbacks() and AW_awar::remove_all_target_vars()
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.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 <aw_awars.hxx>
9
10#define nt_assert(bed) arb_assert(bed)
11
12extern GBDATA *GLOBAL_gb_main;     /* muss existieren */
13
14void create_insertchar_variables(AW_root *root,AW_default db1)
15{
16    root->awar_int   (AWAR_CURSOR_POSITION,    0,  GLOBAL_gb_main);
17    root->awar_int   ("insertchar/nchar",      0,  db1)->set_minmax( 0, 999000);
18    root->awar_string("insertchar/characters", "", db1);
19}
20
21void awt_inserchar_event(AW_window *aws,AW_CL awcl_mode)
22{
23    int mode = (int)awcl_mode; // 1 = insert, -1 = delete
24    nt_assert(mode == -1 || mode == 1);
25
26    AW_root *root    = aws->get_root();
27    long     pos     = root->awar(AWAR_CURSOR_POSITION)->read_int()-1;
28    long     nchar   = root->awar("insertchar/nchar")->read_int() * mode;
29    char    *deletes = root->awar("insertchar/characters")->read_string();
30
31    GB_ERROR error = GB_begin_transaction(GLOBAL_gb_main);
32    if (!error) {
33        char *alignment = GBT_get_default_alignment(GLOBAL_gb_main);
34
35        if (alignment) {
36            error             = GBT_insert_character(GLOBAL_gb_main,alignment,pos,nchar,deletes);
37            if (!error) error = GBT_check_data(GLOBAL_gb_main,0);
38        }
39        else {
40            error = "no alignment found";
41        }
42        free(alignment);
43    }
44   
45    GB_end_transaction_show_error(GLOBAL_gb_main, error, aw_message);
46    free(deletes);
47}
48
49AW_window *create_insertchar_window(AW_root *root, AW_default def)
50{
51    AWUSE(root);
52    AWUSE(def);
53
54    static AW_window_simple *aws = 0;
55    if (aws) return aws;
56    aws = new AW_window_simple;
57
58    aws->init( root, "INSERT_COLOUM", "INSERT CHAR");
59
60    aws->load_xfig("inschar.fig");
61    aws->button_length(8);
62
63    aws->callback( (AW_CB0)AW_POPDOWN);
64    aws->at("close");
65    aws->create_button("CLOSE","CLOSE","C");
66
67    aws->callback( AW_POPUP_HELP,(AW_CL)"insdelchar.hlp");
68    aws->at("help");
69    aws->create_button("HELP","HELP","H");
70
71    aws->label_length(27);
72
73    aws->at("pos");
74    aws->label("Sequence Position");
75    aws->create_input_field(AWAR_CURSOR_POSITION,6); // @@@ mit EDIT4-Cursor-position linken
76
77    aws->at("len");
78    aws->label("How many Characters");
79    aws->create_input_field("insertchar/nchar",6);
80
81    aws->at("characters");
82    aws->label("Delete Only (% = all)");
83    aws->create_input_field("insertchar/characters",6);
84
85    aws->callback(awt_inserchar_event,(AW_CL)1);
86    aws->at("insert");
87    aws->create_button("INSERT","INSERT","I");
88
89    aws->callback(awt_inserchar_event,(AW_CL)-1);
90    aws->at("delete");
91    aws->create_button("DELETE","DELETE","D");
92
93    return (AW_window *)aws;
94}
Note: See TracBrowser for help on using the repository browser.