static void _RGISARCInfoImportFileSelectCBK (Widget widget,Widget coverText,XmAnyCallbackStruct *callData) { static Widget fileSelect = NULL; char *infoFile; if (fileSelect == NULL) fileSelect = UIFileSelectionCreate ((char *) "ARC/Info Coverage",NULL,(char *) "*",XmFILE_DIRECTORY); if ((infoFile = UIFileSelection (fileSelect,true)) != NULL) { if (_RGISARCTempTable != (DBObjTable *) NULL) delete _RGISARCTempTable; _RGISARCTempTable = new DBObjTable ((char *) "ARCImp Temporary Table"); if (DBInfoGetFields (_RGISARCTempTable,DBInfoFileName (infoFile,_RGISARCDataType)) == DBFault) { UIMessage ((char *) "Missing Attribute Table"); delete _RGISARCTempTable; _RGISARCTempTable = ( DBObjTable *) NULL; return; } XmTextFieldSetString (coverText,infoFile); } else { XmTextFieldSetString (coverText,(char *) ""); if (_RGISARCTempTable != NULL) { delete _RGISARCTempTable; _RGISARCTempTable = NULL; } } }
int DBImportARCVector (DBObjData *vecData,const char *arcCov,const char *nameFieldStr,const char *symbolFieldStr) { char symbolName [DBStringLength + 1]; DBObjTable *items = vecData->Table (DBrNItems); DBObjTable *symbols = vecData->Table (DBrNSymbols); DBObjTableField *nameFLD = NULL, *symbolResFLD, *symbolFLD = NULL; DBObjTableField *symbolIDFLD = symbols->Field (DBrNSymbolID); DBObjTableField *foregroundFLD = symbols->Field (DBrNForeground); DBObjTableField *backgroundFLD = symbols->Field (DBrNBackground); DBObjTableField *styleFLD = symbols->Field (DBrNStyle); DBObjRecord *record; DBObjRecord *symbolRec; if (DBInfoGetFields (items,DBInfoFileName (arcCov,vecData->Type ())) == DBSuccess) if (DBInfoGetTable (items,DBInfoFileName (arcCov,vecData->Type ())) == DBFault) return (DBFault); switch (vecData->Type ()) { case DBTypeVectorPoint: if (DBImportARCPoint (vecData,arcCov) == DBFault) return (DBFault); else break; case DBTypeVectorLine: if (DBImportARCLine (vecData,arcCov) == DBFault) return (DBFault); else break; case DBTypeVectorPolygon: if (DBImportARCPoly (vecData,arcCov) == DBFault) return (DBFault); else break; default: return (DBFault); } nameFLD = nameFieldStr != NULL ? items->Field (nameFieldStr) : (DBObjTableField *) NULL; symbolFLD = symbolFieldStr != NULL ? items->Field (symbolFieldStr) : (DBObjTableField *) NULL; symbolResFLD = items->Field (DBrNSymbol); if (symbolFLD != NULL) { for (record = items->First ();record != (DBObjRecord *) NULL;record = items->Next ()) { switch (symbolFLD->Type ()) { case DBTableFieldString: if ((symbolRec = (DBObjRecord *) symbols->Item (symbolFLD->String (record))) == NULL) { if ((symbolRec = symbols->Add (symbolFLD->String (record))) == NULL) { CMmsgPrint (CMmsgAppError,"Symbol Object Creation Error in: %s %d",__FILE__,__LINE__); return (DBFault); } symbolIDFLD->Int (symbolRec,symbolRec->RowID ()); foregroundFLD->Int (symbolRec,1); backgroundFLD->Int (symbolRec,0); styleFLD->Int (symbolRec,0); } break; case DBTableFieldInt: sprintf (symbolName,"Symbol:%5d",symbolFLD->Int (record)); if ((symbolRec = (DBObjRecord *) symbols->Item (symbolName)) == NULL) { if ((symbolRec = symbols->Add (symbolName)) == NULL) { CMmsgPrint (CMmsgAppError, "Symbol Object Creation Error in: %s %d",__FILE__,__LINE__); return (DBFault); } symbolIDFLD->Int (symbolRec,symbolFLD->Int (record)); foregroundFLD->Int (symbolRec,1); backgroundFLD->Int (symbolRec,0); styleFLD->Int (symbolRec,0); } break; default: CMmsgPrint (CMmsgAppError, "Invalid Field Type in: %s %d",__FILE__,__LINE__); break; } symbolResFLD->Record (record,symbolRec); } } else { symbols->Add ("Default Symbol"); if ((symbolRec = (DBObjRecord *) symbols->Item ()) == (DBObjRecord *) NULL) { CMmsgPrint (CMmsgAppError, "Symbol Object Creation Error in: %s %d",__FILE__,__LINE__); return (DBFault); } symbolIDFLD->Int (symbolRec,0); foregroundFLD->Int (symbolRec,1); backgroundFLD->Int (symbolRec,0); styleFLD->Int (symbolRec,0); for (record = items->First ();record != (DBObjRecord *) NULL;record = items->Next ()) symbolResFLD->Record (record,symbolRec); } if (nameFLD != NULL) for (record = items->First ();record != (DBObjRecord *) NULL;record = items->Next ()) record->Name (nameFLD->String (record)); return (DBSuccess); }