static void _UISymbolLoadNamesCBK (Widget widget,Widget list,XmAnyCallbackStruct *callData) { int symbol, symNum, i, color, *selectPos, selectCount; FILE *file; char *fileName, buffer [1024], *token, delimit [3]; static Widget select = NULL; UISymbol**editSymbols; XmString xmString [1]; widget = widget; callData = callData; if (select == NULL) select = UIFileSelectionCreate ((char *) "Symbol Name file Selection",NULL,(char *) "*.txt",XmFILE_REGULAR); XtVaGetValues (list,XmNuserData, &editSymbols, NULL); XtVaGetValues (list,XmNitemCount, &symNum, NULL); if ((fileName = UIFileSelection (select,true)) == NULL) return; if ((file = fopen (fileName,"r")) == NULL) { CMmsgPrint (CMmsgSysError, "File Openning Error in: %s %d",__FILE__,__LINE__); return; } sprintf (delimit,"%c%c",DBASCIISeparator,'\0'); while (fgets (buffer,sizeof (buffer),file) != NULL) { token = strtok (buffer,delimit); sscanf (token,"%d",&symbol); for (i = 0;i < symNum; ++i) if (editSymbols [i]->SymbolID () == symbol) { if ((token = strtok ((char *) NULL,delimit)) != (char *) NULL) { if (token [0] == '\"' || token [0] == '\'') {token [strlen (token) - 1] = '\0'; token++; } editSymbols [i]->Name (token); } if ((token = strtok ((char *) NULL,delimit)) != (char *) NULL) if (sscanf (token,"%d",&color) == 1) editSymbols [i]->Foreground (color); if ((token = strtok ((char *) NULL,delimit)) != (char *) NULL) if (sscanf (token,"%d",&color) == 1) editSymbols [i]->Background (color); xmString [0] = XmStringCreate (editSymbols [i]->Name (),UICharSetNormal); XmListReplaceItemsPos (list,xmString,1,i + 1); XmStringFree (xmString [0]); break; } } if (XmListGetSelectedPos (list,&selectPos,&selectCount)) { XmTextFieldSetString (XtNameToWidget (XtParent (XtParent (XtParent (list))),UISymTextFieldName),editSymbols [selectPos [0]]->Name ()); XtFree ((char *) selectPos); } }
void UIAuxDirSelectCBK(Widget widget, Widget text, XmAnyCallbackStruct *callData) { static Widget select = (Widget) NULL; char *pattern, *dirName; DBInt selectMode; XmString string; if (select == NULL) select = UIFileSelectionCreate((char *) "Directory Selection", (char *) NULL, (char *) NULL, XmFILE_DIRECTORY); XtVaGetValues(text, XmNuserData, &pattern, NULL); XtVaGetValues(widget, XmNuserData, &selectMode, NULL); if (strlen(pattern) > 0) { string = XmStringCreate(pattern, UICharSetNormal); XtVaSetValues(select, XmNpattern, string, NULL); XmStringFree(string); } if ((dirName = UIFileSelection(select, selectMode)) != NULL) XmTextFieldSetString(text, dirName); }
static void _RGISToolsExportDMCBK (Widget widget,RGISWorkspace *workspace,XmAnyCallbackStruct *callData) { char *selection; DBDataset *dataset = UIDataset (); DBObjData *data = dataset->Data (); static Widget dirSelect = NULL; widget = widget; workspace = workspace; callData = callData; if (dirSelect == NULL) { if ((dirSelect = UIFileSelectionCreate ((char *) "DM Coverage",NULL,(char *) "M:*",XmFILE_REGULAR)) == NULL) return; } if ((selection = UIFileSelection (dirSelect,False)) == NULL) return; switch (data->Type ()) { case DBTypeGridDiscrete: case DBTypeGridContinuous: DBExportDMGrid (data,selection); break; } }
static void _RGISToolsExportASCIICBK (Widget widget,RGISWorkspace *workspace,XmAnyCallbackStruct *callData) { char *selection; DBDataset *dataset = UIDataset (); DBObjData *data = dataset->Data (); DBObjTable *table; static Widget fileSelect = NULL; static Widget tableSelect = (Widget) NULL; widget = widget; workspace = workspace; callData = callData; if (tableSelect == (Widget) NULL) tableSelect = UISelectionCreate ((char *) "Table Selection"); if (fileSelect == NULL) fileSelect = UIFileSelectionCreate ((char *) "ASCII Table",NULL,(char *) "*.txt",XmFILE_REGULAR); table = data->Table (UISelectObject (tableSelect,(DBObjectLIST<DBObject> *) data->Tables ())); if (table == (DBObjTable *) NULL) return; if ((selection = UIFileSelection (fileSelect,False)) == NULL) return; DBExportASCIITable (table, selection); }
static void _RGISToolsImportASCIINetCBK (Widget widget,RGISWorkspace *workspace,XmAnyCallbackStruct *callData) { DBObjData *data = new DBObjData ("",DBTypeNetwork); static Widget fileSelect = NULL; widget = widget; callData = callData; if (fileSelect == NULL) fileSelect = UIFileSelectionCreate ((char *) "GHAAS Data Import",NULL,(char *) "*",XmFILE_REGULAR); data->Document (DBDocSubject,"STNetwork"); if (UIDataHeaderForm (data)) { char *fileName; if ((fileName = UIFileSelection (fileSelect,true)) == NULL) { delete data; return; } UIPauseDialogOpen ((char *) "Importing Networks"); if (DBImportASCIINet (data,fileName) == DBFault) delete data; else workspace->CurrentData (data); UIPauseDialogClose (); } else delete data; }
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; } } }
static void _RGISToolsExportARCInfoCBK (Widget widget,RGISWorkspace *workspace,XmAnyCallbackStruct *callData) { char *selection; DBDataset *dataset = UIDataset (); DBObjData *data = dataset->Data (); static Widget dirSelect = NULL; widget = widget; workspace = workspace; callData = callData; if (dirSelect == NULL) { if ((dirSelect = UIFileSelectionCreate ((char *) "ARC/INFO Workspace",NULL,(char *) "w_*",XmFILE_DIRECTORY)) == NULL) return; } if ((selection = UIFileSelection (dirSelect,True)) == NULL) return; switch (data->Type ()) { case DBTypeVectorPoint: _RGISToolsPointExportARCInfo (data,selection); break; case DBTypeVectorLine: break; case DBTypeVectorPolygon: break; case DBTypeGridDiscrete: case DBTypeGridContinuous: _RGISToolsGridExportARCInfo (data,selection); break; case DBTypeNetwork: _RGISToolsNetworkExportARCInfo (data,selection); break; case DBTypeTable: break; } }
static void _RGISToolsImportASCIITableCBK (Widget widget,RGISWorkspace *workspace,XmAnyCallbackStruct *callData) { static Widget fileSelect = (Widget) NULL; DBObjData *data = new DBObjData ("",DBTypeTable); widget = widget; callData = callData; if (fileSelect == NULL) fileSelect = UIFileSelectionCreate ((char *) "ASCII Import",NULL,(char *) "*.*",XmFILE_REGULAR); if (UIDataHeaderForm (data)) { char *fileName; if ((fileName = UIFileSelection (fileSelect,true)) == NULL) { delete data; return; } if (DBImportASCIITable (data->Table (DBrNItems),fileName) == DBFault) { UIMessage ((char *) "Import failed!"); delete data; return; } if (UITableRedefineFields (data->Table (DBrNItems)) != true) { delete data; return; } workspace->CurrentData (data); } else delete data; }
static void _RGISToolsExportNetworkCBK (Widget widget,RGISWorkspace *workspace,XmAnyCallbackStruct *callData) { char *selection; FILE *outFILE; DBInt cellID, fieldID, fieldNum = 0; DBCoordinate coord; DBObjRecord *cellRec,*toCellRec, *basinRec; DBDataset *dataset = UIDataset (); DBObjData *netData = dataset->Data (); DBNetworkIF *netIF = new DBNetworkIF (netData); DBObjTable *cellTable = netData->Table (DBrNCells); DBObjTableField *field, **fields = (DBObjTableField **) NULL; static Widget dirSelect = NULL; widget = widget; workspace = workspace; callData = callData; if (dirSelect == NULL) { if ((dirSelect = UIFileSelectionCreate ((char *) "Network File",NULL,(char *) "*.txt",XmFILE_REGULAR)) == NULL) return; } if ((selection = UIFileSelection (dirSelect,False)) == NULL) return; if ((outFILE = fopen (selection,"w")) == (FILE *) NULL) { CMmsgPrint (CMmsgSysError, "File Opening Error in: %s %d",__FILE__,__LINE__); return; } fprintf (outFILE,"\"CellID\"\t\"XCoord\"\t\"YCoord\"\t\"BasinID\"\t\"ToCell\"\t\"CellArea\"\t\"CellLength\""); for (fieldID = 0;fieldID < cellTable->FieldNum (); fieldID++) { if ((field = cellTable->Field (fieldID)) == (DBObjTableField *) NULL) { if (fields != (DBObjTableField **) NULL) free (fields); CMmsgPrint (CMmsgSysError, "Invalid field in: %s %d",__FILE__,__LINE__); return; } if (field->Required ()) continue; if ((fields = (DBObjTableField **) realloc (fields,(fieldNum + 1) * sizeof (DBObjTableField *))) == (DBObjTableField **) NULL) { CMmsgPrint (CMmsgSysError, "Memory allocation error in: %s %d",__FILE__,__LINE__); return; } fields [fieldNum] = field; fprintf (outFILE,"\t\"%s\"",field->Name ()); fieldNum++; } fprintf (outFILE,"\n"); for (cellID = 0;cellID < netIF->CellNum (); cellID++) { cellRec = netIF->Cell (cellID); coord = netIF->Center (cellRec); basinRec = netIF->Basin (cellRec); toCellRec = netIF->ToCell (cellRec); fprintf (outFILE,"%d\t%f\t%f\t%d\t%d\t%f\t%f",cellRec->RowID () + 1, coord.X, coord.Y, basinRec->RowID () + 1, toCellRec == (DBObjRecord *) NULL ? DBFault : toCellRec->RowID () + 1, netIF->CellArea (cellRec), netIF->CellLength (cellRec)); for (fieldID = 0;fieldID < fieldNum; fieldID++) switch (fields [fieldID]->Type ()) { default: case DBTableFieldString: fprintf (outFILE,"%c\"%s\"",DBASCIISeparator,fields [fieldID]->String (cellRec)); break; case DBTableFieldInt: if (fields [fieldID]->Int (cellRec) == fields [fieldID]->IntNoData ()) fprintf (outFILE,"%c",DBASCIISeparator); else fprintf (outFILE,"%c%d",DBASCIISeparator,fields [fieldID]->Int (cellRec)); break; case DBTableFieldFloat: if (CMmathEqualValues (fields [fieldID]->Float (cellRec),fields [fieldID]->FloatNoData ())) fprintf (outFILE,"%c",DBASCIISeparator); else fprintf (outFILE,"%c%f",DBASCIISeparator,fields [fieldID]->Float (cellRec)); break; case DBTableFieldDate: fprintf (outFILE,"%c\"%s\"",DBASCIISeparator,fields [fieldID]->String(cellRec)); break; } fprintf (outFILE,"\n"); } fclose (outFILE); }