home *** CD-ROM | disk | FTP | other *** search
MarxMenu script | 1992-06-02 | 6.5 KB | 270 lines |
- Comment
- ==========================================================
-
- This include file exports definitions that create a block menu look and
- feel. This is one of several look and feel files that export the same
- procedures.
-
- Useful Routines Exported:
-
- LookSetup
- Call this to initialize the screen. Set MenuTitle and StatusLineText
- before calling this routine.
-
- CornerStretchBox (Header,Col,Row)
- Creates a window from the array Choices with the upper left corner at
- Row/Col. LastKey is set to the letter that is chosen.
-
- CenterStretchBox (Header,Col,Row)
- Creates a window from the array Choices with the center at Row/Col.
- if a 0 is passed for either the Row or Col then the center of the
- screen is assumed. LastKey is set to the letter that is chosen.
-
- Leave
- Puts up an exit box.
-
-
- ==========================================================
- EndComment
-
-
- var
- Grid1 = "╠═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╣"
- Grid2 = "├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤"
- Grid3 = "╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣"
- Grid4 = "├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤"
- Choices
- MenuTitle
- StatusLineText
- StatusWindow
- HeightDifference
- Greek = False
-
- var
- BackGroundFG
- BackGroundBG
- TitleBoxBorderFG
- TitleBoxBG
- TitleBoxInsideFG
- ClockColorFG
- StatusLineFG
- StatusLineBG
- MenuInsideFG
- MenuBG
- MenuHeaderFG
- MenuHeaderBG
- MenuBorderFG
- MenuVertLinesFG
- MenuInverseFG
- MenuInverseBG
- MenuCapColorFG
- ConsoleInsideFG
- GreekFG
- GreekBG
-
- ;------ This is where you set your favorite colors.
-
- Procedure SetColors
- if ColorScreen
- BackGroundFG = LBlue
- BackGroundBG = Black
- TitleBoxBG = Brown
- TitleBoxBorderFG = White
- TitleBoxInsideFG = Yellow
- ClockColorFG = Yellow
- StatusLineFG = Yellow
- StatusLineBG = Mag
- MenuBG = Black
- MenuInsideFG = Yellow
- MenuBorderFG = LRed
- MenuHeaderFG = White
- MenuHeaderBG = Green
- MenuVertLinesFG = LGreen
- MenuInverseFG = Yellow
- MenuInverseBG = Mag
- MenuCapColorFG = White
- ConsoleInsideFG = White
- GreekFG = Black
- GreekBG = Brown
- else
- BackGroundFG = Grey
- BackGroundBG = Black
- TitleBoxBG = Grey
- TitleBoxBorderFG = Black
- TitleBoxInsideFG = Black
- ClockColorFG = Black
- StatusLineFG = Black
- StatusLineBG = Grey
- MenuBG = Black
- MenuInsideFG = Grey
- MenuBorderFG = White
- MenuHeaderFG = Black
- MenuHeaderBG = Grey
- MenuVertLinesFG = White
- MenuInverseFG = Black
- MenuInverseBG = Grey
- MenuCapColorFG = White
- ConsoleInsideFG = Grey
- GreekFG = Black
- GreekBG = Grey
- endif
- EndProc
-
- ;------ Sets up main window to block look.
-
- Procedure LookSetup
- if MenuInsideFG = 0 then SetColors
- NoExit
-
- ;------ Clear the screen with a textured background
-
- TextColor BackGroundFG BackGroundBG
- ClearScreen
- GotoXY 1 3
- loop ScreenHeight - 3
- Writeln Grid3
- endloop
-
- ;------ If Greek is true then draw greek columns
-
- ; if Greek then GreekColumns
-
- ;------ Draw Status Line
-
- NoBoxBorder
- Explode Off
- BoxInsideColor StatusLineFG StatusLineBG
- DrawBox 1 ScreenHeight ScreenWidth 1
- StatusWindow = CurrentWindow
- WriteCenter(StatusLineText)
-
- ;------ Draw the Title Box
-
- SingleLineBox
- Explode Off
- BoxInsideColor TitleBoxInsideFG TitleBoxBG
- BoxBorderColor TitleBoxBorderFG TitleBoxBG
- DrawBox 1 1 ScreenWidth 3
- GotoXY(ScreenWidth - Length(MenuTitle) - 3,1)
- Write MenuTitle
-
- ;------ Display the clock
-
- ClockColor ClockColorFG TitleBoxBG
- ClockPos 3 2
-
- ;------ Setup Console
-
- ConsolePos 42 5
- ConsoleHeaderColor MenuInverseFG MenuInverseBG
- ConsoleInsideColor ConsoleInsideFG MenuBG
-
- BoxHeaderColor MenuHeaderFG MenuHeaderBG
- HeightDifference = 2
- SmallShadow
- Shadow
- EndProc
-
-
- Procedure MakeBox(Header,Col,Row,Center)
- var NumElem Height Width Cnt
-
- Width = Length(Header) + 1
- NumElem = NumberOfElements(Choices)
-
- ;Get the widest element in the Choices Array
-
- if Length(Choices[1]) > 0
- Cnt = 65
- loop NumElem
- Trim(Choices[LoopIndex])
- if left(Choices[LoopIndex],1) <> '─'
- Choices[LoopIndex] = " " + Char(Cnt) + ". " + Choices[LoopIndex]
- Cnt = Cnt + 1
- endif
- Width = Max(Width,Length(Choices[LoopIndex]))
- endloop
- else
- Width = ScreenWidth - 9
- endif
- Height = NumElem + 2
- Width = Width + 5
- if Center
- if Row = 0
-
- ;Center window verticaly
-
- Row = ((ScreenHeight - Height) / 2) + 2
- else
-
- ;Center window with X Coordinate
-
- Row = (Row - (Height / 2) + 1)
- endif
- if Col = 0
-
- ;Center window horizonitly
-
- Col = (ScreenWidth - Width) / 2 + 1
- else
-
- ;Center window with Y Coordinate
-
- Col = (Col - (Width / 2) + 1)
- endif
- endif
-
- ;Make Sure Row and Col are within their range
-
- Row = Max(Row,5)
- Row = Min(Row,ScreenHeight - Height - 2)
- Col = Max(Col,2)
- Col = Min(Col,ScreenWidth - Width - 2)
-
- DrawTheBox(Col,Row,Width,Height,Header)
-
- ;Write the menu choices
-
- loop(NumElem - 1)
- if left(Choices[LoopIndex],1) = '─'
- TextColor MenuVertLinesFG MenuBG
- ClearLine 196
- TextColor MenuInsideFG MenuBG
- CapsColor(MenuCapColorFG,MenuBG)
- Writeln
- else
- Writeln(Choices[LoopIndex])
- endif
- endloop
-
- Write Choices[NumElem]
- UseArrows On
- Dispose(Choices)
- EndProc
-
- ;------ Draw the Box
-
- Procedure DrawTheBox (Col,Row,Width,Height,Header)
-
- ;Draw the main window
-
- DoubleLineBox
- InActiveBox SingleLineBox
- BoxInsideColor(MenuInsideFG,MenuBG)
- BoxBorderColor(MenuBorderFG,MenuBG)
- if Header > '' then Header = ' ' + Header + ' '
- BoxHeader = Header
- DrawBox(Col, Row, Width, Height)
-
- if Header > ''
-
- TextColor MenuInsideFG MenuBG
- CapsColor(MenuCapColorFG,MenuBG)
- InverseColor(MenuInverseFG,MenuInverseBG)
- Window(Col + 2, Row + 1, Width - 4, Height - 2)
- else
- CapsColor Black Black
- endif
- EndProc
-