Page 1 of 1

[Solved]ButtonGadget toggle

Posted: Tue Oct 17, 2023 11:17 pm
by Distorted Pixel
Hi, I'm trying to get this simple example to detect the button being pressed and show the GadgetState in debug and get the "Ok' button to work. I know the "Ok" button isn't set up yet to except any selection. I am currently just wanting the 4 buttons to show the GadgetState in debug.

I have it working in another program, but the program has a lot to it and I can't figure out how I got it to work. I tried to create this simple program to figure it out. So far not working.

I would like to avoid using gadget event binding as I somehow did in my other program. The Ok button is still not working in my other program either, but the 8 buttons in it are showing the state

What am I missing?

Code: Select all

If OpenWindow(0,0,0,300,200,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ButtonGadget(1,10,10,25,25,"1",#PB_Button_Toggle)
  ButtonGadget(2,40,10,25,25,"2",#PB_Button_Toggle)
  ButtonGadget(3,70,10,25,25,"3",#PB_Button_Toggle)
  ButtonGadget(4,100,10,25,25,"4",#PB_Button_Toggle)
  ButtonGadget(5,120,50,25,25,"Ok")
  
  Repeat
    event=WaitWindowEvent()
    
    Bgadget=0
    Select EventID
      Case #PB_Event_Gadget
        Select GadgetID
          Case 1
            If EventGadget()
              Bgadget=GetGadgetState(1)
              Debug "Btn 1 "+Bgadget
            EndIf
            
          Case 2
            If EventGadget()
              Bgadget=GetGadgetState(2)
              Debug "Btn 2 "+Bgadget
            EndIf
            
          Case 3
            If EventGadget()
              Bgadget=GetGadgetState(3)
              Debug "Btn 3 "+Bgadget
            EndIf
            
          Case 4
            If EventGadget()
              Bgadget=GetGadgetState(4)
              Debug "Btn 4 "+Bgadget
            EndIf
            
          Case 5
            If EventGadget()
              Bgadget=GetGadgetState(4)
              Debug "Btn Ok "+Bgadget
            EndIf
            
        EndSelect
    EndSelect
    
  Until event=#PB_Event_CloseWindow
  CloseWindow(0)
EndIf

Re: ButtonGadget toggle

Posted: Tue Oct 17, 2023 11:36 pm
by firace

Code: Select all

If OpenWindow(0,0,0,300,200,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ButtonGadget(1,10,10,25,25,"1",#PB_Button_Toggle)
  ButtonGadget(2,40,10,25,25,"2",#PB_Button_Toggle)
  ButtonGadget(3,70,10,25,25,"3",#PB_Button_Toggle)
  ButtonGadget(4,100,10,25,25,"4",#PB_Button_Toggle)
  ButtonGadget(5,120,50,25,25,"Ok")
  
  Repeat
    event=WaitWindowEvent()
    
    Bgadget=0
    Select Event   ;; ------------------ this
      Case #PB_Event_Gadget
        Select EventGadget()   ;; ------------------ this
          Case 1
            If EventGadget()
              Bgadget=GetGadgetState(1)
              Debug "Btn 1 "+Bgadget
            EndIf
            
          Case 2
            If EventGadget()
              Bgadget=GetGadgetState(2)
              Debug "Btn 2 "+Bgadget
            EndIf
            
          Case 3
            If EventGadget()
              Bgadget=GetGadgetState(3)
              Debug "Btn 3 "+Bgadget
            EndIf
            
          Case 4
            If EventGadget()
              Bgadget=GetGadgetState(4)
              Debug "Btn 4 "+Bgadget
            EndIf
            
          Case 5
            If EventGadget()
              Bgadget=GetGadgetState(4)
              Debug "Btn Ok "+Bgadget
            EndIf
            
        EndSelect
    EndSelect
    
  Until event=#PB_Event_CloseWindow
  CloseWindow(0)
EndIf


Re: ButtonGadget toggle

Posted: Tue Oct 17, 2023 11:53 pm
by Distorted Pixel
firace wrote: Tue Oct 17, 2023 11:36 pm

Code: Select all

If OpenWindow(0,0,0,300,200,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ButtonGadget(1,10,10,25,25,"1",#PB_Button_Toggle)
  ButtonGadget(2,40,10,25,25,"2",#PB_Button_Toggle)
  ButtonGadget(3,70,10,25,25,"3",#PB_Button_Toggle)
  ButtonGadget(4,100,10,25,25,"4",#PB_Button_Toggle)
  ButtonGadget(5,120,50,25,25,"Ok")
  
  Repeat
    event=WaitWindowEvent()
    
    Bgadget=0
    Select Event   ;; ------------------ this
      Case #PB_Event_Gadget
        Select EventGadget()   ;; ------------------ this
          Case 1
            If EventGadget()
              Bgadget=GetGadgetState(1)
              Debug "Btn 1 "+Bgadget
            EndIf
            
          Case 2
            If EventGadget()
              Bgadget=GetGadgetState(2)
              Debug "Btn 2 "+Bgadget
            EndIf
            
          Case 3
            If EventGadget()
              Bgadget=GetGadgetState(3)
              Debug "Btn 3 "+Bgadget
            EndIf
            
          Case 4
            If EventGadget()
              Bgadget=GetGadgetState(4)
              Debug "Btn 4 "+Bgadget
            EndIf
            
          Case 5
            If EventGadget()
              Bgadget=GetGadgetState(4)
              Debug "Btn Ok "+Bgadget
            EndIf
            
        EndSelect
    EndSelect
    
  Until event=#PB_Event_CloseWindow
  CloseWindow(0)
EndIf

Thank you firace, now that you showed me, those 2 things are in my other program lol. I realize I put "EventID" instead of just "event for the one

Re: ButtonGadget toggle

Posted: Wed Oct 18, 2023 12:26 am
by Gérard
Hello,

Another approach I use in my applications:

Code: Select all

EnableExplicit

Enumeration Windows
  #WinMain
EndEnumeration

Enumeration Menus
  #MenuMain
EndEnumeration

Enumeration MenuItems
  #MenuClose
EndEnumeration

Enumeration Gadget
 #Button
 #ButtonEnd=#Button+5
EndEnumeration

Define Event, indexMenu, indexGadget, indexGadgetType 

Define i

If OpenWindow(#WinMain,0,0,300,200,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateMenu(#MenuMain, WindowID(#WinMain))
    MenuTitle("File")
    MenuItem(#MenuClose, "Close")
  EndIf
  i=0
  i+1:ButtonGadget(#Button+i,10 ,10,25,25,"1",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,40 ,10,25,25,"2",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,70 ,10,25,25,"3",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,100,10,25,25,"4",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,120,50,25,25,"Ok")
  CompilerIf #PB_Compiler_Debugger
    If #Button+i > #ButtonEnd
      Debug ""
      Debug "#Button > #ButtonEnd"
      Debug ""
      Debug "#ButtonEnd = #Button + " + Str(i)
      End
    EndIf
  CompilerEndIf
  
  Repeat
    Event = WaitWindowEvent(20)
    
    Select Event
      Case #PB_Event_Menu
        indexMenu = EventMenu()
        Select indexMenu
          Case #MenuClose : Break
        EndSelect
        
      Case #PB_Event_Gadget
        indexGadget     = EventGadget()
        indexGadgetType = EventType()
        Select indexGadget
          Case #Button To #ButtonEnd
            Debug "Button "+GetGadgetText(indexGadget)+" - state "+GetGadgetState(indexGadget)
        EndSelect
        
      Case #PB_Event_CloseWindow
        Break
    EndSelect
  ForEver
EndIf
Gérard

Re: ButtonGadget toggle

Posted: Thu Oct 19, 2023 1:06 pm
by Distorted Pixel
Gérard wrote: Wed Oct 18, 2023 12:26 am Hello,

Another approach I use in my applications:

Code: Select all

EnableExplicit

Enumeration Windows
  #WinMain
EndEnumeration

Enumeration Menus
  #MenuMain
EndEnumeration

Enumeration MenuItems
  #MenuClose
EndEnumeration

Enumeration Gadget
 #Button
 #ButtonEnd=#Button+5
EndEnumeration

Define Event, indexMenu, indexGadget, indexGadgetType 

Define i

If OpenWindow(#WinMain,0,0,300,200,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateMenu(#MenuMain, WindowID(#WinMain))
    MenuTitle("File")
    MenuItem(#MenuClose, "Close")
  EndIf
  i=0
  i+1:ButtonGadget(#Button+i,10 ,10,25,25,"1",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,40 ,10,25,25,"2",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,70 ,10,25,25,"3",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,100,10,25,25,"4",#PB_Button_Toggle)
  i+1:ButtonGadget(#Button+i,120,50,25,25,"Ok")
  CompilerIf #PB_Compiler_Debugger
    If #Button+i > #ButtonEnd
      Debug ""
      Debug "#Button > #ButtonEnd"
      Debug ""
      Debug "#ButtonEnd = #Button + " + Str(i)
      End
    EndIf
  CompilerEndIf
  
  Repeat
    Event = WaitWindowEvent(20)
    
    Select Event
      Case #PB_Event_Menu
        indexMenu = EventMenu()
        Select indexMenu
          Case #MenuClose : Break
        EndSelect
        
      Case #PB_Event_Gadget
        indexGadget     = EventGadget()
        indexGadgetType = EventType()
        Select indexGadget
          Case #Button To #ButtonEnd
            Debug "Button "+GetGadgetText(indexGadget)+" - state "+GetGadgetState(indexGadget)
        EndSelect
        
      Case #PB_Event_CloseWindow
        Break
    EndSelect
  ForEver
EndIf
Gérard
Thank you, I will take a look at this tonight. I have already solved the issue, but this does look interesting.