Commit c5066fd55d5785e9f9302043fa9eee3f9c9bcbda

Authored by Perry Werneck
1 parent 06041c11

Adding method to get the "activatable" state of an action group.

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.