home *** CD-ROM | disk | FTP | other *** search
- ; LightBar module PPE 03/3/94
- ; by: Mr. Data
- ;
-
- ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
- ; DECLARATIONS
- ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
- String LiteModule, LiteExt
- String In, Out, YoX, YoY
- String Title(50), Stuff(50), Disp(50), UnHiX, HiX, HotKey(50)
-
- Byte XPos(50), YPos(50), TXPos, TYPos, SavPos(5,1)
- Byte NumItems, Flag, Yo, CurItem, LastItem, PageDivisor
- Byte Start, RelTitE, RelTitS, RelIteE, RelIteS
- SByte SX, SY
-
- ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
- ; DEFINITIONS
- ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
- LiteModule = GetToken()
- LiteExt = ".LIT"
- LiteModule = PPEPath()+LiteModule+LiteExt
- Start = 1
- RelTitE = 2
- RelTitS = 3
- RelIteE = 4
- RelIteS = 5
- SavPos(Start, 0) = GetX()
- SavPos(Start, 1) = GetY()
- SavPos(RelTitE, 0) = GetX()
- SavPos(RelTitE, 1) = GetY()
- SavPos(RelTitS, 0) = GetX()
- SavPos(RelTitS, 1) = GetY()
- SavPos(RelIteE, 0) = GetX()
- SavPos(RelIteE, 1) = GetY()
- SavPos(RelIteS, 0) = GetX()
- SavPos(RelIteS, 1) = GetY()
- CurItem = 1
- LastItem = 1
- PageDivisor = 4
-
- ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
- ; CODE
- ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
- If (Exist(LiteModule) = False) Then
- SPrintLn LiteModule, " Not Found"
- End
- EndIf
- FClose 0
- FOpen 0, LiteModule, O_RD, S_DN
-
- ;-----
- While (True) Do ;Display title(s)
- FGet 0, YoX
- If (Left(YoX, 2) = "@X") Then
- UnHiX = YoX
- FGet 0, HiX
- If ((GrafMode() = "A")||(GrafMode() = "N")) Then
- HiX = Chr(27)+"[7m"
- UnHiX = Chr(27)+"[0m"
- EndIf
- FGet 0, NumItems
- Break
- Else
- FGet 0, YoY
- FGet 0, Title(0)
- Gosub MakeCoords
- SX = TXPos
- SY = TYPos
- Gosub AnsPos
- SavPos(RelTitS, 0) = GetX()
- SavPos(RelTitS, 1) = GetY()
- SavPos(RelIteS, 0) = GetX()
- SavPos(RelIteS, 1) = GetY()
- If (Left(Title(0), 1) = "%") Then
- DispFile Mid(Title(0), 2, Len(Title(0))-1), Graph+Lang
- ElseIf (Left(Title(0), 1) = "#") Then
- Cls
- DispFile Mid(Title(0), 2, Len(Title(0))-1), Graph+Lang
- Else
- Print Title(0)
- EndIf
- EndIf
- EndWhile
- SavPos(RelTitE, 0) = GetX()
- SavPos(RelTitE, 1) = GetY()
- SavPos(RelIteE, 0) = GetX()
- SavPos(RelIteE, 1) = GetY()
-
- ;-----
- For Yo = 1 to NumItems ;read in item info
- FGet 0, YoX
- FGet 0, YoY
- FGet 0, Title(Yo)
- FGet 0, Out
- If (Left(Out, 1) = "^") Then
- HotKey(Yo) = "~"+String(Asc(Chr(Asc(Mid(Out, 2, Len(Out)))-64)))
- ElseIf (Left(Out, 1) = "~") Then
- HotKey(Yo) = Out
- Else
- HotKey(Yo) = "~"+String(Asc(Upper(Out)))
- EndIf
- FGet 0, Disp(Yo)
- FGet 0, Stuff(Yo)
- Gosub MakeCoords
- XPos(Yo) = TXPos
- YPos(Yo) = TYPos
- SX = TXPos
- SY = TYPos
- Gosub AnsPos
- SavPos(RelIteS, 0) = GetX()
- SavPos(RelIteS, 1) = GetY()
- If (Yo = 1) Then
- Print HiX, StripAtX(Title(Yo))
- Else
- Print UnHiX, Title(Yo)
- EndIf
- SavPos(RelIteE, 0) = GetX()
- SavPos(RelIteE, 1) = GetY()
- Next Yo
- FClose 0
- Flag = True
-
- ;----------
- ; Main Loop
- :FruitLoop
-
- Gosub GetCh
-
- If ((In = "DOWN")||(In = "RIGHT")||(In = "2")||(In = "6")) Then
- LastItem = CurItem
- CurItem = CurItem+1 - NumItems*(CurItem >= NumItems)
- Gosub Update
- ElseIf ((In = "UP")||(In = "LEFT")||(In = "8")||(In = "4")) Then
- LastItem = CurItem
- CurItem = CurItem-1 + NumItems*(CurItem <= 1)
- Gosub Update
- ElseIf ((In = "HOME")||(In = "7")) Then
- LastItem = CurItem
- CurItem = 1
- Gosub Update
- ElseIf ((In = "END")||(In = "1")) Then
- LastItem = CurItem
- CurItem = NumItems
- Gosub Update
- ElseIf ((In = "PGUP")||(In = "9")) Then
- If (CurItem != 1) Then
- LastItem = CurItem
- Yo = NumItems/PageDivisor + (NumItems < PageDivisor)
- CurItem = CurItem - Yo + (Yo - CurItem+1)*(CurItem < Yo)
- Gosub Update
- EndIf
- ElseIf ((In = "PGDN")||(In = "3")) Then
- If (CurItem != NumItems) Then
- LastItem = CurItem
- Yo = NumItems/PageDivisor + (NumItems < PageDivisor)
- CurItem = CurItem + Yo - (Yo - (NumItems-CurItem))*((CurItem+Yo) > NumItems)
- Gosub Update
- EndIf
- ElseIf (Asc(In) = 13) Then
- DefColor
- If (GrafMode() = "A") Then
- Print UnHiX
- EndIf
- Flag = False
- Else
- In = "~"+String(Asc(Upper(In)))
- For Yo = 1 to NumItems ;check hotkeys
- If (In = HotKey(Yo)) Then
- LastItem = CurItem
- CurItem = Yo
- Gosub Update
- Break
- EndIf
- Next Yo
- EndIf
- If (Flag) Then
- Goto FruitLoop
- EndIf
-
- Print Chr(13)+UnHiX ;Carriage Return only
- ClrEol
- If (Disp(CurItem) != "-") Then
- If (Left(Disp(CurItem), 1) = "%") Then
- DispFile Mid(Disp(CurItem), 2, Len(Disp(CurItem))), Graph + Lang
- ElseIf (Left(Disp(CurItem), 1) = "#") Then
- Cls
- DispFile Mid(Disp(CurItem), 2, Len(Disp(CurItem))-1), Graph + Lang
- ElseIf (Left(Disp(CurItem), 1) = "!") Then
- Call Mid(Disp(CurItem), 2, Len(Disp(CurItem))-1)
- Else
- PrintLn Disp(CurItem)
- EndIf
- EndIf
-
- If (Left(Stuff(CurItem), 1) = "^") Then ; Control Code
- KbdStuff Chr(Asc(Mid(Stuff(CurItem), 2, 1))-64)
- ElseIf (Left(Stuff(CurItem), 1) = "~") Then ; Ascii Code
- KbdStuff Chr(Mid(Stuff(CurItem), 2, Len(Stuff(CurItem))))
- Else
- KbdStuff Stuff(CurItem)
- EndIf
-
- END
- ;═══════════════════════════════════════════════════════════════════════════════
- :Update
- SX = XPos(LastItem)
- SY = YPos(LastItem)
- Gosub AnsPos
- Print UnHiX, Title(LastItem)
- SX = XPos(CurItem)
- SY = YPos(CurItem)
- Gosub AnsPos
- Print HiX, StripAtX(Title(CurItem))
- Return
- ;═══════════════════════════════════════════════════════════════════════════════
- :GetCh
- In = ""
- While (In = "") Do
- In = Inkey()
- EndWhile
- Return
- ;═══════════════════════════════════════════════════════════════════════════════
- :MakeCoords
- If (YoX = "C") Then ;X Coord
- TXPos = GetX()
- ElseIf (Left(YoX, 1) = "R") Then
- YoX = Mid(YoX, 2, Len(YoX))
- TXPos = SavPos(Start, 0) + YoX
- ElseIf (Left(YoX, 1) = "T") Then
- YoX = Mid(YoX, 2, Len(YoX))
- TXPos = SavPos(RelTitE, 0) + YoX
- ElseIf (Left(YoX, 1) = "t") Then
- YoX = Mid(YoX, 2, Len(YoX))
- TXPos = SavPos(RelTitS, 0) + YoX
- ElseIf (Left(YoX, 1) = "I") Then
- YoX = Mid(YoX, 2, Len(YoX))
- TXPos = SavPos(RelIteE, 0) + YoX
- ElseIf (Left(YoX, 1) = "i") Then
- YoX = Mid(YoX, 2, Len(YoX))
- TXPos = SavPos(RelIteS, 0) + YoX
- Else
- If (Left(YoX, 1) = "A") Then
- YoX = Mid(YoX, 2, Len(YoX))
- EndIf
- TXPos = YoX
- EndIf
-
- If (YoY = "C") Then ;Y Coord
- TYPos = GetY()
- ElseIf (Left(YoY, 1) = "R") Then
- YoY = Mid(YoY, 2, Len(YoY))
- TYPos = SavPos(Start, 1) + YoY
- ElseIf (Left(YoY, 1) = "T") Then
- YoY = Mid(YoY, 2, Len(YoY))
- TYPos = SavPos(RelTitE, 1) + YoY
- ElseIf (Left(YoY, 1) = "t") Then
- YoY = Mid(YoY, 2, Len(YoY))
- TYPos = SavPos(RelTitS, 1) + YoY
- ElseIf (Left(YoY, 1) = "I") Then
- YoY = Mid(YoY, 2, Len(YoY))
- TYPos = SavPos(RelIteE, 1) + YoY
- ElseIf (Left(YoY, 1) = "i") Then
- YoY = Mid(YoY, 2, Len(YoY))
- TYPos = SavPos(RelIteS, 1) + YoY
- Else
- If (Left(YoY, 1) = "A") Then
- YoY = Mid(YoY, 2, Len(YoY))
- EndIf
- TYPos = YoY
- EndIf
- Return
- ;═══════════════════════════════════════════════════════════════════════════════
- :AnsPos
- SX = SX - GetX()
- SY = SY - GetY()
- ;-----
- If (SX > 0) Then ;XPosition
- If (SX = 1) Then
- Print Chr(27)+"["+"C"
- Else
- Print Chr(27)+"["+String(SX)+"C"
- EndIf
- ElseIf (SX < 0) Then
- SX = -SX
- If (SX = 1) Then
- Print Chr(27)+"["+"D"
- Else
- Print Chr(27)+"["+String(SX)+"D"
- EndIf
- EndIf
- ;-----
- If (SY > 0) Then ;YPosition
- If (SY = 1) Then
- Print Chr(27)+"["+"B"
- Else
- Print Chr(27)+"["+String(SY)+"B"
- EndIf
- ElseIf (SY < 0) Then
- SY = -SY
- If (SY = 1) Then
- Print Chr(27)+"["+"A"
- Else
- Print Chr(27)+"["+String(SY)+"A"
- EndIf
- EndIf
-
- Return
- ;═══════════════════════════════════════════════════════════════════════════════
- ;███████████████████████████████████████████████████████████████████████████████
-
-