Comment ========================================================== This include file exports definitions that create a Novell 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 VertLine = "³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³" VertLine2 = "³³³³³³³³³³³³³³³³³³³³" VertLine3 = "ÚÄÁÁÁÁÄ¿" VertLine4 = "ÀÄÂÂÂÂÄÙ" Choices MenuTitle StatusLineText HeightDifference Greek = False var BackGroundFG BackGroundBG TitleBoxBorderFG TitleBoxBG TitleBoxInsideFG ClockColorFG StatusLineFG StatusLineBG MenuInsideFG MenuBG MenuHeaderFG MenuBorderFG MenuVertLinesFG MenuInverseFG MenuInverseBG MenuCapColorFG ConsoleInsideFG GreekFG GreekBG ;------ This is where you set your favorite colors. Procedure SetColors if ColorScreen BackGroundFG = Cyan BackGroundBG = Blue TitleBoxBG = Brown TitleBoxBorderFG = White TitleBoxInsideFG = Yellow ClockColorFG = Yellow StatusLineFG = Yellow StatusLineBG = Mag MenuBG = Blue MenuInsideFG = Yellow MenuBorderFG = Yellow MenuHeaderFG = LCyan MenuVertLinesFG = LGreen MenuInverseFG = White MenuInverseBG = Mag MenuCapColorFG = White ConsoleInsideFG = White GreekFG = Blue GreekBG = Green BoxHeaderColor Yellow Green else BackGroundFG = Grey BackGroundBG = Black TitleBoxBG = Grey TitleBoxBorderFG = Black TitleBoxInsideFG = Black ClockColorFG = Black StatusLineFG = Black StatusLineBG = Grey MenuBG = Black MenuInsideFG = Grey MenuBorderFG = Grey MenuHeaderFG = White MenuVertLinesFG = White MenuInverseFG = Black MenuInverseBG = Grey MenuCapColorFG = White ConsoleInsideFG = Grey GreekFG = Black GreekBG = Grey BoxHeaderColor Black Grey endif EndProc ;------ Sets up main window to Novell look. Procedure LookSetup if MenuInsideFG = 0 then SetColors NoExit ;------ Clear the screen with a textured background TextColor BackGroundFG BackGroundBG ClearScreen 176 ;------ If Greek is true then draw greek columns if Greek then GreekColumns ;------ Draw Status Line NoBoxBorder Explode Off BoxInsideColor StatusLineFG StatusLineBG DrawBox 1 25 ScreenWidth 1 WriteCenter(StatusLineText) ;------ Draw the Title Box SingleLineBox 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 HeightDifference = 4 EndProc Procedure CenterStretchBox (Header,Col,Row) MakeBox(Header,Col,Row,True) EndProc Procedure CornerStretchBox (Header,Col,Row) MakeBox(Header,Col,Row,False) EndProc Procedure MakeBox(Header,Col,Row,Center) var NumElem Height Width Width = Length(Header) - 1 NumElem = NumberOfElements(Choices) ;Get the widest element in the Choices Array if Length(Choices[1]) > 0 loop NumElem Trim(Choices[LoopIndex]) Choices[LoopIndex] = " " + Char(64 + LoopIndex) + ". " + Choices[LoopIndex] Width = Max(Width,Length(Choices[LoopIndex])) endloop else Width = 73 endif Height = NumElem + 2 if Header > '' then Height = NumElem + 4 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 - 1) Col = Max(Col,2) Col = Min(Col,ScreenWidth - Width) DrawTheBox(Col,Row,Width,Height,Header) ;Write the menu choices loop(NumElem - 1) Writeln(Choices[LoopIndex]) 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) DrawBox(Col, Row, Width, Height) if Header > '' ;Write the header TextColor(MenuHeaderFG,MenuBG) WriteCenter(Header) ;Write the vertical lines TextColor(MenuVertLinesFG,MenuBG) Writeln ClearLine 196 GotoXY 2 2 WriteVertical mid(VertLine,1,Height - 3) ;Draw the menu text box CapsColor(MenuCapColorFG,MenuBG) InverseColor(MenuInverseFG,MenuInverseBG) Window(Col + 3, Row + 3, Width - 4, Height - 4) else CapsColor Black Black endif EndProc ;------ MenuExit Procedure Procedure LeaveMenu DrawTheBox (ScreenWidth / 2 - 4,ScreenHeight / 2 - 1,13,6,'Exit Menu') Writeln " Yes" Write " No" OnKey "Y" |ExitMenu OnKey "N" |LastKey = Esc EndProc ;------ Read a Text Line Procedure Procedure ReadTextLine(St,Header,Col,Row) var AnswerLine Choices[1] = "" CenterStretchBox(Header,Col,Row) Write " " St " " TextColor(MenuCapColorFG,MenuBG) AnswerLine = Readln EraseTopWindow Dispose Choices Return AnswerLine EndProc Procedure GreekColumns TextColor GreekFG GreekBG GotoXY 4,4 WriteVertical VertLine2 GotoXY 5,4 WriteVertical VertLine2 GotoXY 6,4 WriteVertical VertLine2 GotoXY 7,4 WriteVertical VertLine2 GotoXY 74,4 WriteVertical VertLine2 GotoXY 75,4 WriteVertical VertLine2 GotoXY 76,4 WriteVertical VertLine2 GotoXY 77,4 WriteVertical VertLine2 GotoXY 2,4 Write VertLine4 GotoXY 72,4 Write VertLine4 GotoXY 2,24 Write VertLine3 GotoXY 72,24 Write VertLine3 EndProc