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 | extern GBDATA *gb_main; /* muss existieren */ |
---|
11 | |
---|
12 | void create_insertchar_variables(AW_root *root,AW_default db1) |
---|
13 | { |
---|
14 | root->awar_int( AWAR_CURSOR_POSITION, 0 , (void*)gb_main); |
---|
15 | root->awar_int( "insertchar/nchar", 0 , db1); |
---|
16 | root->awar("insertchar/nchar")->set_minmax( 0, 999000); |
---|
17 | root->awar_string( "insertchar/characters", "" , db1); |
---|
18 | } |
---|
19 | |
---|
20 | void awt_inserchar_event(AW_window *aws,AW_CL awcl_mode) |
---|
21 | { |
---|
22 | AW_root *root = aws->get_root(); |
---|
23 | char *alignment; |
---|
24 | long pos; |
---|
25 | long nchar; |
---|
26 | char *deletes; |
---|
27 | int mode = (int)awcl_mode; |
---|
28 | |
---|
29 | pos = root->awar(AWAR_CURSOR_POSITION)->read_int()-1; |
---|
30 | nchar = root->awar("insertchar/nchar")->read_int() * mode; |
---|
31 | deletes = root->awar("insertchar/characters")->read_string(); |
---|
32 | |
---|
33 | GB_begin_transaction(gb_main); |
---|
34 | alignment = GBT_get_default_alignment(gb_main); |
---|
35 | |
---|
36 | if (alignment) { |
---|
37 | GB_ERROR error = GBT_insert_character(gb_main,alignment,pos,nchar,deletes); |
---|
38 | if (error) { |
---|
39 | GB_abort_transaction(gb_main); |
---|
40 | aw_message(error); |
---|
41 | }else{ |
---|
42 | GBT_check_data(gb_main,0); |
---|
43 | GB_commit_transaction(gb_main); |
---|
44 | } |
---|
45 | }else{ |
---|
46 | printf("ERROR no alignment found\n"); |
---|
47 | GB_abort_transaction(gb_main); |
---|
48 | } |
---|
49 | |
---|
50 | free(deletes); |
---|
51 | free(alignment); |
---|
52 | } |
---|
53 | |
---|
54 | AW_window *create_insertchar_window(AW_root *root, AW_default def) |
---|
55 | { |
---|
56 | AWUSE(root); |
---|
57 | AWUSE(def); |
---|
58 | |
---|
59 | static AW_window_simple *aws = 0; |
---|
60 | if (aws) return aws; |
---|
61 | aws = new AW_window_simple; |
---|
62 | |
---|
63 | aws->init( root, "INSERT_COLOUM", "INSERT CHAR", 10, 10 ); |
---|
64 | |
---|
65 | aws->load_xfig("inschar.fig"); |
---|
66 | aws->button_length(8); |
---|
67 | |
---|
68 | aws->callback( (AW_CB0)AW_POPDOWN); |
---|
69 | aws->at("close"); |
---|
70 | aws->create_button("CLOSE","CLOSE","C"); |
---|
71 | |
---|
72 | aws->callback( AW_POPUP_HELP,(AW_CL)"insdelchar.hlp"); |
---|
73 | aws->at("help"); |
---|
74 | aws->create_button("HELP","HELP","H"); |
---|
75 | |
---|
76 | aws->label_length(27); |
---|
77 | |
---|
78 | aws->at("pos"); |
---|
79 | aws->label("Sequence Position"); |
---|
80 | aws->create_input_field(AWAR_CURSOR_POSITION,6); // @@@ mit EDIT4-Cursor-position linken |
---|
81 | |
---|
82 | aws->at("len"); |
---|
83 | aws->label("How many Characters"); |
---|
84 | aws->create_input_field("insertchar/nchar",6); |
---|
85 | |
---|
86 | aws->at("characters"); |
---|
87 | aws->label("Delete Only (% = all)"); |
---|
88 | aws->create_input_field("insertchar/characters",6); |
---|
89 | |
---|
90 | aws->callback(awt_inserchar_event,(AW_CL)1); |
---|
91 | aws->at("insert"); |
---|
92 | aws->create_button("INSERT","INSERT","I"); |
---|
93 | |
---|
94 | aws->callback(awt_inserchar_event,(AW_CL)-1); |
---|
95 | aws->at("delete"); |
---|
96 | aws->create_button("DELETE","DELETE","D"); |
---|
97 | |
---|
98 | return (AW_window *)aws; |
---|
99 | } |
---|