36 #define AWAR_SAI_CLR_TAB "saicolors/"
37 #define AWAR_SAI_VISUALIZED AWAR_SAI_CLR_TAB "current" // current visualized SAI
38 #define AWAR_SAI_CLR_DEF AWAR_SAI_CLR_TAB "clr_trans_tab/" // container for definitions
39 #define AWAR_SAI_ENABLE AWAR_SAI_CLR_TAB "enable" // global enable of visualization
40 #define AWAR_SAI_ALL_SPECIES AWAR_SAI_CLR_TAB "all_species" // 1 = all / 0 = marked
41 #define AWAR_SAI_AUTO_SELECT AWAR_SAI_CLR_TAB "auto_select" // 1 = auto select / 0 = manual select
42 #define AWAR_SAI_CLR_TRANS_TABLE AWAR_SAI_CLR_TAB "clr_trans_table" // current translation table
43 #define AWAR_SAI_CLR_TRANS_TAB_NAMES AWAR_SAI_CLR_TAB "clr_trans_tab_names" // ;-separated list of existing translation tables
44 #define AWAR_SAI_CLR_TRANS_TAB_REL AWAR_SAI_CLR_TAB "sai_relation/" // container to store trans tables for each SAI
46 #define AWAR_SAI_CLR "tmp/sai/color_0" // the definition of the current translation table (number runs from 0 to 9)
47 #define AWAR_SAI_CLR_COUNT 10
62 (strchr(buf, 0)-1)[0] =
'0'+awarNo;
93 const char *searchFrom = tableNames;
94 int len = strlen(name);
97 const char *found = strstr(searchFrom, name);
100 if ((found == tableNames || found[-1] ==
'\n') &&
101 (found[len] ==
'\n' || found[len] == 0))
106 searchFrom = found+1;
129 unsigned char charUsed[256]; memset(charUsed, 255, 256);
132 for (
int i=0; i<10; i++) {
134 for (
int c=0; awarString_next[c]; ++c) {
135 charUsed[(
unsigned char)awarString_next[c]] = i;
137 free(awarString_next);
141 for (
int c=0; awarString[c]; ++c) {
142 charUsed[(
unsigned char)awarString[c]] = awarNo;
147 typedef unsigned char mystr[256];
149 for (
int i=0; i<10; i++) s[i][0]=0;
151 for (
int i=0; i<256; i++) {
152 int table = charUsed[i];
154 char *eos = strchr((
char *)s[table], 0);
162 for (
int i=0; i<10; i++) {
166 clrDefStr.
cat(escaped);
178 aw_message(
"Please select a VALID Color Translation Table to EDIT.");
203 for (
int i=0; i<10; i++) {
216 for (
int si = 0; clrTabDef[si]; ++si) {
217 if (clrTabDef[si] ==
';') {
221 if (tokStart == si) {
225 int toklen = si-tokStart;
228 e4_assert(clrTabDef[tokStart+toklen] ==
';');
229 clrTabDef[tokStart+toklen] = 0;
235 clrTabDef[tokStart+toklen] =
';';
267 char *saiName =
NULp;
281 char *transTabName =
NULp;
312 colorTransList->
clear();
314 for (
char *tok = strtok(clrTransTabNames,
"\n"); tok; tok = strtok(
NULp,
"\n")) {
315 colorTransList->
insert(tok, tok);
320 free(clrTransTabNames);
326 printf(
"curr_sai='%s'\n", curr_sai);
333 static bool callback_active =
false;
337 callback_active =
true;
340 if (callback_active) {
342 callback_active =
false;
356 : newClrTransTabName);
377 for (
int i=0; i<10; i++) {
394 addDefaultTransTable(aw_root,
"PVP",
"012;345;678;9ABab;CDEcde;FGHfgh;IJKLijkl;MNOPmnop;QRSTqrst;UVWXYZuvwxyz;");
412 if (!dest_table_input[0]) error =
"not a valid name";
417 error =
GBS_global_string(
"Color translation table '%s' already exists.", dest_table);
427 if (!src_table[0]) error =
"Please select a valid source table";
446 const char *helpfile =
"visualizeSAI.hlp";
450 case ED4_VIS_COPY:
AWT_activate_prompt(
"Copy color translation table",
"Enter destination table name:", selected_table,
"Copy", handler, helpfile);
break;
460 char *clrTransTabNames = awar_tabNames->
read_string();
463 for (
const char *tok = strtok(clrTransTabNames,
"\n"); tok; tok = strtok(
NULp,
"\n")) {
464 if (strcmp(clrTabName, tok) != 0) {
465 newTransTabName.
cat(tok);
466 newTransTabName.
put(
'\n');
473 free(clrTransTabNames);
476 aw_message(
"Selected Color Translation Table is not VALID and cannot be DELETED!");
486 return colorTransList;
490 static int seqBufferSize = 0;
491 static char *saiColors =
NULp;
492 static int lastStart = -1;
493 static int lastEnd = -1;
494 static bool lastVisualize =
false;
499 return saiColors-
start;
504 int seqSize = end-start+1;
506 if (seqSize>seqBufferSize) {
508 seqBufferSize = seqSize;
511 else memset(saiColors, 0,
sizeof(
char)*seqSize);
519 bool visualize =
false;
524 const char *saiData =
NULp;
525 bool free_saiData =
false;
533 saiSequence =
GB_entry(gb_ali,
"bits");
542 char trans_table[256];
545 memset(trans_table, 0, 256);
550 for (
char *d = def; *d; ++d) {
551 trans_table[(
unsigned char)*d] = clrRange;
558 for (
int i = start; i <= end; ++i) {
559 saiColors[i-
start] = trans_table[(
unsigned char)saiData[i]];
566 free(const_cast<char*>(saiData));
573 lastVisualize = visualize;
576 return saiColors-
start;
607 static AW_window_simple *aws =
NULp;
609 aws =
new AW_window_simple;
610 aws->init(aw_root,
"EDIT_CTT",
"Color Translation Table");
611 aws->load_xfig(
"saiColorRange.fig");
613 char at_name[] =
"rangex";
614 char *dig = strchr(at_name, 0)-1;
624 aws->create_button(
"CLOSE",
"CLOSE",
"C");
628 aws->create_button(
"REVERSE",
"Reverse",
"R");
632 aws->button_length(0);
633 aws->create_button(
"COLORS",
"#colors.xpm");
639 static AW_window_simple *aws =
NULp;
641 aws =
new AW_window_simple;
643 aws->init(aw_root,
"VISUALIZE_SAI",
"Visualize SAIs");
644 aws->load_xfig(
"visualizeSAI.fig");
648 aws->create_button(
"HELP",
"HELP",
"H");
652 aws->create_button(
"CLOSE",
"CLOSE",
"C");
658 aws->button_length(30);
661 aws->at(
"auto_select");
664 aws->at(
"clrTrList");
668 aws->button_length(10);
670 aws->create_button(
"EDIT",
"EDIT");
674 aws->create_button(
"CREATE",
"CREATE");
678 aws->create_button(
"COPY",
"COPY");
682 aws->create_button(
"DELETE",
"DELETE");
686 aws->insert_toggle(
"MARKED SPECIES",
"M", 0);
687 aws->insert_toggle(
"ALL SPECIES",
"A", 1);
688 aws->update_toggle_field();
#define AWAR_SAI_ALL_SPECIES
static AW_selection_list * buildClrTransTabNamesList(AW_window *aws)
static void reverseColorTranslationTable(AW_window *aww)
void insert_default(const char *displayed, const AW_scalar &value)
GB_ERROR GB_add_callback(GBDATA *gbd, GB_CB_TYPE type, const DatabaseCallback &dbcb)
const char * ED4_getSaiColorString(AW_root *awr, int start, int end)
static const char * getClrDefAwar(const char *awarName)
static void autoselect_cb(AW_root *aw_root)
static void createCopy_ClrTransTab_cb(AW_window *aww, CreationMode mode)
static AW_window * create_editColorTranslationTable_window(AW_root *aw_root)
char * GB_read_as_string(GBDATA *gbd)
const char * GBS_global_string(const char *templat,...)
#define AWAR_SAI_VISUALIZED
void AW_POPDOWN(AW_window *window)
char * GBS_escape_string(const char *str, const char *chars_to_escape, char escape_char)
char * GBS_string_2_key(const char *str)
void cat(const char *from)
static void deleteColorTranslationTable(AW_window *aws)
#define AWAR_SAI_CLR_TRANS_TAB_NAMES
void awt_create_SAI_selection_button(GBDATA *gb_main, AW_window *aws, const char *varname, const SaiSelectionlistFilterCallback &fcb)
static void setVisualizeSAI_cb(AW_root *awr)
AW_gc_manager * gc_manager
static void refresh_display_cb(GB_CB_TYPE cb_type)
static bool in_colorDefChanged_callback
GB_ERROR GB_push_transaction(GBDATA *gbd)
static GB_ERROR createCopy_table_handler(const char *dest_table_input, CreationMode mode)
AW_awar * add_callback(const RootCallback &cb)
void insert(const char *displayed, const AW_scalar &value)
static HelixNrInfo * start
GBDATA * GBT_find_SAI(GBDATA *gb_main, const char *name)
const char * read_char_pntr() const
static AW_root * SINGLETON
WindowCallback makeHelpCallback(const char *helpfile)
const char * awarname(const char *awarname_template, int idx)
static void colorDefChanged_callback(AW_root *awr, int awarNo)
GBDATA * get_gb_main() const
static void error(const char *msg)
void ED4_createVisualizeSAI_Awars(AW_root *aw_root, AW_default aw_def)
static void addDefaultTransTable(AW_root *aw_root, const char *newClrTransTabName, const char *defaultDefinition)
static void setVisualizeSAI_options_cb(AW_root *awr)
char * read_string() const
AW_awar * awar(const char *awar)
GB_ERROR GB_pop_transaction(GBDATA *gbd)
#define AWAR_SAI_CLR_TRANS_TABLE
AW_awar * remove_callback(const RootCallback &cb)
char * GBS_unescape_string(const char *str, const char *escaped_chars, char escape_char)
static bool colorTransTable_exists(AW_root *awr, const char *name)
#define AWAR_SAI_AUTO_SELECT
bool visualizeSAI_allSpecies
AW_awar * awar_int(const char *var_name, long default_value=0, AW_default default_file=AW_ROOT_DEFAULT)
TYPE * ARB_calloc(size_t nelem)
#define IF_ASSERTION_USED(x)
static bool clrDefinitionsChanged
static void set_autoselect_cb(AW_root *aw_root)
#define AWAR_SAI_CLR_COUNT
const char * get_alignment_name() const
void GB_remove_callback(GBDATA *gbd, GB_CB_TYPE type, const DatabaseCallback &dbcb)
AW_selection_list * create_selection_list(const char *awar_name, int columns, int rows)
static void update_ClrTransTabNamesList_cb(AW_root *awr, AW_selection_list *colorTransList)
static void colorDefTabNameChanged_callback(AW_root *awr)
void aw_message(const char *msg)
void ED4_popup_gc_window(AW_window *awp, AW_gc_manager *gcman)
AW_window * ED4_createVisualizeSAI_window(AW_root *aw_root)
static void saiChanged_callback(AW_root *awr)
void request_refresh_for_sequence_terminals()
#define AWAR_SAI_CLR_TRANS_TAB_REL
GB_ERROR write_string(const char *aw_string)
const char * get_data() const
static const char * getAwarName(int awarNo)
GB_transaction ta(gb_var)
GB_CSTR GB_read_char_pntr(GBDATA *gbd)
static AW_awar * sai_transtab_awar(AW_root *awr, const char *saiName)
AW_awar * awar_string(const char *var_name, const char *default_value="", AW_default default_file=AW_ROOT_DEFAULT)
static void addOrUpdateTransTable(AW_root *aw_root, const char *newClrTransTabName, const char *defaultDefinition, bool autoselect)
GBDATA * GB_entry(GBDATA *father, const char *key)
void AWT_activate_prompt(const char *title, const char *prompt, const char *defaultResult, const char *button, const ResultHandler &handle_result, const char *helpfile, const char *srt)
GB_write_int const char s