Page 1 of 1

[SOLVED] How to check if gadget is visible or not?

Posted: Tue Aug 06, 2019 9:16 am
by SkyManager
Hi, does anybody know how to check if a gadget is visible or not?

Re: How to check if gadget is visible or not?

Posted: Tue Aug 06, 2019 9:41 am
by RSBasic

Code: Select all

EnableExplicit

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ButtonGadget(1, 10, 10, 100, 20, "Button 1", 0)
  ButtonGadget(2, 10, 40, 100, 20, "Button 2", 0)
  
  HideGadget(1, 1)
  
  If IsWindowVisible_(GadgetID(1)) = 1
    Debug "Button 1 is visible"
  Else
    Debug "Button 1 is hidden"
  EndIf
  
  If IsWindowVisible_(GadgetID(2)) = 1
    Debug "Button 2 is visible"
  Else
    Debug "Button 2 is hidden"
  EndIf
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

Re: How to check if gadget is visible or not?

Posted: Tue Aug 06, 2019 1:13 pm
by mestnyi
multi os

Code: Select all

DeclareModule Hide
  Declare.b Hide(Handle.i)
EndDeclareModule

Module Hide
  CompilerSelect #PB_Compiler_OS 
    CompilerCase #PB_OS_Linux
      ImportC ""
        gtk_widget_get_visible(*widget.GtkWidget)
      EndImport
  CompilerEndSelect
  
  Procedure.b Hide(Handle.i) ; Returns TRUE is control hide
    Protected Result.i
    
    CompilerSelect #PB_Compiler_OS 
      CompilerCase #PB_OS_Windows : ProcedureReturn Bool(IsWindowVisible_(Handle)=0)
      CompilerCase #PB_OS_Linux   : ProcedureReturn Bool(gtk_widget_get_visible(Handle)=0)
      CompilerCase #PB_OS_MacOS   
        CocoaMessage(@Result, CocoaMessage(0, handle, "className"), "UTF8String")
        
        If PeekS(Result, -1, #PB_UTF8) = "PBWindow"
          ProcedureReturn Bool(CocoaMessage(0, Handle, "isVisible")=0)
        Else
          ProcedureReturn Bool(CocoaMessage(0, Handle, "isHidden"))
        EndIf
    CompilerEndSelect
  EndProcedure
EndModule


CompilerIf #PB_Compiler_IsMainFile
; Shows possible flags of ButtonGadget in action...
  If OpenWindow(0, 0, 0, 222, 200, "ButtonGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ButtonGadget(0, 10, 10, 200, 20, "Standard Button")
    ButtonGadget(1, 10, 40, 200, 20, "Left Button", #PB_Button_Left)
    ButtonGadget(2, 10, 70, 200, 20, "Right Button", #PB_Button_Right)
    ButtonGadget(3, 10,100, 200, 60, "Multiline Button  (longer text gets automatically wrapped)", #PB_Button_MultiLine)
    ButtonGadget(4, 10,170, 200, 20, "Toggle Button", #PB_Button_Toggle)
    
    HideGadget(1,1)
    ; HideWindow(0,1)
    Debug Hide::Hide(WindowID(0)) ; CocoaMessage (0, WindowID (0), "isVisible")
    Debug Hide::Hide(GadgetID(1))
    Debug Hide::Hide(GadgetID(2))
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
CompilerEndIf