home *** CD-ROM | disk | FTP | other *** search
- PROCEDURE DrawMatrix;
- LABEL 1,2;
- CONST
- kLayerName = 'Adjacency Matrix';
- kSpaceSymName = 'Space Name Box';
- kRelationSymName = 'Relationship Box';
- kWorksheetName='Area Worksheet';
- kSpaceRec = 'Space';
- kSpaceFld = 'Name';
- kAdjacentRec = 'Adjacency';
- kAdjacentFld = 'Code';
- kNameColumn = 1;
- kMaxArray = 20;
- VAR
- WSH,snbHan,rbHan : HANDLE;
- snbHEIGHT, snbWIDTH : REAL;
- rbHEIGHT, rbWIDTH, mX, mY : REAL;
- X1, Y1, X2, Y2, curSY, curSX, curRY, curRX : REAL;
- startRow,numRows,numCols,numNames,r,i,blankOffset : INTEGER;
- str,worksheetName,spaceName : STRING;
-
- PROCEDURE CenterDialog(dX1,dX2 : INTEGER; VAR x1,x2 : INTEGER);
- VAR
- scrX1,scrY1,scrX2,scrY2,w : INTEGER;
- BEGIN
- GetScreen(scrX1,scrY1,scrX2,scrY2);
- w := dX2 - dX1;
- x1 := ((scrX1 + scrX2) DIV 2) - (w DIV 2);
- x2 := x1 + w;
- END;
-
- FUNCTION PermissionDeniedToDelete : BOOLEAN;
- VAR
- result, finished, cancel : BOOLEAN;
- item, x1, x2 : INTEGER;
- layerHan : HANDLE;
- BEGIN
- finished := FALSE;
- cancel:= FALSE;
- layerHan := GetObject(kLayerName);
- LAYER(kLayerName);
- IF FActLayer <> Nil THEN BEGIN
- {IF ( NumObj ( layerHan ) ) <> 0 THEN BEGIN}
- CenterDialog(0,320,x1,x2);
- BeginDialog(1,1,x1,189,x2,323);
- AddButton('Delete',1,1,211,82,275,105);
- AddButton('Cancel',2,1,128,82,192,105);
- AddField('Existing items in layer',3,1,49,24,208,42);
- AddField( Concat( ' ╘',kLayerName,'╒ will be deleted.' ), 4,1,49,47,277,65);
- EndDialog;
- GetDialog(1);
- REPEAT DialogEvent(item);
- IF item = 2 THEN BEGIN
- finished := TRUE;
- cancel := TRUE;
- END;
- IF item = 1 THEN finished := TRUE;
- UNTIL finished;
- CLRDIALOG;
- IF cancel THEN result := TRUE
- ELSE BEGIN
- DoMenuText('Active Only');
- SelectObj(L=kLayerName);
- DeleteObjs;
- END;
- END;
- PermissionDeniedToDelete := result;
- END;
-
- BEGIN
- PUSHATTRS;
- ANGLEVAR;
- IF PermissionDeniedToDelete THEN GoTo 1;
- {** Try named worksheet CONST}
- WSH:=GETOBJECT(kWorksheetName);
- {** Try active worksheet}
- IF (WSH=NIL) THEN WSH:=ActSSheet;
- {** Try getting worksheet name from user}
- IF (WSH=NIL) THEN BEGIN
- worksheetName:=STRDIALOG('Enter the name of the worksheet to be sorted.','Worksheet 1');
- WSH:=GETOBJECT(worksheetName);
- END;
- {** If no worksheet then punch out with dialog╔}
- IF ((WSH=NIL)|(GetType(WSH)<>18)) THEN BEGIN
- SYSBEEP;
- ALRTDIALOG('I can╒t find a worksheet by that name.');
- GOTO 1;
- END;
- SelectSS(WSH);
- SprdSize(WSH,numRows,numCols);
- {** Check if array limit is big enough}
- IF numCols > kMaxArray THEN BEGIN
- str:= CONCAT('Increase CONST kMaxArray to at least ',numCols,'.');
- ALRTDIALOG(str);
- GOTO 1;
- END;
- SETCURSOR(WATCHC);
- snbHan:=GetObject(kSpaceSymName);
- snbHEIGHT:= HHeight(snbHan);
- snbWIDTH:= HWidth(snbHan);
- rbHan:=GetObject(kRelationSymName);
- rbHEIGHT:= HHeight(rbHan);
- rbWIDTH:= HWidth(rbHan);
- {** Get number of names }
- numNames:= 0;
- IF GETCELLSTR(WSH,1,1) = 'Name' THEN startRow:= 2
- ELSE startRow:= 1;
- IF GETCELLSTR(WSH,1,1) = '' THEN startRow:= 2;
- FOR r:= startRow TO numRows DO
- IF CELLHASSTR(WSH,r,kNameColumn) THEN numNames:= numNames +1;
- curSY:= snbHEIGHT * (numNames/2);
- curSX:= -(snbWIDTH + ((rbWidth/2)*(numNames-2)))/2;
- curRY:= curSY-snbHEIGHT;
- curRX:= curSX + snbWIDTH - (rbWidth/2);
- blankOffset:= 0;
- FOR r:= startRow TO numRows DO BEGIN
- IF CELLHASSTR(WSH,r,kNameColumn) THEN BEGIN
- spaceName:= GETCELLSTR(WSH,r,kNameColumn);
- Symbol(kSpaceSymName,curSX,curSY,#0);
- SetRecord(LNewObj,kSpaceRec);
- SetRField(LNewObj,kSpaceRec,kSpaceFld,spaceName);
- IF ((r - blankOffset) <= numNames) THEN Symbol(kRelationSymName,curRX,curRY,#0);
- mX:= curRX;
- mY:= curRY;
- {** Insert relationship boxes}
- FOR i:= 2 TO (r-blankOffset)-1 DO BEGIN
- IF (r-blankOffset) > numNames THEN GOTO 2;
- mX:= mX+(rbWIDTH/2);
- mY:= mY+(rbHEIGHT/2);
- Symbol(kRelationSymName,mX,mY,#0);
- 2:END;
- curSY:= curSY-snbHEIGHT;
- curRY:= curRY-rbHEIGHT;
- END
- {** Increment blank space counter }
- ELSE blankOffset:= blankOffset + 1;
- snbHan:=LNewObj;
- SETDSELECT(snbHan);
- CLOSESS(WSH);
- END;
-
- 1:POPATTRS;
- END;
- RUN(DrawMatrix);
-