Commit 88d395877e54b986ebc4dd96b2050af208429471
1 parent
8b490b0d
Exists in
master
and in
3 other branches
Unificando controle de toggles
Showing
8 changed files
with
95 additions
and
62 deletions
Show diff stats
XtGlue.c
| ... | ... | @@ -1002,7 +1002,9 @@ LIB3270_EXPORT int lib3270_wait(seconds) |
| 1002 | 1002 | LIB3270_EXPORT void lib3270_ring_bell(H3270 *session) |
| 1003 | 1003 | { |
| 1004 | 1004 | CHECK_SESSION_HANDLE(session); |
| 1005 | - callbacks->ring_bell(session); | |
| 1005 | + | |
| 1006 | + if(lib3270_get_toggle(session,LIB3270_TOGGLE_BEEP)) | |
| 1007 | + callbacks->ring_bell(session); | |
| 1006 | 1008 | } |
| 1007 | 1009 | |
| 1008 | 1010 | ... | ... |
ansi.c
| ... | ... | @@ -1827,7 +1827,7 @@ ansi_send_pa(int nn) |
| 1827 | 1827 | |
| 1828 | 1828 | void toggle_lineWrap(H3270 *session, struct toggle *t unused, LIB3270_TOGGLE_TYPE type unused) |
| 1829 | 1829 | { |
| 1830 | - if (toggled(LINE_WRAP)) | |
| 1830 | + if (toggled(LIB3270_TOGGLE_LINE_WRAP)) | |
| 1831 | 1831 | wraparound_mode = 1; |
| 1832 | 1832 | else |
| 1833 | 1833 | wraparound_mode = 0; | ... | ... |
glue.c
| ... | ... | @@ -117,31 +117,6 @@ |
| 117 | 117 | char *profile_name = CN; |
| 118 | 118 | #endif /*]*/ |
| 119 | 119 | |
| 120 | -const char *toggle_names[N_TOGGLES] = | |
| 121 | -{ | |
| 122 | - "Monocase", | |
| 123 | - "AltCursor", | |
| 124 | - "CursorBlink", | |
| 125 | - "ShowTiming", | |
| 126 | - "CursorPos", | |
| 127 | - "DSTrace", | |
| 128 | - "ScrollBar", | |
| 129 | - "LineWrap", | |
| 130 | - "BlankFill", | |
| 131 | - "ScreenTrace", | |
| 132 | - "EventTrace", | |
| 133 | - "MarginedPaste", | |
| 134 | - "RectSelect", | |
| 135 | - "CrossHair", | |
| 136 | - "VisibleControl", | |
| 137 | - "AidWait", | |
| 138 | - "FullScreen", | |
| 139 | - "Reconnect", | |
| 140 | - "Insert", | |
| 141 | - "Keypad", | |
| 142 | - "SmartPaste" | |
| 143 | -}; | |
| 144 | - | |
| 145 | 120 | void lib3270_session_free(H3270 *h) |
| 146 | 121 | { |
| 147 | 122 | int f; |
| ... | ... | @@ -319,6 +294,7 @@ static void initialize(void) |
| 319 | 294 | Trace("Initializing library (calls: %d)",init_calls); |
| 320 | 295 | #endif |
| 321 | 296 | |
| 297 | + h3270.selected.begin = h3270.selected.end = -1; | |
| 322 | 298 | initialize_toggles(&h3270,appres.toggle); |
| 323 | 299 | |
| 324 | 300 | #if defined(_WIN32) | ... | ... |
kybd.c
| ... | ... | @@ -651,7 +651,7 @@ static Boolean ins_prep(int faddr, int baddr, int count) |
| 651 | 651 | while (need && (xaddr != next_faddr)) { |
| 652 | 652 | if (ea_buf[xaddr].cc == EBC_null) |
| 653 | 653 | need--; |
| 654 | - else if (toggled(BLANK_FILL) && | |
| 654 | + else if (toggled(LIB3270_TOGGLE_BLANK_FILL) && | |
| 655 | 655 | ((ea_buf[xaddr].cc == EBC_space) || |
| 656 | 656 | (ea_buf[xaddr].cc == EBC_underscore))) { |
| 657 | 657 | if (tb_start == -1) |
| ... | ... | @@ -3653,3 +3653,4 @@ clear_xks(void) |
| 3653 | 3653 | } |
| 3654 | 3654 | } |
| 3655 | 3655 | |
| 3656 | + | ... | ... |
screen.c
| ... | ... | @@ -735,19 +735,6 @@ void popup_system_error(H3270 *session, const char *title, const char *message, |
| 735 | 735 | va_end(args); |
| 736 | 736 | } |
| 737 | 737 | |
| 738 | -/* | |
| 739 | -LIB3270_EXPORT void update_toggle_actions(void) | |
| 740 | -{ | |
| 741 | - int f; | |
| 742 | - | |
| 743 | - if(callbacks && callbacks->toggle_changed) | |
| 744 | - { | |
| 745 | - for(f=0;f< N_TOGGLES;f++) | |
| 746 | - callbacks->toggle_changed(&h3270,f,appres.toggle[f].value,TT_UPDATE,toggle_names[f]); | |
| 747 | - } | |
| 748 | -} | |
| 749 | -*/ | |
| 750 | - | |
| 751 | 738 | void mcursor_set(H3270 *session,LIB3270_CURSOR m) |
| 752 | 739 | { |
| 753 | 740 | CHECK_SESSION_HANDLE(session); | ... | ... |
selection.c
| ... | ... | @@ -219,7 +219,7 @@ LIB3270_EXPORT void lib3270_select_word(H3270 *session, int baddr) |
| 219 | 219 | update_selected_region(session); |
| 220 | 220 | } |
| 221 | 221 | |
| 222 | -LIB3270_EXPORT int lib3270_select_field(H3270 *session, int baddr) | |
| 222 | +LIB3270_EXPORT int lib3270_select_field_at(H3270 *session, int baddr) | |
| 223 | 223 | { |
| 224 | 224 | int start,len; |
| 225 | 225 | |
| ... | ... | @@ -251,3 +251,41 @@ LIB3270_EXPORT int lib3270_select_field(H3270 *session, int baddr) |
| 251 | 251 | |
| 252 | 252 | return 0; |
| 253 | 253 | } |
| 254 | + | |
| 255 | +LIB3270_ACTION( selectfield ) | |
| 256 | +{ | |
| 257 | + lib3270_select_field_at(hSession,hSession->cursor_addr); | |
| 258 | +} | |
| 259 | + | |
| 260 | +LIB3270_ACTION( selectall ) | |
| 261 | +{ | |
| 262 | + int len = hSession->rows*hSession->cols; | |
| 263 | + int baddr; | |
| 264 | + | |
| 265 | + // First remove unselected areas | |
| 266 | + for(baddr = 0; baddr < len; baddr++) | |
| 267 | + { | |
| 268 | + if(!(ea_buf[baddr].attr & LIB3270_ATTR_SELECTED)) | |
| 269 | + { | |
| 270 | + ea_buf[baddr].attr |= LIB3270_ATTR_SELECTED; | |
| 271 | + hSession->update(hSession,baddr,ea_buf[baddr].chr,ea_buf[baddr].attr,baddr == hSession->cursor_addr); | |
| 272 | + } | |
| 273 | + } | |
| 274 | +} | |
| 275 | + | |
| 276 | +LIB3270_ACTION( unselect ) | |
| 277 | +{ | |
| 278 | + int len = hSession->rows*hSession->cols; | |
| 279 | + int baddr; | |
| 280 | + | |
| 281 | + // First remove unselected areas | |
| 282 | + for(baddr = 0; baddr < len; baddr++) | |
| 283 | + { | |
| 284 | + if(ea_buf[baddr].attr & LIB3270_ATTR_SELECTED) | |
| 285 | + { | |
| 286 | + ea_buf[baddr].attr &= ~LIB3270_ATTR_SELECTED; | |
| 287 | + hSession->update(hSession,baddr,ea_buf[baddr].chr,ea_buf[baddr].attr,baddr == hSession->cursor_addr); | |
| 288 | + } | |
| 289 | + } | |
| 290 | +} | |
| 291 | + | ... | ... |
toggles.c
| ... | ... | @@ -52,6 +52,33 @@ |
| 52 | 52 | |
| 53 | 53 | |
| 54 | 54 | |
| 55 | +static const char *toggle_names[LIB3270_TOGGLE_COUNT] = | |
| 56 | +{ | |
| 57 | + "monocase", | |
| 58 | + "cursorblink", | |
| 59 | + "showtiming", | |
| 60 | + "cursorpos", | |
| 61 | + "dstrace", | |
| 62 | + "linewrap", | |
| 63 | + "blankfill", | |
| 64 | + "screentrace", | |
| 65 | + "eventtrace", | |
| 66 | + "marginedpaste", | |
| 67 | + "rectselect", | |
| 68 | + "crosshair", | |
| 69 | + "fullscreen", | |
| 70 | + "reconnect", | |
| 71 | + "insert", | |
| 72 | + "smartpaste", | |
| 73 | + "bold", | |
| 74 | + "keepselected", | |
| 75 | + "underline", | |
| 76 | + "autoconnect", | |
| 77 | + "kpalternative", /**< Keypad +/- move to next/previous field */ | |
| 78 | + "beep", /**< Beep on errors */ | |
| 79 | +}; | |
| 80 | + | |
| 81 | + | |
| 55 | 82 | static void no_callback(H3270 *h, int value, LIB3270_TOGGLE_TYPE reason) |
| 56 | 83 | { |
| 57 | 84 | } |
| ... | ... | @@ -154,7 +181,7 @@ void initialize_toggles(H3270 *session, struct toggle *toggle) |
| 154 | 181 | { |
| 155 | 182 | int f; |
| 156 | 183 | |
| 157 | - for(f=0;f<N_TOGGLES;f++) | |
| 184 | + for(f=0;f<LIB3270_TOGGLE_COUNT;f++) | |
| 158 | 185 | { |
| 159 | 186 | toggle[f].callback = no_callback; |
| 160 | 187 | toggle[f].upcall = toggle_nop; |
| ... | ... | @@ -164,33 +191,35 @@ void initialize_toggles(H3270 *session, struct toggle *toggle) |
| 164 | 191 | toggle[LIB3270_TOGGLE_MONOCASE].upcall = toggle_monocase; |
| 165 | 192 | |
| 166 | 193 | #if defined(X3270_TRACE) |
| 167 | - toggle[DS_TRACE].upcall = toggle_dsTrace; | |
| 168 | - toggle[SCREEN_TRACE].upcall = toggle_screenTrace; | |
| 169 | - toggle[EVENT_TRACE].upcall = toggle_eventTrace; | |
| 194 | + toggle[LIB3270_TOGGLE_DS_TRACE].upcall = toggle_dsTrace; | |
| 195 | + toggle[LIB3270_TOGGLE_SCREEN_TRACE].upcall = toggle_screenTrace; | |
| 196 | + toggle[LIB3270_TOGGLE_EVENT_TRACE].upcall = toggle_eventTrace; | |
| 170 | 197 | #endif |
| 171 | 198 | |
| 172 | 199 | #if defined(X3270_ANSI) |
| 173 | - toggle[LINE_WRAP].upcall = toggle_lineWrap; | |
| 200 | + toggle[LIB3270_TOGGLE_LINE_WRAP].upcall = toggle_lineWrap; | |
| 174 | 201 | #endif |
| 175 | 202 | |
| 176 | -#if defined(X3270_TRACE) | |
| 177 | - if(toggle[DS_TRACE].value) | |
| 178 | - toggle[DS_TRACE].upcall(session, &toggle[DS_TRACE],TT_INITIAL); | |
| 203 | + static const LIB3270_TOGGLE active_by_default[] = | |
| 204 | + { | |
| 205 | + LIB3270_TOGGLE_CURSOR_BLINK, | |
| 206 | + LIB3270_TOGGLE_CURSOR_POS, | |
| 207 | + LIB3270_TOGGLE_BEEP, | |
| 179 | 208 | |
| 180 | - if(toggle[EVENT_TRACE].value) | |
| 181 | - toggle[EVENT_TRACE].upcall(session, &toggle[EVENT_TRACE],TT_INITIAL); | |
| 209 | + (LIB3270_TOGGLE) -1 | |
| 210 | + }; | |
| 182 | 211 | |
| 183 | - if(toggle[SCREEN_TRACE].value) | |
| 184 | - toggle[SCREEN_TRACE].upcall(session, &toggle[SCREEN_TRACE],TT_INITIAL); | |
| 185 | -#endif | |
| 212 | + for(f=0;active_by_default[f] != (LIB3270_TOGGLE) -1; f++) | |
| 213 | + { | |
| 214 | + toggle[active_by_default[f]].value = True; | |
| 215 | + } | |
| 186 | 216 | |
| 187 | -#if defined(DEFAULT_TOGGLE_CURSOR_POS) | |
| 188 | - toggle[CURSOR_POS].value = True; | |
| 189 | -#endif /*]*/ | |
| 190 | 217 | |
| 191 | -#if defined(DEFAULT_TOGGLE_RECTANGLE_SELECT) | |
| 192 | - toggle[RECTANGLE_SELECT].value = True; | |
| 193 | -#endif | |
| 218 | + for(f=0;f<LIB3270_TOGGLE_COUNT;f++) | |
| 219 | + { | |
| 220 | + if(toggle[f].value) | |
| 221 | + toggle[f].upcall(session,&toggle[f],TT_INITIAL); | |
| 222 | + } | |
| 194 | 223 | |
| 195 | 224 | } |
| 196 | 225 | ... | ... |
togglesc.h
| ... | ... | @@ -23,7 +23,7 @@ |
| 23 | 23 | * Global declarations for toggles.c. |
| 24 | 24 | */ |
| 25 | 25 | |
| 26 | - extern const char *toggle_names[N_TOGGLES]; | |
| 26 | +// extern const char *toggle_names[N_TOGGLES]; | |
| 27 | 27 | |
| 28 | 28 | LIB3270_INTERNAL void initialize_toggles(H3270 *session, struct toggle *toggle); |
| 29 | 29 | LIB3270_INTERNAL void shutdown_toggles(H3270 *session, struct toggle *toggle); | ... | ... |