Page 1 of 1

Improved Simple Gadgets Part 3

Posted: Fri Sep 25, 2015 5:16 pm
by Redlion
Hi all,

Part three, more gadgets.

( Save as G_Check.hws )

Code: Select all

; ************************************************************************************************
; Gadget Include
; Gadget Check - Input.
; Gadget Type = 5
; By Leo den Hollander
; *************************************************************************************************

Function GadgetCheck(GID, x, y, w, h, Text$)
    SetLineWidth(1) 
    SetFillStyle(#FILLCOLOR)                                       
    Box(x, y, 25, 25, #SILVER)                                         
    SetFillStyle(#FILLNONE)                                       
    Line(x+1, y+1, x+25-2, y+1, #BLACK)                              
    Line(x+1, y+1, x+1, y+25-2, #BLACK)                             
    Line(x+25-2, y+1, x+25-2, y+25-2, RGB(224,224,224))                           
    Line(x+1, y+25-2, x+25-2, y+25-2, RGB(224,224,224)) 
    SetFont(Font,Size)                                             
    SetFontColor(FGC)  
    TextOut(x+30,y+3,Text$)                                        
    MakeButton(GID, #SIMPLEBUTTON, x, y, 25, 25, Gadget)
    GadgetX[GID] = x
    GadgetY[GID] = y
    GadgetW[GID] = 25
    GadgetH[GID] = 25
    GadgetText[GID] = Text$
    GadgetType[GID] = 5
    GadgetState[GID] = 0
    GadgetBorder[GID] = 0
    GadgetRangeLow[GID] = 0
    GadgetRangeHigh[GID] = 0
    GadgetGroup[GID] = 0
    GadgetItemCount[GID] = 0
    GadgetItem[GID][0][0] = ""
    GadgetFont[GID] = Font
    GadgetFontSize[GID] = Size
    GadgetBColor[GID] = BGC
    GadgetFColor[GID] = FGC
    MaxGadgets = MaxGadgets + 1 
EndFunction

Function p_SetCheck(id)                       
    SetFillStyle(#FILLCOLOR)                                ; Set colour fill mode
    Box(GadgetX[id] + 2, GadgetY[id] + 2, 21, 21, #SILVER)  ; Blank out X
    SetFormStyle(#ANTIALIAS)                                ; Set Antialias
    If GadgetState[id] = 0                                  ; Check State if 0
        SetFormStyle(#ANTIALIAS)  
        SetFillStyle(#FILLCOLOR)
        Polygon(GadgetX[id] + 5, GadgetY[id] + 5,Cross, 21, #GREEN)
        SetFormStyle(#NORMAL)
        GadgetState[id] = 1                                 ; Set state = 1  
    Else
        Box(GadgetX[id] + 2, GadgetY[id] + 2, 21, 21, #SILVER)  ; Clear check mark
        GadgetState[id] = 0                                 ; Set state = 0
    EndIf
    SetFormStyle(#NORMAL)                                   ; Reset to Normal Style
EndFunction
( Save as G_Option.hws )

Code: Select all

; ************************************************************************************************
; Gadget Include
; Gadget Option - Input.
; Gadget Type = 4
; By Leo den Hollander
; *************************************************************************************************

Function GadgetOption(GID, x, y, w, h, Text$, Group)
    SetLineWidth(1) 
    SetFillStyle(#FILLCOLOR)                                       
    Box(x, y, 25, 25, #SILVER)                                       
    SetFillStyle(#FILLNONE)                                       
    Line(x+1, y+1, x+25-2, y+1,#BLACK)                             
    Line(x+1, y+1, x+1, y+25-2,#BLACK)                              
    Line(x+25-2, y+1, x+25-2, y+25-2,RGB(224,224,224))                           
    Line(x+1, y+25-2,x+25-2,y+25-2,RGB(224,224,224)) 
    SetFont(Font,Size)                                             
    SetFontColor(FGC)  
    TextOut(x+30, y+3, Text$) 
    MakeButton(GID, #SIMPLEBUTTON, x, y, 25, 25, Gadget)
    GadgetX[GID] = x
    GadgetY[GID] = y
    GadgetW[GID] = 25
    GadgetH[GID] = 25
    GadgetText[GID] = Text$
    GadgetType[GID] = 4
    GadgetState[GID] = 0
    GadgetBorder[GID] = 0
    GadgetRangeLow[GID] = 0
    GadgetRangeHigh[GID] = 0
    GadgetGroup[GID] = Group
    GadgetItemCount[GID] = 0
    GadgetItem[GID][0][0] = ""
    GadgetFont[GID] = Font
    GadgetFontSize[GID] = Size
    GadgetBColor[GID] = BGC
    GadgetFColor[GID] = FGC
    MaxGadgets = MaxGadgets + 1   
EndFunction

Function p_SetOption(id)
    SetFillStyle(#FILLCOLOR)                                                                       
    For Local t = 1 To MaxGadgets                                       ; Need to set this to highest gadget ID
        If GadgetGroup[t] = GadgetGroup[id]                             ; Check if Option group matches ids group
            Box(Gadgetx[t] + 3, Gadgety[t] + 3, 19, 19, #SILVER)        ; Turn all options off
            GadgetState[t] = 0                                          ; Set state = 0
        EndIf    
    Next
    SetFormStyle(#ANTIALIAS)                                            ; Set antialias
    Box(Gadgetx[id]+4, Gadgety[id] + 4, 17, 17, #GREEN, {roundlevel=25}); Add Green mark to selected option gadget
    SetFormStyle(#NORMAL)                                               ; Rest to Normal Style
    GadgetState[id] = 1                                                 ; Set state = 1
EndFunction
( Save as G_Select.hws )

Code: Select all

; ************************************************************************************************
; Gadget Include
; Gadget Select - Input.
; Gadget Type = 6
; By Leo den Hollander
; *************************************************************************************************

Function GadgetSelect(GID, x, y, w, h, Text$)
    SetFillStyle(#FILLCOLOR)                                                                       
    Box(x, y, w, h, #SILVER)                                                                       
    SetFillStyle(#FILLNONE) 
    Line(x+1, y+1, x+w-2, y+1, #BLACK)                                                  
    Line(x+1, y+1, x+1, y+h-2, #BLACK)               
    Line(x+w-2, y+1, x+w-2, y+h-2,RGB(224,224,224)) 
    Line(x+1, y+h-2, x+w-2, y+h-2, RGB(224,224,224)) 
    Line(x+w-22, y+1, x+w-22, y+h-3, #BLACK)  
    SetFormStyle(#ANTIALIAS)  
    SetFillStyle(#FILLCOLOR)
    Polygon(x + w - 18, y + 7, DownArrow, 4, #RED)
    SetFormStyle(#NORMAL)
    SetFont(Font,Size)                                                                       
    SetFontColor(FGC)  
    TextOut(x + 4,y + 3, Text$)                                                                   
    MakeButton(GID, #SIMPLEBUTTON, x, y, w, 25, Gadget)
    GadgetX[GID] = x
    GadgetY[GID] = y
    GadgetW[GID] = w
    GadgetH[GID] = 25
    GadgetText[GID] = Text$
    GadgetType[GID] = 6
    GadgetState[GID] = 0
    GadgetBorder[GID] = 0
    GadgetRangeLow[GID] = 0
    GadgetRangeHigh[GID] = 0
    GadgetGroup[GID] = 0
    GadgetItemCount[GID] = 0
    GadgetItem[GID][0][0] = Text$
    GadgetFont[GID] = Font
    GadgetFontSize[GID] = Size
    GadgetBColor[GID] = BGC
    GadgetFColor[GID] = FGC
    MaxGadgets = MaxGadgets + 1 
EndFunction

Function AddSelectRow(GID,Text$)
    Row = GadgetItemCount[GID] + 1   
    Gadgetitem[GID][0][Row] = Text$
    Gadgetitem[GID][0][Row + 1] = ""
    GadgetItemCount[GID] = Row
EndFunction

Function p_SetSelect(id)
    Select = GadgetState[id]                                            ; Get state 
    Select = Select + 1                                                 ; Set next selection
    If GadgetItem[id][0][Select] = ""                                   ; Find last rest to first
        Select = 0
    EndIf
    GadgetState[id] = Select                                            ; Set new state
    SetFillStyle(#FILLCOLOR)                                            ; Set colour fill mode
    Box(GadgetX[id] + 2, GadgetY[id] + 2,GadgetW[id] - 4, GadgetH[id] - 4, #SILVER) 
    SetFormStyle(#ANTIALIAS)  
    SetFillStyle(#FILLCOLOR)
    Polygon(GadgetX[id] + GadgetW[id] - 18, GadgetY[id] + 7, DownArrow, 4, #RED)
    SetFormStyle(#NORMAL)
    SetFont(Font,Size)                                                  ; Font used on gadget face
    SetFontColor(FC)  
    TextOut(GadgetX[id]+4,GadgetY[id]+3,GadgetItem[id][0][select])
    Line(GadgetX[id] + GadgetW[id] - 22, GadgetY[id] + 1, GadgetX[id] + GadgetW[id] - 22, GadgetY[id] + GadgetH[id] - 3, #BLACK)
    SelColumn = 0
EndFunction
( Save as G_Slider.hws )

Code: Select all

; ************************************************************************************************
; Gadget Include
; Gadget Slider - Input.
; Gadget Type = 8
; By Leo den Hollander
; *************************************************************************************************

Function GadgetSlider(GID, x, y, w, h, Start, Stop)
    SetFillStyle(#FILLCOLOR)                   
    Box(x, y, w, 25, RGB(160,160,160))                    
    SetFillStyle(#FILLNONE) 
    Line(x+1, y+1, x+w-2, y+1, #BLACK)                  
    Line(x+1, y+1, x+1, y+25-2, #BLACK)                     
    Line(x+w-2, y+1, x+w-2, y+25-2, RGB(224,224,224))          
    Line(x+1, y+25-2 ,x+w-2, y+25-2, RGB(224,224,224)) 
    MakeButton(GID, #SIMPLEBUTTON, x, y, w, 25, Gadget)           
    GadgetX[GID] = x
    GadgetY[GID] = y
    GadgetW[GID] = w
    GadgetH[GID] = 25
    GadgetText[GID] = ""
    GadgetType[GID] = 8
    GadgetState[GID] = Start
    GadgetBorder[GID] = 0
    GadgetRangeLow[GID] = Start
    GadgetRangeHigh[GID] = Stop
    GadgetGroup[GID] = 0
    GadgetItemCount[GID] = 0
    GadgetItem[GID][0][0] = ""
    GadgetFont[GID] = Font
    GadgetFontSize[GID] = Size
    GadgetBColor[GID] = BGC
    GadgetFColor[GID] = FGC
    MaxGadgets = MaxGadgets + 1
    SetFormStyle(#ANTIALIAS) 
    SetFillStyle(#FILLCOLOR)
    Box(x + 2, y + 3, 19, 18, #GRAY, {roundlevel=25})
    SetFillStyle(#FILLNONE) 
    Box(x + 2, y + 3, 19, 18, $444444, {roundlevel=25})
    SetFontColor(GadgetFColor[GID])
    TextOut(GadgetX[GID] + (Gadgetw[GID] / 2), GadgetY[GID] + 4, StrStr(GadgetState[GID]))     
    SetFormStyle(#NORMAL)
EndFunction

Function p_SetSlider(id)
    Repeat
    Pressed = 0
    Local DPosX = MouseX()
    Local DPosY = MouseY()
    If DposX < GadgetX[id] + 2
        DposX = GadgetX[id] + 2
    EndIf
    If DposX > GadgetX[id] + GadgetW[id] - 22
        DposX = GadgetX[id] + GadgetW[id] - 22
    EndIf
    GadgetState[id] = Int(((DPosX - GadgetX[id] - 2) / (GadgetW[id] - 24)) * GadgetRangeHigh[id])
    If IsLeftMouse() = False
        Pressed = 1
    EndIf
    BeginDoubleBuffer()
        SetFillStyle(#FILLCOLOR)     
        Box(GadgetX[id] + 2, GadgetY[id] + 2, GadgetW[id] - 4, GadgetH[id] - 4, RGB(160,160,160))
        SetFormStyle(#ANTIALIAS)
        Box(DPosX,GadgetY[id] + 3, 19, 18, #GRAY, {roundlevel=25})
        SetFillStyle(#FILLNONE)
        Box(DPosX, GadgetY[id] + 3, 19, 18, $444444, {roundlevel=25})
        SetFont(Font, Size)                           
        SetFontColor(GadgetFColor[id])  
        TextOut(GadgetX[id] + (GadgetW[id] / 2),GadgetY[id] + 4, StrStr(GadgetState[id]))
        SetFormStyle(#NORMAL)
    Flip()
    EndDoubleBuffer()
    Until Pressed = 1
    SelColumn = 0
    SetFillStyle(#FILLCOLOR)
EndFunction 
( Save as G_Spin.hws )

Code: Select all

; ************************************************************************************************
; Gadget Include
; Gadget Spin - Input.
; Gadget Type = 7
; By Leo den Hollander
; *************************************************************************************************

Function GadgetSpin(GID, x, y, w, h, Start, Stop)
    SetFillStyle(#FILLCOLOR)            
    Box(x, y, w, h, #SILVER)  
    SetFillStyle(#FILLNONE) 
    Line(x+1, y+1, x+w-2, y+1,#BLACK)      
    Line(x+1, y+1, x+1, y+h-2,#BLACK)               
    Line(x+w-2, y+1, x+w-2, y+h-2,RGB(224,224,224)) 
    Line(x+1, y+h-2,x+w-2,y+h-2, RGB(224,224,224)) 
    Line(x+w-38, y+1, x+w-38, y+h-3,#BLACK) 
    Line(x+w-20, y+1, x+w-20, y+h-3,#BLACK) 
    SetFormStyle(#ANTIALIAS)  
    SetFillStyle(#FILLCOLOR)
    Polygon(x+w-34,y+7, DownArrow, 4, #RED)
    Polygon(x+w-16,y+7, UpArrow, 4, #RED)
    SetFormStyle(#NORMAL)
    TextOut(x+4,y+3,StrStr(Start))                 
    MakeButton(GID, #SIMPLEBUTTON, x, y, w, 25, Gadget)
    GadgetX[GID] = x
    GadgetY[GID] = y
    GadgetW[GID] = w
    GadgetH[GID] = 25
    GadgetText[GID] = Text$
    GadgetType[GID] = 7
    GadgetState[GID] = Start
    GadgetBorder[GID] = 0
    GadgetRangeLow[GID] = Start
    GadgetRangeHigh[GID] = Stop
    GadgetGroup[GID] = 0
    GadgetItemCount[GID] = 0
    GadgetItem[GID][0][0] = ""
    GadgetFont[GID] = Font
    GadgetFontSize[GID] = Size
    GadgetBColor[GID] = BGC
    GadgetFColor[GID] = FGC  
    MaxGadgets = MaxGadgets + 1
EndFunction

Function p_SetSpin(id)
    Local DPosX = MouseX()
    Number = GadgetState[id]  
    If DPosX > GadgetX[id]+GadgetW[id] - 38 And DPosX < GadgetX[id] + GadgetW[id] - 20
        Number = Number -1                                          ; Set next selection
        If Number < GadgetRangeLow[id]                              ; Find last rest to first
            Number = GadgetRangeLow[id]
        EndIf
    EndIf
    If DposX > GadgetX[id]+GadgetW[id] - 19 And DposX < GadgetX[id] + GadgetW[id] - 2
        Number = Number + 1 
        If Number > GadgetRangeHigh[id]                             ; Find last rest to first
            Number = GadgetRangeHigh[id]
        EndIf
    EndIf
    GadgetState[id] = Number                                        ; Set new state
    SetFillStyle(#FILLCOLOR)                                        ; Set colour fill mode
    Box(GadgetX[id] + 2, GadgetY[id] + 2, GadgetW[id] - 2,GadgetH[id] - 4, #SILVER) 
    SetFormStyle(#ANTIALIAS)  
    SetFillStyle(#FILLCOLOR)
    Polygon(GadgetX[id] + GadgetW[id] - 34 ,GadgetY[id] + 7, DownArrow, 4, #RED)
    Polygon(GadgetX[id]  +GadgetW[id] - 16, GadgetY[id] + 7, UpArrow, 4, #RED)
    SetFormStyle(#NORMAL)
    SetFont(Font,Size)                                              ; Font used on gadget face
    SetFontColor(FC)  
    TextOut(GadgetX[id] + 4, GadgetY[id] + 3, StrStr(Number))
    GadgetText[id] = StrStr(Number)
    Line(GadgetX[id] + GadgetW[id] - 38, GadgetY[id] + 1, GadgetX[id] + GadgetW[id] - 38, GadgetY[id] + GadgetH[id] - 3, #BLACK) 
    Line(GadgetX[id] + GadgetW[id] - 20, GadgetY[id] + 1, GadgetX[id] + GadgetW[id] - 20, GadgetY[id] + GadgetH[id] - 3, #BLACK) 
EndFunction
( Save as G_ColorSelect.hws )

Code: Select all

; ************************************************************************************************
; Gadget Include
; Gadget ColorSelect - Input.
; Gadget Type = 14
; By Leo den Hollander
; *************************************************************************************************

Function GadgetColorSelect(GID, x, y, w, h, ColorTable)
    SetFillStyle(#FILLCOLOR)                                                                     
    Box(x, y, w, h, #SILVER)
    Box(x+2, y+2, w-4, 21, rgb(160,160,160))  
    Box(X+w-25, y+3, 18, 18, ColorTable[1])                                                                   
    SetFillStyle(#FILLNONE) 
    Line(x+1, y+1, x+w-2, y+1, #BLACK)                                                            
    Line(x+1, y+1 ,x+1, y+h-2, #BLACK)               
    Line(x+w-2, y+1, x+w-2, y+h-2, RGB(224,224,224)) 
    Line(x+1, y+h-2, x+w-2, y+h-2, RGB(224,224,224)) 
    Line(x+1, y+23, x+w-2 ,y+23, #BLACK) 
    SetFont(Font,Size)                                            ; Font used on gadget face
    SetFontColor(FGC)                                             ; Text colour
    TextOut(x+5,y+2 , " Color Selection ")
    SetFillStyle(#FILLCOLOR)
    For c = 1 To 8
        Box(x+2+((C-1)*((w-4)/(8))),Y+24,(W/8),(h-25)/2,ColorTable[C])
        Box(x+2+((C-1)*((w-4)/(8))),Y+24+(h-26)/2,(W/8),(h-25)/2,ColorTable[C+8])
    Next
    MakeButton(GID, #SIMPLEBUTTON, x, y, w, h, Gadget)
    GadgetX[GID] = x
    GadgetY[GID] = y
    GadgetW[GID] = w
    GadgetH[GID] = h
    GadgetText[GID] = Text$
    GadgetType[GID] = 14
    GadgetState[GID] = 0
    GadgetBorder[GID] = 0
    GadgetRangeLow[GID] = 0
    GadgetRangeHigh[GID] = 0
    GadgetGroup[GID] = 0
    GadgetItemCount[GID] = 0
    GadgetItem[GID][0][0] = ""
    GadgetFont[GID] = Font
    GadgetFontSize[GID] = Size
    GadgetBColor[GID] = BGC
    GadgetFColor[GID] = FGC
    MaxGadgets = MaxGadgets + 1   
EndFunction

Function p_SetColor(msg)
    Local DPosX = MouseX()
    Local DPosY = MouseY()
    If DPosY > GadgetY[Gadget] + 24 and DPosY < GadgetY[Gadget] + GadgetH[Gadget]-2 
        col = ReadPixel(DposX,DPosY)
        SetFillStyle(#FILLCOLOR)                                                                     
        Box(GadgetX[Gadget] + GadgetW[Gadget] - 25,GadgetY[Gadget] + 3, 18, 18, Col)  
    Endif
    SelColumn = int((DPosX -(GadgetX[Gadget]+2))/(GadgetW[Gadget]/8))+1     ; Column
    SelRow = int((DPosY-(GadgetY[Gadget]+24))/((GadgetH[Gadget]-24)/2))+1   ; Row
    If SelRow = 2
        SelColumn = SelColumn + 8
    Endif
EndFunction 
Leo