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