Commit ff320ce9aea75920cb900773681c71daa9d09131
1 parent
3f46e593
Exists in
master
and in
3 other branches
Adding action groups (required for GAction implementatin).
Showing
2 changed files
with
99 additions
and
6 deletions
Show diff stats
src/core/actions/table.c
... | ... | @@ -83,6 +83,8 @@ |
83 | 83 | .label = N_( "_Connect" ) , |
84 | 84 | .summary = N_( "Connect to host." ), |
85 | 85 | .activate = connect_host, |
86 | + | |
87 | + .group = LIB3270_ACTION_GROUP_OFFLINE, | |
86 | 88 | .activatable = lib3270_is_disconnected |
87 | 89 | }, |
88 | 90 | |
... | ... | @@ -93,6 +95,8 @@ |
93 | 95 | .label = N_( "_Disconnect" ), |
94 | 96 | .summary = N_( "Disconnect from host." ), |
95 | 97 | .activate = lib3270_disconnect, |
98 | + | |
99 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
96 | 100 | .activatable = lib3270_is_connected |
97 | 101 | }, |
98 | 102 | |
... | ... | @@ -106,6 +110,8 @@ |
106 | 110 | .label = NULL, |
107 | 111 | .summary = N_( "Cursor up 1 position." ), |
108 | 112 | .activate = lib3270_cursor_up, |
113 | + | |
114 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
109 | 115 | .activatable = lib3270_is_connected |
110 | 116 | }, |
111 | 117 | |
... | ... | @@ -116,6 +122,8 @@ |
116 | 122 | .label = NULL, |
117 | 123 | .summary = N_( "Cursor down 1 position." ), |
118 | 124 | .activate = lib3270_cursor_down, |
125 | + | |
126 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
119 | 127 | .activatable = lib3270_is_connected |
120 | 128 | }, |
121 | 129 | |
... | ... | @@ -126,6 +134,8 @@ |
126 | 134 | .label = NULL, |
127 | 135 | .summary = N_( "Cursor left 1 position." ), |
128 | 136 | .activate = lib3270_cursor_left, |
137 | + | |
138 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
129 | 139 | .activatable = lib3270_is_connected |
130 | 140 | }, |
131 | 141 | |
... | ... | @@ -136,6 +146,8 @@ |
136 | 146 | .label = NULL, |
137 | 147 | .summary = N_( "Cursor right 1 position." ), |
138 | 148 | .activate = lib3270_cursor_right, |
149 | + | |
150 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
139 | 151 | .activatable = lib3270_is_connected |
140 | 152 | }, |
141 | 153 | |
... | ... | @@ -146,6 +158,8 @@ |
146 | 158 | .label = NULL, |
147 | 159 | .summary = N_( "Cursor to first field on next line or any lines after that." ), |
148 | 160 | .activate = lib3270_newline, |
161 | + | |
162 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
149 | 163 | .activatable = lib3270_is_connected |
150 | 164 | }, |
151 | 165 | |
... | ... | @@ -156,6 +170,8 @@ |
156 | 170 | .label = NULL, |
157 | 171 | .summary = N_( "Cursor to previous word." ), |
158 | 172 | .activate = lib3270_previousword, |
173 | + | |
174 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
159 | 175 | .activatable = lib3270_is_connected |
160 | 176 | }, |
161 | 177 | |
... | ... | @@ -166,6 +182,8 @@ |
166 | 182 | .label = NULL, |
167 | 183 | .summary = N_( "Cursor to next unprotected word." ), |
168 | 184 | .activate = lib3270_nextword, |
185 | + | |
186 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
169 | 187 | .activatable = lib3270_is_connected |
170 | 188 | }, |
171 | 189 | |
... | ... | @@ -179,6 +197,8 @@ |
179 | 197 | .label = NULL, |
180 | 198 | .summary = N_( "Save screen." ), |
181 | 199 | .activate = save_all, |
200 | + | |
201 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
182 | 202 | .activatable = lib3270_is_connected |
183 | 203 | }, |
184 | 204 | |
... | ... | @@ -189,6 +209,8 @@ |
189 | 209 | .label = NULL, |
190 | 210 | .summary = N_( "Save selected area." ), |
191 | 211 | .activate = save_selected, |
212 | + | |
213 | + .group = LIB3270_ACTION_GROUP_SELECTION, | |
192 | 214 | .activatable = lib3270_has_selection |
193 | 215 | }, |
194 | 216 | |
... | ... | @@ -199,6 +221,8 @@ |
199 | 221 | .label = NULL, |
200 | 222 | .summary = NULL, |
201 | 223 | .activate = save_copy, |
224 | + | |
225 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
202 | 226 | .activatable = lib3270_is_connected |
203 | 227 | }, |
204 | 228 | |
... | ... | @@ -209,6 +233,8 @@ |
209 | 233 | .label = NULL, |
210 | 234 | .summary = N_( "Paste file." ), |
211 | 235 | .activate = paste_file, |
236 | + | |
237 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
212 | 238 | .activatable = lib3270_is_connected |
213 | 239 | }, |
214 | 240 | |
... | ... | @@ -222,6 +248,8 @@ |
222 | 248 | .label = N_( "Select all" ), |
223 | 249 | .summary = NULL, |
224 | 250 | .activate = lib3270_select_all, |
251 | + | |
252 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
225 | 253 | .activatable = lib3270_is_connected |
226 | 254 | }, |
227 | 255 | |
... | ... | @@ -232,6 +260,8 @@ |
232 | 260 | .label = N_( "Remove selection" ), |
233 | 261 | .summary = N_( "Remove selection" ), |
234 | 262 | .activate = lib3270_unselect, |
263 | + | |
264 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
235 | 265 | .activatable = lib3270_has_selection |
236 | 266 | }, |
237 | 267 | |
... | ... | @@ -242,6 +272,8 @@ |
242 | 272 | .label = N_( "Reselect" ), |
243 | 273 | .summary = N_( "Reselect"), |
244 | 274 | .activate = lib3270_reselect, |
275 | + | |
276 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
245 | 277 | .activatable = lib3270_is_connected |
246 | 278 | }, |
247 | 279 | |
... | ... | @@ -255,6 +287,8 @@ |
255 | 287 | .label = N_( "Select field" ), |
256 | 288 | .summary = N_( "Select Field" ), |
257 | 289 | .activate = lib3270_select_field, |
290 | + | |
291 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
258 | 292 | .activatable = lib3270_is_formatted |
259 | 293 | }, |
260 | 294 | |
... | ... | @@ -266,6 +300,8 @@ |
266 | 300 | .label = NULL, |
267 | 301 | .summary = N_( "Move the cursor to the first blank after the last nonblank in the field." ), |
268 | 302 | .activate = lib3270_fieldend, |
303 | + | |
304 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
269 | 305 | .activatable = lib3270_is_formatted |
270 | 306 | }, |
271 | 307 | |
... | ... | @@ -276,6 +312,8 @@ |
276 | 312 | .label = NULL, |
277 | 313 | .summary = N_( "Move to first unprotected field on screen." ), |
278 | 314 | .activate = lib3270_firstfield, |
315 | + | |
316 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
279 | 317 | .activatable = lib3270_is_formatted |
280 | 318 | }, |
281 | 319 | |
... | ... | @@ -286,6 +324,8 @@ |
286 | 324 | .label = NULL, |
287 | 325 | .summary = N_( "Tab forward to next field." ), |
288 | 326 | .activate = lib3270_nextfield, |
327 | + | |
328 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
289 | 329 | .activatable = lib3270_is_formatted |
290 | 330 | }, |
291 | 331 | |
... | ... | @@ -296,6 +336,8 @@ |
296 | 336 | .label = NULL, |
297 | 337 | .summary = N_( "Tab backward to previous field." ), |
298 | 338 | .activate = lib3270_previousfield, |
339 | + | |
340 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
299 | 341 | .activatable = lib3270_is_formatted |
300 | 342 | }, |
301 | 343 | |
... | ... | @@ -310,6 +352,8 @@ |
310 | 352 | .label = NULL, |
311 | 353 | .summary = N_( "Backspaces the cursor until it hits the front of a word." ), |
312 | 354 | .activate = lib3270_deleteword, |
355 | + | |
356 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
313 | 357 | .activatable = lib3270_is_connected |
314 | 358 | }, |
315 | 359 | |
... | ... | @@ -320,6 +364,8 @@ |
320 | 364 | .label = NULL, |
321 | 365 | .summary = N_( "Delete field" ), |
322 | 366 | .activate = lib3270_deletefield, |
367 | + | |
368 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
323 | 369 | .activatable = lib3270_is_formatted |
324 | 370 | }, |
325 | 371 | |
... | ... | @@ -331,6 +377,8 @@ |
331 | 377 | .label = NULL, |
332 | 378 | .summary = NULL, |
333 | 379 | .activate = lib3270_eraseinput, |
380 | + | |
381 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
334 | 382 | .activatable = lib3270_is_connected |
335 | 383 | }, |
336 | 384 | |
... | ... | @@ -341,6 +389,8 @@ |
341 | 389 | .label = NULL, |
342 | 390 | .summary = N_( "Erase End Of Field Key." ), |
343 | 391 | .activate = lib3270_eraseeof, |
392 | + | |
393 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
344 | 394 | .activatable = lib3270_is_formatted |
345 | 395 | }, |
346 | 396 | |
... | ... | @@ -351,6 +401,8 @@ |
351 | 401 | .label = NULL, |
352 | 402 | .summary = N_( "Erase End Of Line Key." ), |
353 | 403 | .activate = lib3270_eraseeol, |
404 | + | |
405 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
354 | 406 | .activatable = lib3270_is_connected |
355 | 407 | }, |
356 | 408 | |
... | ... | @@ -361,6 +413,8 @@ |
361 | 413 | .label = NULL, |
362 | 414 | .summary = NULL, |
363 | 415 | .activate = lib3270_erase, |
416 | + | |
417 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
364 | 418 | .activatable = lib3270_is_connected |
365 | 419 | }, |
366 | 420 | |
... | ... | @@ -374,6 +428,8 @@ |
374 | 428 | .label = NULL, |
375 | 429 | .summary = N_( "Send an \"Enter\" action." ), |
376 | 430 | .activate = lib3270_enter, |
431 | + | |
432 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
377 | 433 | .activatable = lib3270_is_connected |
378 | 434 | }, |
379 | 435 | |
... | ... | @@ -385,6 +441,8 @@ |
385 | 441 | .label = NULL, |
386 | 442 | .summary = NULL, |
387 | 443 | .activate = lib3270_kybdreset, |
444 | + | |
445 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
388 | 446 | .activatable = lib3270_is_connected |
389 | 447 | }, |
390 | 448 | |
... | ... | @@ -395,6 +453,8 @@ |
395 | 453 | .label = NULL, |
396 | 454 | .summary = N_( "Clear AID key" ), |
397 | 455 | .activate = lib3270_clear, |
456 | + | |
457 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
398 | 458 | .activatable = lib3270_is_connected |
399 | 459 | }, |
400 | 460 | |
... | ... | @@ -406,6 +466,8 @@ |
406 | 466 | .label = NULL, |
407 | 467 | .summary = NULL, |
408 | 468 | .activate = lib3270_delete, |
469 | + | |
470 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
409 | 471 | .activatable = lib3270_is_connected |
410 | 472 | }, |
411 | 473 | |
... | ... | @@ -416,6 +478,8 @@ |
416 | 478 | .label = NULL, |
417 | 479 | .summary = N_( "DUP key" ), |
418 | 480 | .activate = lib3270_dup, |
481 | + | |
482 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
419 | 483 | .activatable = lib3270_is_connected |
420 | 484 | }, |
421 | 485 | |
... | ... | @@ -426,6 +490,8 @@ |
426 | 490 | .label = NULL, |
427 | 491 | .summary = N_( "FM key" ), |
428 | 492 | .activate = lib3270_fieldmark, |
493 | + | |
494 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
429 | 495 | .activatable = lib3270_is_connected |
430 | 496 | }, |
431 | 497 | |
... | ... | @@ -436,6 +502,8 @@ |
436 | 502 | .label = NULL, |
437 | 503 | .summary = N_( "3270-style backspace." ), |
438 | 504 | .activate = lib3270_backspace, |
505 | + | |
506 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
439 | 507 | .activatable = lib3270_is_connected |
440 | 508 | }, |
441 | 509 | |
... | ... | @@ -446,6 +514,8 @@ |
446 | 514 | .label = NULL, |
447 | 515 | .summary = N_( "ATTN key, per RFC 2355. Sends IP, regardless." ), |
448 | 516 | .activate = lib3270_attn, |
517 | + | |
518 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
449 | 519 | .activatable = lib3270_is_connected |
450 | 520 | }, |
451 | 521 | |
... | ... | @@ -456,6 +526,8 @@ |
456 | 526 | .label = NULL, |
457 | 527 | .summary = NULL, |
458 | 528 | .activate = lib3270_break, |
529 | + | |
530 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
459 | 531 | .activatable = lib3270_is_connected |
460 | 532 | }, |
461 | 533 | |
... | ... | @@ -466,6 +538,8 @@ |
466 | 538 | .label = NULL, |
467 | 539 | .summary = NULL, |
468 | 540 | .activate = lib3270_paste_next, |
541 | + | |
542 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
469 | 543 | .activatable = lib3270_is_connected |
470 | 544 | }, |
471 | 545 | |
... | ... | @@ -476,6 +550,8 @@ |
476 | 550 | .label = NULL, |
477 | 551 | .summary = NULL, |
478 | 552 | .activate = lib3270_sysreq, |
553 | + | |
554 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
479 | 555 | .activatable = lib3270_is_connected |
480 | 556 | }, |
481 | 557 | |
... | ... | @@ -490,6 +566,8 @@ |
490 | 566 | .summary = N_("Send to print"), |
491 | 567 | .description = N_("If the terminal has selected area print it, if not, print all contents."), |
492 | 568 | .activate = lib3270_print, |
569 | + | |
570 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
493 | 571 | .activatable = lib3270_is_connected |
494 | 572 | }, |
495 | 573 | |
... | ... | @@ -500,6 +578,8 @@ |
500 | 578 | .label = NULL, |
501 | 579 | .summary = N_("Print screen contents"), |
502 | 580 | .activate = lib3270_print_all, |
581 | + | |
582 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
503 | 583 | .activatable = lib3270_is_connected |
504 | 584 | }, |
505 | 585 | |
... | ... | @@ -510,6 +590,8 @@ |
510 | 590 | .label = NULL, |
511 | 591 | .summary = N_( "Print selected area." ), |
512 | 592 | .activate = lib3270_print_selected, |
593 | + | |
594 | + .group = LIB3270_ACTION_GROUP_SELECTION, | |
513 | 595 | .activatable = lib3270_has_selection |
514 | 596 | }, |
515 | 597 | |
... | ... | @@ -520,6 +602,8 @@ |
520 | 602 | .label = NULL, |
521 | 603 | .summary = N_("Print copy (if available)"), |
522 | 604 | .activate = lib3270_print_copy, |
605 | + | |
606 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
523 | 607 | .activatable = lib3270_is_connected |
524 | 608 | }, |
525 | 609 | |
... | ... | @@ -534,6 +618,8 @@ |
534 | 618 | .label = NULL, |
535 | 619 | .summary = NULL, |
536 | 620 | .activate = lib3270_testpattern, |
621 | + | |
622 | + .group = LIB3270_ACTION_GROUP_OFFLINE, | |
537 | 623 | .activatable = lib3270_is_disconnected |
538 | 624 | }, |
539 | 625 | |
... | ... | @@ -544,17 +630,13 @@ |
544 | 630 | .label = NULL, |
545 | 631 | .summary = NULL, |
546 | 632 | .activate = lib3270_charsettable, |
633 | + | |
634 | + .group = LIB3270_ACTION_GROUP_OFFLINE, | |
547 | 635 | .activatable = lib3270_is_disconnected |
548 | 636 | }, |
549 | 637 | |
550 | 638 | { |
551 | 639 | .name = NULL, |
552 | - .key = NULL, | |
553 | - .icon = NULL, | |
554 | - .label = NULL, | |
555 | - .summary = NULL, | |
556 | - .activate = NULL, | |
557 | - .activatable = NULL | |
558 | 640 | } |
559 | 641 | }; |
560 | 642 | ... | ... |
src/include/lib3270/actions.h
... | ... | @@ -33,10 +33,21 @@ |
33 | 33 | extern "C" { |
34 | 34 | #endif |
35 | 35 | |
36 | + typedef enum _lib3270_action_group | |
37 | + { | |
38 | + LIB3270_ACTION_GROUP_NONE, ///< @brief Simple action, no signals os special treatment. | |
39 | + LIB3270_ACTION_GROUP_ONLINE, ///< @brief Action requires online state. | |
40 | + LIB3270_ACTION_GROUP_OFFLINE, ///< @brief Action requires offline state. | |
41 | + LIB3270_ACTION_GROUP_SELECTION, ///< @brief Action requires an active selection. | |
42 | + LIB3270_ACTION_GROUP_UNSELECTED, ///< @brief Action fails if there has a selection. | |
43 | + } LIB3270_ACTION_GROUP; | |
44 | + | |
36 | 45 | typedef struct _lib3270_action |
37 | 46 | { |
38 | 47 | LIB3270_PROPERTY_HEAD |
39 | 48 | |
49 | + LIB3270_ACTION_GROUP group; ///< @brief Action group. | |
50 | + | |
40 | 51 | int (*activate)(H3270 *hSession); ///< @brief lib3270 associated method. |
41 | 52 | int (*activatable)(const H3270 *hSession); ///< @brief Is the action activatable? |
42 | 53 | ... | ... |