Commit c5066fd55d5785e9f9302043fa9eee3f9c9bcbda
1 parent
06041c11
Exists in
master
and in
3 other branches
Adding method to get the "activatable" state of an action group.
Showing
2 changed files
with
37 additions
and
0 deletions
Show diff stats
src/core/actions/table.c
@@ -731,3 +731,30 @@ | @@ -731,3 +731,30 @@ | ||
731 | return actions; | 731 | return actions; |
732 | } | 732 | } |
733 | 733 | ||
734 | + static int default_activatable_state(const H3270 *hSession) | ||
735 | + { | ||
736 | + return hSession == NULL ? 0 : 1; | ||
737 | + } | ||
738 | + | ||
739 | + LIB3270_EXPORT int lib3270_action_group_get_activatable(const H3270 *hSession, const LIB3270_ACTION_GROUP group) | ||
740 | + { | ||
741 | + static const struct | ||
742 | + { | ||
743 | + int (*get)(const H3270 *); | ||
744 | + } activatable[LIB3270_ACTION_CUSTOM] = | ||
745 | + { | ||
746 | + { default_activatable_state }, // LIB3270_ACTION_GROUP_NONE | ||
747 | + { lib3270_is_connected }, // LIB3270_ACTION_GROUP_ONLINE | ||
748 | + { lib3270_is_disconnected }, // LIB3270_ACTION_GROUP_OFFLINE | ||
749 | + { lib3270_has_selection }, // LIB3270_ACTION_GROUP_SELECTION | ||
750 | + { lib3270_is_unlocked }, // LIB3270_ACTION_GROUP_LOCK_STATE | ||
751 | + { lib3270_is_formatted }, // LIB3270_ACTION_GROUP_FORMATTED | ||
752 | + }; | ||
753 | + | ||
754 | + if(group < (sizeof(activatable)/sizeof(activatable[0]))) { | ||
755 | + return activatable[group].get(hSession); | ||
756 | + } | ||
757 | + | ||
758 | + return default_activatable_state(hSession); | ||
759 | + | ||
760 | + } |
src/include/lib3270/actions.h
@@ -73,6 +73,16 @@ | @@ -73,6 +73,16 @@ | ||
73 | 73 | ||
74 | } LIB3270_ACTION; | 74 | } LIB3270_ACTION; |
75 | 75 | ||
76 | +/** | ||
77 | + * @brief Query if the action group can be activated. | ||
78 | + * | ||
79 | + * @param hSession TN3270 Session handle. | ||
80 | + * @param group The group to listen. | ||
81 | + * | ||
82 | + * @return The current state of the group. | ||
83 | + * | ||
84 | + */ | ||
85 | + LIB3270_EXPORT int lib3270_action_group_get_activatable(const H3270 *hSession, const LIB3270_ACTION_GROUP group); | ||
76 | 86 | ||
77 | /** | 87 | /** |
78 | * @brief Register an action group listener. | 88 | * @brief Register an action group listener. |