// CIT demo
//
// This is a CIT version of GadToolsDemo
//

USE CITScreen
USE CITWindow
USE CITGadgets

// Make some data for our gadgets
DIM DayName$(0..6) OF 9
DayName$(0):="Sunday"
DayName$(1):="Monday"
DayName$(2):="Tuesday"
DayName$(3):="Wednesday"
DayName$(4):="Thursday"
DayName$(5):="Friday"
DayName$(6):="Saturday"

DIM MonthName$(0..11) OF 9
MonthName$(0):="January"
MonthName$(1):="February"
MonthName$(2):="March"
MonthName$(3):="April"
MonthName$(4):="May"
MonthName$(5):="June"
MonthName$(6):="July"
MonthName$(7):="August"
MonthName$(8):="September"
MonthName$(9):="October"
MonthName$(10):="November"
MonthName$(11):="December"

DIM Error OF SHORT

DIM DemoWindow OF CITWindow
DemoWindow.Position(50,20)
DemoWindow.Size(530,150)
DemoWindow.CloseGadget
DemoWindow.DragBar
DemoWindow.DepthGadget
DemoWindow.Activate
ComalScreen.InsObject(DemoWindow,Error)
IF Error THEN
  STOP "Could'nt open the window"
ENDIF

// Make a QUIT gadget
DIM QuitGad OF ButtonGadget
QuitGad.Position(10,5)
QuitGad.Label("QUIT",INSIDE)
DemoWindow.InsObject(QuitGad,Error)

// Create a head line text using the read only TextGadget
DIM Text OF TextGadget
Text.Position(214,5)
Text.Label("CIT demo",INSIDE+HIGHLIGHT)
DemoWindow.InsObject(Text,Error)

// Make a string input gadget for our ListView gadget below
// NOTE: do not create explicitely. ListView will do it for you
DIM StringGad OF StringGadget
StringGad.Size(150,14)
StringGad.EventHandler(StringEvent())
PROC StringEvent(ID OF USHORT)
  PRINT "LISTVIEW STRING GADGET: string=",StringGad.Value$
ENDPROC StringEvent

// Now, make the ListView
DIM ListView OF ListViewGadget
ListView.Position(10,41)
ListView.Size(150,57)
ListView.Label("Months:",ABOVE+HIGHLIGHT)
ListView.ChoiceArray(MonthName$())
ListView.ShowSelected(StringGad)
ListView.Selected(3)
ListView.EventHandler(ListEvent())
DemoWindow.InsObject(ListView,Error)
PROC ListEvent(ID OF USHORT)
  PRINT "LISTVIEW GADGET: item=",MonthName$(ListView.Value)
ENDPROC ListEvent

// Make a cycle gadget with names of week days
DIM CycleGad OF CycleGadget
CycleGad.Position(50,111)
CycleGad.Size(100,12)
CycleGad.Choices(DayName$())
CycleGad.EventHandler(CycleEvent())
DemoWindow.InsObject(CycleGad,Error)
PROC CycleEvent(ID OF USHORT)
  PRINT "CYCLE GADGET: item=",DayName$(CycleGad.Value)
ENDPROC CycleEvent

// Make a mutually exclusive gadged (radio buttons) - also with day names
DIM RadioButtons OF RadioButtonsGadget
RadioButtons.Position(260,36)
RadioButtons.Choices(DayName$(),LEFT)
RadioButtons.Spacing(3)
RadioButtons.EventHandler(RadioEvent())
DemoWindow.InsObject(RadioButtons,Error)
PROC RadioEvent(ID OF USHORT)
  PRINT "RADIO BUTTON GADGET: item=",DayName$(RadioButtons.Value)
ENDPROC RadioEvent

// And now a slider gadget with day of month
DIM SliderGad OF SliderGadget
SliderGad.Position(316,121)
SliderGad.Size(180,12)
SliderGad.Limits(1,31)
SliderGad.Label("##",LEFT)
SliderGad.Level(2)
SliderGad.EventHandler(SliderEvent())
DemoWindow.InsObject(SliderGad,Error)
PROC SliderEvent(ID OF USHORT)
  PRINT "SLIDER GADGET: ",SliderGad.Value
ENDPROC SliderEvent

// A check box
DIM CheckGad OF CheckboxGadget
CheckGad.Label("Check Me",LEFT)
CheckGad.Position(470,11)
CheckGad.EventHandler(CheckEvent())
DemoWindow.InsObject(CheckGad,Error)
PROC CheckEvent(ID OF USHORT)
  PRINT "CHECKBOX GADGET: state=",
  IF CheckGad.Value THEN
    PRINT "ON"
  ELSE
    PRINT "OFF"
  ENDIF
ENDPROC CheckEvent

// An integer Gadget for cosmic significance
DIM IntegerGad OF IntegerGadget
IntegerGad.Label("Cosmic significance:",LEFT+HIGHLIGHT)
IntegerGad.Position(460,41)
IntegerGad.Size(40,14)
IntegerGad.Replace
IntegerGad.Number(42)
IntegerGad.EventHandler(IntegerEvent())
DemoWindow.InsObject(IntegerGad,Error)
PROC IntegerEvent(ID OF USHORT)
  PRINT "INTEGER GADGET: value=",IntegerGad.Value
ENDPROC IntegerEvent

// And make a button to play with the integer Gadget with
DIM PlayGad OF ButtonGadget
PlayGad.Position(400,61)
PlayGad.Size(100,12)
PlayGad.Label("INCREMENT",INSIDE)
PlayGad.EventHandler(PlayEvent())
DemoWindow.InsObject(PlayGad,Error)
PROC PlayEvent(ID OF USHORT)
  IntegerGad.Number(IntegerGad.Value+1)
  PRINT "INCREMENT INTEGER: value=",IntegerGad.Value
ENDPROC PlayEvent

// Neat-o! make a ready-to-go palette selector Gadget
DIM Palette OF PaletteGadget
Palette.Position(350,82)
Palette.Size(150,30)
Palette.Color(2)
Palette.IndicatorWidth(20)
Palette.EventHandler(PaletteEvent())
DemoWindow.InsObject(Palette,Error)
PROC PaletteEvent(ID OF USHORT)
  PRINT "PALETTE GADGET: color=",Palette.Value
ENDPROC PaletteEvent

IF Error THEN
  PRINT "Could'nt create one or more of the gadgets"
ELSE
  WHILE NOT (DemoWindow.ClosePressed OR QuitGad.Pressed) DO WAIT
ENDIF

ComalScreen.RemObject(DemoWindow)
