home *** CD-ROM | disk | FTP | other *** search
- '***********************************************************************
- ' FormDev: MenuEdit.RLZ
- '
- ' Copyright ⌐ 1991-1992 Computer Associates International, Inc.
- ' All rights reserved.
- '
- '***********************************************************************
-
- PROC ValidBMP (itemNum)
- LOCAL s1, fnum, s2
-
- IF item.type[itemNum] <> _Bitmap AND item.type[itemNum] <> _BitmapButton THEN
- EXIT PROC
- END IF
- s1 = FileQ(item.text[itemNum], _Name)
- IF FileQ(s1, _Exists) THEN
- fnum = FileQUnique
- FileOpen(fnum, s1)
- FileRead(fnum, s2, 2)
- FileClose(fnum)
- IF s2 = "BM" THEN
- EXIT PROC
- END IF
- END IF
- INPUT "Not a valid bitmap file: """ + s1 + """.", "FormDev";
- item.type[itemNum] = _Frame
- END PROC
-
-
- FUNC VisAIModal(n)
- LOCAL oldfont, newfont, newID
-
- oldfont = item.font[n]
- FDFontRefInc(oldfont) ' don't let FDFontModal kill it.
- newfont = oldfont
- FormSetFoc(20)
- LOOP
- FormSelect(fdVisOption)
- SELECT CASE FormWait
- CASE 1, 30 'OK, Type list box
- newID = StrToItemID(FormQStr(10))
- IF newID = 0 THEN
- FormSetFoc(10)
- EXIT SELECT
- END IF
- IF newID <> item.id[n] THEN
- IF FirstMatch(item.id, newID) THEN
- INPUT "Item number already in use.", "FormDev";
- FormSetFoc(10)
- EXIT SELECT
- END IF
- item.id[n] = newID
- END IF
- item.text[n] = FormQStr(20)
- item.type[n] = ItemNums[FormQNum(30)]
- ValidBMP(n)
- IF svflag = 0 THEN
- AISVSetDefaults(n)
- END IF
- FDFontRefDec(oldfont)
- item.font[n] = newfont
- RETURN 1
-
- CASE 2 'Cancel
- FDFontRefDec(newfont) ' it may be oldfont, which is OK
- RETURN 2
-
- CASE 210 'Delete
- FDFontRefDec(newfont) ' it may be oldfont, which is OK
- RETURN 3
-
- CASE 245 ' Color
- SetColor(n)
-
- CASE 235 'Size...
- AISizeValues(n)
- svflag = 1
-
- CASE 230 'Options
- AIModifiers(ItemNums[FormQNum(30)])
-
- CASE 240 'Fonts...
- newfont = FDFontModal(newfont)
-
- END SELECT
- END LOOP
- END FUNC
-
- 'VisOption(itemNum)
- ' itemNum: item number, or 0 for new item
- ' returns: new item number or
- ' -2 : Cancel
- ' -3 : Deleted
- FUNC VisOption(itemNum)
- LOCAL modvals, modstrs
- LOCAL oldID, newflag
- LOCAL svflag, x
-
- LastFrameOff
-
- IF itemNum = 0 THEN
- itemNum = ItemNew
- newflag = 1
- svflag = 0
- ELSE
- newflag = 0
- svflag = 1
- END IF
-
- oldID = item.id[itemNum]
-
- AISetModvals(itemNum)
-
- FormSelect(fdVisOption)
- FormModifyObject(10, _Normal, Sprint("P(0)", ItemID(itemNum)))
- FormModifyObject(20, _Normal, item.text[itemNum])
- FormModifyObject(25, _CaptionLeft, Sprint("Total items: P(0)", fdNumItems))
- x = FirstMatch(ItemNums, item.type[itemNum])
- FormModifyObject(30; _ListSelect, IF x THEN x ELSE 1)
- FormModifyObject(210, IF newflag THEN _Gray ELSE _Normal)
-
- x = VisAIModal(itemNum)
- FormControl(_Hide)
- FormSelect(fdMain)
-
- SELECT CASE x
- CASE 1 'OK
- IF NOT newFlag THEN
- IF item.id[itemNum] <> oldID THEN
- ' the item number has changed, smash out the old.
- FormModifyObject(oldID, _Close)
- END IF
- SafeSetObject(itemNum, NOT viewForm)
- END IF
- SetNextItem(1) ' In case new or changed id.
- MenuEnable
- fdChanged = 1
- EXIT SELECT
-
- CASE 3 'Delete
- ItemDelete(itemNum)
- lastFrameNum = 0
- MenuEnable
- fdChanged = 1
- RETURN -3
-
- CASE 2 'Cancel
- IF newflag THEN
- ItemDelete(itemNum)
- lastFrameNum = 0
- END IF
- RETURN -2
- END SELECT
- AIUnsetModvals(itemNum)
- RETURN itemnum
- END FUNC
-
- PROC menuprocEdit(params)
- LOCAL itemNum, size, anyChange
-
- FUNC menuprocWait (mode, bLocate)
- LOCAL J, oldToolOn
-
- FormSelect(fdMain)
- LastFrameOff
- IF bLocate THEN
- ItemsLocateAll
- END IF
- ItemsEnableAll
- oldToolOn = currentOn
- ToolOn(1) ' show the arrow
- J = FormWait(mode)
- ToolOn(oldToolOn)
- RETURN FirstMatch(item.id, J)
- END FUNC
-
- SELECT CASE params[_ItemNum]
- CASE 210 'Add
- itemNum = VisOption(0)
- IF itemNum = -2 THEN
- EXIT PROC
- END IF
- NewButPrep(itemNum, _Center, _Center)
-
- CASE 220 'Modify
- itemNum = menuprocWait(_Pick, 1)
- IF itemNum = 0 THEN
- EXIT PROC
- END IF
- itemNum = VisOption(itemNum)
-
- CASE 230 'Move
- itemNum = menuprocWait(_PickDrag, 0)
- IF itemNum = 0 THEN
- EXIT PROC
- END IF
- ItemLocate(itemNum)
- SafeSetObject(itemNum, NOT viewForm)
- fdChanged = 1
-
- CASE 240 'Size
- itemNum = menuprocWait(_Pick, 0)
- IF itemNum = 0 THEN
- EXIT PROC
- END IF
- ItemLocate(itemNum)
- lastFrameNum = itemNum
- SafeSetObject(itemNum, 1)
- fdChanged = 1
-
- CASE 245 'Action
- itemNum = menuprocWait(_Pick, 0)
- IF itemNum = 0 THEN
- EXIT PROC
- END IF
- ActionCode(itemNum)
- fdChanged = 1
-
- CASE 255, 260, 265 'Apply color/font/both
- itemNum = menuprocWait(_Pick, 0)
- IF itemNum = 0 THEN
- EXIT PROC
- END IF
- anyChange = 0
- IF params[_ItemNum] <> 255 THEN ' Apply font/both
- IF item.font[itemNum] <> theform.font THEN
- FDFontRefDec(item.font[itemNum])
- FDFontRefInc(theform.font)
- item.font[itemNum] = theform.font
- anyChange = 1
- END IF
- END IF
- IF params[_ItemNum] <> 260 THEN ' Apply color/both
- IF item.fieldcolor[itemNum] <> theform.fldC THEN
- item.fieldcolor[itemNum] = theform.fldC
- anyChange = 1
- END IF
- IF item.textcolor[itemNum] <> theform.txtC THEN
- item.textcolor[itemNum] = theform.txtC
- anyChange = 1
- END IF
- END IF
- IF anyChange THEN
- ItemLocate(itemNum)
- SafeSetObject(itemNum, NOT viewForm)
- fdChanged = 1
- END IF
-
- CASE 250 'Reorder Items
- ReorderItems
- END SELECT
- END PROC
-