18 #define TEST_REFRESH_FLAG
123 temp_parent = start_species;
125 switch (update_flag) {
127 while (temp_parent) {
129 multi_species_manager = temp_parent->to_group_manager()->get_multi_species_manager();
130 for (i=0; i<multi_species_manager->
members(); i++) {
136 temp_parent = temp_parent->
parent;
140 while (temp_parent) {
142 first_group_manager = temp_parent->to_group_manager();
144 temp_parent = temp_parent->
parent;
146 if (first_group_manager)
155 ED4_species_manager *species_manager = added_base->to_species_manager();
158 if (sequence_terminal) {
179 ED4_species_manager *species_manager = subbed_base->to_species_manager();
182 if (sequence_terminal) {
207 const ED4_species_manager *new_species_manager = new_base->to_species_manager();
229 ED4_species_manager *new_species_manager = new_base->to_species_manager();
235 #if defined(DEBUG) && 0
236 printf(
"old: %s\n", old_sequence);
237 printf(
"new: %s\n", new_sequence);
245 changedRange = ⦥
253 result = (result1 !=
ED4_R_OK) ? result1 : result2;
273 const ED4_species_manager *old_species_manager = old_base->to_species_manager();
274 const ED4_species_manager *new_species_manager = new_base->to_species_manager();
294 return update_bases(&old_base->to_group_manager()->table(),
295 &new_base->to_group_manager()->table(),
305 #define WITH_ALL_ABOVE_GROUP_MANAGER_TABLES(walk_up, COMMAND) \
308 if (walk_up->is_abstract_group_manager()) { \
309 BaseFrequencies& char_table = walk_up->to_abstract_group_manager()->table(); \
310 char_table.COMMAND; \
311 if (char_table.is_ignored()) break; \
313 walk_up = walk_up->parent; \
329 #if defined(DEBUG) && 0
330 printf(
"update_bases(..., %i, %i)\n", start_pos, end_pos);
386 #undef WITH_ALL_ABOVE_GROUP_MANAGER_TABLES
390 for (
int i=0; i <
members(); i++) {
403 for (
int i=start_index; !terminal && i>=0 && i<
members(); i++) {
406 terminal = base->to_terminal();
409 terminal = base->to_manager()->get_first_terminal();
419 if (start_index<0) start_index =
members()-1;
420 for (
int i=start_index; !terminal && i>=0 && i<
members(); i--) {
423 terminal = base->to_terminal();
426 terminal = base->to_manager()->get_last_terminal();
444 if ((temp_index < 0) || (temp_index >=
members())) {
448 child =
member(temp_index);
493 bool i_am_consensus =
false;
500 while (
object && !(object->
spec.
level & mlevel))
object = object->
parent;
508 i_am_consensus =
true;
509 if (object->
parent !=
this) {
510 object =
object->parent->parent;
531 if (found_member==
object) {
539 parent_man->to_multi_species_manager()->invalidate_species_counters();
543 object->extension.position[
Y_POS] = rel_y;
546 object->parent =
this;
548 if (old_parent !=
this) {
555 if ((i_am_consensus && object->
parent != old_parent) || !i_am_consensus) {
561 object->flag.hidden = 1;
568 to_multi_species_manager()->invalidate_species_counters();
631 temp_parent = temp_parent->to_group_manager()->get_defined_level(
LEV_MULTI_SPECIES);
639 return temp_parent->to_manager()->handle_move(mi);
671 #ifdef TEST_REFRESH_FLAG
684 if (!child->to_manager()->refresh_flag_ok()) {
690 printf(
"Forgotten refresh-flag in '%s' (son of '%s')\n", child->
id,
id);
705 if (linked_objects) {
707 while (current_list_elem) {
709 object->resize_requested_by_link(
this);
710 current_list_elem = current_list_elem->
next();
743 bool bb_changed =
false;
769 AW_pos max_other_size = 0;
834 void ED4_main_manager::resize_requested_children() {
835 if (update_info.resize) {
841 void ED4_main_manager::Show(
bool refresh_all,
bool is_cleared) {
842 #ifdef TEST_REFRESH_FLAG
848 if (!
flag.hidden && (refresh_all || update_info.refresh)) {
849 #if defined(TRACE_REFRESH)
850 fprintf(stderr,
"- really paint in ED4_main_manager::Show(refresh_all=%i, is_cleared=%i)\n",
int(refresh_all),
int(is_cleared));
fflush(stderr);
856 if (update_info.clear_at_refresh && !is_cleared) {
872 x2 =
int(flv->get_pos());
882 y2 =
int(flh->get_pos());
913 get_top_middle_spacer_terminal()->Show(
true,
false);
914 get_top_middle_line_terminal()->Show(
true,
false);
926 #ifdef TEST_REFRESH_FLAG
934 #if defined(TRACE_REFRESH)
935 printf(
"map updated in ED4_root_group_manager::Show (bad?)\n");
942 #ifdef TEST_REFRESH_FLAG
967 rect.
r = rect.
l+(clip_rect.
r-clip_rect.
l);
968 rect.
b = rect.
t+(clip_rect.
b-clip_rect.
t);
973 int first_visible_child = 0;
994 goto no_visible_child_found;
1034 no_visible_child_found :
1046 if (!(((y-rect.
b)>0.5) ||
1055 child->
Show(refresh_all, is_cleared);
1063 #ifdef TEST_REFRESH_FLAG
1071 for (
int i=0; i<
members(); i++) {
1076 child->to_manager()->clear_refresh();
1116 for (
int i=0; i<
members(); i++) {
1129 update_species_counters();
1147 for (
int i =
members()-1; i >= 0; --i) {
1171 if (!
tflag.deleted) {
1179 delete_cbs.
call(
this);
1182 for (
int i=0; i<
members(); i++) {
1201 if (strcmp(temp_id,
id) == 0)
return this;
1206 if (
object)
return object;
1214 ED4_base(spec_, temp_id, width, height, temp_parent)
1224 ED4_main_manager::ED4_main_manager(
const char *temp_id,
AW_pos width,
AW_pos height,
ED4_manager *temp_parent) :
1226 top_middle_line(
NULp),
1227 top_middle_spacer(
NULp)
1253 selected_species(-1)
1259 update_species_counters();
1267 update_species_counters();
1270 return selected_species;
1276 selected_species = -1;
1279 if (pms) pms->to_multi_species_manager()->invalidate_species_counters();
1285 void ED4_multi_species_manager::set_species_counters(
int no_of_species,
int no_of_selected) {
1290 count_species(&sp, &sel);
1295 e4_assert(no_of_species>=no_of_selected);
1297 if (species!=no_of_species || selected_species!=no_of_selected) {
1298 int species_diff = no_of_species-species;
1299 int selected_diff = no_of_selected-selected_species;
1302 if (species==-1 || selected_species==-1) {
1306 species = no_of_species;
1307 selected_species = no_of_selected;
1319 parent_multi_species_man->set_species_counters(parent_multi_species_man->species+species_diff,
1320 parent_multi_species_man->selected_species+selected_diff);
1327 void ED4_multi_species_manager::count_species(
int *speciesPtr,
int *selectedPtr)
const {
1341 multi_species_man->count_species(&sp1, &sel1);
1351 ED4_species_manager *species_man = child->to_species_manager();
1352 if (!species_man->is_consensus_manager()) {
1354 if (species_man->is_highlighted()) sel++;
1364 void ED4_multi_species_manager::update_species_counters() {
1376 multi_species_man->update_species_counters();
1382 ED4_species_manager *species_man = child->to_species_manager();
1384 if (!species_man->is_consensus_manager()) {
1386 if (species_man->is_highlighted()) sel++;
1390 set_species_counters(sp, sel);
1408 ED4_species_manager *species_man = child->to_species_manager();
1410 if (!species_man->is_consensus_manager()) {
1412 if (!species_man->is_highlighted()) {
1413 if (!only_species || !species_man->is_SAI_manager()) {
1414 ED4_species_name_terminal *species_name = species_man->search_spec_child_rek(
LEV_SPECIES_NAME)->to_species_name_terminal();
1418 if (species_man->is_highlighted()) sel++;
1422 set_species_counters(sp, sel);
1437 ED4_species_manager *species_man = child->to_species_manager();
1439 if (!species_man->is_consensus_manager()) {
1441 if (species_man->is_highlighted()) {
1442 ED4_species_name_terminal *species_name = species_man->search_spec_child_rek(
LEV_SPECIES_NAME)->to_species_name_terminal();
1451 set_species_counters(sp, 0);
1468 ED4_species_manager *species_man = child->to_species_manager();
1470 if (!species_man->is_consensus_manager()) {
1473 if (!species_man->is_SAI_manager()) {
1474 ED4_species_name_terminal *species_name = species_man->search_spec_child_rek(
LEV_SPECIES_NAME)->to_species_name_terminal();
1479 if (species_man->is_highlighted()) sel++;
1505 ED4_species_manager *species_man = child->to_species_manager();
1507 if (!species_man->is_consensus_manager()) {
1510 if (species_man->is_species_seq_manager()) {
1511 GBDATA *gbd = species_man->get_species_pointer();
1517 if (!species_man->is_highlighted()) {
1518 ED4_species_name_terminal *species_name = species_man->search_spec_child_rek(
LEV_SPECIES_NAME)->to_species_name_terminal();
1523 if (species_man->is_highlighted()) {
1524 ED4_species_name_terminal *species_name = species_man->search_spec_child_rek(
LEV_SPECIES_NAME)->to_species_name_terminal();
1530 if (species_man->is_highlighted()) sel++;
1537 set_species_counters(sp, sel);
1554 ED4_species_manager *species_man = child->to_species_manager();
1556 if (!species_man->is_consensus_manager()) {
1558 if (species_man->is_highlighted()) {
1559 if (species_man->is_species_seq_manager()) {
1560 GBDATA *gbd = species_man->get_species_pointer();
1573 set_species_counters(sp, sel);
1577 ED4_species_manager *consensus_manager =
NULp;
1579 for (
int i=0; i<
members(); i++) {
1582 consensus_manager = child->to_species_manager();
1587 return consensus_manager;
1602 ED4_species_manager::~ED4_species_manager() {
1608 ew->cursor.prepare_shutdown();
1617 ED4_manager(spec_, temp_id, width, height, temp_parent),
1632 show_above_percent = 0;
1634 sequence_table_len = 1;
1635 screen_table_len = 1;
1637 screen_to_sequence_tab =
new int[1]; screen_to_sequence_tab[0] = 0;
1638 sequence_to_screen_tab =
new int[1]; sequence_to_screen_tab[0] = 0;
1643 update_needed =
true;
1647 delete [] screen_to_sequence_tab;
1648 delete [] sequence_to_screen_tab;
1651 if (
size_t(screen_pos) == screen_len) {
1652 return screen_to_sequence_tab[screen_len-1];
1654 e4_assert(screen_pos>=0 &&
size_t(screen_pos)<screen_len);
1655 return screen_to_sequence_tab[screen_pos];
1658 if (sequence_pos<0) {
1661 else if (
size_t(sequence_pos)>sequence_len) {
1662 sequence_pos = sequence_len;
1668 if (scr_pos<0) scr_pos = -scr_pos;
1675 screen_pos_left = -1;
1676 for (
int p = seq_pos-1; screen_pos_left<0 && p>=0; --p) {
1679 screen_pos_right = -1;
1680 for (
int p = seq_pos+1; screen_pos_right<0 &&
size_t(p)<=sequence_len; ++p) {
1685 inline void ED4_remap::set_sequence_to_screen(
int pos,
int newVal,
bool& mapping_changed) {
1686 e4_assert(pos>=0 &&
size_t(pos)<sequence_table_len);
1687 if (sequence_to_screen_tab[pos]!=newVal) {
1688 sequence_to_screen_tab[pos] = newVal;
1689 mapping_changed =
true;
1693 if (!update_needed) {
1694 update_needed =
true;
1710 bool mapping_changed =
false;
1711 update_needed =
false;
1713 sequence_len = table.
size();
1714 if ((sequence_len+1) > sequence_table_len) {
1715 delete [] sequence_to_screen_tab;
1716 sequence_to_screen_tab =
new int[sequence_table_len = sequence_len+1];
1717 memset(sequence_to_screen_tab, 0, sequence_table_len*
sizeof(
int));
1718 mapping_changed =
true;
1726 for (i=0; i<sequence_table_len; i++) {
1727 set_sequence_to_screen(i, i, mapping_changed);
1729 screen_len = sequence_len;
1733 above_percent = show_above_percent;
1740 for (i=0, j=0; i<(sequence_table_len-1); i++) {
1746 if (bases==0 && gaps==0) {
1747 set_sequence_to_screen(i, -j, mapping_changed);
1752 e4_assert(percent==((bases*100)/(bases+gaps)));
1754 if (bases && percent>=above_percent) {
1755 set_sequence_to_screen(i, j++, mapping_changed);
1758 set_sequence_to_screen(i, -j, mapping_changed);
1762 for (; i<sequence_table_len; i++) {
1763 set_sequence_to_screen(i, j++, mapping_changed);
1769 for (i=0, j=0; i<(sequence_table_len-1); i++) {
1774 set_sequence_to_screen(i, j++, mapping_changed);
1779 while (k<(sequence_table_len-1)) {
1793 shown_gapsize = gaps/10 + 1;
1795 else if (gaps<1000) {
1796 shown_gapsize = gaps/100 + 10;
1799 shown_gapsize = gaps/1000 + 19;
1802 for (; i<k && shown_gapsize; i++, shown_gapsize--) {
1803 set_sequence_to_screen(i, j++, mapping_changed);
1806 set_sequence_to_screen(i, -j, mapping_changed);
1811 for (; i<sequence_table_len; i++) {
1812 set_sequence_to_screen(i, j++, mapping_changed);
1819 if (sequence_table_len) {
1820 if (!screen_len && sequence_len) {
1823 if ((screen_len+1) > screen_table_len) {
1824 delete [] screen_to_sequence_tab;
1825 screen_to_sequence_tab =
new int[screen_table_len = screen_len+1];
1827 memset(screen_to_sequence_tab, 0,
sizeof(
int)*screen_table_len);
1828 for (i=0; i<sequence_table_len; i++) {
1829 int screen_pos = sequence_to_screen_tab[i];
1830 if (screen_pos>=0) {
1831 screen_to_sequence_tab[screen_pos] = i;
1836 if (sequence_len>1) {
1840 #if defined(DEBUG) && 0
1841 fputs(
"-------------------- rebuild column mapping:\n", stderr);
1842 fprintf(stderr,
"sequence: len=%6zu table_len=%6zu\n", sequence_len, sequence_table_len);
1843 fprintf(stderr,
"screen: len=%6zu table_len=%6zu\n", screen_len, screen_table_len);
1844 fputs(
"--------------------\n", stderr);
1848 static bool checked_all_collapsed =
false;
1849 if (!checked_all_collapsed) {
1850 if (sequence_len>1) {
1851 checked_all_collapsed =
true;
1853 aw_message(
"All columns hidden. Check 'Properties/Editor options/Show all gaps'");
1858 return mapping_changed;
void calc_rel_coords(AW_pos *x, AW_pos *y)
static ED4_objspec multi_species_manager_spec((ED4_properties)(PROP_IS_MANAGER|PROP_HORIZONTAL), LEV_MULTI_SPECIES,(ED4_level)(LEV_SPECIES|LEV_GROUP|LEV_SPACER), LEV_NONE, LEV_NONE)
void PV_SequenceUpdate_CB(GB_CB_TYPE gbtype)
void mark_compile_needed()
void set_resize(int value)
ED4_returncode clear_refresh()
ED4_base * get_competent_child(AW_pos x, AW_pos y, ED4_properties relevant_prop)
virtual void delete_requested_children()=0
AW_device * current_device()
ED4_multi_species_manager(const char *id, AW_pos width, AW_pos height, ED4_manager *parent)
const char * resolve_pointer_to_char_pntr(int *str_len=NULp) const FINAL_OVERRIDE
int screen_to_sequence(int screen_pos) const
void resize_requested_by_child()
static ED4_objspec sequence_manager_spec((ED4_properties)(PROP_IS_MANAGER|PROP_VERTICAL), LEV_SEQUENCE,(ED4_level)(LEV_SEQUENCE_INFO|LEV_SEQUENCE_STRING|LEV_ORF|LEV_PURE_TEXT|LEV_COL_STAT), LEV_NONE, LEV_SPECIES)
ED4_returncode ShowCursor(ED4_index offset_x, ED4_cursor_move move, int move_pos=1)
void insert_member(ED4_base *new_member)
const AW_screen_area & get_area_size() const
bool compile_needed() const
void resize_requested_by_link(ED4_base *link)
ED4_level preferred_parent
bool nearlyEqual(const double &val1, const double &val2)
void set_left_clip_border(int left, bool allow_oversize=false)
ARB_ERROR rebuild_consensus(ED4_base *object)
int reduceClipBorders(int top, int bottom, int left, int right)
ED4_terminal * get_first_terminal(int start_index=0) const
ED4_base * member(ED4_index i) const
void deselect_all_species_and_SAI()
const AW_screen_area & get_cliprect() const
ED4_properties static_prop
ED4_remap_mode get_mode() const
virtual void remove_callbacks()=0
void update_requested_children() OVERRIDE
BaseFrequencies & table()
void ED4_request_relayout()
virtual void resize_requested_children()=0
void Show(bool refresh_all, bool is_cleared) OVERRIDE
void win_to_world_coords(AW_pos *xPtr, AW_pos *yPtr) const
void set_top_clip_border(int top, bool allow_oversize=false)
bool is_shown(int seq_pos) const
#define ED4_AWAR_COMPRESS_SEQUENCE_TYPE
ED4_species_manager * get_consensus_manager() const
void marked_species_select(bool select)
static void touch_world_cache()
int is_species_manager() const
void delete_requested_children() OVERRIDE
ED4_update_info update_info
void delete_requested_children() OVERRIDE
ED4_base * search_ID(const char *id) FINAL_OVERRIDE
void update_scrolled_rectangle()
ED4_terminal * owner_of_cursor
virtual void Show(bool refresh_all, bool is_cleared)=0
ED4_root_group_manager(const char *id, AW_pos width, AW_pos height, ED4_manager *parent)
ED4_returncode clear_background(int color=0)
static ED4_objspec root_group_manager_spec((ED4_properties)(PROP_IS_MANAGER|PROP_VERTICAL), LEV_ROOTGROUP,(ED4_level)(LEV_DEVICE), LEV_NONE, LEV_NONE)
const ED4_folding_line * get_horizontal_folding()
virtual void update_requested_children()=0
void unlink_from_parent()
int is_multi_species_manager() const
bool compile(ED4_root_group_manager *gm)
void remove_callbacks() OVERRIDE
bool has_property(ED4_properties prop) const
void request_refresh_for_specific_terminals(ED4_level lev)
ED4_level restriction_level
int get_no_of_selected_species()
bool is_consensus_manager() const
bool is_child_of(ED4_manager *Parent)
virtual ED4_returncode event_sent_by_parent(AW_event *event, AW_window *aww)=0
void invalidate_species_counters()
ED4_index members() const
unsigned int clear_at_refresh
GB_ERROR ED4_pfold_set_SAI(char **protstruct, GBDATA *gb_main, const char *alignment_name, long *protstruct_len)
Sets the reference protein secondary structure SAI.
void update_requested_children() OVERRIDE
ED4_manager(const ED4_objspec &spec_, const char *id, AW_pos width, AW_pos height, ED4_manager *parent)
GBDATA * get_gb_main() const
int sequence_to_screen(int sequence_pos) const
ED4_returncode handle_move(ED4_move_info *moveinfo)
ED4_terminal * get_last_terminal(int start_index=-1) const
#define WITH_ALL_ABOVE_GROUP_MANAGER_TABLES(walk_up, COMMAND)
const PosRange * changed_range(const BaseFrequencies &other) const
ED4_multi_sequence_manager(const char *id, AW_pos width, AW_pos height, ED4_manager *parent)
virtual void request_refresh(int clear=1)=0
ED4_returncode rebuild_consensi(ED4_base *start_species, ED4_update_flag update_flag)
void set_refresh(int value)
struct ED4_terminal::@8 tflag
void remove_from_highlighted(ED4_species_name_terminal *object)
ED4_returncode add_to_highlighted(ED4_species_name_terminal *object)
static ED4_objspec group_manager_spec((ED4_properties)(PROP_IS_MANAGER|PROP_VERTICAL), LEV_GROUP,(ED4_level)(LEV_MULTI_SPECIES|LEV_BRACKET), LEV_NONE, LEV_NONE)
ED4_window * first_window
void bases_and_gaps_at(int column, int *bases, int *gaps) const
static ED4_objspec area_manager_spec((ED4_properties)(PROP_IS_MANAGER|PROP_VERTICAL), LEV_AREA,(ED4_level)(LEV_MULTI_SPECIES|LEV_TREE|LEV_SPACER), LEV_NONE, LEV_NONE)
ED4_returncode event_sent_by_parent(AW_event *event, AW_window *aww) FINAL_OVERRIDE
void expect_no_error() const
void mark_compile_needed_force()
int get_max_width() const
ED4_returncode move_requested_by_parent(ED4_move_info *mi)
bool set_size_does_change(int idx, AW_pos value)
ED4_device_manager(const char *id, AW_pos width, AW_pos height, ED4_manager *parent)
#define ED4_AWAR_COMPRESS_SEQUENCE_PERCENT
ED4_root_group_manager * root_group_man
int sequence_to_screen_PLAIN(int sequence_pos) const
ED4_name_manager(const char *id, AW_pos width, AW_pos height, ED4_manager *parent)
GB_write_int const char GB_write_autoconv_string WRITE_SKELETON(write_pointer, GBDATA *,"%p", GB_write_pointer) char *AW_awa if)(!gb_var) return strdup("")
ARB_ERROR route_down_hierarchy(const ED4_route_cb &cb) FINAL_OVERRIDE
ED4_main_manager * main_manager
static ED4_objspec multi_name_manager_spec((ED4_properties)(PROP_IS_MANAGER|PROP_HORIZONTAL), LEV_MULTI_NAME, LEV_NAME_MANAGER, LEV_NONE, LEV_NONE)
void invert_selection_of_all_species()
bool calc_bounding_box() FINAL_OVERRIDE
void calc_world_coords(AW_pos *x, AW_pos *y) const
int GB_read_flag(GBDATA *gbd)
void set_mode(ED4_remap_mode Mode, int above_percent)
AW_awar * awar(const char *awar)
unsigned int update_requested
unsigned int delete_requested
static ED4_objspec multi_sequence_manager_spec((ED4_properties)(PROP_IS_MANAGER|PROP_HORIZONTAL), LEV_MULTI_SEQUENCE, LEV_SEQUENCE, LEV_NONE, LEV_NONE)
ED4_list_elem * next() const
GB_alignment_type alignment_type
static ED4_objspec species_manager_spec((ED4_properties)(PROP_IS_MANAGER|PROP_VERTICAL), LEV_SPECIES,(ED4_level)(LEV_MULTI_SEQUENCE|LEV_MULTI_NAME|LEV_SPECIES_NAME|LEV_SEQUENCE|LEV_FLAG_HEADER), LEV_NONE, LEV_NONE)
void selected_species_mark(bool mark)
int adjust_clipping_rectangle()
static void update_scrolled_rectangles(ED4_window *win)
static ED4_objspec name_manager_spec((ED4_properties)(PROP_IS_MANAGER|PROP_VERTICAL), LEV_NAME_MANAGER,(ED4_level)(LEV_SPECIES_NAME|LEV_FLAG), LEV_NONE, LEV_SPECIES)
void Delete() FINAL_OVERRIDE
void set_right_clip_border(int right, bool allow_oversize=false)
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)
ED4_sequence_manager(const char *id, AW_pos width, AW_pos height, ED4_manager *parent)
ED4_cursor & current_cursor()
ED4_group_manager(const char *id, AW_pos width, AW_pos height, ED4_manager *parent)
#define IF_ASSERTION_USED(x)
int MAXSEQUENCECHARACTERLENGTH
void remove_all_callbacks()
ED4_returncode remove_member(ED4_base *member)
void GB_write_flag(GBDATA *gbd, long flag)
void ED4_with_all_edit_windows(void(*cb)(ED4_window *))
const ED4_folding_line * get_next() const
void ED4_viewDifferences_disable()
bool existing_index(ED4_index idx) const
ED4_returncode distribute_children()
ED4_returncode update_bases(const ED4_base *old_base, const ED4_base *new_base, PosRange range=PosRange::whole())
ED4_returncode move_requested_by_child(ED4_move_info *moveinfo)
const char * get_alignment_name() const
ED4_window * current_ed4w()
void resize_requested_children() OVERRIDE
void delete_requested_by_child()
ED4_list_elem< T > * head() const
static ED4_objspec main_manager_spec((ED4_properties)(PROP_IS_MANAGER|PROP_HORIZONTAL), LEV_ROOT, LEV_ROOTGROUP, LEV_NONE, LEV_NONE)
void update_requested_by_child()
void aw_message(const char *msg)
void select_all(bool only_species)
ED4_area_manager(const char *id, AW_pos width, AW_pos height, ED4_manager *parent)
ED4_returncode refresh_requested_by_child()
ED4_level allowed_children
void delete_requested_children() OVERRIDE
int is_area_manager() const
ED4_index search_member(ED4_extension *location, ED4_properties prop)
const ED4_remap * remap() const
static ED4_objspec device_manager_spec((ED4_properties)(PROP_IS_MANAGER|PROP_HORIZONTAL), LEV_DEVICE,(ED4_level)(LEV_AREA|LEV_SPACER|LEV_LINE), LEV_NONE, LEV_NONE)
ED4_abstract_group_manager(const ED4_objspec &spec_, const char *id, AW_pos width, AW_pos height, ED4_manager *parent)
void request_resize_of_linked()
ED4_returncode search_target_species(ED4_extension *location, ED4_properties prop, ED4_base **found_member, ED4_level return_level)
virtual ED4_base * search_ID(const char *id)=0
int clipped_sequence_to_screen_PLAIN(int sequence_pos) const
void resize_requested_children() OVERRIDE
char * resolve_pointer_to_string_copy(int *str_len=NULp) const FINAL_OVERRIDE
void adjacent_screen_positions(int seq_pos, int &screen_pos_left, int &screen_pos_right)
ED4_returncode check_in_bases(ED4_base *added_base)
GB_transaction ta(gb_var)
const ED4_folding_line * get_vertical_folding()
int has_valid_counters() const
ED4_returncode check_out_bases(ED4_base *subbed_base)
bool is_partly_visible() const
void Show(bool refresh_all, bool is_cleared) OVERRIDE
ED4_manager * get_parent(ED4_level lev) const
void set_clear_at_refresh(int value)
void update_consensus(ED4_manager *old_parent, ED4_manager *new_parent, ED4_base *sequence)
const ED4_terminal * get_consensus_relevant_terminal() const
int is_group_manager() const
void loadable_SAIs_may_have_changed()
void announce_deletion(ED4_base *object)
virtual bool calc_bounding_box()=0
int added_sequences() 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)
ED4_multi_name_manager(const char *id, AW_pos width, AW_pos height, ED4_manager *parent)
Adds support for protein structure prediction, comparison of two protein secondary structures and of ...
int is_root_group_manager() const
short in_border(AW_pos abs_x, AW_pos abs_y, ED4_movemode mode)