Commit 88d395877e54b986ebc4dd96b2050af208429471

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

Unificando controle de toggles

@@ -1002,7 +1002,9 @@ LIB3270_EXPORT int lib3270_wait(seconds) @@ -1002,7 +1002,9 @@ LIB3270_EXPORT int lib3270_wait(seconds)
1002 LIB3270_EXPORT void lib3270_ring_bell(H3270 *session) 1002 LIB3270_EXPORT void lib3270_ring_bell(H3270 *session)
1003 { 1003 {
1004 CHECK_SESSION_HANDLE(session); 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
@@ -1827,7 +1827,7 @@ ansi_send_pa(int nn) @@ -1827,7 +1827,7 @@ ansi_send_pa(int nn)
1827 1827
1828 void toggle_lineWrap(H3270 *session, struct toggle *t unused, LIB3270_TOGGLE_TYPE type unused) 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 wraparound_mode = 1; 1831 wraparound_mode = 1;
1832 else 1832 else
1833 wraparound_mode = 0; 1833 wraparound_mode = 0;
@@ -117,31 +117,6 @@ @@ -117,31 +117,6 @@
117 char *profile_name = CN; 117 char *profile_name = CN;
118 #endif /*]*/ 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 void lib3270_session_free(H3270 *h) 120 void lib3270_session_free(H3270 *h)
146 { 121 {
147 int f; 122 int f;
@@ -319,6 +294,7 @@ static void initialize(void) @@ -319,6 +294,7 @@ static void initialize(void)
319 Trace("Initializing library (calls: %d)",init_calls); 294 Trace("Initializing library (calls: %d)",init_calls);
320 #endif 295 #endif
321 296
  297 + h3270.selected.begin = h3270.selected.end = -1;
322 initialize_toggles(&h3270,appres.toggle); 298 initialize_toggles(&h3270,appres.toggle);
323 299
324 #if defined(_WIN32) 300 #if defined(_WIN32)
@@ -651,7 +651,7 @@ static Boolean ins_prep(int faddr, int baddr, int count) @@ -651,7 +651,7 @@ static Boolean ins_prep(int faddr, int baddr, int count)
651 while (need && (xaddr != next_faddr)) { 651 while (need && (xaddr != next_faddr)) {
652 if (ea_buf[xaddr].cc == EBC_null) 652 if (ea_buf[xaddr].cc == EBC_null)
653 need--; 653 need--;
654 - else if (toggled(BLANK_FILL) && 654 + else if (toggled(LIB3270_TOGGLE_BLANK_FILL) &&
655 ((ea_buf[xaddr].cc == EBC_space) || 655 ((ea_buf[xaddr].cc == EBC_space) ||
656 (ea_buf[xaddr].cc == EBC_underscore))) { 656 (ea_buf[xaddr].cc == EBC_underscore))) {
657 if (tb_start == -1) 657 if (tb_start == -1)
@@ -3653,3 +3653,4 @@ clear_xks(void) @@ -3653,3 +3653,4 @@ clear_xks(void)
3653 } 3653 }
3654 } 3654 }
3655 3655
  3656 +
@@ -735,19 +735,6 @@ void popup_system_error(H3270 *session, const char *title, const char *message, @@ -735,19 +735,6 @@ void popup_system_error(H3270 *session, const char *title, const char *message,
735 va_end(args); 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 void mcursor_set(H3270 *session,LIB3270_CURSOR m) 738 void mcursor_set(H3270 *session,LIB3270_CURSOR m)
752 { 739 {
753 CHECK_SESSION_HANDLE(session); 740 CHECK_SESSION_HANDLE(session);
@@ -219,7 +219,7 @@ LIB3270_EXPORT void lib3270_select_word(H3270 *session, int baddr) @@ -219,7 +219,7 @@ LIB3270_EXPORT void lib3270_select_word(H3270 *session, int baddr)
219 update_selected_region(session); 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 int start,len; 224 int start,len;
225 225
@@ -251,3 +251,41 @@ LIB3270_EXPORT int lib3270_select_field(H3270 *session, int baddr) @@ -251,3 +251,41 @@ LIB3270_EXPORT int lib3270_select_field(H3270 *session, int baddr)
251 251
252 return 0; 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 +
@@ -52,6 +52,33 @@ @@ -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 static void no_callback(H3270 *h, int value, LIB3270_TOGGLE_TYPE reason) 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,7 +181,7 @@ void initialize_toggles(H3270 *session, struct toggle *toggle)
154 { 181 {
155 int f; 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 toggle[f].callback = no_callback; 186 toggle[f].callback = no_callback;
160 toggle[f].upcall = toggle_nop; 187 toggle[f].upcall = toggle_nop;
@@ -164,33 +191,35 @@ void initialize_toggles(H3270 *session, struct toggle *toggle) @@ -164,33 +191,35 @@ void initialize_toggles(H3270 *session, struct toggle *toggle)
164 toggle[LIB3270_TOGGLE_MONOCASE].upcall = toggle_monocase; 191 toggle[LIB3270_TOGGLE_MONOCASE].upcall = toggle_monocase;
165 192
166 #if defined(X3270_TRACE) 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 #endif 197 #endif
171 198
172 #if defined(X3270_ANSI) 199 #if defined(X3270_ANSI)
173 - toggle[LINE_WRAP].upcall = toggle_lineWrap; 200 + toggle[LIB3270_TOGGLE_LINE_WRAP].upcall = toggle_lineWrap;
174 #endif 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
@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 * Global declarations for toggles.c. 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 LIB3270_INTERNAL void initialize_toggles(H3270 *session, struct toggle *toggle); 28 LIB3270_INTERNAL void initialize_toggles(H3270 *session, struct toggle *toggle);
29 LIB3270_INTERNAL void shutdown_toggles(H3270 *session, struct toggle *toggle); 29 LIB3270_INTERNAL void shutdown_toggles(H3270 *session, struct toggle *toggle);