(include "sci.sh")
(use "Main")
(use "Class_255_0")
(script 987)


(local
    newDText_2
    newDButton_2
    newDButton
    newDText
    newDButton_3
    newDButton_4
    newDButton_5
    local7[40]

)
(class Gauge of Dialog
    (properties
        elements 0
        size 0
        text 0
        window 0
        theItem 0
        nsTop 0
        nsLeft 0
        nsBottom 0
        nsRight 0
        time 0
        timer 0
        busy 0
        description 0
        higher "up"
        lower "down"
        normal 7
        minimum 0
        maximum 15
    )

    (method (init param1)
        (var temp0, temp1)
        (self:update(param1))
        (send (= newDButton (DButton:new())):
            text(lower)
            moveTo(4 4)
            setSize()
        )
        (self:
            add(newDButton)
            setSize()
        )
        (send (= newDText (DText:new())):
            text(@local7)
            moveTo(+ (send newDButton:nsRight()) 4 4)
            font(0)
            setSize()
        )
        (self:
            add(newDText)
            setSize()
        )
        (send (= newDButton_2 (DButton:new())):
            text(higher)
            moveTo(+ (send newDText:nsRight()) 4 4)
            setSize()
        )
        (self:
            add(newDButton_2)
            setSize()
        )
        = nsBottom (+ nsBottom 8)
        (send (= newDButton_3 (DButton:new())):
            text("OK")
            setSize()
            moveTo(4 nsBottom)
        )
        (send (= newDButton_4 (DButton:new())):
            text("Normal")
            setSize()
            moveTo(+ (send newDButton_3:nsRight()) 4 nsBottom)
        )
        (send (= newDButton_5 (DButton:new())):
            text("Cancel")
            setSize()
            moveTo(+ (send newDButton_4:nsRight()) 4 nsBottom)
        )
        (self:
            add(newDButton_3 newDButton_4 newDButton_5)
            setSize()
        )
        = temp0 (- (- nsRight (send newDButton_5:nsRight())) 4)
        (send (= newDText_2 (DText:new())):
            text(description)
            font(global23)
            setSize(- nsRight 8)
            moveTo(4 4)
        )
        = temp1 (+ (send newDText_2:nsBottom()) 4)
        (self:add(newDText_2))
        (send newDButton_2:move(0 temp1))
        (send newDButton:move(0 temp1))
        (send newDText:move(0 temp1))
        (send newDButton_3:move(temp0 temp1))
        (send newDButton_4:move(temp0 temp1))
        (send newDButton_5:move(temp0 temp1))
        (self:
            setSize()
            center()
            open(4 15)
        )
    )


    (method (doit param1)
        (var temp0, temp1)
        (asm
            pushi   #init
            pushi   1
            lsp     param1
            self    6
            lap     param1
            sat     temp1
code_01df:  pushi   #update
            pushi   1
            lst     temp1
            self    6
            pushi   #draw
            pushi   0
            lal     local3
            send    4
            pushi   #doit
            pushi   1
            lsl     local4
            super   Dialog, 6
            sat     temp0
            push    
            lal     local1
            eq?     
            bnt     code_020d
            lst     temp1
            pToa    maximum
            lt?     
            bnt     code_01df
            +at     temp1
            jmp     code_01df
code_020d:  lst     temp0
            lal     local2
            eq?     
            bnt     code_0222
            lst     temp1
            pToa    minimum
            gt?     
            bnt     code_01df
            -at     temp1
            jmp     code_01df
code_0222:  lst     temp0
            lal     local4
            eq?     
            bnt     code_0230
            jmp     code_0259
            jmp     code_01df
code_0230:  lst     temp0
            lal     local5
            eq?     
            bnt     code_023f
            pToa    normal
            sat     temp1
            jmp     code_01df
code_023f:  lst     temp0
            ldi     0
            eq?     
            bt      code_024f
            lst     temp0
            lal     local6
            eq?     
            bnt     code_01df
code_024f:  lap     param1
            sat     temp1
            jmp     code_0259
            jmp     code_01df
code_0259:  pushi   #dispose
            pushi   0
            self    4
            lat     temp1
            ret     
        )
    )


    (method (handleEvent pEvent)
        (switch ((send pEvent:type()))
            (case 4
                (
                (switch ((send pEvent:message()))
                    (case 19200
                        ((send pEvent:claimed(1)) return newDButton  )
                    )
                    (case 19712
                        ((send pEvent:claimed(1)) return newDButton_2 )
                    )
                )
  )
            )
            (case 64
                (
                (switch ((send pEvent:message()))
                    (case 7
                        ((send pEvent:claimed(1)) return newDButton  )
                    )
                    (case 3
                        ((send pEvent:claimed(1)) return newDButton_2 )
                    )
                )
 )
            )
        )
        return (super:handleEvent(pEvent))
    )


    (method (update param1)
        (var temp0, temp1)
        = temp1 (- maximum minimum)
        = temp0 0
        (while (< temp0 temp1)
            kernel[102](@local7 temp0 
                (if (< temp0 param1)
                    6
                )(else
                    7
                )
)
            ++temp0
        )
    )

)
