4 #ifndef AW_FONT_GROUP_HXX
14 #define e4_assert(bed) arb_assert(bed)
17 # define IMPLEMENT_DUMP // comment out this line to skip compilation of the dump() methods
26 #ifndef ED4_SEARCH_HXX
35 #ifndef BI_BASEPOS_HXX
45 #if defined(IMPLEMENT_DUMP) // ------------------------------
48 #define WARN(msg) void dummy_to_produce_a_warning(int msg) {}
53 #define EMPTY_FUNCTION(name) void name() const {}
54 #define EMPTY_FUNCTION_VERBOSE(name) void name(int je_mappelle_##name) const {}
56 #define DERIVABLEFROM(base) concatenate(prohibited_leafclass_derivation,base)
58 #define COMMON_FOR_BASES() \
59 virtual void dump(size_t indent) const = 0; \
61 #define COMMON_FOR_DERIVABLE(self) \
62 void dump_base(size_t indent) const; \
63 EMPTY_FUNCTION(DERIVABLEFROM(self)); \
65 #define COMMON_FOR_DERIVED(mybase) \
66 void dump_my_base(size_t indent) const { mybase::dump_base(indent); } \
67 virtual const char *baseclassname() const { return #mybase; } \
69 #define COMMON_FOR_INSTANCIABLE(mybase) \
70 void dump(size_t indent) const OVERRIDE; \
72 #define DECLARE_DUMP_FOR_ROOTCLASS(self) \
74 COMMON_FOR_DERIVABLE(self); \
76 #define DECLARE_DUMP_FOR_BASECLASS(self,mybase) \
78 COMMON_FOR_DERIVABLE(self); \
79 COMMON_FOR_DERIVED(mybase); \
81 #define DECLARE_DUMP_FOR_MIDCLASS(self,mybase) \
82 WARN(midclass_is_unwanted); \
83 COMMON_FOR_DERIVABLE(self); \
84 COMMON_FOR_DERIVED(mybase); \
85 COMMON_FOR_INSTANCIABLE(mybase); \
87 #define DECLARE_DUMP_FOR_LEAFCLASS(mybase) \
88 virtual void leaf() { DERIVABLEFROM(mybase)(); } \
89 COMMON_FOR_DERIVED(mybase); \
90 COMMON_FOR_INSTANCIABLE(mybase); \
93 #define DECLARE_DUMP_FOR_ROOTCLASS(self)
94 #define DECLARE_DUMP_FOR_BASECLASS(self,mybase)
95 #define DECLARE_DUMP_FOR_MIDCLASS(self,mybase)
96 #define DECLARE_DUMP_FOR_LEAFCLASS(mybase)
98 #endif // IMPLEMENT_DUMP ------------------------------
103 #ifdef LIMIT_TOP_AREA_SPACE
104 #define MAX_TOP_AREA_SIZE 10 // size limit for top-area
107 #define ed4_beep() do { fputc(char(7), stdout); fflush(stdout); } while (0)
124 class ED4_columnStat_terminal;
131 class ED4_main_manager;
137 class ED4_pure_text_terminal;
142 class ED4_sequence_info_terminal;
146 class ED4_spacer_terminal;
147 class ED4_species_manager;
148 class ED4_species_name_terminal;
152 class ED4_tree_terminal;
153 class ED4_flag_header_terminal;
154 class ED4_flag_terminal;
211 #define SPECIFIED_OBJECT_TYPES 23
214 static bool object_specs_initialized;
215 static bool descendants_uptodate;
221 void calc_descendants()
const;
232 #if defined(IMPLEMENT_DUMP)
233 void dump(
size_t indent)
const;
234 #endif // IMPLEMENT_DUMP
244 return allowed_children & child_level;
249 used_children =
ED4_level(used_children|child_level);
250 descendants_uptodate =
false;
258 return possible_descendants;
263 return allowed_descendants;
274 if (pos <= fl->pos) {
275 next = next ? next->insert(fl) : fl;
292 ptr = other ? other->insert(
this) :
this;
317 if (win<pos)
return win;
321 if (world<pos)
return world;
323 if (!next)
return world;
340 delete horizontal_fl;
342 horizontal_fl =
NULp;
345 bool is_reset()
const {
return !horizontal_fl && !vertical_fl; }
397 bool folding_dimensions_calculated;
406 void init_folding_lines() {
408 scroll_bottom =
NULp;
412 folding_dimensions_calculated =
false;
417 init_folding_lines();
422 void update_folding_line_positions() {
442 bool exists()
const {
return scroll_top && scroll_bottom && scroll_left && scroll_right; }
465 if (x_link == old_link) x_link = new_link;
466 if (width_link == old_link) width_link = new_link;
482 e4_assert(folding_dimensions_calculated);
492 update_folding_line_positions();
500 if (
bottom() > area_height) {
501 dim =
bottom()-area_height;
514 if (
right()>area_width) {
515 dim =
right()-area_width;
528 folding_dimensions_calculated =
true;
536 if (rect.
bottom() > area_height) dim = rect.
bottom() - area_height;
540 if (rect.
right() > area_width) dim = rect.
right() - area_width;
550 init_folding_lines();
560 if (calced4term != term || needUpdate) {
564 void remove_changed_cb();
582 if (term == calced4term) {
639 void updateAwars(
bool new_term_selected);
690 if (
object == owner_of_cursor) owner_of_cursor =
NULp;
702 void set_scrollbar_indents();
750 fputs(
"scrollbars not in sync with scrolled_rect:\n", stderr);
751 fprintf(stderr,
" aww->slider_pos_vertical =%i scrolled_rect->top_dim() =%f\n", aww->
slider_pos_vertical, scrolled_rect.
top_dim());
762 bool partly_shows(
int x1,
int y1,
int x2,
int y2)
const;
780 void correct_insert_position(
ED4_index& index);
813 #if defined(IMPLEMENT_DUMP)
814 void dump_container(
size_t indent)
const;
815 #endif // IMPLEMENT_DUMP
817 #if defined(ASSERTION_USED)
819 #endif // ASSERTION_USED
834 void removeCallback(
ED4_base *base);
844 species_pointer=
NULp;
851 template <
class BASE,
class BASECB>
853 std::list<BASECB> callbacks;
855 #if defined(ASSERTION_USED)
861 void add_cb(BASECB
cb) { callbacks.push_back(cb); }
865 for (
typename std::list<BASECB>::iterator
cb = callbacks.begin();
cb != callbacks.end();) {
866 typename std::list<BASECB>::iterator curr =
cb;
872 bool empty()
const {
return callbacks.empty(); }
900 static int currTimestamp;
906 virtual bool set_dynamic_size() {
959 virtual void Show(
bool refresh_all,
bool is_cleared) = 0;
963 if (set_dynamic_size()) {
994 bool cache_up_to_date = timestamp == currTimestamp;
995 if (!cache_up_to_date) {
1004 timestamp = currTimestamp;
1026 virtual void Delete() = 0;
1114 #define E4B_DECL_CASTOP_helper(Class,toName) \
1115 inline const Class *toName() const; \
1116 inline Class *toName();
1118 #define E4B_AVOID_CAST__helper(Class,toName,isName) \
1119 const Class *toName() const; \
1123 #define E4B_IMPL_CASTOP_helper(Class,toName,isName) \
1124 const Class *ED4_base::toName() const { \
1125 e4_assert(isName()); \
1126 return DOWNCAST(const Class*, this); \
1128 Class *ED4_base::toName() { \
1129 return const_cast<Class*>(const_cast<const ED4_base*>(this)->toName()); \
1132 #define E4B_DECL_CASTOP(name) E4B_DECL_CASTOP_helper(concatenate(ED4_,name), concatenate(to_,name))
1133 #define E4B_AVOID_UNNEEDED_CASTS(name) E4B_AVOID_CAST__helper(concatenate(ED4_,name), concatenate(to_,name), concatenate(is_,name))
1134 #define E4B_IMPL_CASTOP(name) E4B_IMPL_CASTOP_helper(concatenate(ED4_,name), concatenate(to_,name), concatenate(is_,name))
1206 void Show(
bool refresh_all,
bool is_cleared) OVERRIDE;
1222 void Delete() FINAL_OVERRIDE;
1274 if (
flag.hidden)
return true;
1275 if (!
parent)
return false;
1290 struct {
unsigned int deleted : 1; } tflag;
1302 void Show(
bool refresh_all,
bool is_cleared) OVERRIDE;
1303 virtual
void draw() = 0;
1314 void update_requested_children() OVERRIDE;
1315 void delete_requested_children() OVERRIDE;
1323 ED4_base *
search_ID(const
char *
id) OVERRIDE;
1328 GB_ERROR write_sequence(const
char *
seq,
int seq_len);
1348 ED4_sequence_info_terminal *ref_sequence_info;
1350 ED4_sequence_info_terminal *ref_column_stat_info;
1351 ED4_columnStat_terminal *ref_column_stat;
1353 void null() { ref_sequence_info =
NULp; ref_sequence =
NULp; ref_column_stat =
NULp; ref_column_stat_info =
NULp; }
1356 void init(ED4_sequence_info_terminal *,
ED4_sequence_terminal *, ED4_sequence_info_terminal *, ED4_columnStat_terminal *);
1371 bool is_set()
const {
return ed4w; }
1378 void warn_missing_context()
const;
1379 void expect_context()
const {
if (!is_set()) warn_missing_context(); }
1411 void refresh_window_simple(
bool redraw);
1412 void handle_update_requests(
bool& redraw);
1461 void reset_consensus_params();
1469 void announce_useraction_in(
AW_window *aww);
1472 return most_recently_used_window;
1478 ED4_returncode create_hierarchy(
const char *area_string_middle,
const char *area_string_top);
1480 void recalc_font_group();
1487 void resize_all_requesting_childs();
1489 void special_window_refresh(
bool handle_updates);
1492 void request_refresh_for_all_terminals();
1493 void request_refresh_for_specific_terminals(
ED4_level lev);
1494 void request_refresh_for_consensus_terminals();
1495 void request_refresh_for_sequence_terminals();
1497 inline void announce_deletion(ED4_base *
object);
1500 ED4_returncode add_to_highlighted(ED4_species_name_terminal *
object);
1501 void remove_from_highlighted(ED4_species_name_terminal *
object);
1508 void remove_all_callbacks();
1540 win->announce_deletion(term);
1551 class ED4_main_manager
FINAL_TYPE :
public ED4_manager {
1575 void clear_whole_background();
1598 int selected_species;
1600 void set_species_counters(
int no_of_species,
int no_of_selected);
1602 void count_species(
int *speciesPtr,
int *selectedPtr)
const;
1604 void update_species_counters();
1614 int count_visible_children();
1616 ED4_species_manager *get_consensus_manager()
const;
1617 ED4_species_name_terminal *get_consensus_name_terminal()
const;
1620 int get_no_of_selected_species();
1621 int get_no_of_species();
1623 void update_group_id();
1625 void invalidate_species_counters();
1629 void select_all(
bool only_species);
1630 void deselect_all_species_and_SAI();
1631 void invert_selection_of_all_species();
1632 void marked_species_select(
bool select);
1633 void selected_species_mark(
bool mark);
1635 void toggle_selected_species();
1657 if (cons_length) *cons_length = table().size();
1666 void reinit_char_table();
1670 void toggle_folding();
1687 int show_above_percent;
1689 size_t sequence_table_len;
1690 size_t screen_table_len;
1692 size_t sequence_len;
1695 int *screen_to_sequence_tab;
1696 int *sequence_to_screen_tab;
1700 inline void set_sequence_to_screen(
int pos,
int newVal,
bool& mapping_changed);
1707 int screen_to_sequence(
int screen_pos)
const;
1710 e4_assert(sequence_pos>=0 &&
size_t(sequence_pos)<=sequence_len);
1711 return sequence_to_screen_tab[sequence_pos];
1715 int screen_pos = sequence_to_screen_PLAIN(sequence_pos);
1720 int clipped_sequence_to_screen_PLAIN(
int sequence_pos)
const;
1721 int sequence_to_screen(
int sequence_pos)
const;
1725 return PosRange(sequence_to_screen(range.
start()), sequence_to_screen(range.
end()));
1730 return PosRange(screen_to_sequence(range.
start()), screen_to_sequence(range.
end()));
1735 void adjacent_screen_positions(
int seq_pos,
int& screen_pos_left,
int& screen_pos_right);
1744 update_needed =
true;
1747 if (show_above_percent!=above_percent) {
1748 show_above_percent = above_percent;
1750 update_needed =
true;
1755 void mark_compile_needed();
1756 void mark_compile_needed_force();
1762 int scr_pos = sequence_to_screen_PLAIN(seq_pos);
1763 if (scr_pos<0)
return false;
1764 if (scr_pos>0)
return true;
1766 int seq_pos2 = screen_to_sequence_tab[0];
1767 return seq_pos == seq_pos2;
1779 bool update_remap();
1790 class ED4_species_manager
FINAL_TYPE : public ED4_manager {
1800 ~ED4_species_manager() OVERRIDE;
1809 highlighted = highlight;
1822 ED4_manager *temp_parent =
parent;
1823 while (temp_parent && !(temp_parent->
spec.
level & lev)) {
1824 temp_parent = temp_parent->
parent;
1832 return sman ? sman->to_species_manager() :
NULp;
1892 void draw() OVERRIDE;
1894 ED4_tree_terminal(const
char *
id,
AW_pos width,
AW_pos height, ED4_manager *parent);
1904 void toggle_folding();
1917 virtual int get_length()
const = 0;
1970 void SET_aaSeqFlags (
int startPos,
int strandType) { aaStartPos = startPos; aaStrandType = strandType; }
1971 void SET_aaSequence(
const char *aaSeq) { freedup(aaSequence, aaSeq); aaSeqLen = strlen(aaSequence); }
1982 bool shall_display_secstruct_info;
2007 return col_term ? col_term->to_columnStat_terminal() :
NULp;
2018 char *likelihood[4];
2021 static double threshold;
2023 int update_likelihood();
2029 void draw() OVERRIDE;
2030 int get_length() const OVERRIDE {
return corresponding_sequence_terminal()->get_length(); }
2032 static int threshold_is_set();
2033 static void set_threshold(
double aThreshold);
2039 ~ED4_columnStat_terminal() OVERRIDE;
2044 class ED4_species_name_terminal
FINAL_TYPE : public ED4_text_terminal {
2046 bool set_dynamic_size() OVERRIDE;
2050 ~ED4_species_name_terminal() OVERRIDE {
delete highlight_info; }
2056 GB_CSTR get_displayed_text()
const;
2057 int get_length() const OVERRIDE {
return strlen(get_displayed_text()); }
2061 return seq_term ? seq_term->to_sequence_terminal() :
NULp;
2071 bool set_dynamic_size() OVERRIDE;
2076 GB_CSTR get_displayed_text() const;
2077 int get_length() const OVERRIDE;
2082 class ED4_sequence_info_terminal
FINAL_TYPE : public ED4_text_terminal {
2084 bool set_dynamic_size() OVERRIDE;
2087 ED4_sequence_info_terminal(const
char *
id,
AW_pos width,
AW_pos height, ED4_manager *parent);
2089 ED4_species_name_terminal *corresponding_species_name_terminal()
const {
2093 void draw() OVERRIDE;
2106 ED4_pure_text_terminal(
const char *
id,
AW_pos width,
AW_pos height, ED4_manager *parent);
2118 const BaseFrequencies& get_char_table()
const {
return get_group_manager()->table(); }
2124 #if defined(ASSERTION_USED)
2128 int get_length() const OVERRIDE;
2129 char *get_sequence_copy(
int *str_len =
NULp) const
FINAL_OVERRIDE {
return get_group_manager()->build_consensus_string(str_len); }
2138 bool set_dynamic_size() OVERRIDE;
2141 void Show(
bool refresh_all,
bool is_cleared) OVERRIDE;
2142 void draw() OVERRIDE;
2144 ED4_spacer_terminal(const
char *
id,
bool shallDraw_,
AW_pos width,
AW_pos height, ED4_manager *parent);
2163 bool set_dynamic_size() OVERRIDE;
2166 void draw() OVERRIDE;
2168 ED4_flag_terminal(const
char *
id,
AW_pos width,
AW_pos height, ED4_manager *parent);
2198 return sm->setCursorTo(cursor, seq_pos, unfoldGroups, jump_type);
2234 ED4_species_manager *consensus_man = get_consensus_manager();
2235 return consensus_man ? consensus_man->get_name_terminal() :
NULp;
2246 #if defined(ASSERTION_USED)
2353 #error ed4_class included twice
virtual bool fulfilled_by(const ED4_terminal *) const =0
void ED4_selected_species_changed_cb(AW_root *aw_root)
ED4_species_name_terminal * ED4_find_SAI_name_terminal(const char *sai_name)
void calc_rel_coords(AW_pos *x, AW_pos *y)
void clr_property(ED4_properties prop)
bool inside_SAI_manager() const
bool column_stat_activated
void set_both_links(ED4_base *ref)
static bool have_context()
void ED4_set_iupac(AW_window *aww, const char *awar_name)
void set_resize(int value)
int is_pure_text_terminal() const
ED4_returncode clear_refresh()
void remove_cb(BASECB cb)
AW_device * get_device() const
void ED4_get_marked_from_menu(AW_window *)
void group_species_cb(AW_window *aww, bool use_fields)
ED4_sequence_info_terminal * column_stat_info()
ED4_base * get_competent_child(AW_pos x, AW_pos y, ED4_properties relevant_prop)
virtual void delete_requested_children()=0
bool is_species_seq_terminal() const
void calc_no_of_all(const char *string_to_scan, long *group, long *species)
AW_device * current_device()
E4B_DECL_CASTOP(area_manager)
void resize_requested_by_child()
void ED4_jump_to_cursor_position(AW_window *aww, const char *awar_name, PositionType posType)
ED4_folding_line(AW_pos world, AW_pos dim)
ED4_returncode set_width()
ED4_returncode move_cursor(AW_event *event)
static PosRange from(int pos)
char * build_consensus_string(int *cons_length=NULp) const
bool is_hidden() const FINAL_OVERRIDE
virtual bool is_hidden() const =0
void set_to_terminal(ED4_terminal *terminal, int seq_pos, ED4_CursorJumpType jump_type)
ED4_reference_terminals()
ED4_returncode ShowCursor(ED4_index offset_x, ED4_cursor_move move, int move_pos=1)
AW_device * get_device(AW_area area)
ED4_LocalWinContext(ED4_window *ew)
void move(const Vector &movement)
void insert_member(ED4_base *new_member)
bool compile_needed() const
ED4_window * window() const
int is_text_terminal() const
void resize_requested_by_link(ED4_base *link)
ED4_MostRecentWinContext()
void announce_deletion(ED4_terminal *object)
ED4_area_manager * top_area_man
void set_dimension(AW_pos dim)
virtual char * resolve_pointer_to_string_copy(int *str_len=NULp) const
ARB_ERROR rebuild_consensus(ED4_base *object)
AW_window * ED4_create_group_species_by_field_window(AW_root *aw_root)
ED4_terminal * get_first_terminal(int start_index=0) const
bool is_SAI_terminal() const
void ED4_horizontal_change_cb(AW_window *aww)
ED4_base * member(ED4_index i) const
ED4_scrolled_rectangle scrolled_rect
ED4_group_manager * is_in_folded_group() const
GBDATA * get_species_pointer() const
void update_window_coords()
GB_alignment_type GetAliType() OVERRIDE
virtual ARB_ERROR route_down_hierarchy(const ED4_route_cb &cb)
ED4_SearchResults & results() const
ED4_properties static_prop
ED4_columnStat_terminal * corresponding_columnStat_terminal() const
bool in_species_seq_terminal() const
int is_columnStat_terminal() const
ED4_remap_mode get_mode() const
ExplicitRange clip_screen_range(PosRange screen_range) const
int get_abs_len(const ED4_terminal *term)
ED4_area_manager * middle_area_man
ED4_base * get_defined_level(ED4_level lev) const
virtual void remove_callbacks()=0
bool all_are_selected() const
BaseFrequencies & table()
AW::Position world_to_win_coords(const AW::Position &pos) const
void ED4_request_relayout()
virtual void resize_requested_children()=0
void Show(bool refresh_all, bool is_cleared) OVERRIDE
void warn_illegal_dimension()
void set_secstruct_display(bool show)
bool shows_xpos(int x) const
void add_sequence_changed_cb(const ED4_species_managerCallback &cb)
void win_to_world_coords(AW_pos *xPtr, AW_pos *yPtr) const
int slider_pos_horizontal
void ED4_create_consensus_awars(AW_root *aw_root)
void set_species_pointer(GBDATA *gbd)
bool is_shown(int seq_pos) const
ED4_returncode search_sequence_data_rek(ED4_multi_sequence_manager *multi_sequence_manager, ED4_reference_terminals &refterms, GBDATA *gb_ali_xxx, int count_too, ED4_index *max_sequence_terminal_length, bool isSAI)
int is_flag_header_terminal() const
int base2sequence_position(int base_pos) const
ED4_reference * reference
ED4_highlighted_entry * highlight_info
bool column_stat_initialized
ED4_multi_species_manager * get_multi_species_manager() const
static void touch_world_cache()
int is_species_manager() const
void ED4_trigger_instant_refresh()
ED4_highlighted_list * highlighted_objects
static char * alignment_name
void update_world_coords_cache() const
char awar_path_for_IUPAC[50]
ED4_terminal * get_top_middle_spacer_terminal() const
ED4_list< ED4_highlighted_entry > ED4_highlighted_list
AW_pos win2world(AW_pos win) const
ED4_update_info update_info
void delete_requested_children() OVERRIDE
ED4_list< ED4_base > ED4_base_list
ED4_base * search_ID(const char *id) FINAL_OVERRIDE
ED4_window * get_matching_ed4w(AW_window *aww)
void update_scrolled_rectangle()
size_t get_max_screen_pos() const
void ED4_clear_stored_curpos()
int get_sequence_position(const ED4_terminal *base, int base_position)
ED4_species_type get_species_type() const
static double get_threshold()
ED4_terminal * owner_of_cursor
int slider_pos_horizontal
current position of the vertical slider
void create_consensus(ED4_abstract_group_manager *upper_group_manager, arb_progress *progress)
void ED4_change_cursor(AW_window *aww)
static ED4_window * insert_window(AW_window_menu_modes *new_aww)
void ED4_selected_SAI_changed_cb(AW_root *aw_root)
static void init_object_specs()
bool is_species_seq_manager() const
int get_base_position() const
virtual void Show(bool refresh_all, bool is_cleared)=0
ED4_folding_line * insert_folding_line(AW_pos pos, AW_pos dimension, ED4_properties prop)
ED4_returncode clear_background(int color=0)
void SET_aaSequence(const char *aaSeq)
AW_gc_manager * gc_manager
bool in_SAI_terminal() const
void ED4_request_full_instant_refresh()
virtual void deleted_from_database()
const ED4_folding_line * get_horizontal_folding()
void ED4_request_full_refresh()
ED4_reference_terminals ref_terminals
bool allowed_to_contain(ED4_level child_level) const
char awar_path_for_basePos[50]
#define DECLARE_DUMP_FOR_MIDCLASS(self, mybase)
char buffer[MESSAGE_BUFFERSIZE]
int get_base_count(const ED4_terminal *term)
virtual void update_requested_children()=0
ED4_base * find_first_that(ED4_level level, const ED4_basePredicate &fulfills_predicate)
void unlink_from_parent()
AW_window * ED4_create_new_seq_window(AW_root *root, SpeciesCreationMode creation_mode)
int get_screen_pos() const
void ED4_quit_editor(AW_window *aww)
#define DOWNCAST(totype, expr)
DECLARE_CBTYPE_FVV_AND_BUILDERS(ED4_managerCallback, void, ED4_manager *)
static int get_species(char *species_string, unsigned int species_number, char *buffer)
int sequence2base_position(int seq_pos) const
int is_multi_species_manager() const
virtual char * get_sequence_copy(int *str_len=NULp) const
void set_top_middle_spacer_terminal(ED4_terminal *top_middle_spacer_)
void ED4_motion_cb(AW_window *aww)
void remove_delete_callback(const ED4_managerCallback &cb)
void jump_screen_pos(int screen_pos, ED4_CursorJumpType jump_type)
ED4_list_elem< ED4_base > ED4_base_list_elem
void remove_callbacks() OVERRIDE
void announce_deletion(ED4_terminal *object)
bool has_property(ED4_properties prop) const
AW::Vector get_size() const
void world_to_win_coords(AW_pos *xPtr, AW_pos *yPtr) const
ED4_level restriction_level
void save_current_config(char *confname)
int is_sequence_manager() const
const AW::Position & calc_world_coords() const
MARK_NONFINAL_CLASS(ED4_sequence_terminal)
bool is_consensus_manager() const
ED4_scroll_picture scroll_picture
void ed4_change_edit_mode(AW_root *root)
void ED4_jump_to_current_species(AW_window *)
void ED4_new_editor_window(AW_window *aww)
ED4_WinContext(ED4_window *ed4w_)
char * build_consensus_string(PosRange range) const
bool is_child_of(ED4_manager *Parent)
virtual ED4_returncode event_sent_by_parent(AW_event *event, AW_window *aww)=0
static void recalc_descendants()
bool is_hidden_inside_group() const
char * get_name_of_species()
void append_member(ED4_base *new_member)
AW_window * ED4_create_saveConfigurationAs_window(AW_root *awr)
ED4_index members() const
bool inside_species_seq_manager() const
void ED4_compression_toggle_changed_cb(AW_root *root, bool hideChanged)
int is_abstract_group_manager() const
void ED4_no_dangerous_modes()
ED4_returncode move_member(ED4_index old_pos, ED4_index new_pos)
ED4_folding_line * delete_member(ED4_folding_line *fl)
void update_requested_children() OVERRIDE
ED4_manager(const ED4_objspec &spec_, const char *id, AW_pos width, AW_pos height, ED4_manager *parent)
AW_window * ED4_create_loadConfiguration_window(AW_root *awr)
void add_delete_callback(const ED4_managerCallback &cb)
const double & ypos() const
void jump_base_pos(int base_pos, ED4_CursorJumpType jump_type)
bool is_highlighted() const
GBDATA * get_gb_main() const
ED4_returncode handle_move(ED4_move_info *moveinfo)
ED4_terminal * get_last_terminal(int start_index=-1) const
void check_valid_scrollbar_values()
LoadableSaiState loadable_SAIs
void ED4_alignment_length_changed(GBDATA *gb_alignment_len, GB_CB_TYPE gbtype)
virtual void request_refresh(int clear=1)=0
void announce_deletion(const ED4_terminal *term)
DECLARE_DUMP_FOR_BASECLASS(ED4_manager, ED4_base)
int get_length() const OVERRIDE
PosRange sequence_to_screen(PosRange range) const
void ED4_input_cb(AW_window *aww)
ED4_returncode rebuild_consensi(ED4_base *start_species, ED4_update_flag update_flag)
ED4_multi_species_manager * ED4_find_MoreSequences_manager()
ED4_species_name_terminal * ED4_find_species_name_terminal(const char *species_name)
ED4_species_name_terminal * ED4_find_species_or_SAI_name_terminal(const char *species_name)
virtual const char * resolve_pointer_to_char_pntr(int *str_len=NULp) const
bool in_consensus_terminal() const
void Set(GBDATA *gbd, ED4_base *base)
void ED4_remote_event(AW_event *faked_event)
ED4_window * first_window
ED4_species_name_terminal * get_name_terminal() const
ED4_terminal * get_next_terminal()
ED4_returncode fill_data(ED4_multi_species_manager *multi_species_manager, ED4_reference_terminals &refterms, char *str, int group_depth, ED4_datamode datamode)
void set_links(ED4_base *width_ref, ED4_base *height_ref)
ED4_returncode show_clicked_cursor(AW_pos click_xpos, ED4_terminal *target_terminal)
ED4_returncode event_sent_by_parent(AW_event *event, AW_window *aww) FINAL_OVERRIDE
void scan_string(ED4_multi_species_manager *parent, ED4_reference_terminals &refterms, const char *str, int *index, arb_progress &progress)
int is_device_manager() const
ED4_window(AW_window_menu_modes *window)
virtual void changed_by_database()
bool has_callback() const
void reset_all_for_new_config()
AW_window * current_aww()
ED4_returncode move_requested_by_parent(ED4_move_info *mi)
ED4_objspec(ED4_properties static_prop_, ED4_level level_, ED4_level allowed_children_, ED4_level handled_level_, ED4_level restriction_level_)
E4B_AVOID_UNNEEDED_CASTS(manager)
ED4_root_group_manager * root_group_man
int sequence_to_screen_PLAIN(int sequence_pos) const
int shown_sequence_to_screen(int sequence_pos) const
bool is_unlimited() const
ED4_level get_possible_descendants() const
void set_screen_relative_pos(int scroll_to_relpos)
ED4_columnStat_terminal * column_stat()
const BaseFrequencies & table() const
~ED4_reference_terminals()
char awar_path_for_cursor[50]
int is_multi_sequence_manager() const
ARB_ERROR route_down_hierarchy(const ED4_route_cb &cb) FINAL_OVERRIDE
void ED4_consensus_definition_changed(AW_root *)
ED4_main_manager * main_manager
void deleted_from_database() OVERRIDE
bool calc_bounding_box() FINAL_OVERRIDE
bool valid_index(ED4_index idx) const
#define PREPARE_MARK_NONFINAL_CLASS(CLASS)
void calc_world_coords(AW_pos *x, AW_pos *y) const
ED4_group_manager * ED4_build_group_manager_start(ED4_manager *group_parent, GB_CSTR group_name, int group_depth, bool is_folded, ED4_reference_terminals &refterms, ED4_multi_species_manager *&multi_species_manager)
ED4_returncode HideCursor()
void set_mode(ED4_remap_mode Mode, int above_percent)
CONSTEXPR_INLINE bool valid(SpeciesCreationMode m)
virtual ~ED4_consensus_sequence_terminal()
void ed4_changesecurity(AW_root *root)
AW::Vector get_parent_offset() const
void ED4_get_and_jump_to_current(AW_window *)
ED4_LocalWinContext(AW_window *aww)
unsigned int update_requested
MARK_NONFINAL_METHOD(ED4_manager, update_requested_children,())
void ED4_consensus_display_changed(AW_root *root)
void ED4_exit() __ATTR__NORETURN
void delete_window(ED4_window *window)
int is_line_terminal() const
ED4_scroll_links scroll_links
int is_sequence_info_terminal() const
AW_window * ED4_create_loadSAI_window(AW_root *awr)
GB_alignment_type alignment_type
ED4_base(const ED4_objspec &spec_, GB_CSTR id, AW_pos width, AW_pos height, ED4_manager *parent)
bool setCursorTo(ED4_cursor *cursor, int seq_pos, bool unfoldGroups, ED4_CursorJumpType jump_type)
const ConsensusBuildParams & get_consensus_params()
bool is_SAI_manager() const
bool inside_consensus_manager() const
void changeType(ED4_CursorType typ)
void ED4_vertical_change_cb(AW_window *aww)
const ED4_manager * owner() const
void ED4_compression_changed_cb(AW_root *awr)
AW_pos world2win(AW_pos world) const
ED4_sequence_terminal * corresponding_sequence_terminal() const
int adjust_clipping_rectangle()
void set_top_middle_line_terminal(ED4_terminal *top_middle_line_)
bool knownNonNull(const void *nonnull)
ED4_terminal * get_top_middle_line_terminal() const
ED4_species_name_terminal * get_consensus_name_terminal() const
void ED4_calc_terminal_extentions()
ED4_multi_species_manager * get_multi_species_manager() const
ED4_sequence_info_terminal * sequence_info()
void Delete() FINAL_OVERRIDE
ED4_window * get_ed4w() const
bool is_consensus_terminal() const
bool visualizeSAI_allSpecies
int is_orf_terminal() const
ED4_returncode fill_species(ED4_multi_species_manager *multi_species_manager, ED4_reference_terminals &refterms, const char *str, int *index, int group_depth, arb_progress *progress)
ED4_returncode update_bases_and_rebuild_consensi(const char *old_seq, int old_len, ED4_base *species, ED4_update_flag update_flag, PosRange range=PosRange::whole())
fputs(TRACE_PREFIX, stderr)
ED4_base * search_spec_child_rek(ED4_level level)
bool is_completely_visible() const
ED4_cursor & current_cursor()
ED4_species_name_terminal * corresponding_species_name_terminal() const
void generate_configuration_string(GBS_strstruct &buffer)
bool scrollbars_and_scrolledRect_inSync() const
void ED4_init_notFoundMessage()
ED4_returncode remove_member(ED4_base *member)
void set_property(ED4_properties prop)
ED4_CursorType getType() const
void ED4_restore_curpos(AW_window *aww)
char awar_path_for_Ecoli[50]
void ED4_with_all_edit_windows(void(*cb)(ED4_window *))
void ED4_store_curpos(AW_window *aww)
AW::Position win_to_world_coords(const AW::Position &pos) const
long terminal_add_spacing
bool is_consensus_sequence_terminal() const
ED4_cursor(ED4_window *win)
int get_length() const OVERRIDE
int is_name_manager() const
const ED4_folding_line * get_next() const
ED4_AREA_LEVEL get_area_level(ED4_multi_species_manager **multi_species_manager=NULp) const
char awar_path_for_helixNr[50]
bool existing_index(ED4_index idx) const
ED4_returncode update_bases(const ED4_base *old_base, const ED4_base *new_base, PosRange range=PosRange::whole())
ED4_returncode distribute_children()
void SET_aaSeqFlags(int startPos, int strandType)
ED4_returncode show_cursor_at(ED4_terminal *target_terminal, ED4_index what_pos)
ED4_returncode move_requested_by_child(ED4_move_info *moveinfo)
AW_pos get_dimension() const
void jump_sequence_pos(int sequence_pos, ED4_CursorJumpType jump_type)
const char * get_alignment_name() const
void insertAs(ED4_folding_line *&ptr)
ED4_window * current_ed4w()
ED4_seq_colors * sequence_colors
void delete_requested_by_child()
~ED4_text_terminal() OVERRIDE
void ED4_resize_all_extensions()
void ED4_get_and_jump_to_species(GB_CSTR species_name)
~ED4_MostRecentWinContext()
ED4_sequence_terminal * sequence()
void ED4_reloadConfiguration(AW_window *aww)
static ARB_init_perl_interface init
void update_requested_by_child()
long window_right_clip_point
DECLARE_DUMP_FOR_ROOTCLASS(ED4_base)
ED4_returncode set_scrolled_rectangle(ED4_base *x_link, ED4_base *y_link, ED4_base *width_link, ED4_base *height_link)
static const ED4_WinContext & get_current_context()
ED4_returncode scroll_rectangle(int dx, int dy)
void ED4_set_helixnr(AW_window *aww, const char *awar_name)
void ED4_popup_gc_window(AW_window *awp, AW_gc_manager *gcman)
ED4_returncode refresh_requested_by_child()
bool completely_shows(int x1, int y1, int x2, int y2) const
int is_multi_name_manager() const
void ED4_remote_set_cursor_cb(AW_root *awr)
const double & xpos() const
ED4_species_manager * containing_species_manager() const
ED4_level allowed_children
void ED4_build_group_manager_end(ED4_multi_species_manager *multi_species_manager)
GB_alignment_type GetAliType() FINAL_OVERRIDE
PosRange screen_to_sequence(PosRange range) const
int is_area_manager() const
const ED4_remap * remap() const
ED4_index search_member(ED4_extension *location, ED4_properties prop)
MARK_NONFINAL_FUNCTION(ED4_base, bool, set_dynamic_size,(), false)
AW::Rectangle get_win_area(ED4_window *ed4w) const
void request_resize_of_linked()
void SET_aaColor(const char *aaSeq)
AW_device * get_device() const
ED4_level get_allowed_descendants() const
ED4_returncode search_target_species(ED4_extension *location, ED4_properties prop, ED4_base **found_member, ED4_level return_level)
int is_sequence_terminal() const
int get_base_position(const ED4_terminal *base, int sequence_position)
void ED4_saveConfiguration(AW_window *aww, bool hide_aww)
virtual ED4_base * search_ID(const char *id)=0
int is_flag_terminal() const
ED4_species_mode species_mode
void delete_folding_line(ED4_folding_line *fl, ED4_properties prop)
void resize_requested_children() OVERRIDE
ED4_returncode check_in_bases(ED4_base *added_base)
void changed_by_database() OVERRIDE
const AlignDataAccess * ED4_get_aligner_data_access()
void add_to_dimension(AW_pos offset)
int is_bracket_terminal() const
int get_sequence_pos() const
ED4_list_elem< ED4_highlighted_entry > ED4_highlighted_elem
AW_window_menu_modes * aww
const GBDATA * data() const
virtual ~ED4_TerminalPredicate()
const ED4_folding_line * get_vertical_folding()
bool partly_shows(int x1, int y1, int x2, int y2) const
int has_valid_counters() const
ED4_returncode check_out_bases(ED4_base *subbed_base)
void ED4_scrollbar_change_cb(AW_window *aww)
long window_left_clip_point
bool is_partly_visible() const
void announce_added(ED4_level child_level) const
ED4_terminal * get_prev_terminal()
void remove_sequence_changed_cb(const ED4_species_managerCallback &cb)
int is_spacer_terminal() const
int get_screen_relative_pos() const
ED4_device_manager * get_device_manager()
AW_window * ED4_create_consensus_definition_window(AW_root *root)
ED4_manager * get_parent(ED4_level lev) const
void update_consensus(ED4_manager *old_parent, ED4_manager *new_parent, ED4_base *sequence)
void ED4_helix_jump_opposite(AW_window *aww)
int slider_pos_vertical
window id
#define E4B_IMPL_CASTOP(name)
AW_window * ED4_create_editor_options_window(AW_root *root)
void set_highlighted(bool highlight)
bool has_parent(ED4_manager *Parent)
static ED4_WinContext current_context
const ED4_terminal * get_consensus_relevant_terminal() const
int is_group_manager() const
void loadable_SAIs_may_have_changed()
ED4_properties dynamic_prop
#define DECLARE_DUMP_FOR_LEAFCLASS(mybase)
void announce_deletion(ED4_base *object)
virtual bool calc_bounding_box()=0
void ED4_get_and_jump_to_selected_SAI(AW_window *aww)
int is_species_name_terminal() const
void request_refresh(int clear=1) FINAL_OVERRIDE
ED4_base * get_competent_clicked_child(AW_pos x, AW_pos y, ED4_properties relevant_prop)
int is_root_group_manager() const
void ED4_finish_and_show_notFoundMessage()
ED4_window * get_most_recently_used_window() const
short in_border(AW_pos abs_x, AW_pos abs_y, ED4_movemode mode)