home *** CD-ROM | disk | FTP | other *** search
/ TestDrive Super Store 2.3 / TESTDRIVE_2.ISO / realizer / formdev / menuedit.rlz < prev    next >
Encoding:
Text File  |  1992-09-30  |  5.6 KB  |  253 lines

  1. '***********************************************************************
  2. '    FormDev: MenuEdit.RLZ
  3. '
  4. '    Copyright ⌐ 1991-1992 Computer Associates International, Inc.
  5. '    All rights reserved.
  6. '
  7. '***********************************************************************
  8.  
  9. PROC ValidBMP (itemNum)
  10.     LOCAL    s1, fnum, s2
  11.  
  12.     IF item.type[itemNum] <> _Bitmap AND item.type[itemNum] <> _BitmapButton THEN
  13.         EXIT PROC
  14.     END IF
  15.     s1 = FileQ(item.text[itemNum], _Name)
  16.     IF FileQ(s1, _Exists) THEN
  17.         fnum = FileQUnique
  18.         FileOpen(fnum, s1)
  19.         FileRead(fnum, s2, 2)
  20.         FileClose(fnum)
  21.         IF s2 = "BM" THEN
  22.             EXIT PROC
  23.         END IF
  24.     END IF
  25.     INPUT "Not a valid bitmap file: """ + s1 + """.", "FormDev";
  26.     item.type[itemNum] = _Frame
  27. END PROC
  28.  
  29.  
  30. FUNC VisAIModal(n)
  31.     LOCAL    oldfont, newfont, newID
  32.  
  33.     oldfont = item.font[n]
  34.     FDFontRefInc(oldfont)            ' don't let FDFontModal kill it.
  35.     newfont = oldfont
  36.     FormSetFoc(20)
  37.     LOOP
  38.         FormSelect(fdVisOption)
  39.         SELECT CASE FormWait
  40.         CASE 1, 30    'OK, Type list box
  41.             newID = StrToItemID(FormQStr(10))
  42.             IF newID = 0 THEN
  43.                 FormSetFoc(10)
  44.                 EXIT SELECT
  45.             END IF
  46.             IF newID <> item.id[n] THEN
  47.                 IF FirstMatch(item.id, newID) THEN
  48.                     INPUT "Item number already in use.", "FormDev";
  49.                     FormSetFoc(10)
  50.                     EXIT SELECT
  51.                 END IF
  52.                 item.id[n] = newID
  53.             END IF
  54.             item.text[n] = FormQStr(20)
  55.             item.type[n] = ItemNums[FormQNum(30)]
  56.             ValidBMP(n)
  57.             IF svflag = 0 THEN
  58.                 AISVSetDefaults(n)
  59.             END IF
  60.             FDFontRefDec(oldfont)
  61.             item.font[n] = newfont
  62.             RETURN 1
  63.             
  64.         CASE 2    'Cancel
  65.             FDFontRefDec(newfont)    ' it may be oldfont, which is OK
  66.             RETURN 2
  67.  
  68.         CASE 210    'Delete
  69.             FDFontRefDec(newfont)    ' it may be oldfont, which is OK
  70.             RETURN 3
  71.  
  72.         CASE 245                                    ' Color
  73.             SetColor(n)
  74.  
  75.         CASE 235    'Size...            
  76.             AISizeValues(n)
  77.             svflag = 1
  78.  
  79.         CASE 230    'Options
  80.             AIModifiers(ItemNums[FormQNum(30)])
  81.  
  82.         CASE 240    'Fonts...
  83.             newfont = FDFontModal(newfont)
  84.  
  85.         END SELECT
  86.     END LOOP
  87. END FUNC
  88.  
  89. 'VisOption(itemNum)
  90. '    itemNum: item number, or 0 for new item
  91. '    returns: new item number or
  92. '        -2 : Cancel
  93. '        -3 : Deleted
  94. FUNC VisOption(itemNum)
  95.     LOCAL    modvals, modstrs    
  96.     LOCAL    oldID, newflag
  97.     LOCAL    svflag, x
  98.  
  99.     LastFrameOff
  100.  
  101.     IF itemNum = 0 THEN
  102.         itemNum = ItemNew
  103.         newflag = 1
  104.         svflag = 0
  105.     ELSE
  106.         newflag = 0
  107.         svflag = 1
  108.     END IF    
  109.  
  110.     oldID = item.id[itemNum]
  111.  
  112.     AISetModvals(itemNum)
  113.  
  114.     FormSelect(fdVisOption)
  115.     FormModifyObject(10, _Normal, Sprint("P(0)", ItemID(itemNum)))
  116.     FormModifyObject(20, _Normal, item.text[itemNum])
  117.     FormModifyObject(25, _CaptionLeft, Sprint("Total items: P(0)", fdNumItems))
  118.     x = FirstMatch(ItemNums, item.type[itemNum])
  119.     FormModifyObject(30; _ListSelect, IF x THEN x ELSE 1)
  120.     FormModifyObject(210, IF newflag THEN _Gray ELSE _Normal)
  121.  
  122.     x = VisAIModal(itemNum)
  123.     FormControl(_Hide)
  124.     FormSelect(fdMain)
  125.  
  126.     SELECT CASE x
  127.         CASE 1    'OK
  128.             IF NOT newFlag THEN
  129.                 IF item.id[itemNum] <> oldID THEN
  130.                     ' the item number has changed, smash out the old.
  131.                     FormModifyObject(oldID, _Close)
  132.                 END IF
  133.                 SafeSetObject(itemNum, NOT viewForm)
  134.             END IF
  135.             SetNextItem(1)                ' In case new or changed id.
  136.             MenuEnable
  137.             fdChanged = 1
  138.             EXIT SELECT
  139.  
  140.         CASE 3    'Delete
  141.             ItemDelete(itemNum)
  142.             lastFrameNum = 0
  143.             MenuEnable
  144.             fdChanged = 1
  145.             RETURN -3                        
  146.  
  147.         CASE 2    'Cancel
  148.             IF newflag THEN
  149.                 ItemDelete(itemNum)
  150.                 lastFrameNum = 0
  151.             END IF
  152.             RETURN -2
  153.     END SELECT
  154.     AIUnsetModvals(itemNum)
  155.     RETURN itemnum
  156. END FUNC
  157.  
  158. PROC menuprocEdit(params)
  159.     LOCAL    itemNum, size, anyChange
  160.  
  161.     FUNC menuprocWait (mode, bLocate)
  162.         LOCAL    J, oldToolOn
  163.  
  164.         FormSelect(fdMain)
  165.         LastFrameOff
  166.         IF bLocate THEN
  167.             ItemsLocateAll
  168.         END IF
  169.         ItemsEnableAll
  170.         oldToolOn = currentOn
  171.         ToolOn(1)            ' show the arrow
  172.         J = FormWait(mode)
  173.         ToolOn(oldToolOn)
  174.         RETURN FirstMatch(item.id, J)
  175.     END FUNC
  176.  
  177.     SELECT CASE params[_ItemNum]
  178.         CASE 210            'Add
  179.             itemNum = VisOption(0)
  180.             IF itemNum = -2 THEN
  181.                 EXIT PROC
  182.             END IF
  183.             NewButPrep(itemNum, _Center, _Center)
  184.  
  185.         CASE 220            'Modify
  186.             itemNum = menuprocWait(_Pick, 1)
  187.             IF itemNum = 0 THEN
  188.                 EXIT PROC
  189.             END IF
  190.             itemNum = VisOption(itemNum)
  191.  
  192.         CASE 230            'Move
  193.             itemNum = menuprocWait(_PickDrag, 0)
  194.             IF itemNum = 0 THEN
  195.                 EXIT PROC
  196.             END IF
  197.             ItemLocate(itemNum)
  198.             SafeSetObject(itemNum, NOT viewForm)
  199.             fdChanged = 1
  200.  
  201.         CASE 240            'Size
  202.             itemNum = menuprocWait(_Pick, 0)
  203.             IF itemNum = 0 THEN
  204.                 EXIT PROC
  205.             END IF
  206.             ItemLocate(itemNum)
  207.             lastFrameNum = itemNum
  208.             SafeSetObject(itemNum, 1)
  209.             fdChanged = 1
  210.  
  211.         CASE 245            'Action
  212.             itemNum = menuprocWait(_Pick, 0)
  213.             IF itemNum = 0 THEN
  214.                 EXIT PROC
  215.             END IF
  216.             ActionCode(itemNum)
  217.             fdChanged = 1
  218.  
  219.         CASE 255, 260, 265    'Apply color/font/both
  220.             itemNum = menuprocWait(_Pick, 0)
  221.             IF itemNum = 0 THEN
  222.                 EXIT PROC
  223.             END IF
  224.             anyChange = 0
  225.             IF params[_ItemNum] <> 255 THEN    ' Apply font/both
  226.                 IF item.font[itemNum] <> theform.font THEN
  227.                     FDFontRefDec(item.font[itemNum])
  228.                     FDFontRefInc(theform.font)
  229.                     item.font[itemNum] = theform.font
  230.                     anyChange = 1
  231.                 END IF
  232.             END IF
  233.             IF params[_ItemNum] <> 260 THEN    ' Apply color/both
  234.                 IF item.fieldcolor[itemNum] <> theform.fldC THEN
  235.                     item.fieldcolor[itemNum] = theform.fldC
  236.                     anyChange = 1
  237.                 END IF
  238.                 IF item.textcolor[itemNum] <> theform.txtC THEN
  239.                     item.textcolor[itemNum] = theform.txtC
  240.                     anyChange = 1
  241.                 END IF
  242.             END IF
  243.             IF anyChange THEN
  244.                 ItemLocate(itemNum)
  245.                 SafeSetObject(itemNum, NOT viewForm)
  246.                 fdChanged = 1
  247.             END IF
  248.  
  249.         CASE 250            'Reorder Items
  250.             ReorderItems
  251.     END SELECT
  252. END PROC
  253.