28 #define SEQ_COLOR_SETS 8
29 #define SEQ_COLOR_SET_ELEMS 28 // has to be a even number!
31 #define AWAR_SEQ_PATH "awt/seq_colors/"
32 #define AWAR_SEQ_NAME_STRINGS_TEMPLATE AWAR_SEQ_PATH "strings/elem_%i"
33 #define AWAR_SEQ_NAME_TEMPLATE AWAR_SEQ_PATH "set_%i/elem_%i"
34 #define AWAR_SEQ_NAME_SELECTOR_NA AWAR_SEQ_PATH "na/select"
35 #define AWAR_SEQ_NAME_SELECTOR_AA AWAR_SEQ_PATH "aa/select"
39 "=2=0=3=0=0=0=4=0=0=0=0=0=0=6=0=0=0=0=0=5=5=0=0=0=0=0=0=6",
40 "R2=0Y3=0=0=0R2=0=0=0=0=0=0=0=0=0=0=2=0Y3Y3=0=0=0=3=0=0=6",
41 "=6=5=6=5=7=7=6=5=7=7=3=7=3=9=7=7=7=3=3=6=6=5=3=7=3=7=7=6",
42 "=7=0=7=8=2=9=8=9=3=0=2=3=7=8=0=8=2=2=2=2=0=3=9=6=9=0=0=6",
44 "=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=6",
45 "o9=0|2=0=0=0o5=0=0=0=0=0=0=0=0=0=0=0=0|8|8=0=0=0=0=0=0=6",
46 "=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=6",
47 "=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=6",
55 static char result[3] =
"xX";
61 else if (elem == 26) {
65 else if (elem == 27) {
74 static char result[3] =
"=0";
75 const char *pos = default_sets[cset]+2*elem;
80 if (result[0] ==
'=' && result[1] ==
'0') result[0] = 0;
120 static AW_window_simple *aws =
NULp;
125 aws =
new AW_window_simple;
126 aws->init(awr,
"SEQUENCE_MAPPING",
"Sequence color mapping");
129 aws->auto_space(0, 3);
132 aws->create_button(
"CLOSE",
"CLOSE",
"C");
135 aws->create_button(
"HELP",
"HELP");
139 for (
int seqType=0; seqType<2; seqType++) {
144 sprintf(buf,
"%i", cset+1);
145 aws->insert_toggle(buf,
" ", cset);
147 aws->update_toggle_field();
151 const int BIG_COLUMNS = 2;
152 const int CHAR_COL_WIDTH = 4;
153 const int SET_COL_WIDTH = 2;
157 aws->auto_space(3, 2);
159 for (
int bcol = 0; bcol<BIG_COLUMNS; ++bcol) {
160 col_x_off[bcol][0] = aws->get_at_xposition();
161 aws->button_length(CHAR_COL_WIDTH);
162 aws->create_button(
NULp,
"Chars");
164 aws->button_length(SET_COL_WIDTH);
166 sprintf(buf,
" %i", cset+1);
167 col_x_off[bcol][cset+1] = aws->get_at_xposition();
168 aws->create_button(
NULp, buf);
172 int set_col_pixel_width = col_x_off[0][1]-col_x_off[0][0];
173 aws->at_x(aws->get_at_xposition()+set_col_pixel_width);
180 for (
int r = 0; r<ROWS; r++) {
181 for (
int bcol = 0; bcol<BIG_COLUMNS; ++bcol) {
182 int elem = bcol*ROWS+r;
185 aws->at_x(col_x_off[bcol][0]);
186 aws->create_input_field(buf, CHAR_COL_WIDTH);
190 aws->at_x(col_x_off[bcol][cset+1]);
191 aws->create_input_field(buf, SET_COL_WIDTH);
207 for (
int i=0; i<256; i++) {
218 for (
int selector = 0; selector<2; selector++) {
220 long cset = aw_root->
awar(selector_awar[selector])->
read_int();
230 unsigned char *sc = (
unsigned char *)aw_root->
awar(awar_name)->
read_string();
234 if (!val[0]) freedup(val,
"=0");
236 if (strlen(val) != 2 || val[1] >
'9' || val[1] <
'0') {
241 for (
int i=0; sc[i]; i++) {
247 for (
int i=0; sc[i]; i++) {
285 void ED4_reference::reset_gap_table() {
286 for (
int i = 0; i<256; ++i)
is_gap[i] =
false;
292 for (
int i = 0; gaptypes[i]; ++i) {
299 if (len>ref_len &&
is_set()) {
300 char *ref2 = ARB_calloc<char>(len+1);
303 strcpy(ref2, reference);
311 void ED4_reference::update_data() {
318 #if defined(ASSERTION_USED)
336 sman->remove_sequence_changed_cb(makeED4_species_managerCallback(
refdata_changed_cb,
this));
352 sman->add_sequence_changed_cb(makeED4_species_managerCallback(
refdata_changed_cb,
this));
362 #define APREFIX_DIFF_SAVE "edit4/diff/"
363 #define APREFIX_DIFF_TEMP "tmp/" APREFIX_DIFF_SAVE
365 #define AWAR_DIFF_TYPE APREFIX_DIFF_TEMP "type"
366 #define AWAR_DIFF_NAME APREFIX_DIFF_TEMP "name"
367 #define AWAR_NODIFF_INDICATOR APREFIX_DIFF_SAVE "indicator"
368 #define AWAR_DIFF_MINDCASE APREFIX_DIFF_SAVE "mindcase"
369 #define AWAR_DIFF_MINDGAPTYPE APREFIX_DIFF_SAVE "mindgaptype"
370 #define AWAR_DIFF_GAPTYPES APREFIX_DIFF_SAVE "gaptypes"
392 aw_message(
"Please set the cursor to a species, SAI or group consensus.");
415 awar_refName->
write_string(nameTerm->get_displayed_text());
419 aw_message(
"Not supported for this terminal type");
432 if (!enable || refTerm) {
434 if (refTerm) last_used_ref_term_name =
ARB_strdup(refTerm->
id);
459 if (last_used_ref_term_name.isSet()) {
462 last_used_ref_term = found->to_terminal();
465 if (last_used_ref_term) {
506 if (!viewDifferences_awars_initialized) {
514 viewDifferences_awars_initialized =
true;
528 currType = lastActiveType;
531 lastActiveType = currType;
552 static AW_window_simple *aws =
NULp;
556 aws =
new AW_window_simple;
557 aws->init(awr,
"VIEW_DIFF",
"View sequence differences");
558 aws->load_xfig(
"edit4/viewdiff.fig");
562 aws->create_button(
"CLOSE",
"CLOSE",
"C");
566 aws->create_button(
"HELP",
"HELP");
570 aws->insert_toggle(
"None (=disable)",
"N",
VD_DISABLED);
572 aws->insert_toggle(
"Follow cursor",
"F",
VD_FOLLOW);
573 aws->update_toggle_field();
576 aws->button_length(20);
580 aws->button_length(4);
582 aws->create_button(
"SET",
"SET");
static void diff_setting_changed_cb(AW_root *awr)
static void nodiff_indicator_changed_cb(AW_root *awr)
bool is_species_seq_terminal() const
#define AWAR_SEQ_NAME_SELECTOR_AA
AW_awar * set_srt(const char *srt)
static ED4_terminal * detect_current_ref_terminal()
static void color_awar_changed_cb(AW_root *, ED4_seq_colors *sc)
static void create_seq_color_awars(AW_root *awr, ED4_seq_colors *sc)
static int default_AMI_set
ED4_seq_colors(int baseGC, void(*changed_cb)())
CONSTEXPR_INLINE unsigned char safeCharIndex(char c)
bool is_SAI_terminal() const
static void set_current_as_diffRef(bool enable)
char * ARB_strdup(const char *str)
#define AWAR_SEQ_NAME_SELECTOR_NA
ED4_reference * reference
const char * GBS_global_string(const char *templat,...)
void AW_POPDOWN(AW_window *window)
ED4_terminal * owner_of_cursor
static const char * default_sets[SEQ_COLOR_SETS]
AW_window * ED4_create_viewDifferences_window(AW_root *awr)
static int default_NUC_set
virtual char * get_sequence_copy(int *str_len=NULp) const
static bool viewDifferences_awars_initialized
AW_awar * add_callback(const RootCallback &cb)
void remove_delete_callback(const ED4_managerCallback &cb)
void request_refresh_for_specific_terminals(ED4_level lev)
const char * read_char_pntr() const
#define AWAR_SEQ_NAME_STRINGS_TEMPLATE
static AW_root * SINGLETON
static const char * default_characters(int elem)
WindowCallback makeHelpCallback(const char *helpfile)
#define AWAR_DIFF_GAPTYPES
static void update_reference_settings(AW_root *awr)
GB_ERROR rewrite_int(long aw_int)
static const char * default_color(int cset, int elem)
void ED4_viewDifferences_announceTerminalChange()
void add_delete_callback(const ED4_managerCallback &cb)
void expand_to_length(int len)
AW_window * ED4_create_seq_colors_window(AW_root *awr, ED4_seq_colors *sc)
void data_changed_cb(ED4_species_manager *calledFrom)
ED4_main_manager * main_manager
static unsigned update_cb(AW_root *aw_root)
void ED4_viewDifferences_setNewReference()
char * read_string() const
AW_awar * awar(const char *awar)
void set_nodiff_indicator(char ind)
static void change_reference_cb(AW_window *aww)
static void diff_type_changed_cb(AW_root *awr)
static void refdata_changed_cb(ED4_species_manager *sman, ED4_reference *ref)
bool is_consensus_terminal() const
static void create_viewDifferences_awars(AW_root *awr)
GB_ERROR GB_export_errorf(const char *templat,...)
ED4_cursor & current_cursor()
AW_awar * awar_int(const char *var_name, long default_value=0, AW_default default_file=AW_ROOT_DEFAULT)
const char * anyGapChars()
STATIC_ASSERT((ED4_G_SEQUENCES+1)==ED4_G_HELIX)
ED4_species_name_terminal * corresponding_species_name_terminal() const
#define IF_ASSERTION_USED(x)
static void refdata_deleted_cb()
bool is_consensus_sequence_terminal() const
void ED4_viewDifferences_disable()
void ED4_toggle_viewDifferences(AW_root *awr)
static SmartCharPtr last_used_ref_term_name
void aw_message(const char *msg)
bool reference_is_a_consensus() const
static void set_diff_reference(ED4_terminal *refTerm)
GB_ERROR write_string(const char *aw_string)
#define AWAR_SEQ_NAME_TEMPLATE
#define AWAR_DIFF_MINDGAPTYPE
#define AWAR_DIFF_MINDCASE
#define SEQ_COLOR_SET_ELEMS
AW_window_menu_modes * aww
#define AWAR_NODIFF_INDICATOR
AW_awar * awar_string(const char *var_name, const char *default_value="", AW_default default_file=AW_ROOT_DEFAULT)
ED4_manager * get_parent(ED4_level lev) const
static bool seq_color_awars_created
GB_ERROR write_int(long aw_int)
void set_case_sensitive(bool mindcase_)
void define(const ED4_sequence_terminal *rterm)
void set_gap_handling(bool mindgaptype_, const char *gaptypes)