Code: Select all
Procedure IsGadgetDisabled(GadgetNumber)
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Linux
Protected *Widget.GtkWidget = GadgetID(GadgetNumber)
ProcedureReturn Bool(*Widget\state)
CompilerCase #PB_OS_MacOS
ProcedureReturn CocoaMessage(0, GadgetID(GadgetNumber), "isEnabled") ! 1
CompilerCase #PB_OS_Windows
ProcedureReturn IsWindowEnabled_(GadgetID(GadgetNumber)) ! 1
CompilerEndSelect
EndProcedure
OpenWindow(0, 0, 0, 250, 105, "Disable/enable buttons...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(0, 10, 15, 230, 30, "Disabled Button") : DisableGadget(0, 1)
ButtonGadget(1, 10, 60, 230, 30, "Enabled Button") : DisableGadget(1, 0)
Debug IsGadgetDisabled(0)
Debug IsGadgetDisabled(1)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow

For those of you who don't need a cross-platform solution and don't want the additional source code lines for the other operating systems you only need to remove the unwanted source code lines. For Windows you simply change the procedure to
Code: Select all
Procedure IsGadgetDisabled(GadgetNumber)
ProcedureReturn IsWindowEnabled_(GadgetID(GadgetNumber)) ! 1
EndProcedure