Code: Select all
#WinX=640
#WinY=400
#Undefined=-1
Procedure InitDialog()
#Orange=$00A1FF
#DarkGray=$808080
#LightGray=$D0D0D0
#DarkWhite=$FFFFFF
#SliderCornerSize=3
#SliderWidth=40; %
#Draw100=$FF000000
#Draw050=$80000000
#Draw025=$40000000
#Draw015=$1F000000
#Draw010=$10000000
#DrawBackShadow=#Draw050
#DrawSliderShadow=#Draw015
Structure SliderGadgetListType
Gadget.i
State.i
w.i
h.i
Text.s
ColorText.i
ColorBack.i
ColorSlider.i
EndStructure
Global DialogBackgroundColor
Global SliderGadgetCount
Global Dim SliderGadgetList.SliderGadgetListType(0)
DialogBackgroundColor=GetSysColor_(#COLOR_BTNFACE)
DialogBackgroundColor=$F0E0FF
EndProcedure
Procedure GetSliderGadgetIndex(gadget)
Protected n
Repeat
n+1
If SliderGadgetList(n)\Gadget=gadget
ProcedureReturn n
EndIf
Until n=SliderGadgetCount
ProcedureReturn #False
EndProcedure
Procedure SetSliderGadget(gadget,mode,extra=0)
Enumeration
#SliderGadget_Draw
#SliderGadget_Moving
EndEnumeration
Protected c
Protected pt,px,pw
Protected s.s
gadget=GetSliderGadgetIndex(gadget)
If gadget
With SliderGadgetList(gadget)
Select mode
Case #SliderGadget_Draw
StartDrawing(CanvasOutput(\Gadget))
s=StringField(\Text,1+\State,"|")
pw=#SliderWidth; pw=MulDiv_(\w,#SliderWidth,100) for %
pt=TextWidth(s)
If \State
px=\w-pw
pt=(px-pt)/2
cb=\ColorBack
ct=\ColorText
Else
pt=pw+(\w-pw-pt)/2
cb=#DarkWhite
ct=#DarkGray
EndIf
Box(0,0,\w,\h,DialogBackgroundColor)
RoundBox(0,0,\w,\h,#SliderCornerSize,#SliderCornerSize,#Draw100|cb)
DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Gradient)
LinearGradient(0,0,0,\h)
FrontColor(#Null)
BackColor(#DrawBackShadow)
GradientColor(0.02,#DrawBackShadow)
GradientColor(0.1,#DrawBackShadow>>1)
GradientColor(0.2,#DrawBackShadow>>2)
RoundBox(0,0,\w,\h,#SliderCornerSize,#SliderCornerSize)
DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
;DrawText((\State!1)*\w/2+(\w/2-TextWidth(s))/2,(\h-TextHeight(s))/2,s,#Draw100|\ColorText)
DrawText(pt,(\h-TextHeight(s))/2,s,#Draw100|ct)
DrawingMode(#PB_2DDrawing_Default)
RoundBox(px,0,pw,\h,#SliderCornerSize,#SliderCornerSize,#Draw100|\ColorSlider)
DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Gradient)
LinearGradient(0,\h,0,0)
BackColor(#DrawSliderShadow)
RoundBox(px,0,pw,\h,#SliderCornerSize,#SliderCornerSize,#Draw100|\ColorBack)
DrawingMode(#PB_2DDrawing_Outlined)
RoundBox(px,0,pw,\h,#SliderCornerSize,#SliderCornerSize,#Draw100|#Black)
RoundBox(0,0,\w,\h,#SliderCornerSize,#SliderCornerSize,#Draw100|#Black)
StopDrawing()
EndSelect
EndWith
ProcedureReturn gadget
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure SetSliderGadgetState(gadget,state)
Protected n
n=GetSliderGadgetIndex(gadget)
If n
;Debug "Set ("+Str(gadget)+"="+Str(state)+")"
SliderGadgetList(n)\State=state&1
SetSliderGadget(gadget,#SliderGadget_Draw)
EndIf
EndProcedure
Procedure GetSliderGadgetState(gadget)
gadget=GetSliderGadgetIndex(gadget)
If gadget
;Debug "Get (#"+Str(gadget)+"="+Str(SliderGadgetList(gadget)\State)+")"
ProcedureReturn SliderGadgetList(gadget)\State
Else
ProcedureReturn #Undefined
EndIf
EndProcedure
Procedure SliderGadget(gadget,x,y,w,h,text.s,slidercolor,backgroundcolor,textcolor=#Black)
SliderGadgetCount+1
ReDim SliderGadgetList(SliderGadgetCount)
With SliderGadgetList(SliderGadgetCount)
\Gadget=gadget
\w=w
\h=h
\Text=text
\ColorSlider=slidercolor
\ColorBack=backgroundcolor
\ColorText=textcolor
EndWith
CanvasGadget(gadget,x,y,w,h,#PB_Canvas_Keyboard); |#PB_Canvas_DrawFocus)
SetSliderGadget(gadget,#SliderGadget_Draw)
EndProcedure
Procedure SliderGadgetEvents()
Protected gadget
If GadgetType(EventGadget())=#PB_GadgetType_Canvas
gadget=EventGadget()
Select EventType()
Case #PB_Canvas_LeftButton
Case #PB_EventType_MouseMove
; Debug "move"
Case #PB_EventType_LeftButtonDown
Debug "Click ("+Str(EventGadget())+")"
Case #PB_EventType_LeftButtonUp
Debug "Up ("+Str(EventGadget())+")"
SetSliderGadgetState(gadget,GetSliderGadgetState(gadget)!1)
EndSelect
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
InitDialog()
OpenWindow(0,0,0,#WinX,#WinY,"Shadow",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SetWindowColor(0,DialogBackgroundColor)
SliderGadget(666,50,50,100,25,"Off|On",#White,#Yellow)
SliderGadget(667,50,100,100,25,"Low|High",#White,#LightGray)
SliderGadget(668,50,150,100,30,"Min|Max",#White,#Orange)
SliderGadget(669,200,150,120,30,"Pure...|Basic",#Red,#DarkGray,#White)
ButtonGadget(111,50,200,100,25,"Ok")
AddKeyboardShortcut(0,#PB_Shortcut_Escape,111)
Repeat
Event = WaitWindowEvent()
Select event
Case #PB_Event_Gadget,#PB_Event_Menu
If SliderGadgetEvents()=#Null
If EventGadget()=111
End
EndIf
EndIf
EndSelect
Until Event=#PB_Event_CloseWindow