/* GUIBEGIN WINDOW , 53, 175, 363, 138, POPUP|CAPTION|SYSMENU|MINBOX|MAXBOX|THICK, , Menu demo FONT 8, 400, MS Shell Dlg MENU DEND MENU HEADING &Test ITEM &Enable Test Item ITEM &Disable Test Item ITEM &Set Mark Item's Check ITEM &Clear Mark Item's Check ITEM ITEM Test Item, Test1Item ITEM Mark Item, Mark1Item, , MARK < HEADING &Test 2 ITEM Toggle Test Item &On/Off ITEM Toggle Mark Item's &Check ITEM ITEM Test Item, Test2Item ITEM Mark Item, Mark2Item < DEND GUIEND */ OPTIONS "C_CALL LABELCHECK NOSOURCE" LIBRARY rexxgui GuiErr = "SYNTAX" GuiHeading = 1 GuiCreateWindow('NORMAL') Again: DO FOREVER GuiGetMsg() CATCH SYNTAX CONDITION('M') SIGNAL Again CATCH HALT FINALLY GuiDestroyWindow() END RETURN TestEnableTestItem: /* Enable "Test -> Test item" */ GuiSetMenuOpts("Test1Item", "") RETURN TestDisableTestItem: /* Disable "Test -> Test item" */ GuiSetMenuOpts("Test1Item", "GRAY") RETURN TestSetMarkItem_sCheck: /* Set the checkmark on "Test -> Mark item" */ GuiSetMenuOpts("Mark1Item", "MARK") RETURN TestClearMarkItem_sCheck: /* Clear the checkmark on "Test -> Mark item" */ GuiSetMenuOpts("Mark1Item", "") RETURN Test2ToggleTestItemOn_Off: /* If we already know whether the menu item is * disabled/enabled, then we could simply specify * the opposite state to toggle it. But let's assume we * don't know whether it's enabled or disabled. So, we * must first get its current state. */ GuiGetMenuOpts("Test2Item", "MyVariable") /* Is it currently in GRAY or DISABLE state? */ IF POS("GRAY", MyVariable) \== 0 | POS("DISABLE", MyVariable) \== 0 THEN DO /* It's currently GRAY or DISABLE, so remove these options from * the current options in order to enable it. */ MyVariable = CHANGESTR("GRAY", MyVariable) MyVariable = CHANGESTR("DISABLE", MyVariable) GuiSetMenuOpts("Test2Item", MyVariable) END /* It's currently enabled, so add the "GRAY" option. We could alternately * use the DISABLE option, but that simply disables the item without * visually letting the user know that. */ ELSE GuiSetMenuOpts("Test2Item", MyVariable || "|GRAY") RETURN Test2ToggleMarkItem_sCheck: /* If we already know whether the menu item is * checked/unchecked, then we could simply specify * the opposite state to toggle it. But let's assume we * don't know whether it's checked. So, we must first * get its current state. */ GuiGetMenuOpts("Mark2Item", "MyVariable") /* Is it currently checked (ie, MARK option)? */ IF POS("MARK", MyVariable) \== 0 THEN DO /* It's currently checked, so remove the MARK option from * the current options in order to uncheck it. */ MyVariable = CHANGESTR("MARK", MyVariable) GuiSetMenuOpts("Mark2Item", MyVariable) END /* It's not checked, so add the "MARK" option. */ ELSE GuiSetMenuOpts("Mark2Item", MyVariable || "|MARK") RETURN