

;Maak een scherm voor ja, nee, ok en Annuleren
;Terug code is:
;0 = niets gedrukt
;1 = knop OK is gedrukt
;2 = Knop JA is gedrukt
;4 = Knop NEE is ingedrukt
;8 = Knop Annuleren is gedrukt

;buttons welke aangeroepen kunnen worden=
;1 = OK
;2 = JA
;4 = NEE
;8 = ANNULEREN

;LET OP
;Programma check niet of de knoppen elkaar overlappen of door te kleine scherm buiten
;de randen komt. Knoppen hebben een vaste maat.

Procedure MSGBox(Xpos,Ypos,Width,Height,TitleColor,TitleTextColor,TitleText$,MsgText$,Buttons)
  Protected TempBut,TempFontHeight,AantalBut,Button4,Button3,Button2,Button1,ButtonNumber
  ;Maak 4 plaatsen aan voor gebruik van buttons lokatie
  ; teken nu de window
  ;ShowCursor_(#True)
   TempBut = Buttons
  Repeat
  ClearScreen(0)
  StartDrawing(ScreenOutput())
  DrawingMode(#PB_2DDrawing_Transparent)
  FrontColor(RGB(255,255,255))
  BackColor(RGB(0,0,0))
  Box (Xpos,Ypos,Width,Height); Upper and left
  FrontColor(RGB(75,75,75))
  ;Rem test kleur gebruiken
  Box (Xpos+1,Ypos + 1,Width - 2,Height - 2) ; Down And right
  FrontColor(TitleColor)
  Box (Xpos+1,Ypos + 1,Width - 1,Height -1) ;l Middle
  FrontColor(TitleTextColor)
  DrawText(Xpos+3,Ypos+2,TitleText$)
  StopDrawing()
  CText(Msgtext$,Xpos+(Width/2),Ypos+(Height/2)-5)
  
    Buttons = TempBut
    AantalBut = 0
    ; kijken voor annuleren
    If Buttons > 8
      Buttons = Buttons -8
      AantalBut = 1
      Button4 = Button3D(XPos+4,Ypos + Height-25,75,20,_grey,light_grey,dark_grey,black,"Cansel",Button4)
    EndIf
    ; Annuleren als gecentreerd
    If Buttons = 8
      Buttons = Buttons -8
      AantalBut = 1
      Button4 = Button3D(XPos+4+((Width/2)-37),Ypos + Height-25,75,20,_grey,light_grey,dark_grey,black,"Cansel",Button4)
    EndIf
    ; kijken voor Nee
    If Buttons > 4
      Buttons = Buttons -4
      AantalBut = AantalBut + 1
      Button3 = Button3D(XPos+ 4 + ((AantalBut - 1)*(Width/4)),Ypos+Height-25,55,20,_grey,light_grey,dark_grey,white,"No",Button3)
    EndIf
    ; alleen de NEE button
    If Buttons = 4 And AantalBut = 0
      Buttons = Buttons -4  ; toch teller op nul zetten
      Button3 = Button3D(XPos+ 4+((Width/2)-27),Ypos+Height-25,55,20,_grey,light_grey,dark_grey,white,"No",Button3)
    EndIf
    ; kijken voor JA Let op deze moet rechts staan
    If Buttons > 2 Or (Buttons =2 And AantalBut =1 )
      Buttons = Buttons -2
      AantalBut = AantalBut + 1
      Button2 = Button3D(XPos+ Width -59,Ypos+Height-25,55,20,_grey,light_grey,dark_grey,white,"Yes",Button2)
    EndIf
    ; allen de JA button
    If Buttons = 2 And AantalBut = 0
      Button2 = Button3D(XPos+ 4+((Width/2)-27),Ypos+Height-25,55,20,_grey,light_grey,dark_grey,white,"Yes",Button2)
    EndIf
    ; OK als 2e button dus rechts
    If Buttons = 1 And AantalBut = 1
      AantalBut = -1
      Button1 = Button3D(XPos+ Width -59,Ypos+Height-25,55,20,_grey,light_grey,dark_grey,_black,"OK",Button1)
    EndIf
    ; Ok voor de tweede keer gecentreerd
    If (Buttons = 1 And AantalBut = 0) Or (Buttons = 1 And AantalBut = 2)
      AantalBut = -1
      Button1 = Button3D(XPos+ 4+((Width/2)-27),Ypos+Height-25,55,20,_grey,light_grey,dark_grey,_black,"OK",Button1)
    EndIf
    ; nu Ok button plaatsen
    If Buttons = 1 And AantalBut > 0
      Button1 = Button3D(XPos+ 4+((AantalBut - 1)*(Width/4)),Ypos+Height-25,55,20,_grey,light_grey,dark_grey,_black,"OK",Button1)
    EndIf
    DisplayTransparentSprite(Im_Cursor,MouseX(),MouseY())
    ; Check of button is gedrukt
    FlipBuffers()
    
  Until Button1 > 1 Or Button2 > 1 Or Button3 > 1 Or Button4 > 1
  If button4 = 2 : ButtonNumber +8 : EndIf
  If button3 = 2 : ButtonNumber +4 : EndIf
  If button2 = 2 : ButtonNumber +2 : EndIf
  If button1 = 2 : ButtonNumber +1 : EndIf
  ; teken de buitenste rand
  ProcedureReturn ButtonNumber
EndProcedure


; IDE Options = PureBasic 5.62 (Windows - x64)
; CursorPosition = 98
; FirstLine = 48
; Folding = -
; EnableXP
; CompileSourceDirectory
; EnableCompileCount = 0
; EnableBuildCount = 0
; EnableExeConstant