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
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
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
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
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
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