home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 September / Simtel20_Sept92.cdr / msdos / turbopas / tp4menu1.arc / PPS_INIT.PAS < prev    next >
Pascal/Delphi Source File  |  1988-11-10  |  15KB  |  455 lines

  1. {
  2. Copyright (c) 1988 BittWare Computing, ALL RIGHTS RESERVED
  3. }
  4. unit pps_init;
  5. {$v-}
  6. interface
  7. uses
  8.         menuvars,
  9.         menucode,
  10.         crt,
  11.         pps_glob;
  12.  
  13. const
  14.      MaxMasks       = 5;
  15.      MaxPullDowns   = 5;
  16.  
  17.      ExeMenu        = 1;
  18.      VarMenu        = 2;
  19.      NumPtsMenu     = 3;
  20.      FileMenu       = 4;
  21.      ConfirmMenu    = 5;
  22.  
  23. var
  24.      MaskID         :array[1..MaxMasks] of string[MenuMax];
  25.      PullDowns      :array[1..MaxPullDowns] of MenuPtr;
  26.  
  27.      IOList         :MessagePtr;
  28.      ColorList      :PickListPtr;
  29.      MaskList       :PickListPtr;
  30.      HdrList        :HdrPtr;
  31.  
  32.      HelpScreen     :HalfScreenPtr;
  33.      HalfScreen1    :HalfScreenPtr;
  34.      HalfScreen2    :HalfScreenPtr;
  35.      QuarterScreen1 :QuarterScreenPtr;
  36.      EighthScreen1  :EighthScreenPtr;
  37.      EighthScreen2  :EighthScreenPtr;
  38.      TextScreen     :ScreenPtr;
  39.  
  40.      VarVars        :InpStrPtr;
  41.      FileVars       :InpStrPtr;
  42.      NumPtVars      :InpStrPtr;
  43.  
  44.      OnOffList       :VarListPtr;
  45.      VarTypeList     :VarListPtr;
  46.  
  47. procedure InitMenuVars;
  48. procedure InitMenus;
  49.  
  50. implementation
  51.  
  52. {
  53. procedure SaveMenus;
  54. var
  55.     indx         :integer;
  56.     FileVar      :file of MenuPtrType;
  57.     FileName     :FileString;
  58. begin
  59.     FileName := 'menuset.rec';
  60.     Assign(FileVar,FileName);
  61.     rewrite(FileVar);
  62.     for indx := 1 to MaxPullDowns do
  63.           write(filevar,MenuPtrType(PullDowns[indx]^));
  64.     Close(FileVar);
  65. end;
  66.  
  67. procedure RecallMenus;
  68. var
  69.     indx         :integer;
  70.     FileVar      :file of MenuPtrType;
  71.     FileName     :FileString;
  72. begin
  73.     FileName := 'menuset.rec';
  74.     Assign(FileVar,FileName);
  75.     reset(FileVar);
  76.     for indx := 1 to MaxPullDowns do
  77.           read(filevar,MenuPtrType(PullDowns[indx]^));
  78.     Close(FileVar);
  79. end;
  80. }
  81.  
  82. procedure InitMenuVars;
  83. var
  84.      vp   :InpStrPtr;
  85.      indx :integer;
  86.      w    :byte;
  87. begin
  88.      vp := PullDowns[NumPtsMenu]^.VarPtr;
  89.      w := PullDowns[NumPtsMenu]^.Width - PullDowns[NumPtsMenu]^.TxtLen - 2;
  90.      For indx := 1 to 8 do begin
  91.           vp^[indx].Str := '';
  92.           vp^[indx].Typ := StringCode;
  93.           vp^[indx].VarWidth := w;
  94.      end;
  95.      str(SpclNum,vp^[8].Str);
  96.      NumPtVars^[8].typ := LongIntCode;
  97.  
  98.      vp := PullDowns[FileMenu]^.VarPtr;
  99.      w := PullDowns[FileMenu]^.Width - PullDowns[FileMenu]^.TxtLen - 2;
  100.      for indx := 1 to 5 do begin
  101.              vp^[indx].Typ := StringCode;
  102.              vp^[indx].VarWidth := w;
  103.      end;
  104.      vp^[1].Str := DirSearchPath;
  105.      vp^[1].VarWidth := MaxPathLength;
  106.      vp^[2].Str := DirSearchMask;
  107.      vp^[3].Str := FlName;
  108.      vp^[4].Str := ColorList^.str[FgColorSel+1];
  109.      vp^[5].Str := ColorList^.str[BgColorSel+1];
  110.  
  111.      vp := PullDowns[VarMenu]^.VarPtr;
  112.      w := PullDowns[VarMenu]^.Width - PullDowns[VarMenu]^.TxtLen - 2;
  113.      for indx := 1 to 9 do begin
  114.              vp^[indx].VarWidth := w;
  115.      end;
  116.      vp^[1].Str := MaskList^.str[MaskVar];
  117.      vp^[1].Typ := StringCode;
  118.      vp^[2].Str := StringVar;
  119.      vp^[2].Typ := StringCode;
  120.      vp^[3].str := Real2Str(RealVar1,w,2);
  121.      vp^[3].Typ := RealCode;
  122.      vp^[4].str := Real2Str(RealVar2,w,2);
  123.      vp^[4].Typ := RealCode;
  124.      str(IntVar,vp^[5].Str);
  125.      vp^[5].Typ := IntCode;
  126.      vp^[5].VarWidth := 6;
  127.      str(LongIntVar,vp^[6].Str);
  128.      vp^[6].Typ := LongIntCode;
  129.      vp^[7].Str := OnOffList^.str[BoolVar];
  130.      vp^[7].Typ := IntCode;
  131.      str(MenuNum,vp^[8].Str);
  132.      vp^[8].Typ := LongIntCode;
  133.      vp^[9].Str := VarTypeList^.str[FrChgVar];
  134.      vp^[9].Typ := IntCode;
  135. end;
  136.  
  137. procedure InitMenus;
  138. var
  139.      indx, i2       :byte;
  140. begin
  141.      crt_mode := mem[$0040:$0049];
  142.      if crt_mode = 7 then begin
  143.           screen := ptr($b000,$0000);
  144.           MenuBorderBg    := MonoLo;
  145.           MenuBorderFg    := black;
  146.           MenuSelFg       := black;
  147.           MenuHiFg        := MonoHi;
  148.           MenuLoFg        := MonoLo;
  149.           MenuSelBg       := MonoLo;
  150.           MenuNoSelFg     := MonoLo;
  151.           MenuNoSelBg     := black;
  152.           MenuVarBg       := black;
  153.           MenuVarFg       := MonoHi;
  154.           VarInpFg        := black;
  155.           VarInpBg        := MonoLo;
  156.           MainFg          := MonoHi;
  157.           MainBg          := black;
  158.           BottomFg        := black;
  159.           BottomBg        := MonoLo;
  160.           CursStart       := 12;
  161.           CursEnd         := 13;
  162.      end
  163.      else begin
  164.           screen := ptr($b800,$0000);
  165.           MenuBorderBg    := magenta;
  166.           MenuBorderFg    := yellow;
  167.           MenuSelFg       := white;
  168.           MenuHiFg        := white;
  169.           MenuLoFg        := black;
  170.           MenuSelBg       := red;
  171.           MenuNoSelFg     := white;
  172.           MenuNoSelBg     := cyan;
  173.           MenuVarBg       := black;
  174.           MenuVarFg       := yellow;
  175.           VarInpFg        := yellow;
  176.           VarInpBg        := blue;
  177.           MainFg          := white;
  178.           MainBg          := blue;
  179.           BottomFg        := black;
  180.           BottomBg        := lightgray;
  181.           CursStart       := 7;
  182.           CursEnd         := 8;
  183.      end;
  184.  
  185.      for indx := 1 to MaxPullDowns do begin
  186.           new(PullDowns[indx]);
  187.           for i2 := 1 to MenuMax do
  188.                PullDowns[indx]^.SelPattern[i2] := '*';
  189.           PullDowns[indx]^.BorderBg := MenuBorderBg;
  190.           PullDowns[indx]^.BorderFg := MenuBorderFg;
  191.           PullDowns[indx]^.Fg       := MenuHiFg;
  192.           PullDowns[indx]^.SelFg    := MenuSelFg;
  193.           PullDowns[indx]^.SelBg    := MenuSelBg;
  194.           PullDowns[indx]^.NoSelBg  := MenuNoSelBg;
  195.           PullDowns[indx]^.NoSelFg  := MenuLoFg;
  196.           PullDowns[indx]^.VarFg    := MenuVarFg;
  197.           PullDowns[indx]^.VarBg    := MenuVarBg;
  198.           PullDowns[indx]^.VarPtr   := nil;
  199.  
  200.      end;
  201.  
  202.      new(HdrList);
  203.      New(OnOffList);
  204.      New(VarTypeList);
  205.      new(ColorList);
  206.      new(HelpList);
  207.      new(SkinnyIO);
  208.      new(MaskList);
  209.      new(ErrorList);
  210.      new(IOList);
  211.  
  212.      New(VarVars);
  213.      New(FileVars);
  214.      New(NumPtVars);
  215.  
  216.      new(SkinnySave);
  217.      new(HelpScreen);
  218.      new(HalfScreen1);
  219.      new(HalfScreen2);
  220.      new(QuarterScreen1);
  221.      new(EighthScreen1);
  222.      new(EighthScreen2);
  223.      new(TextScreen);
  224.  
  225.         HdrList^.str[1]   := 'Execute';
  226.         HdrList^.str[2]   := 'File Select';
  227.         HdrList^.str[3]   := 'Data Entry';
  228.         HdrList^.str[4]   := 'Quit';
  229.         HdrList^.max      := 4;
  230.         HdrList^.sel      := 1;
  231.  
  232.         OnOffList^.str[1]   := 'On'; 
  233.         OnOffList^.str[2]   := 'Off';
  234.         OnOffList^.max      := 2;
  235.  
  236.         VarTypeList^.str[1]   := 'Real'; 
  237.         VarTypeList^.str[2]   := 'Integer';
  238.         VarTypeList^.str[3]   := 'String';
  239.         VarTypeList^.max      := 3;
  240.  
  241.         MaskID[1] := '* * * * * *';
  242.         MaskID[2] := '***********';
  243.         MaskID[3] := ' * * * * * ';
  244.         MaskID[4] := '*****      ';
  245.         MaskID[5] := '     ******';
  246.         MaskList^.str[1]  := 'Only Odd';
  247.         MaskList^.str[2]  := 'Full Mask';
  248.         MaskList^.str[3]  := 'Only Even';
  249.         MaskList^.str[4]  := 'First Half';
  250.         MaskList^.str[5]  := 'Last Half';
  251.         MaskList^.max     := 5;
  252.         MaskList^.maxX    := 4;
  253.         MaskList^.sel     := 1;
  254.         MaskList^.y       := 13;
  255.         MaskList^.x       := 13;
  256.         MaskList^.BorderBg := MenuBorderBg;
  257.         MaskList^.BorderFg := MenuBorderFg;
  258.         MaskList^.Fg       := MenuSelFg;
  259.         MaskList^.SelBg    := MenuSelBg;
  260.         MaskList^.NoSelBg  := MenuNoSelBg;
  261.         MaskList^.NoSelFg  := MenuNoSelFg;
  262.         MaskList^.title   := 'Set Menu Mask';
  263.         MaskList^.ScreenBufPtr := HalfScreen1;
  264.  
  265. {If using save/restore menus, begin here}
  266.  
  267.         PullDowns[ExeMenu]^.str[1]   := 'User 1 ';
  268.         PullDowns[ExeMenu]^.str[2]   := 'User 2 ';
  269.         PullDowns[ExeMenu]^.str[3]   := 'Good Beep ';
  270.         PullDowns[ExeMenu]^.str[4]   := 'Bad Beep ';
  271.         PullDowns[ExeMenu]^.max      := 4;
  272.         PullDowns[ExeMenu]^.sel      := 1;
  273.         PullDowns[ExeMenu]^.x        := 1;
  274.         PullDowns[ExeMenu]^.y        := 2;
  275.         PullDowns[ExeMenu]^.TxtLen   := 14;
  276.         PullDowns[ExeMenu]^.Width    := 14;
  277.         PullDowns[ExeMenu]^.title    := '';
  278.  
  279.         PullDowns[VarMenu]^.str[1]   := 'Set Mask';
  280.         PullDowns[VarMenu]^.str[2]   := 'String Var';
  281.         PullDowns[VarMenu]^.str[3]   := 'Real Var #1';
  282.         PullDowns[VarMenu]^.str[4]   := 'Real Var #2';
  283.         PullDowns[VarMenu]^.str[5]   := 'Int Var';
  284.         PullDowns[VarMenu]^.str[6]   := 'LongInt';
  285.         PullDowns[VarMenu]^.str[7]   := 'Auto Mode';
  286.         PullDowns[VarMenu]^.str[8]   := 'Pick Num';
  287.         PullDowns[VarMenu]^.str[9]   := 'Switch Var';
  288.         PullDowns[VarMenu]^.max      := 9;
  289.         PullDowns[VarMenu]^.sel      := 1;
  290.         PullDowns[VarMenu]^.x        := 1;
  291.         PullDowns[VarMenu]^.y        := 2;
  292.         PullDowns[VarMenu]^.TxtLen   := 14;
  293.         PullDowns[VarMenu]^.Width    := 28;
  294.         PullDowns[VarMenu]^.title    := 'Bullet-Proof Entry';
  295.         PullDowns[VarMenu]^.SelPattern := MaskId[MaskVar];
  296.  
  297.         PullDowns[ConfirmMenu]^.str[1]   := 'Confirm ';
  298.         PullDowns[ConfirmMenu]^.str[2]   := 'Cancel ';
  299.         PullDowns[ConfirmMenu]^.str[3]   := '';
  300.         PullDowns[ConfirmMenu]^.max      := 3;
  301.         PullDowns[ConfirmMenu]^.SelPattern := '** *****';
  302.         PullDowns[ConfirmMenu]^.sel      := 1;
  303.         PullDowns[ConfirmMenu]^.x        := 57;
  304.         PullDowns[ConfirmMenu]^.y        := 5;
  305.         PullDowns[ConfirmMenu]^.TxtLen   := 14;
  306.         PullDowns[ConfirmMenu]^.Width    := 14;
  307.         PullDowns[ConfirmMenu]^.title    := '';
  308.         PullDowns[ConfirmMenu]^.BorderFg := MenuBorderFg + blink;
  309.  
  310.         PullDowns[NumPtsMenu]^.str[1]   := '64';
  311.         PullDowns[NumPtsMenu]^.str[2]   := '128';
  312.         PullDowns[NumPtsMenu]^.str[3]   := '256';
  313.         PullDowns[NumPtsMenu]^.str[4]   := '512';
  314.         PullDowns[NumPtsMenu]^.str[5]   := '1024';
  315.         PullDowns[NumPtsMenu]^.str[6]   := '2048';
  316.         PullDowns[NumPtsMenu]^.str[7]   := '4096';
  317.         PullDowns[NumPtsMenu]^.str[8]   := 'Set Special';
  318.         PullDowns[NumPtsMenu]^.max      := 8;
  319.         PullDowns[NumPtsMenu]^.title    := '';
  320.         PullDowns[NumPtsMenu]^.sel      := 1;
  321.         PullDowns[NumPtsMenu]^.x        := 1;
  322.         PullDowns[NumPtsMenu]^.y        := 13;
  323.         PullDowns[NumPtsMenu]^.width    := 20;
  324.         PullDowns[NumPtsMenu]^.TxtLen   := 12;
  325.  
  326.         PullDowns[FileMenu]^.str[1]   := 'File Path';
  327.         PullDowns[FileMenu]^.str[2]   := 'Search Mask';
  328.         PullDowns[FileMenu]^.str[3]   := 'Get File';
  329.         PullDowns[FileMenu]^.str[4]   := 'Fg Color';
  330.         PullDowns[FileMenu]^.str[5]   := 'Bg Color';
  331.         PullDowns[FileMenu]^.max      := 5;
  332.         PullDowns[FileMenu]^.sel      := 1;
  333.         PullDowns[FileMenu]^.x        := 1;
  334.         PullDowns[FileMenu]^.y        := 2;
  335.         PullDowns[FileMenu]^.width    := 28;
  336.         PullDowns[FileMenu]^.TxtLen   := 14;
  337.         PullDowns[FileMenu]^.title    := 'File Pick-List Example';
  338.  
  339. {If using save/restore menus, end here}
  340. {
  341.         RecallMenus;
  342. }
  343.  
  344. {Pointer Values must be restored after recalling menus}
  345.  
  346.         PullDowns[ExeMenu]^.ScreenBufPtr:= EighthScreen1;
  347.         PullDowns[VarMenu]^.VarPtr   := VarVars;
  348.         PullDowns[VarMenu]^.ScreenBufPtr:= EighthScreen1;
  349.         PullDowns[ConfirmMenu]^.ScreenBufPtr:= EighthScreen2;
  350.         PullDowns[NumPtsMenu]^.VarPtr   := NumPtVars;
  351.         PullDowns[NumPtsMenu]^.ScreenBufPtr:= EighthScreen2;
  352.         PullDowns[FileMenu]^.VarPtr   := FileVars;
  353.         PullDowns[FileMenu]^.ScreenBufPtr:= QuarterScreen1;
  354.  
  355.         ColorList^.str[1]  := 'Black';
  356.         ColorList^.str[2]  := 'Blue';
  357.         ColorList^.str[3]  := 'Green';
  358.         ColorList^.str[4]  := 'Cyan';
  359.         ColorList^.str[5]  := 'Red';
  360.         ColorList^.str[6]  := 'Magenta';
  361.         ColorList^.str[7]  := 'Brown';
  362.         ColorList^.str[8]  := 'LightGray';
  363.         ColorList^.str[9]  := 'DarkGray';
  364.         ColorList^.str[10]  := 'LightBlue';
  365.         ColorList^.str[11]  := 'LightGreen';
  366.         ColorList^.str[12]  := 'LightCyan';
  367.         ColorList^.str[13]  := 'LightRed';
  368.         ColorList^.str[14]  := 'LightMagenta';
  369.         ColorList^.str[15]  := 'Yellow';
  370.         ColorList^.str[16]  := 'White';
  371.         ColorList^.max     := 16;
  372.         ColorList^.maxX    := 4;
  373.         ColorList^.sel     := 1;
  374.         ColorList^.y       := 13;
  375.         ColorList^.x       := 1;
  376.         ColorList^.BorderBg := MenuBorderBg;
  377.         ColorList^.BorderFg := MenuBorderFg;
  378.         ColorList^.Fg       := MenuSelFg;
  379.         ColorList^.SelBg    := MenuSelBg;
  380.         ColorList^.NoSelBg  := MenuNoSelBg;
  381.         ColorList^.NoSelFg  := MenuNoSelFg;
  382.         ColorList^.title   := 'Choose Color';
  383.         ColorList^.ScreenBufPtr := QuarterScreen1;
  384.  
  385.         HelpList^.x       := 5;
  386.         HelpList^.y       := 5;
  387.         HelpList^.dx      := 70;
  388.         HelpList^.dy      := MaxHelpLines + 2;
  389.         HelpList^.BorderBg := magenta;
  390.         HelpList^.BorderFg := yellow;
  391.         HelpList^.Fg       := white;
  392.         HelpList^.Bg       := red;
  393.         HelpList^.title   := 'Help on Current Choices';
  394.         HelpList^.ScreenBufPtr := HelpScreen;
  395.  
  396.         ErrorList^.x       := 5;
  397.         ErrorList^.y       := 10;
  398.         ErrorList^.dx      := 70;
  399.         ErrorList^.dy      := 5;
  400.         ErrorList^.BorderBg := black;
  401.         ErrorList^.BorderFg := yellow;
  402.         ErrorList^.Fg       := white;
  403.         ErrorList^.Bg       := red;
  404.         ErrorList^.title   := 'Error!  <esc> to resume';
  405.         ErrorList^.ScreenBufPtr := HelpScreen;
  406.  
  407.         IOList^.x       := 5;
  408.         IOList^.y       := 6;
  409.         IOList^.dx      := 70;
  410.         IOList^.dy      := 13;
  411.         IOList^.BorderBg := MenuBorderBg;
  412.         IOList^.BorderFg := MenuBorderFg;
  413.         IOList^.Fg       := MenuHiFg;
  414.         IOList^.Bg       := MenuSelBg;
  415.         IOList^.VarFg   := MenuVarFg;
  416.         IOList^.VarBg   := MenuVarBg;
  417.         IOList^.title   := 'User Input';
  418.         IOList^.ScreenBufPtr := HalfScreen1;
  419.  
  420.         SkinnyIO^.x        := 5;
  421.         SkinnyIO^.y        := 13;
  422.         SkinnyIO^.dx       := 70;
  423.         SkinnyIO^.dy       := 1;
  424.         SkinnyIO^.BorderBg := MenuBorderBg;
  425.         SkinnyIO^.BorderFg := MenuBorderFg;
  426.         SkinnyIO^.Fg       := MenuNoSelFg;
  427.         SkinnyIO^.Bg       := MenuNoSelBg;
  428.         SkinnyIO^.VarFg    := VarInpFg;
  429.         SkinnyIO^.VarBg    := VarInpBg;
  430.         SkinnyIO^.title    := 'User Input';
  431.         SkinnyIO^.ScreenBufPtr := SkinnySave;
  432.  
  433.         New(DirList);
  434.         DirList^.sel      := 1;
  435.         DirList^.y        := 13;
  436.         DirList^.x        := 1;
  437.         DirList^.MaxX     := 5;
  438.         DirList^.BorderBg := MenuBorderBg;
  439.         DirList^.BorderFg := MenuBorderFg;
  440.         DirList^.Fg       := MenuSelFg;
  441.         DirList^.SelBg    := MenuSelBg;
  442.         DirList^.NoSelBg  := MenuNoSelBg;
  443.         DirList^.NoSelFg  := MenuNoSelFg;
  444.         DirList^.title    := 'Directory';
  445.         DirList^.ScreenBufPtr := HalfScreen1;
  446.  
  447. {
  448.         SaveMenus;
  449. }
  450. end;
  451.  
  452.  
  453. end.
  454.  
  455.