Commit f638ef952393191f6808e1f8ecb7dc144862be37
1 parent
179ca6c9
Exists in
master
and in
5 other branches
Unificando controle de toggles
Showing
15 changed files
with
133 additions
and
79 deletions
Show diff stats
pw3270.cbp
... | ... | @@ -124,6 +124,8 @@ |
124 | 124 | <Option compilerVar="CC" /> |
125 | 125 | </Unit> |
126 | 126 | <Unit filename="src/include/lib3270.h" /> |
127 | + <Unit filename="src/include/lib3270/action_table.h" /> | |
128 | + <Unit filename="src/include/lib3270/actions.h" /> | |
127 | 129 | <Unit filename="src/include/lib3270/config.h.in" /> |
128 | 130 | <Unit filename="src/include/lib3270/log.h" /> |
129 | 131 | <Unit filename="src/include/lib3270/popup.h" /> |
... | ... | @@ -300,6 +302,7 @@ |
300 | 302 | </Unit> |
301 | 303 | <Unit filename="src/lib3270/xioc.h" /> |
302 | 304 | <Unit filename="src/lib3270/xl.h" /> |
305 | + <Unit filename="ui/default.xml" /> | |
303 | 306 | <Unit filename="valgrind.suppression" /> |
304 | 307 | <Extensions> |
305 | 308 | <code_completion /> | ... | ... |
src/gtk/actions.c
... | ... | @@ -54,6 +54,12 @@ static void disconnect_action(GtkAction *action, GtkWidget *widget) |
54 | 54 | v3270_disconnect(widget); |
55 | 55 | } |
56 | 56 | |
57 | +static void activate_action(GtkAction *action, GtkWidget *widget) | |
58 | +{ | |
59 | + trace("Action %s activated on widget %p",gtk_action_get_name(action),widget); | |
60 | + gtk_widget_activate(widget); | |
61 | +} | |
62 | + | |
57 | 63 | void ui_connect_action(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id) |
58 | 64 | { |
59 | 65 | #undef DECLARE_LIB3270_ACTION |
... | ... | @@ -84,6 +90,7 @@ void ui_connect_action(GtkAction *action, GtkWidget *widget, const gchar *name, |
84 | 90 | } |
85 | 91 | gtk_action[] = |
86 | 92 | { |
93 | + { "activate", activate_action }, | |
87 | 94 | { "connect", connect_action }, |
88 | 95 | { "disconnect", disconnect_action }, |
89 | 96 | }; | ... | ... |
src/gtk/v3270/mouse.c
... | ... | @@ -68,7 +68,7 @@ static void button_1_press(GtkWidget *widget, GdkEventType type, int baddr) |
68 | 68 | break; |
69 | 69 | |
70 | 70 | case GDK_3BUTTON_PRESS: // Triple clock - Select field |
71 | - lib3270_select_field(GTK_V3270(widget)->host,baddr); | |
71 | + lib3270_select_field_at(GTK_V3270(widget)->host,baddr); | |
72 | 72 | break; |
73 | 73 | |
74 | 74 | #ifdef DEBUG | ... | ... |
src/include/lib3270.h
... | ... | @@ -74,12 +74,10 @@ |
74 | 74 | typedef enum _lib3270_toggle |
75 | 75 | { |
76 | 76 | LIB3270_TOGGLE_MONOCASE, |
77 | - LIB3270_TOGGLE_ALT_CURSOR, | |
78 | 77 | LIB3270_TOGGLE_CURSOR_BLINK, |
79 | 78 | LIB3270_TOGGLE_SHOW_TIMING, |
80 | 79 | LIB3270_TOGGLE_CURSOR_POS, |
81 | 80 | LIB3270_TOGGLE_DS_TRACE, |
82 | - LIB3270_TOGGLE_SCROLL_BAR, | |
83 | 81 | LIB3270_TOGGLE_LINE_WRAP, |
84 | 82 | LIB3270_TOGGLE_BLANK_FILL, |
85 | 83 | LIB3270_TOGGLE_SCREEN_TRACE, |
... | ... | @@ -87,13 +85,22 @@ |
87 | 85 | LIB3270_TOGGLE_MARGINED_PASTE, |
88 | 86 | LIB3270_TOGGLE_RECTANGLE_SELECT, |
89 | 87 | LIB3270_TOGGLE_CROSSHAIR, |
90 | - LIB3270_TOGGLE_VISIBLE_CONTROL, | |
91 | - LIB3270_TOGGLE_AID_WAIT, | |
92 | 88 | LIB3270_TOGGLE_FULL_SCREEN, |
93 | 89 | LIB3270_TOGGLE_RECONNECT, |
94 | 90 | LIB3270_TOGGLE_INSERT, |
95 | - LIB3270_TOGGLE_KEYPAD, | |
96 | 91 | LIB3270_TOGGLE_SMART_PASTE, |
92 | + LIB3270_TOGGLE_BOLD, | |
93 | + LIB3270_TOGGLE_KEEP_SELECTED, | |
94 | + LIB3270_TOGGLE_UNDERLINE, | |
95 | + LIB3270_TOGGLE_CONNECT_ON_STARTUP, | |
96 | + LIB3270_TOGGLE_KP_ALTERNATIVE, /**< Keypad +/- move to next/previous field */ | |
97 | + LIB3270_TOGGLE_BEEP, /**< Beep on errors */ | |
98 | + | |
99 | +// LIB3270_TOGGLE_ALT_CURSOR, | |
100 | +// LIB3270_TOGGLE_AID_WAIT, | |
101 | +// LIB3270_TOGGLE_SCROLL_BAR, | |
102 | +// LIB3270_TOGGLE_VISIBLE_CONTROL, | |
103 | +// LIB3270_TOGGLE_KEYPAD, | |
97 | 104 | |
98 | 105 | LIB3270_TOGGLE_COUNT |
99 | 106 | ... | ... |
src/include/lib3270/action_table.h
... | ... | @@ -59,6 +59,10 @@ |
59 | 59 | DECLARE_LIB3270_CLEAR_SELECTION_ACTION( clear ) |
60 | 60 | DECLARE_LIB3270_CLEAR_SELECTION_ACTION( eraseinput ) |
61 | 61 | |
62 | + DECLARE_LIB3270_ACTION( selectfield ) | |
63 | + DECLARE_LIB3270_ACTION( selectall ) | |
64 | + DECLARE_LIB3270_ACTION( unselect ) | |
65 | + | |
62 | 66 | DECLARE_LIB3270_ACTION( firstfield ) |
63 | 67 | DECLARE_LIB3270_ACTION( eraseeof ) |
64 | 68 | DECLARE_LIB3270_ACTION( eraseeol ) | ... | ... |
src/include/lib3270/selection.h
... | ... | @@ -36,6 +36,6 @@ |
36 | 36 | LIB3270_EXPORT void lib3270_clear_selection(H3270 *session); |
37 | 37 | LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr); |
38 | 38 | LIB3270_EXPORT void lib3270_select_word(H3270 *session, int baddr); |
39 | - LIB3270_EXPORT int lib3270_select_field(H3270 *session, int baddr); | |
39 | + LIB3270_EXPORT int lib3270_select_field_at(H3270 *session, int baddr); | |
40 | 40 | |
41 | 41 | #endif // LIB3270_SELECTION_H_INCLUDED | ... | ... |
src/lib3270/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 | ... | ... |
src/lib3270/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; | ... | ... |
src/lib3270/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) | ... | ... |
src/lib3270/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 | + | ... | ... |
src/lib3270/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); | ... | ... |
src/lib3270/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 | + | ... | ... |
src/lib3270/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 | ... | ... |
src/lib3270/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); | ... | ... |
ui/default.xml
... | ... | @@ -58,11 +58,11 @@ |
58 | 58 | <menuitem action='PasteTextFile' group='online' label='Paste text file' /> |
59 | 59 | |
60 | 60 | <separator/> |
61 | - <menuitem action='SelectAll' key='<ctrl>a' icon='select-all' group='online' label='Select all' /> | |
61 | + <menuitem action='selectall' key='<ctrl>a' icon='select-all' group='online' label='Select all' /> | |
62 | 62 | |
63 | - <menuitem action='SelectField' key='<Ctrl>f' group='online' label='Select Field' /> | |
64 | - <menuitem action='Unselect' group='selection' label='Unselect' /> | |
65 | - <menuitem action='Reselect' key='<Ctrl>r' group='online' label='Reselect' /> | |
63 | + <menuitem action='selectfield' key='<Ctrl>f' group='online' label='Select Field' /> | |
64 | + <menuitem action='unselect' group='selection' label='unselect' /> | |
65 | + <!--- menuitem action='Reselect' key='<Ctrl>r' group='online' label='Reselect' /---> | |
66 | 66 | |
67 | 67 | <separator/> |
68 | 68 | <menuitem action='Clear' group='online' key='Pause' label='Clear' /> |
... | ... | @@ -123,7 +123,7 @@ |
123 | 123 | </menubar> |
124 | 124 | |
125 | 125 | <toolbar name='toolbar.default' label='Toolbar' key='<alt>t' > |
126 | - <toolitem action='SelectAll' /> | |
126 | + <toolitem action='selectall' /> | |
127 | 127 | <toolitem action='Copy' /> |
128 | 128 | <toolitem action='Paste' /> |
129 | 129 | <toolitem action='EraseInput' /> |
... | ... | @@ -144,7 +144,7 @@ |
144 | 144 | <menuitem action='Copy'/> |
145 | 145 | <menuitem action='Append'/> |
146 | 146 | <menuitem action='Unselect'/> |
147 | - <menuitem action='SelectAll'/> | |
147 | + <menuitem action='selectall'/> | |
148 | 148 | |
149 | 149 | <separator /> |
150 | 150 | <menuitem action='PrintScreen'/> |
... | ... | @@ -158,14 +158,14 @@ |
158 | 158 | <popup name='defaultpopup' type='default'> |
159 | 159 | <menuitem action='Paste'/> |
160 | 160 | <menuitem action='PasteNext'/> |
161 | - <menuitem action='SelectAll'/> | |
161 | + <menuitem action='selectall'/> | |
162 | 162 | <menuitem action='PrintScreen'/> |
163 | 163 | <menuitem action='PrintClipboard'/> |
164 | 164 | |
165 | 165 | <separator /> |
166 | - <menuitem action='PreviousField' label='Previous field' /> | |
167 | - <menuitem action='NextField' label='Next field'/> | |
168 | - <menuitem action='Return' label='Return' /> | |
166 | + <menuitem action='backtab' label='Previous field' /> | |
167 | + <menuitem action='tab' label='Next field'/> | |
168 | + <menuitem action='activate' label='Return' /> | |
169 | 169 | |
170 | 170 | <separator /> |
171 | 171 | <menuitem action='Quit'/> | ... | ... |