/* Copyright (c) 2024 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved. */ #include <ProToolkit.h> #include <ProUIDialog.h> #include <ProUIPushbutton.h> #define UGUIVISIBILITY "uguivisibility" /*====================================================================*\ FUNCTION: UserCloseAction PURPOSE: Action function for the Close button in this example \*====================================================================*/ static void UserCloseAction (char* dialog, char* button, ProAppData data) { ProUIDialogExit (UGUIVISIBILITY, PRO_TK_NO_ERROR); } /*====================================================================*\ FUNCTION: UserVisibilityToggle PURPOSE: Action function for the "Visible" checkbutton \*====================================================================*/ static void UserVisibilityToggle (char* dialog, char* button, ProAppData data) { ProBoolean checked; ProUICheckbuttonGetState (UGUIVISIBILITY, "VisibleCheck", &checked); if (checked) ProUIPushbuttonShow (UGUIVISIBILITY, "TargetBtn"); else ProUIPushbuttonHide (UGUIVISIBILITY, "TargetBtn"); } /*====================================================================*\ FUNCTION: UserSensitivityToggle PURPOSE: Action function for the "Sensitive" checkbutton \*====================================================================*/ static void UserSensitivityToggle (char* dialog, char* button, ProAppData data) { ProBoolean checked; ProUICheckbuttonGetState (UGUIVISIBILITY, "SensitiveCheck", &checked); if (checked) ProUIPushbuttonEnable (UGUIVISIBILITY, "TargetBtn"); else ProUIPushbuttonDisable (UGUIVISIBILITY, "TargetBtn"); } /*====================================================================*\ FUNCTION: UserRelabelAction PURPOSE: Action function for the "Label" input panel \*====================================================================*/ static void UserRelabelAction (char* dialog, char* button, ProAppData data) { wchar_t* label; ProUIInputpanelValueGet (UGUIVISIBILITY, "ButtonLabel", &label); ProUIPushbuttonTextSet (UGUIVISIBILITY, "TargetBtn", label); ProWstringFree (label); } /*====================================================================*\ FUNCTION: UserUIVisibilityExample PURPOSE: Shows example of using runtime visibility and sensitivity of components \*====================================================================*/ int UserUIVisibilityExample () { ProLine wline; int status; /*--------------------------------------------------------------------*\ Load the dialog from the resource file \*--------------------------------------------------------------------*/ ProUIDialogCreate(UGUIVISIBILITY, UGUIVISIBILITY); /*--------------------------------------------------------------------*\ Set the OK and Cancel button actions \*--------------------------------------------------------------------*/ ProUIPushbuttonActivateActionSet(UGUIVISIBILITY,"CloseButton", UserCloseAction, NULL); ProUICheckbuttonActivateActionSet(UGUIVISIBILITY,"VisibleCheck",UserVisibilityToggle, NULL); ProUICheckbuttonActivateActionSet(UGUIVISIBILITY,"SensitiveCheck",UserSensitivityToggle, NULL); ProUIInputpanelInputActionSet(UGUIVISIBILITY,"ButtonLabel",UserRelabelAction, NULL); /*--------------------------------------------------------------------*\ Display and activate the dialog \*--------------------------------------------------------------------*/ ProUIDialogActivate(UGUIVISIBILITY, &status); /*--------------------------------------------------------------------*\ Remove the dialog from memory \*--------------------------------------------------------------------*/ ProUIDialogDestroy(UGUIVISIBILITY); return(1); }