23 #define HELIX_AWAR_ENABLE "Helix/enable"
24 #define HELIX_AWAR_SYMBOL_TEMPLATE "Helix/symbols/%s"
25 #define HELIX_AWAR_PAIR_TEMPLATE "Helix/pairs/%s"
62 for (
int j=0; helix_awars[j].
awar; j++) {
72 right = toupper(right);
93 size_t size2 = strlen(sequence);
95 char *helix = ARB_calloc<char>(
size()+1);
97 for (i=0; i<size2; i++) {
101 helix[i] = undefsymbol;
105 char sym =
get_symbol(sequence[i], sequence[j], pairType);
106 helix[i] = sym ==
' ' ? undefsymbol : sym;
113 static bool recursion =
false;
122 for (
int i = 0; ; i += 3) {
123 char left = toupper(pairdef[i]);
if (!left)
break;
124 char right = toupper(pairdef[i+1]);
if (!right)
break;
127 pairdef[i+1] = right;
129 for (
int j = 0; helix_awars[j].
awar; j++) {
130 if (j != changed_idx) {
134 bool modified =
false;
136 for (
int k = 0; ; k += 3) {
137 char l = toupper(pd2[k]);
if (!l)
break;
138 char r = toupper(pd2[k+1]);
if (!r)
break;
140 if ((left == l && right == r) || (left == r && right == l)) {
150 if (!pd2[k+2])
break;
162 if (!pairdef[i+2])
break;
166 (*refreshCallback)(aww);
175 for (
int j=0; helix_awars[j].
awar; j++) {
178 const char *name = helix_awars[j].
awar;
187 static AW_window_simple *aws =
NULp;
189 aws =
new AW_window_simple;
190 aws->init(awr,
"HELIX_PROPS",
"HELIX_PROPERTIES");
193 aws->auto_space(3, 3);
196 aws->create_button(
"CLOSE",
"CLOSE",
"C");
199 aws->create_button(
"HELP",
"HELP",
"H");
205 const size_t max_awar_len = 18;
206 aws->label_length(max_awar_len);
208 aws->label(
"Show helix?");
209 aws->callback(*refreshCallback);
215 for (
int j = 0; helix_awars[j].
awar; j++) {
218 aw_assert(strlen(helix_awars[j].awar) <= max_awar_len);
221 aws->label(helix_awars[j].awar);
225 if (j == 0) ex = aws->get_at_xposition();
229 aws->create_autosize_button(
NULp, helix_awars[j].awar);
233 aws->callback(*refreshCallback);
#define HELIX_AWAR_SYMBOL_TEMPLATE
void add(const char *awar_name, const char *config_name)
AW_helix(AW_root *awroot)
#define HELIX_AWAR_ENABLE
void AWT_insert_config_manager(AW_window *aww, AW_default default_file_, const char *id, const StoreConfigCallback &store_cb, const RestoreConfigCallback &load_or_reset_cb, const char *macro_id, const AWT_predefined_config *predef)
const char * GBS_global_string(const char *templat,...)
size_t opposite_position(size_t pos) const
void AW_POPDOWN(AW_window *window)
char * char_bind[HELIX_MAX]
char get_symbol(char left, char right, BI_PAIR_TYPE pair_type)
WindowCallback makeHelpCallback(const char *helpfile)
const char * helix_symbol_awar(int idx)
bool is_pairtype(char left, char right, BI_PAIR_TYPE pair_type)
#define HELIX_AWAR_PAIR_TEMPLATE
static helix_pair_def helix_awars[]
char * read_string() const
AW_awar * awar(const char *awar)
char * seq_2_helix(char *sequence, char undefsymbol= ' ')
static PairDefinition pairdef[PAIR_TYPES]
AW_awar * awar_int(const char *var_name, long default_value=0, AW_default default_file=AW_ROOT_DEFAULT)
BI_PAIR_TYPE pairtype(size_t pos) const
AW_awar * add_target_var(char **ppchr)
static void setup_helix_config(AWT_config_definition &cdef)
AW_window * create_helix_props_window(AW_root *awr, const WindowCallback *refreshCallback)
GB_ERROR write_string(const char *aw_string)
static void helix_pairs_changed_cb(AW_window *aww, int changed_idx, const WindowCallback *refreshCallback)
AW_awar * awar_string(const char *var_name, const char *default_value="", AW_default default_file=AW_ROOT_DEFAULT)
const char * helix_pair_awar(int idx)