;
; ------------------------------------------------------------
;
;   SpiderBasic - Gadget overview
;
;    (c) Fantaisie Software
;
; ------------------------------------------------------------
;

Global ListIcon1, ListView1, Button1, Tree1

Enumeration
  #ImageNew
  #ImageSpider
EndEnumeration


Procedure AddListViewEvent()
  AddGadgetItem(ListView1, 5, "Inserted at pos 5 "+FormatDate("%hh:%ii:%ss", Date()))
EndProcedure


Procedure SizeWindowEvent()
  ResizeGadget(0, 10, 10, WindowWidth(0)-20, WindowHeight(0)-20)
EndProcedure


Procedure CloseWindowEvent()
  CloseWindow(EventWindow())
EndProcedure


Procedure Start()
  If OpenWindow(0, 0, 0, 640, 480, "Gadget overview", #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_SizeGadget)
    
    PanelGadget(0, 10, 10, WindowWidth(0)-20, WindowHeight(0)-20)
    AddGadgetItem(0, -1, "Buttons")
    
      ButtonGadget(#PB_Any, 10,  10, 200, 20, "Normal Button")
      ButtonGadget(#PB_Any, 10,  40, 200, 20, "Left Button", #PB_Button_Left)
      ButtonGadget(#PB_Any, 10,  70, 200, 20, "Right Button", #PB_Button_Right)
      ButtonGadget(#PB_Any, 10, 100, 200, 60, "Multiline Button  (longer text gets automatically wrapped)", #PB_Button_MultiLine)
      Button1 = ButtonGadget(#PB_Any, 10, 170, 200, 30, "Toggle Button", #PB_Button_Toggle)
      
      StringGadget(#PB_Any, 230,  10, 170, 20, "Normal StringGadget...")
      StringGadget(#PB_Any, 230,  35, 170, 20, "1234567", #PB_String_Numeric)
      StringGadget(#PB_Any, 230,  60, 170, 20, "Read-only StringGadget", #PB_String_ReadOnly)
      StringGadget(#PB_Any, 230,  85, 170, 20, "lowercase...", #PB_String_LowerCase)
      StringGadget(#PB_Any, 230, 110, 170, 20, "uppercase...", #PB_String_UpperCase)
      StringGadget(#PB_Any, 230, 140, 170, 20, "Borderless StringGadget", #PB_String_BorderLess)
      
      String1 = StringGadget(#PB_Any, 230, 170, 170, 30, "Password", #PB_String_Password)
      SetGadgetColor(String1, #PB_Gadget_BackColor, RGB(220, 200, 220))
      SetGadgetColor(String1, #PB_Gadget_FrontColor, RGB(200, 0, 0))
        
                  CheckBoxGadget(#PB_Any, 420,  10, 160, 20, "CheckBox standard")
      CheckBox1 = CheckBoxGadget(#PB_Any, 420,  35, 160, 20, "CheckBox checked")
                  CheckBoxGadget(#PB_Any, 420, 60, 160, 20, "CheckBox right", #PB_CheckBox_Right)
                  CheckBoxGadget(#PB_Any, 420, 85, 160, 20, "CheckBox center", #PB_CheckBox_Center)
      DisableGadget(CheckBox1, #True)
    
                  
      SetGadgetState(CheckBox1, #PB_Checkbox_Checked)
                  
                OptionGadget(#PB_Any, 420, 130, 160, 20, "Option 1")
      Option2 = OptionGadget(#PB_Any, 420, 155, 160, 20, "Option 2")
                OptionGadget(#PB_Any, 420, 180, 160, 20, "Option 3")
      SetGadgetState(Option2, 1)
      DisableGadget(Option2, 1)
      
      Progress1 = ProgressBarGadget(#PB_Any, 10, 210, 390, 30, 0, 100)
      SetGadgetState(Progress1, 70)
      
      TrackBar1 = TrackBarGadget(#PB_Any, 10, 260, 390, 30, 0, 100)
      SetGadgetState(TrackBar1, 70)
      
      TrackBar2 = TrackBarGadget(#PB_Any, 410, 210, 30, 80, 0, 100, #PB_TrackBar_Vertical)
      SetGadgetState(TrackBar2, 30)
        
      Canvas1 = CanvasGadget(#PB_Any, 10, 300, 200, 20)
      If StartDrawing(CanvasOutput(Canvas1))
        Box(0, 0, 200, 20, RGB(255, 0, 0))
        StopDrawing()
      EndIf
      
      ResizeImage(#ImageSpider, 50, 50)
      ButtonImage1 = ButtonImageGadget(#PB_Any, 450, 210, 70, 70, ImageID(#ImageSpider))
        
      ImageGadget(#PB_Any, 450, 290, 70, 70, ImageID(#ImageSpider))
      
      TextGadget(#PB_Any, 10, 330, 200, 20, "Label")
      TextGadget(#PB_Any, 10, 355, 200, 20, "Centered label", #PB_Text_Center)
      Text1 = TextGadget(#PB_Any, 10, 380, 200, 20, "Gray & red right label", #PB_Text_Right)
      SetGadgetColor(Text1, #PB_Gadget_BackColor, RGB(200, 200, 200))
      SetGadgetColor(Text1, #PB_Gadget_FrontColor, RGB(255, 0, 0))
      
      ComboBox1 = ComboBoxGadget(#PB_Any, 220, 300, 200, 25)
      For k = 0 To 5
        AddGadgetItem(ComboBox1, -1, "Item "+k)
      Next
      AddGadgetItem(ComboBox1, 0, "inserted in first position")
      AddGadgetItem(ComboBox1, 2, "inserted in third position")
      SetGadgetState(ComboBox1, 2)
      
      Spin1 = SpinGadget(#PB_Any, 220, 330, 200, 20, 0, 10, #PB_Spin_ReadOnly)
      SetGadgetState(Spin1, 6)
      SetGadgetColor(Spin1, #PB_Gadget_FrontColor, RGB(0, 0, 255))
      SetGadgetColor(Spin1, #PB_Gadget_BackColor, RGB(200, 200, 200))
      
    ; New Panel tab
    AddGadgetItem(0, -1, "Lists")
    
      ListView1 = ListViewGadget(#PB_Any, 10, 10, 200, 200, #PB_ListView_ClickSelect)
      For k = 0 To 5
        AddGadgetItem(ListView1, -1, "Item "+k)
      Next
      AddGadgetItem(ListView1, 0, "inserted in first position")
      AddGadgetItem(ListView1, 2, "inserted in third position")
      
      SetGadgetItemState(ListView1, 3, 1)
      SetGadgetItemState(ListView1, 5, 1)
      
      AddListViewItem = ButtonGadget(#PB_Any, 10, 220, 100, 25, "Add")
      BindGadgetEvent(AddListViewItem, @AddListViewEvent())
      
      ListIcon1 = ListIconGadget(#PB_Any, 220, 10, 385, 400, "Name", 100, #PB_ListIcon_CheckBoxes | #PB_ListIcon_MultiSelect)
      AddGadgetColumn(ListIcon1, 1, "City", 50)
      AddGadgetColumn(ListIcon1, 1, "Code", 100)
      
      a = 10
      For k = 0 To 200
        AddGadgetItem(ListIcon1, -1, "Name "+ k + Chr(a)+"Code " + k+ Chr(a)+"City " + k)
      Next
      
      AddGadgetItem(ListIcon1, 1, "Second line "+ k + Chr(a)+"Code " + k+ Chr(a)+"City " + k, ImageID(#ImageNew))
      
    ; New Panel tab  
    AddGadgetItem(0, -1, "Splitters")
      Editor2 = ButtonGadget(#PB_Any, 0, 0, 0, 0, " Hello world")
      Editor3 = EditorGadget(#PB_Any, 0, 0, 0, 0)
      SetGadgetText(Editor3, "This is an editor !" + #LF$ + "Second line")
    
      Web1 = WebGadget(#PB_Any, 0, 0, 0, 0, "http://www.spiderbasic.com")
      
      Splitter = SplitterGadget(#PB_Any, 10, 10, 300, 300, Editor3, Editor2, 0)
      Splitter1 = SplitterGadget(#PB_Any, 10, 10, 600, 400, Splitter, Web1, #PB_Splitter_Vertical)
      
      SetGadgetAttribute(Splitter1, #PB_Splitter_FirstMinimumSize, 80)
      SetGadgetAttribute(Splitter1, #PB_Splitter_SecondMinimumSize, 90)
      
      SetGadgetState(Splitter, 100)
      SetGadgetState(Splitter1, 110)
      
    ; New Panel tab
    AddGadgetItem(0, -1, "Various", ImageID(#ImageNew))
    
      Calendar1 = CalendarGadget(#PB_Any, 10, 10, 200, 190)
      SetGadgetState(Calendar1, Date(1978, 4, 1, 0, 0, 0))
      
      Date1 = DateGadget(#PB_Any, 220, 10, 200, 19)
      SetGadgetState(Date1, Date(1978, 4, 1, 0, 0, 0))
      SetGadgetText(Date1, "%dd/%mm/%yyyy")
      SetGadgetColor(Date1, #PB_Gadget_FrontColor, RGB(0, 0, 255))
      SetGadgetColor(Date1, #PB_Gadget_BackColor, RGB(200, 200, 200))
      GadgetToolTip(Date1, "Enter a date")
      
      Editor1 = EditorGadget(#PB_Any, 220, 40, 200, 180)
      SetGadgetText(Editor1, "This is an editor gadget")
      SetGadgetColor(Editor1, #PB_Gadget_FrontColor, RGB(0, 0, 255))
      SetGadgetColor(Editor1, #PB_Gadget_BackColor, RGB(200, 200, 200))
      
      ScrollAreaGadget(#PB_Any, 10, 230, 200, 150, 400, 400)
        ButtonGadget(#PB_Any, 150, 100, 100, 25, "Scroll area button")
      CloseGadgetList()
        
      Container1 = ContainerGadget(#PB_Any, 220, 230, 200, 150)
        ButtonGadget(#PB_Any, 10, 10, 150, 25, "In container button")
        ButtonGadget(#PB_Any, 100, 50, 150, 25, "Clipped container button")
      CloseGadgetList()
      SetGadgetColor(Container1, #PB_Gadget_BackColor, RGB(230, 230, 230))
      
      Tree1 = TreeGadget(#PB_Any, 430, 10, 180, 370)
      
      For a = 0 To 10
        AddGadgetItem(Tree1, -1, "Normal Item "+Str(a), 0, 0) ; if you want to add an image, use
        AddGadgetItem(Tree1, -1, "Node "+Str(a), ImageID(#ImageNew), 0)        ; ImageID(x) as 4th parameter
        AddGadgetItem(Tree1, -1, "Sub-Item 1", 0, 1)    ; These are on the 1st sublevel
        AddGadgetItem(Tree1, -1, "Sub-Item 2", 0, 1)
        AddGadgetItem(Tree1, -1, "Sub-Item 3", ImageID(#ImageNew), 1)
        AddGadgetItem(Tree1, -1, "Sub-Item 4", 0, 1)
        AddGadgetItem(Tree1, -1, "File "+Str(a), 0, 0) ; sublevel 0 again
      Next
      
      SetGadgetItemState(Tree1, 1, #PB_Tree_Expanded)
      SetGadgetItemState(Tree1, 6, #PB_Tree_Selected)
      
    SetGadgetState(0, 0)
    
    BindEvent(#PB_Event_CloseWindow, @CloseWindowEvent())
    BindEvent(#PB_Event_SizeWindow, @SizeWindowEvent())
  EndIf
EndProcedure

Procedure Loading(Type, Filename$)
  Static NbLoadedElements
  
  NbLoadedElements+1
  If NbLoadedElements = 2 ; Finished the loading of all images, we can start the application
    Start()
  EndIf
EndProcedure


Procedure LoadingError(Type, Filename$)
  Debug Filename$ + ": loading error"
EndProcedure


; Register the loading event before calling any resource load command
BindEvent(#PB_Event_Loading, @Loading())
BindEvent(#PB_Event_LoadingError, @LoadingError())

LoadImage(#ImageNew, "Data/ToolBar/New.png")
LoadImage(#ImageSpider, "Data/Spider.png")