home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / clarion / tkmengen.zip / MAINMENU.CLA < prev    next >
Text File  |  1990-03-23  |  8KB  |  231 lines

  1. !=========================================== PULLDOWN MENU ======
  2.        MEMBER('MAKEMENU')
  3. MAINMENU      PROCEDURE
  4.  
  5.  
  6.                   !================= Screen for MainMenu
  7. MAINMENU     SCREEN      WINDOW(25,80),AT(1,1),PRE(MAI),HUE(15,1)
  8.            ROW(1,1)      PAINT(3,80),HUE(0,3)
  9.            ROW(9,17)  STRING('╔═{35}╗')
  10.            ROW(10,17) REPEAT(6);STRING('║<0{35}>║') .
  11.            ROW(16,17) STRING('╚═{35}╝')
  12.            ROW(10,21) STRING('SAA Menu Maker')
  13.            ROW(11,21) STRING('ORIGINAL DESIGN By Foo Say How')
  14.            ROW(12,21) STRING('Based on Tony Kirk''s Menus')
  15.            ROW(13,21) STRING('Modified by David R Silver')
  16.            ROW(14,21) STRING('To use Tony Kirk''s New Format')
  17.            ROW(15,21) STRING('April 4,1990')
  18. SCRTITLE       ROW(1,1)      STRING(80)
  19.            ROW(2,1)      MENU(@S80),USE(S80MAINCH),HUE(14,4),SEL(14,4),IMM
  20.            ROW(3,2)        STRING(' Design '),SEL(15,4)               |
  21.                   DESC(' Design Pulldown Menu ')
  22.          COL(12)    STRING(' Build '),SEL(15,4)                   |
  23.                   DESC(' Build Pulldown Menu ')
  24.          COL(21)    STRING(' Print '),SEL(15,4)                   |
  25.                   DESC(' Print Pulldown Menu ')
  26.          COL(30)    STRING(' Quit '),SEL(15,4),DESC(' Quit to DOS ')
  27.          .          .
  28.  
  29.                   !==================== Screen for Design =====
  30. DesignMenu    SCREEN       WINDOW(06,80),AT(2,1),TRN
  31.         ROW(06,04)  PAINT(1,08),HUE(7,0),TRN
  32.         ROW(3,12)  PAINT(4 ,2),HUE(7,0),TRN
  33.         ROW(2,02)   STRING('│ {08}│'),HUE(0,3)
  34.         ROW(3,02)   STRING('├─{08}┤'),HUE(0,3)
  35.         ROW(4,02)   REPEAT(01),EVERY(1);STRING('│ {08}│'),HUE(0,3) .
  36.         ROW(05,02)   STRING('└─{08}┘'),HUE(0,3)
  37.         ROW(2,03)   STRING(' Design '),HUE(15,4)
  38.         ROW(1,1)   MENU(@S80),USE(s80DesiCh),HUE(14,1),SEL(14,1),IMM
  39.         ROW(04,03)    STRING(' Design '), HUE(0,3), SEL(15,4)          |
  40.                    DESC(' Design Pulldown Menu ')
  41.           END
  42.         END
  43.  
  44.                   !==================== Screen for Build =====
  45. BuildMenu     SCREEN       WINDOW(06,80),AT(2,1),TRN
  46.         ROW(06,14)  PAINT(1,07),HUE(7,0),TRN
  47.         ROW(3,21)  PAINT(4 ,2),HUE(7,0),TRN
  48.         ROW(2,12)   STRING('│ {07}│'),HUE(0,3)
  49.         ROW(3,12)   STRING('├─{07}┤'),HUE(0,3)
  50.         ROW(4,12)   REPEAT(01),EVERY(1);STRING('│ {07}│'),HUE(0,3) .
  51.         ROW(05,12)   STRING('└─{07}┘'),HUE(0,3)
  52.         ROW(2,13)   STRING(' Build '),HUE(15,4)
  53.         ROW(1,1)   MENU(@S80),USE(s80BuilCh),HUE(14,1),SEL(14,1),IMM
  54.         ROW(04,13)    STRING(' Build '), HUE(0,3), SEL(15,4)         |
  55.                    DESC(' Build Pulldown Menu ')
  56.           END
  57.         END
  58.  
  59.                   !==================== Screen for Print =====
  60. PrintMenu     SCREEN       WINDOW(06,80),AT(2,1),TRN
  61.         ROW(06,23)  PAINT(1,07),HUE(7,0),TRN
  62.         ROW(3,30)  PAINT(4 ,2),HUE(7,0),TRN
  63.         ROW(2,21)   STRING('│ {07}│'),HUE(0,3)
  64.         ROW(3,21)   STRING('├─{07}┤'),HUE(0,3)
  65.         ROW(4,21)   REPEAT(01),EVERY(1);STRING('│ {07}│'),HUE(0,3) .
  66.         ROW(05,21)   STRING('└─{07}┘'),HUE(0,3)
  67.         ROW(2,22)   STRING(' Print '),HUE(15,4)
  68.         ROW(1,1)   MENU(@S80),USE(s80PrinCh),HUE(14,1),SEL(14,1),IMM
  69.         ROW(04,22)    STRING(' Print '), HUE(0,3), SEL(15,4)         |
  70.                    DESC(' Print Pulldown Menu Details ')
  71.           END
  72.         END
  73.  
  74.                   !==================== Screen for Quit =====
  75. QuitMenu      SCREEN       WINDOW(06,80),AT(2,1),TRN
  76.         ROW(06,32)  PAINT(1,06),HUE(7,0),TRN
  77.         ROW(3,38)  PAINT(4 ,2),HUE(7,0),TRN
  78.         ROW(2,30)   STRING('│ {06}│'),HUE(0,3)
  79.         ROW(3,30)   STRING('├─{06}┤'),HUE(0,3)
  80.         ROW(4,30)   REPEAT(01),EVERY(1);STRING('│ {06}│'),HUE(0,3) .
  81.         ROW(05,30)   STRING('└─{06}┘'),HUE(0,3)
  82.         ROW(2,31)   STRING(' Quit '),HUE(15,4)
  83.         ROW(1,1)   MENU(@S80),USE(s80QuitCh),HUE(14,1),SEL(14,1),IMM
  84.         ROW(04,31)    STRING(' Quit '), HUE(0,3), SEL(15,4)        |
  85.                    DESC(' Quit to DOS ')
  86.           END
  87.         END
  88.  
  89. s80SaveCh    STRING(80)
  90. s80DesiCh    STRING(80)
  91. s80BuilCh    STRING(80)
  92. s80PrinCh    STRING(80)
  93. s80QuitCh    STRING(80)
  94. s80LastCh    STRING(80)                ! Main menu choice for save
  95. s80MainCh    STRING(80)                ! Current choice string
  96. s25Date        STRING(25)
  97. ibSaveCh    BYTE
  98. MenuRight    BYTE                    ! eTrue if right arrow pressed
  99. MenuLeft    BYTE                    ! eTrue if left   arrow pressed
  100. PullDown    BYTE                    ! Which choice made by arrow
  101. Quit        BYTE                    ! Flag to halt program
  102.                   !==================== Code for MainMenu =====
  103.     CODE
  104.     OPEN(MainMenu)                 ! Display Main Menu
  105.   s25Date = CLIP(FORMAT(TODAY(),@D4))
  106.   MAI:SCRTITLE=' Systran (S) Pte Ltd {34}'&RIGHT(S25DATE,25)&' '
  107.     ALERT                     ! Clear alerts
  108.     s80LastCh = ''                    ! Init main menu choice
  109.     LOOP                     ! Begin accept loop
  110.       ALERT(Esc_Key)                  !  Alert Esc Key
  111.       s80MainCh = s80LastCh                   !  Set to last menu selection
  112.       ACCEPT                     !  Get keyboard input
  113.       IF KEYCODE() = Esc_Key              !  If Esc Key
  114.     PullDown = 04                  !   Set choice to maximum (quit)
  115.     GOTO PullLoop                 !   Goto pull down section
  116.       END                       !  End Esc Key test
  117.       IF KEYCODE() <> Enter_Key
  118.      CYCLE
  119.       END
  120.       s80LastCh = s80MainCh                   !  Save menu choice string
  121.       PullDown = CHOICE()             !  Make choice = choice()
  122. PullLoop                     !  Just a GOTO Tag
  123.       DO SubMenu                 !  Do Sub Routine
  124.  
  125.       IF Quit                     !  If Quit selected
  126.     CLOSE(MainMenu)                 !   Close main menu
  127.     RETURN                     !   Get outta here
  128.       END                       !  End IF quit test
  129.  
  130.       IF NOT MenuLeft AND NOT MenuRight         !  If not to move left/right
  131.     CYCLE                     !   Back to main menu
  132.       END                       !  End left/right test
  133.  
  134.       IF MenuLeft                 !  If left pressed
  135.     PullDown -= 1                 !   Decrement menu choice
  136.     IF PullDown = 0                 !   If now below range
  137.       PullDown = 04                  !    Set to 5
  138.     END                       !   End if zero test
  139.       ELSE                     !  Otherwise, must be right
  140.     PullDown += 1                 !   Increment menu choice
  141.     IF PullDown = 05              !   If 6 (above # of items)
  142.       PullDown = 1                 !    Set to 1
  143.     END                       !   End if 6 test
  144.       END                       !  End left/right test
  145.  
  146.       MenuLeft = eFalse                  !  Re-init left flag
  147.       MenuRight= eFalse                  !  Re-init right flag
  148.  
  149.       GOTO PullLoop                 !  Loop to menu selections
  150.     END                           ! End LOOP
  151.  
  152.     RETURN                       !EXIT TO DOS
  153.  
  154.                   !======================= ROUTINE SubMenu =====
  155. SubMenu       ROUTINE
  156.     EXECUTE PullDown                   !  Test CHOICE()
  157.       OPEN(DesignMenu)
  158.       OPEN(BuildMenu)
  159.       OPEN(PrintMenu)
  160.       OPEN(QuitMenu)
  161.     END                           ! End LOOP
  162.  
  163.     ALERT
  164.     s80SaveCh       = ''
  165.     LOOP                     ! Begin accept loop
  166.       ALERT(Left_key)
  167.       ALERT(Right_Key)
  168.       ALERT(Esc_Key)
  169.       IF s80SaveCh <> ''
  170.     EXECUTE PullDown               !  Test CHOICE()
  171.       s80DesiCh = s80SaveCh                   ! Set to last menu selection
  172.       s80BuilCh = s80SaveCh                   ! Set to last menu selection
  173.       s80PrinCh = s80SaveCh                   ! Set to last menu selection
  174.       s80QuitCh = s80SaveCh                   ! Set to last menu selection
  175.     END
  176.       END
  177.       ACCEPT
  178.       If CHOICE() <> 0
  179.     ibSaveCh = Choice()
  180.       END
  181.       IF KEYCODE() = Esc_Key              !  If ESC, quit to main menu
  182.     EXECUTE PullDown               !  Test CHOICE()
  183.       s80LastCh = ' Design '
  184.       s80LastCh = ' Build '
  185.       s80LastCh = ' Print '
  186.       s80LastCh = ' Quit '
  187.     END
  188.     BREAK
  189.       END
  190.       IF KEYCODE() = Left_key              !  If left arrow
  191.     MenuLeft = eTrue              !   Set on Left flag
  192.     BREAK                    !   Return to main menu
  193.       END                       !  End if left arrow test
  194.       IF KEYCODE() = Right_Key              !  If right arrow
  195.     MenuRight = eTrue              !   Set on Right flag
  196.     BREAK                    !   Return to main menu
  197.       END                    !  End if right arrow test
  198.       CASE PULLDOWN
  199.     OF 01
  200.       s80SaveCh = s80QuitCh                 !  Save menu choice
  201.       EXECUTE ibSaveCh                 !  Test CHOICE()
  202.         Design
  203.       END                         !    End EXECUTE
  204.  
  205.     OF 02
  206.       s80SaveCh = s80QuitCh                 !  Save menu choice
  207.       EXECUTE ibSaveCh                 !  Test CHOICE()
  208.         Building
  209.       END                         !    End EXECUTE
  210.  
  211.     OF 03
  212.       s80SaveCh = s80QuitCh                 !  Save menu choice
  213.       EXECUTE ibSaveCh                 !  Test CHOICE()
  214.         PRINTING
  215.       END                         !    End EXECUTE
  216.  
  217.     OF 04
  218.      Quit = eTrue
  219.      BREAK
  220.  
  221.      END                      ! End Case
  222.    END                        ! End LOOP
  223.  
  224.     ALERT
  225.       EXECUTE PullDown                 !  Test CHOICE()
  226.     CLOSE(DesignMenu)
  227.     CLOSE(BuildMenu)
  228.     CLOSE(PrintMenu)
  229.     CLOSE(QuitMenu)
  230.     END                           ! End Execute
  231.