Page 1 of 1

ImageGadget as a minimize button

Posted: Wed Feb 09, 2011 4:24 pm
by braveheart

Code: Select all

Enumeration
  #oWin
  #oButton
  #oImgBtn
EndEnumeration

OpenWindow(#oWin,0,0,300,300,"Minimize", #PB_Window_BorderLess|#PB_Window_ScreenCentered)
ButtonGadget(#oButton,10,10,100,30,"Minimize")
ImageGadget(#oImgBtn,130,10,100,30,0,#PB_Image_Border)
Repeat
  event=WaitWindowEvent()
  Select event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #oButton
          SetWindowState(#oWin,#PB_Window_Minimize)
        Case #oImgBtn
          SetWindowState(#oWin,#PB_Window_Minimize)
      EndSelect
  EndSelect
  
  Until event=#PB_Event_CloseWindow
Why does image gadget performs minimize before it clicked after 2nd time?

Re: ImageGadget as a minimize button

Posted: Wed Feb 09, 2011 5:10 pm
by STARGÅTE
ImageGadget()
The following events are supported through EventType():
#PB_EventType_LeftClick
#PB_EventType_RightClick
#PB_EventType_LeftDoubleClick
#PB_EventType_RightDoubleClick
#PB_EventType_DragStart

Code: Select all

Enumeration
  #oWin
  #oButton
  #oImgBtn
EndEnumeration

OpenWindow(#oWin,0,0,300,300,"Minimize", #PB_Window_BorderLess|#PB_Window_ScreenCentered)
ButtonGadget(#oButton,10,10,100,30,"Minimize")
ImageGadget(#oImgBtn,130,10,100,30,0,#PB_Image_Border)
Repeat
  event=WaitWindowEvent()
  Select event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #oButton
          SetWindowState(#oWin,#PB_Window_Minimize)
        Case #oImgBtn
          If EventType() = #PB_EventType_LeftClick
            SetWindowState(#oWin,#PB_Window_Minimize)
          EndIf
      EndSelect
  EndSelect
  
  Until event=#PB_Event_CloseWindow

Re: ImageGadget as a minimize button

Posted: Wed Feb 09, 2011 5:18 pm
by braveheart
STARGÅTE Thank you! :D

Re: ImageGadget as a minimize button

Posted: Wed Feb 09, 2011 6:40 pm
by WilliamL
Mac only! I wanted to get this to work on a Mac and this is what I came up with. I found I had to add |#PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget/i] to get it to work and #PB_Window_SystemMenu had to be added to be able to close the window. When the window 'minimizes' it goes into the Dock. (which I happen to like and use)

Code: Select all

Enumeration
  #oWin
  #oButton
  #nButton
  #oImgBtn
EndEnumeration

If CreateImage(#oImgBtn,100,30)
    If StartDrawing(ImageOutput(#oImgBtn))
        Box(0,0,100,30,$99FF99)
        DrawingMode(#PB_2DDrawing_Transparent)
        DrawText(4,10,"Minimize",0)
        StopDrawing()
    EndIf
EndIf
    
OpenWindow(#oWin,0,30,340,200,"Window sizes", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
    ButtonGadget(#oButton,10,10,100,30,"Maximize")
    ImageGadget(#oImgBtn,130,10,100,30,ImageID(#oImgBtn),#PB_Image_Border)
    ButtonGadget(#nButton,240,10,100,30,"Normalize")

Repeat
    event=WaitWindowEvent()
    Select event
    Case #PB_Event_Gadget
        Select EventGadget()
        Case #oButton
            SetWindowState(#oWin,#PB_Window_Maximize)
        Case #oImgBtn
            SetWindowState(#oWin,#PB_Window_Minimize)
        Case #nButton
            SetWindowState(#oWin,#PB_Window_Normal)
        EndSelect
    EndSelect
Until event=#PB_Event_CloseWindow