Commit 88d395877e54b986ebc4dd96b2050af208429471

Authored by perry.werneck@gmail.com
1 parent 8b490b0d

Unificando controle de toggles

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);
... ...