source: branches/port5/EDIT/edit.hxx

Last change on this file was 5901, checked in by westram, 16 years ago
  • AW_BOOL → bool
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.3 KB
Line 
1#define AWAR_CURSER_POS_REF_ECOLI "tmp/edit/curser_ref_ecoli"
2#define AWAR_SPECIES_DEST "tmp/edit/species_name_dest"
3#define AWAR_LINE_SPACING "edit/line_spacing"
4#define AWAR_CENTER_SPACING "edit/center_spacing"
5#define AWAR_HELIX_AT_SAIS "edit/helix_at_extendeds"
6#define AWAR_EDIT_MODE "tmp/edit/edit_mode"
7#define AWAR_EDIT_DIRECTION "tmp/edit/edit_direction"
8#define AWAR_EDIT_MULTI_SEQ "tmp/edit/edit_multi"
9
10#define AED_LINE_SPACING ((int)aed_root.line_spacing)
11#define AED_CENTER_SPACING ((int)aed_root.center_spacing)
12#define AED_TOP_LINE 2
13
14const long AED_MAX_SPECIES=100;
15
16
17enum {
18    AED_GC_NAME,
19    AED_GC_SELECTED,
20    AED_GC_SEQUENCE,
21    AED_GC_HELIX,
22
23    AED_GC_0,                   // @@@
24    AED_GC_1,
25    AED_GC_2,
26    AED_GC_3,
27    AED_GC_4,
28    AED_GC_5,
29    AED_GC_6,
30    AED_GC_7,
31    AED_GC_8,
32    AED_GC_9,
33
34    AED_GC_NAME_DRAG,
35    AED_GC_SELECTED_DRAG,
36    AED_GC_SEQUENCE_DRAG,
37    AED_GC_HELIX_DRAG
38};
39
40
41typedef enum {
42    AED_F_ALLWAYS           = 0,
43    AED_F_NAME              = 1,
44    AED_F_NAME_SELECTED     = 2,
45    AED_F_SEQUENCE          = 4,
46    AED_F_SEQUENCE_SELECTED = 8,
47    AED_F_INFO              = 16,
48    AED_F_INFO_SEPARATOR    = 32,
49    AED_F_WINFO             = 64,
50    AED_F_CURSOR            = 128,
51    AED_F_HELIX             = 256,
52    AED_F_TEXT_1            = 512,
53    AED_F_TEXT_2            = 1024,
54    AED_F_TEXT_3            = 2048,
55    AED_F_FRAME             = 4096,
56    AED_F_ALL               = -1
57} AED_filters;
58
59
60extern class AED_root {
61public:
62    AD_MAIN *ad_main;
63    AW_root *aw_root;
64
65    AED_root(void);
66
67    AW_default db;
68    long       center_spacing;
69    long       line_spacing;
70    long       helix_at_extendeds;
71} aed_root;
72
73
74typedef enum   {
75    AED_ALIGN   = 0,
76    AED_INSERT  = 1,
77    AED_REPLACE = 2
78} AED_modi;
79
80class AED_dlist;
81class AED_area_entry {
82public:
83
84    AD_SPECIES   *ad_species;
85    AD_SAI       *ad_extended;
86    AD_CONT      *ad_container;
87    ADT_SEQUENCE *adt_sequence;
88    AD_STAT      *ad_stat;
89
90    bool            is_selected;
91    AW_pos          in_line;
92    AW_pos          absolut_x;
93    AW_pos          absolut_y;
94    AED_area_entry *previous;
95    AED_area_entry *next;
96    AED_dlist      *in_area;
97
98    AED_area_entry() { is_selected = false; previous = NULL; next = NULL; }
99    ~AED_area_entry() {};
100};
101
102class AED_window;
103class AED_dummy { class AED_window *dummy; };
104
105class AED_dlist {
106    GB_HASH *hash;
107    GBDATA  *gb_main;
108    char    *hash_awar;
109    int      hash_level;
110
111public:
112    int             size;
113    AED_area_entry *first;
114    AED_area_entry *last;
115    AED_area_entry *current;
116
117    AED_dlist();
118    ~AED_dlist() {}
119
120    void create_hash(GBDATA *gb_main,const char *awar_suffix);
121    void insert_hash(const char *name);
122    void remove_hash(const char *name);
123    long read_hash(const char *name);
124    void optimize_hash(void);
125
126    void remove_entry(AED_area_entry *to_be_removed);
127    void append(AED_area_entry *to_be_inserted);
128    void insert_after_entry(AED_area_entry *add_after_this, AED_area_entry *to_be_inserted);
129    void insert_before_entry(AED_area_entry *add_before_this, AED_area_entry *to_be_inserted);
130};
131
132class AED_window;
133class AED_dlist_left_side;
134
135class AED_left_side {
136public:
137    char *text;
138    char  text_for_dragging[100];
139
140    void        (*make_text)( class AED_window *aedw, AED_area_entry *area_entry, char *text );
141
142    bool                 is_selected;
143    AW_pos               absolut_x;
144    AW_pos               absolut_y;
145    AED_left_side       *previous;
146    AED_left_side       *next;
147    AED_dlist_left_side *in_side;
148
149    AED_left_side( void(*f)(class AED_window *aedw,AED_area_entry *area_entry, char *text), const char *string );
150    ~AED_left_side();
151};
152
153
154class AED_dlist_left_side {
155public:
156    int            size;
157    AED_left_side *first;
158    AED_left_side *last;
159    AED_left_side *current;
160
161    AED_dlist_left_side() { size = 0; first = NULL; last = NULL; current = NULL; }
162    ~AED_dlist_left_side() {}
163   
164    void remove_entry( AED_left_side *to_be_removed );
165    void append( AED_left_side *to_be_inserted );
166    void insert_after_entry( AED_left_side *add_after_this, AED_left_side *to_be_inserted );
167    void insert_before_entry( AED_left_side *add_before_this, AED_left_side *to_be_inserted );
168};
169
170
171
172typedef struct {
173    bool clear;
174    bool calc_size;
175    bool visible_control;
176    int  top_indent;
177    int  bottom_indent;
178    int  left_indent;
179    int  slider_pos_horizontal;
180    int  slider_pos_vertical;
181    int  picture_l;
182    int  picture_t;
183
184} AED_area_display_struct;
185
186
187class AED_window {
188public:
189
190    bool            config_window_created;
191    AW_window_menu *config_window;
192
193    AED_dlist_left_side *show_dlist_left_side;
194    AED_dlist_left_side *hide_dlist_left_side;
195    AED_left_side       *selected_entry_of_dlist_left_side;
196    bool                 one_entry_dlist_left_side_is_selected;
197
198    AED_root  *root;
199    AW_window *aww;
200    ADT_ALI   *alignment;
201
202    bool global_focus_use;
203
204    AED_dlist      *area_top;
205    AED_dlist      *area_middle;
206    AED_dlist      *area_bottom;
207    AED_area_entry *selected_area_entry;
208    bool            one_area_entry_is_selected;
209    bool            selected_area_entry_is_visible;
210
211    int  selected_info_area_text;
212    int  info_area_height;
213    bool edit_info_area;
214
215    AW_world       size_information;
216    int            last_slider_position;
217    bool           quickdraw;
218    int            quickdraw_left_indent;
219    int            quickdraw_right_indent;
220    AW_cursor_type cursor_type;
221    int            cursor;
222    bool           cursor_is_managed;
223    bool           drag;
224    int            drag_x, drag_y;
225    AW_pos         drag_x_correcting, drag_y_correcting;
226
227    long edit_modus;
228    long edit_direction;
229    int  owntimestamp;
230
231    // modes ....
232    AED_window( void );
233    ~AED_window( void );
234
235    int  load_data( void );
236    void show_data( AW_device *device, AW_window *awmm, bool visibility_control );
237    void show_top_data( AW_device *device, AW_window *awmm, AED_area_display_struct& display_struct );
238    void show_single_top_data(AW_device *device, AW_window *awmm, AED_area_entry *area_entry, AED_area_display_struct& display_struct, AW_pos *y );
239    void show_middle_data( AW_device *device, AW_window *awmm, AED_area_display_struct& display_struct );
240    void show_single_middle_data(AW_device *device, AW_window *awmm, AED_area_entry *area_entry, AED_area_display_struct& display_struct, AW_pos *y );
241    void show_bottom_data( AW_device *device, AW_window *awmm, AED_area_display_struct& display_struct );
242    void show_single_bottom_data(AW_device *device, AW_window *awmm, AED_area_entry *area_entry, AED_area_display_struct& display_struct, AW_pos *y );
243    void hide_cursor( AW_device *device, AW_window *awmm );
244    void show_cursor( AW_device *device, AW_window *awmm );
245    bool manage_cursor( AW_device *device, AW_window *awmm, bool use_last_slider_position );
246    void show_single_area_entry( AW_device *device, AW_window *awmm, AED_area_entry *area_entry );
247    void calculate_size(AW_window *awmm);
248    void expose(AW_window *awmm);
249
250    void init( AED_root *rootin );
251    void select_area_entry( AED_area_entry *area_entry, AW_pos cursor_position );
252    void deselect_area_entry( void );
253    void make_left_text( char *string, AED_area_entry *area_entry );
254};
255
256void aed_create_window(AED_root *aedr);
257void aed_initialize_device(AW_device *device);
258void drag_box(AW_device *device, int gc, AW_pos x, AW_pos y, AW_pos width, AW_pos height, char *str);
259void aed_expose(AW_window *aw, AW_CL cd1, AW_CL cd2);
260void aed_clear_expose(AW_window *aw, AW_CL cd1, AW_CL cd2);
261void aed_resize(AW_window *aw, AW_CL cd1, AW_CL cd2);
262
263
264AW_window *create_naligner_window( AW_root *root, AW_CL cd2 );
265void       create_naligner_variables(AW_root *root,AW_default db1);
266
267void create_tool_variables(AW_root *root,AW_default db1);
268//void create_submission_variables(AW_root *root,AW_default db1);
269
270AW_window *create_tool_search( AW_root *root, AED_window *aedwindow );
271AW_window *create_tool_replace( AW_root *root, AED_window *aedwindow );
272AW_window *create_tool_complement( AW_root *root, AED_window *aedwindow );
273AW_window *create_tool_speaker( AW_root *root, AED_window *aedwindow );
274AW_window *create_tool_consensus( AW_root *root, AED_window *aedwindow );
275//AW_window *create_submission_window( AW_root *root );
276void set_cursor_to( AED_window *aedw, long cursor,class AED_area_entry *aed );
Note: See TracBrowser for help on using the repository browser.