3 #include "/usr/include/X11/bitmaps/boxes"
4 #include "/usr/include/X11/bitmaps/cross_weave"
8 int pbase[]={-10,-5,5,15,25,30,35,35,25,15,5,-5};
13 char *
mon[]={
"jan",
"feb",
"mar",
"apr",
"may",
"jun",
"jul",
"aug",
"sep",
"oct",
"nov",
"dec"};
144 char *
timefile[]={
"12z-18z",
"18z-00z",
"00z-06z",
"06z-12z",
"12z-12z"};
145 char *
ttimefile[]={
"12z",
"18z",
"00z",
"06z",
"12z.max",
"12z.min"};
296 String
fallbacks[]={
"*fontList: -adobe-helvetica-medium-r-*-12-*",NULL};
353 int main(
int argc,
char **argv)
356 int depth, argcount,i;
358 int line_style,cap_style,join_style,j;
362 extern int optind,opterr,optopt;
370 while((c=getopt(argc,argv,
"n:h:a:"))!=-1){
417 for(i=0;i<6000;i++) {
432 fp=fopen(
"area",
"r");
436 printf(
"could not open area\n");
452 XtSetLanguageProc(NULL,NULL,NULL);
457 tstring=
"daily_qc 3.0";
459 XtSetArg(args[0],XmNtitle,tstring);
465 XtSetArg(args[argcount],XmNwidth,774);argcount++;
466 XtSetArg(args[argcount],XmNheight,580);argcount++;
467 XtSetArg(args[argcount],XmNbackground,0);argcount++;
477 XtSetArg(args[argcount],XmNwidth,774);argcount++;
478 XtSetArg(args[argcount],XmNheight,540);argcount++;
479 XtSetArg(args[argcount],XmNresizePolicy,XmRESIZE_ANY);argcount++;
480 XtSetArg(args[argcount],XmNbackground,0);argcount++;
489 fontname=
"*Adobe-Helvetica-Medium-r-normal-*-10-*";
493 fontname=
"*Adobe-Helvetica-Medium-o-normal-*-10-*";
497 fontname=
"*Adobe-Helvetica-Medium-r-normal-*-14-*";
501 fontname=
"*Adobe-Helvetica-Medium-r-normal-*-12-*";
505 fontname=
"*Adobe-Helvetica-Medium-r-normal-*-10-*";
537 line_style=LineSolid;
539 join_style=JoinMiter;
541 XSetLineAttributes(
display,
gc,line_width,line_style,cap_style,join_style);
555 printf(
"could not find /usr/include/X11/bitmaps/left_ptr\n");
558 printf(
"could not find /usr/include/X11/bitmaps/boxes\n");
561 printf(
"could not find /usr/include/X11/bitmaps/cross_weave\n");
563 ButtonPressMask | ButtonMotionMask | ButtonReleaseMask,
564 GrabModeAsync,GrabModeAsync,XtWindow(
top_level),
565 XCreateFontCursor(
display,XC_crosshair));
616 sprintf(tstring,
"daily_qc 3.0 (%s)",
defarea);
617 XtSetArg(args[0],XmNtitle,tstring);
650 while(
ktems[i].label!=NULL) {
653 XtSetArg(args[0],XmNset,False);
654 XtSetValues(
mbutton[i],args,argcount);
660 XtSetArg(args[0],XmNset,True);
690 XtSetValues(
bdwidget[i],args,argcount);
695 int mday[]={31,28,31,30,31,30,31,31,30,31,30,31} ;
793 btn_text=XmStringCreateLocalized(buf);
795 XtSetArg(args[0],XmNlabelString,btn_text);
800 btn_text=XmStringCreateLocalized(buf);
802 XtSetArg(args[0],XmNlabelString,btn_text);
807 btn_text=XmStringCreateLocalized(buf);
809 XtSetArg(args[0],XmNlabelString,btn_text);
837 btn_text=XmStringCreateLocalized(buf);
839 XtSetArg(args[0],XmNlabelString,btn_text);
846 XtPointer data,
char mnemonic)
853 XtSetArg(args[n], XmNmnemonic, mnemonic);
857 button = XmCreatePushButtonGadget(parent, name, args, n);
858 XtManageChild(button);
860 XtAddCallback(button, XmNactivateCallback, callback, data);
867 Widget dirMenu, dirOM, simOM, widg;
869 static XmButtonType otypes[]={XmTITLE};
871 olabels[0]=XmStringCreateLocalized(
" ");
877 XtSetArg(args[n],XmNorientation,XmVERTICAL);n++;
880 dirMenu = XmCreatePulldownMenu(
drawing_area,
"dirMenu", NULL, 0);
881 for(n = 0; n < 9; n++) {
884 sprintf(buffer,
"l%d", n);
888 XtSetArg(args[n], XmNsubMenuId, dirMenu); n++;
889 dirOM = XmCreateOptionMenu(rowcol,
"dirOM", args, n);
890 XtManageChild(dirOM);
894 XtSetArg(args[n], XmNbuttonCount, 1); n++;
895 XtSetArg(args[n], XmNbuttons, olabels); n++;
896 XtSetArg(args[n], XmNbuttonType, otypes); n++;
897 simOM=XmCreateSimpleOptionMenu(rowcol,
"simOM",args,n);
899 XtSetArg(args[0],XmNsubMenuId,&widg);
900 XtGetValues(simOM,args,1);
905 sprintf(buffer,
"l%d", n);
906 XtVaCreateManagedWidget(buffer,xmPushButtonGadgetClass,widg,NULL);
908 XtManageChild(simOM);
909 XtManageChild(rowcol);
923 Widget rowcol,pbutton,arrow1,arrow2,rowcol2,rowcol25;
924 char buf1[200],buf2[200],buf3[200];
927 t=XmStringCreateLocalized(
"Map areas");
934 str[i]=XmStringCreateLocalized(
area_items[i].label);
941 XtSetArg(args[argcount],XmNdialogStyle,
942 XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
943 XtSetArg(args[argcount],XmNautoUnmanage,False);argcount++;
946 XtUnmanageChild(XmMessageBoxGetChild(
start_dialog,XmDIALOG_HELP_BUTTON));
947 XtUnmanageChild(XmMessageBoxGetChild(
start_dialog,XmDIALOG_SEPARATOR));
950 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
951 rowcol=XmCreateRowColumn(
start_dialog,
"dummy",args,argcount);
954 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
955 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
956 rowcol2=XmCreateRowColumn(rowcol,
"Edit Stations",args,argcount);
958 t=XmStringCreateLocalized(
"Ending Date");
960 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
961 pbutton=XmCreateLabel(rowcol2,
"Label",args,argcount);
962 XtManageChild(pbutton);
992 bdwidget[i]=XmCreatePushButton(rowcol2,
s[i],args,argcount);
1001 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_UP);argcount++;
1002 arrow1=XmCreateArrowButton(rowcol2,
"up",args,argcount);
1006 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_DOWN);argcount++;
1007 arrow2=XmCreateArrowButton(rowcol2,
"down",args,argcount);
1010 XtManageChild(arrow1);
1011 XtManageChild(arrow2);
1014 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
1015 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
1016 rowcol25=XmCreateRowColumn(rowcol,
"Edit Stations",args,argcount);
1018 t=XmStringCreateLocalized(
"Total Days ");
1020 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
1021 pbutton=XmCreateLabel(rowcol25,
"Label",args,argcount);
1022 XtManageChild(pbutton);
1031 daywidget=XmCreatePushButton(rowcol25,
s[0],args,argcount);
1036 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_UP);argcount++;
1037 arrow1=XmCreateArrowButton(rowcol25,
"up",args,argcount);
1038 XtAddCallback(arrow1,XmNactivateCallback,
change_max_days,(XtPointer)0);
1041 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_DOWN);argcount++;
1042 arrow2=XmCreateArrowButton(rowcol25,
"down",args,argcount);
1043 XtAddCallback(arrow2,XmNactivateCallback,
change_max_days,(XtPointer)1);
1045 XtManageChild(arrow1);
1046 XtManageChild(arrow2);
1048 t=XmStringCreateLocalized(
"Map area");
1050 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
1051 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
1052 XtManageChild(pbutton);
1056 XtSetArg(args[argcount],XmNitemCount,number);argcount++;
1057 XtSetArg(args[argcount],XmNitems,str);argcount++;
1058 XtSetArg(args[argcount],XmNlistSizePolicy,XmCONSTANT);argcount++;
1059 XtSetArg(args[argcount],XmNvisibleItemCount,5);argcount++;
1060 XtSetArg(args[argcount],XmNselectionPolicy,XmSINGLE_SELECT);argcount++;
1061 area_menu=XmCreateScrolledList(rowcol,
"areas",args,argcount);
1065 XtManageChild(rowcol);
1067 XtManageChild(rowcol2);
1068 XtManageChild(rowcol25);
1074 for(i=0;i<number;i++)
1075 XmStringFree(str[i]);
1099 sprintf(tstring,
"daily_qc 3.0 (%s)",
rec_found);
1100 XtSetArg(args[0],XmNtitle,tstring);
1120 Widget Pulldown, button;
1127 Pulldown=XmCreatePulldownMenu(parent,
"pulldown",args,argcount);
1129 for(i=0;items[i].
label!=NULL;i++) {
1131 button=XmCreatePushButton(Pulldown,items[i].label,args,argcount);
1133 XtAddCallback(button,XmNactivateCallback,items[i].callback,
1134 items[i].callback_data);
1135 XtManageChild(button);
1144 menu_mnemonic,
struct MenuItem *items)
1149 Widget Pulldown, button;
1157 Pulldown=XmCreatePulldownMenu(parent,
"pulldown",args,argcount);
1160 for(i=0;items[i].
label!=NULL;i++) {
1164 XtSetArg(args[argcount],XmNselectColor,
cmap[4]);argcount++;
1167 XtSetArg(args[argcount],XmNset,True);
1170 XtSetArg(args[argcount],XmNset,False);
1173 XtSetArg(args[argcount],XmNset,True);
1176 XtSetArg(args[argcount],XmNset,False);
1179 XtSetArg(args[argcount],XmNset,True);
1182 XtSetArg(args[argcount],XmNset,False);
1185 XtSetArg(args[argcount],XmNset,True);
1188 XtSetArg(args[argcount],XmNset,False);
1192 mbutton[i]=XmCreateToggleButton(Pulldown,items[i].label,args,argcount);
1209 XtAddCallback(
mbutton[i],XmNvalueChangedCallback,items[i].callback,items[i].callback_data);
1233 XtSetArg(args[argcount],XmNsubMenuId,sub_menu);argcount++;
1234 cbutton=XmCreateCascadeButton(parent,label,args,argcount);
1235 XtManageChild(cbutton);
1245 int scr=DefaultScreen(
display);
1246 Colormap def_colormap=DefaultColormap(
display,scr);
1247 Colormap new_colormap;
1248 int ncolors,i,nplanes,npixels,a=256,new_map;
1249 unsigned long pixels[90];
1250 unsigned long planemask;
1256 ncolors=DisplayCells(
display,scr);
1260 for(i=0;i<ncolors;i++){
1262 colors[i].flags=DoRed|DoGreen|DoBlue;
1534 int scr=DefaultScreen(
display);
1535 Colormap def_colormap=DefaultColormap(
display,scr);
1536 Colormap new_colormap;
1537 int ncolors,i,nplanes,npixels;
1538 unsigned long planemask;
1539 unsigned long pixels[70];
1543 for (j=0;j<maxcolors;j++) {
1545 exact_def.red=
colors[j].red;
1546 exact_def.blue=
colors[j].blue;
1547 exact_def.green=
colors[j].green;
1549 if(!XAllocColor(
display,def_colormap,&exact_def)){
1551 printf(
"could not allocate\n");
1557 fval[0]=abs(exact_def.red -
colors[j].red);
1558 fval[1]=abs(exact_def.blue -
colors[j].blue);
1559 fval[2]=abs(exact_def.green -
colors[j].green);
1561 if(fval[0] > 500 || fval[1] > 500 || fval[2] > 500) {
1563 printf(
"allocating %d %d %d %d %d %d %d %d %d %d\n",
1564 j,fval[0],fval[1],fval[2],exact_def.red,
colors[j].red,
1565 exact_def.blue,
colors[j].blue,
1566 exact_def.green,
colors[j].green);
1571 if(!XAllocColorCells(
display,def_colormap,FALSE,&planemask,nplanes,
1574 printf(
"could not allocate\n");
1580 color.blue=
colors[j].blue;
1581 color.green=
colors[j].green;
1583 color.pixel=pixels[0];
1584 colors[j].pixel=pixels[0];
1585 color.flags=DoRed|DoGreen|DoBlue;
1587 XStoreColor(
display,def_colormap,&color);
1595 colors[j].pixel=exact_def.pixel;
1611 Dimension width,height;
1627 Dimension width,height;
1629 signed long XSIZE,YSIZE,xsize,ysize,xbegin,ybegin;
1631 char tbuf[1000],mbuf[1000];
1637 XtSetArg(args[0],XtNwidth,&width);
1638 XtSetArg(args[1],XtNheight,&height);
1641 XSIZE=(long)width*10L;;
1642 YSIZE=(long)height*10L;
1823 "pcp",time_pos,100);
1843 "pcp",time_pos,100);
1944 sprintf(tbuf,
"Precipitation ");
1947 strcpy(mbuf,
"Points ");
1950 strcpy(mbuf,
"Grids ");
1953 strcpy(mbuf,
"MAPs ");
1956 strcpy(mbuf,
"Points+Grids ");
1959 strcpy(mbuf,
"Points+MAPs ");
1966 sprintf(mbuf,
"%02d-%02d-%02d",gm->tm_mon+1,gm->tm_mday,gm->tm_year);
1973 strcat(tbuf,
" 06z-12z");
1975 strcat(tbuf,
" 00z-06z");
1977 strcat(tbuf,
" 18z-00z");
1979 strcat(tbuf,
" 12z-18z");
1983 strcat(tbuf,
" ending at 12z");
1989 strcat(tbuf,
" - Level 1");
1992 strcat(tbuf,
" - Level 2");
1996 strcat(tbuf,
" Saved");
2001 strcat(tbuf,
" Modified");
2004 strcat(tbuf,
" Not Modified");
2007 strcat(tbuf,
" - No Data");
2030 sprintf(tbuf,
"Freezing Level ");
2033 strcpy(mbuf,
"Points ");
2036 strcpy(mbuf,
"Grids ");
2039 strcpy(mbuf,
"MAZs ");
2042 strcpy(mbuf,
"Points+Grids ");
2045 strcpy(mbuf,
"Points+MAZs ");
2052 sprintf(mbuf,
"%02d-%02d-%02d",gm->tm_mon+1,gm->tm_mday,gm->tm_year);
2057 strcat(tbuf,
" 06z");
2059 strcat(tbuf,
" 00z");
2061 strcat(tbuf,
" 18z");
2063 strcat(tbuf,
" 12z");
2069 strcat(tbuf,
" - Level 1");
2072 strcat(tbuf,
" - Level 2");
2076 strcat(tbuf,
" Calculated");
2080 strcat(tbuf,
" Saved");
2085 strcat(tbuf,
" Modified");
2088 strcat(tbuf,
" Not Modified");
2091 strcat(tbuf,
" - No Data");
2122 sprintf(tbuf,
"Maximum Temperature ");
2125 sprintf(tbuf,
"Minimum Temperature ");
2128 sprintf(tbuf,
"Temperature ");
2131 strcpy(mbuf,
"Points ");
2134 strcpy(mbuf,
"Grids ");
2137 strcpy(mbuf,
"MATs ");
2140 strcpy(mbuf,
"Points+Grids ");
2143 strcpy(mbuf,
"Points+MATs ");
2150 sprintf(mbuf,
"%02d-%02d-%02d",gm->tm_mon+1,gm->tm_mday,gm->tm_year);
2157 strcat(tbuf,
" 06z");
2159 strcat(tbuf,
" 00z");
2161 strcat(tbuf,
" 18z");
2163 strcat(tbuf,
" 12z");
2167 strcat(tbuf,
" ending at 12z");
2173 strcat(tbuf,
" - Level 1");
2176 strcat(tbuf,
" - Level 2");
2179 strcat(tbuf,
" Saved");
2183 strcat(tbuf,
" Modified");
2186 strcat(tbuf,
" Not Modified");
2189 strcat(tbuf,
" - No Data");
2214 redraw_diff_legend(
pixm);
2217 redraw_frz_legend(
pixm);
2220 redraw_rpcpn_legend(
pixm);
2223 redraw_maxmin_legend(
pixm);
2239 void change_method(Widget w, XtPointer data,XmDrawingAreaCallbackStruct *call_data)
2253 Widget dialog,rowcol,pbutton;
2258 int slider_size,scrollm,ivalue,increment,page_increment,ier;
2260 char *q,*p, ibuf[2000],dbuf[2000],ebuf[2000];
2264 preca[2000],precb[2000],precc[2000],precd[2000],prece[2000],buf[2000],databuf[2000];
2265 char zpointa[2000],zpointb[2000],tpointa[2000],tpointb[2000],tpointc[2000],tpointd[2000];
2278 XtSetArg(args[argcount],XmNwidth, 774);argcount++;
2279 XtSetArg(args[argcount],XmNheight, 30);argcount++;
2281 text=XmStringCreateLocalized(
"Reading Map and Precipitation Data");
2284 XtSetArg(args[argcount],XmNmessageString,text);argcount++;
2285 XtSetArg(args[argcount],XmNdialogStyle,
2286 XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
2287 dialog=XmCreateMessageDialog(
drawing_area,
"Map Backgrounds",args,argcount);
2288 XtUnmanageChild(XmMessageBoxGetChild(dialog,XmDIALOG_CANCEL_BUTTON));
2289 XtUnmanageChild(XmMessageBoxGetChild(dialog,XmDIALOG_HELP_BUTTON));
2290 XtUnmanageChild(XmMessageBoxGetChild(dialog,XmDIALOG_SEPARATOR));
2291 XtAddCallback(dialog,XmNokCallback,
kill_dialog,NULL);
2293 XtSetSensitive(XmMessageBoxGetChild(dialog,XmDIALOG_OK_BUTTON),False);
2296 rowcol=XtCreateWidget(
"rowcolo",xmRowColumnWidgetClass,dialog,args,argcount);
2299 XtSetArg(args[argcount],XmNeditMode,XmMULTI_LINE_EDIT);argcount++;
2300 XtSetArg(args[argcount],XmNscrollBarDisplayPolicy,XmSTATIC);argcount++;
2301 XtSetArg(args[argcount],XmNeditable,False);argcount++;
2302 XtSetArg(args[argcount],XmNcolumns,40);argcount++;
2303 XtSetArg(args[argcount],XmNrows,10);argcount++;
2304 XtSetArg(args[argcount],XmNscrollVertical,True);argcount++;
2305 XtSetArg(args[argcount],XmNscrollHorizontal,True);argcount++;
2306 XtSetArg(args[argcount],XmNcursorPositionVisible,False);argcount++;
2307 XtSetArg(args[argcount],XmNscrollingPolicy,XmAPPLICATION_DEFINED);argcount++;
2308 s_text=XmCreateScrolledText(rowcol,
"text",args,argcount);
2314 XtManageChild(rowcol);
2315 XtManageChild(dialog);
2331 gmtim=gmtime(&
btim);
2335 tget=
btim - 24L*3600L*(long)9;
2361 fr=fopen((
char *)data,
"r");
2365 p=fgets(ibuf,120,
fr);
2370 p=strchr(ibuf,
'\n');
2396 if((p=
pars_line(ibuf,
"pxtemp=",dbuf))!=NULL) {
2410 if((p=
pars_line(ibuf,
"type_source=",dbuf))!=NULL) {
2444 ier=sscanf(
gifbuf,
"%f %f %f %f %f %f",
2484 strcpy(dbuf,
"reading zstation list\n");
2488 XtVaGetValues(
scrollbar,XmNmaximum,&scrollm,NULL);
2489 XmScrollBarGetValues(
scrollbar,&ivalue,&slider_size,
2490 &increment,&page_increment);
2491 XmScrollBarSetValues(
scrollbar,scrollm-slider_size,
2492 slider_size,increment,page_increment,True);
2501 strcpy(dbuf,
"reading tstation list\n");
2505 XtVaGetValues(
scrollbar,XmNmaximum,&scrollm,NULL);
2506 XmScrollBarGetValues(
scrollbar,&ivalue,&slider_size,
2507 &increment,&page_increment);
2508 XmScrollBarSetValues(
scrollbar,scrollm-slider_size,
2509 slider_size,increment,page_increment,True);
2518 strcpy(dbuf,
"reading station list\n");
2522 XtVaGetValues(
scrollbar,XmNmaximum,&scrollm,NULL);
2523 XmScrollBarGetValues(
scrollbar,&ivalue,&slider_size,
2524 &increment,&page_increment);
2525 XmScrollBarSetValues(
scrollbar,scrollm-slider_size,
2526 slider_size,increment,page_increment,True);
2582 items[0].
label=NULL;
2591 pbutton=XmCreatePushButton(main_bar,
"Send to Database",args,argcount);
2592 XtAddCallback(pbutton,XmNactivateCallback,
send_dbase,NULL);
2593 XtManageChild(pbutton);
2597 pbutton=XmCreatePushButton(main_bar,
"Make GIF",args,argcount);
2598 XtAddCallback(pbutton,XmNactivateCallback,
make_gif,NULL);
2599 XtManageChild(pbutton);
2604 pbutton=XmCreatePushButton(main_bar,
"Quit",args,argcount);
2605 XtAddCallback(pbutton,XmNactivateCallback,
quit_all,NULL);
2606 XtManageChild(pbutton);
2608 strcpy(dbuf,
"reading basin data\n");
2612 XtVaGetValues(
scrollbar,XmNmaximum,&scrollm,NULL);
2613 XmScrollBarGetValues(
scrollbar,&ivalue,&slider_size,
2614 &increment,&page_increment);
2615 XmScrollBarSetValues(
scrollbar,scrollm-slider_size,
2616 slider_size,increment,page_increment,True);
2622 strcpy(dbuf,
"reading Precipitation data\n");
2626 XtVaGetValues(
scrollbar,XmNmaximum,&scrollm,NULL);
2627 XmScrollBarGetValues(
scrollbar,&ivalue,&slider_size,
2628 &increment,&page_increment);
2629 XmScrollBarSetValues(
scrollbar,scrollm-slider_size,
2630 slider_size,increment,page_increment,True);
2651 tget=
btim - 24L*3600L*(long)m;
2669 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
ngrid_file,
2670 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
timefile[k]);
2688 tget=
btim - 24L*3600L*(long)m;
2692 sprintf(preca,
"%s%02d-%02d-%02d",
2693 pcpn_file,gm->tm_mon+1,gm->tm_mday,gm->tm_year);
2694 sprintf(precb,
"%s%02d-%02d-%02d",
2696 sprintf(precc,
"%sdev.%02d-%02d-%02d",
2698 sprintf(precd,
"%sbad.%02d-%02d-%02d",
2700 sprintf(prece,
"%s%02d-%02d-%02d",
2701 snow_file,gm->tm_mon+1,gm->tm_mday,gm->tm_year);
2702 sprintf(zpointa,
"%s%02d-%02d-%02d",
2704 sprintf(zpointb,
"%s%02d-%02d-%02d",
2706 sprintf(tpointa,
"%s%02d-%02d-%02d",
2708 sprintf(tpointb,
"%s%02d-%02d-%02d",
2710 sprintf(tpointd,
"%sbad.%02d-%02d-%02d",
2712 sprintf(tpointc,
"%sdev.%02d-%02d-%02d",
2715 sprintf(databuf,
"%02d-%02d-%02d",gm->tm_mon+1,gm->tm_mday,gm->tm_year);
2755 fp=fopen(precc,
"r");
2758 p=fgets(ibuf,80,fp);
2771 fp=fopen(tpointc,
"r");
2774 p=fgets(ibuf,80,fp);
2788 sprintf(dbuf,
"%s - level 2 data\n",databuf);
2790 else if(ier==-1 && mer==1)
2791 sprintf(dbuf,
"%s - level 1 data\n",databuf);
2793 else if(ier==-2 && mer==1)
2794 sprintf(dbuf,
"%s - level 1 data overwrite\n",databuf);
2797 sprintf(dbuf,
"%s - no data\n",databuf);
2801 XtVaGetValues(
scrollbar,XmNmaximum,&scrollm,NULL);
2802 XmScrollBarGetValues(
scrollbar,&ivalue,&slider_size,
2803 &increment,&page_increment);
2804 XmScrollBarSetValues(
scrollbar,scrollm-slider_size,
2805 slider_size,increment,page_increment,True);
2839 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
ngrid_file,
2840 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
timefile[k]);
2850 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
grid_file,
2851 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
timefile[k]);
2870 if(
pdata[m].used[k]!=0) {
2891 if(
zdata[m].level[k] != 2)
2904 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
zgrid_file,
2905 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
ztimefile[k]);
2914 make_rsel(num,num-100);
2924 if(
tdata[m].level[k] != 2)
2937 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
tgrid_file,
2938 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
ttimefile[k]);
2949 make_mat(num,num-150);
2990 items[0].
label=
"Precipitation";
2993 items[1].
label=
"Freezing level";
2996 items[2].
label=
"Temperature";
2999 items[3].
label=NULL;
3007 items[0].
label=
"Find station";
3010 items[1].
label=NULL;
3021 strcpy(dbuf,
"Done!!\n");
3025 XtVaGetValues(
scrollbar,XmNmaximum,&scrollm,NULL);
3026 XmScrollBarGetValues(
scrollbar,&ivalue,&slider_size,
3027 &increment,&page_increment);
3028 XmScrollBarSetValues(
scrollbar,scrollm-slider_size,
3029 slider_size,increment,page_increment,True);
3036 XtSetSensitive(XmMessageBoxGetChild(dialog,XmDIALOG_OK_BUTTON),True);
3039 void kill_dialog(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
3057 void create_options(Widget parent, XtCallbackProc callback,
int active,
char **labels,
int n) {
3058 Widget menu, option, button, abutton;
3062 menu = XmCreatePulldownMenu(parent,
"duh", NULL, 0);
3063 for(i = 0; i < n; i++) {
3070 XtSetArg(args[argcount], XmNsubMenuId, menu); argcount++;
3071 XtSetArg(args[argcount], XmNmenuHistory, abutton); argcount++;
3072 option = XmCreateOptionMenu(parent,
"duh", args, argcount);
3073 XtManageChild(option);
3085 Widget rowcol,pbutton,rowcol2,rowcol3,rowcol4,rowcol5,rowcol6,rowcol7,rowcol8,rowcol9,arrow1,arrow2,
scale,sep;
3089 Widget widg,spbutton;
3091 static Position x,y;
3094 Atom WM_DELETE_WINDOW;
3096 static XmButtonType otypes[]={XmTITLE};
3097 XmString olabels[1];
3098 olabels[0]=XmStringCreateLocalized(
" ");
3100 XtSetArg(args[0],XmNx,&x);
3101 XtSetArg(args[1],XmNy,&y);
3102 XtSetArg(args[2],XtNwidth,&width);
3137 XtSetArg(args[argcount],XmNx, xpos);argcount++;
3138 XtSetArg(args[argcount],XmNy, y);argcount++;
3139 XtSetArg(args[argcount],XmNdefaultPosition, False);argcount++;
3142 XtUnmanageChild(XmMessageBoxGetChild(
pcpn_widget,XmDIALOG_CANCEL_BUTTON));
3143 XtUnmanageChild(XmMessageBoxGetChild(
pcpn_widget,XmDIALOG_HELP_BUTTON));
3144 XtUnmanageChild(XmMessageBoxGetChild(
pcpn_widget,XmDIALOG_OK_BUTTON));
3145 XtUnmanageChild(XmMessageBoxGetChild(
pcpn_widget,XmDIALOG_SEPARATOR));
3148 WM_DELETE_WINDOW=XmInternAtom(XtDisplay(
top_level),
"WM_DELETE_WINDOW",False);
3155 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
3156 rowcol=XmCreateRowColumn(
pcpn_widget,
"Edit Precipitation",args,argcount);
3158 t=XmStringCreateLocalized(
"Data options");
3160 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
3161 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
3162 XtManageChild(pbutton);
3166 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
3167 rowcol2=XmCreateRowColumn(rowcol,
"Edit Stations",args,argcount);
3170 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
3171 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
3172 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
3173 rowcol3=XmCreateSimpleOptionMenu(rowcol2,
"Edit Stations",args,argcount);
3174 XtSetArg(args[0],XmNsubMenuId,&widg);
3175 XtGetValues(rowcol3,args,1);
3181 tpbutton[i]=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,args,argcount,NULL);
3186 XtSetValues(rowcol3,args,1);
3187 XtManageChild(rowcol3);
3190 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_UP);argcount++;
3191 arrow1=XmCreateArrowButton(rowcol2,
"up",args,argcount);
3195 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_DOWN);argcount++;
3196 arrow2=XmCreateArrowButton(rowcol2,
"down",args,argcount);
3199 XtManageChild(arrow1);
3200 XtManageChild(arrow2);
3203 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
3204 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
3205 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
3206 rowcol1=XmCreateSimpleOptionMenu(rowcol,
"Edit Stations",args,argcount);
3211 s[3]=
"Points+Grids";
3215 XtSetArg(args[0],XmNsubMenuId,&widg);
3220 diswidget[i]=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
3230 if((i != 0 && i !=5) &&
pcp_in_use[time_pos]==-1)
3256 XtSetArg(args[0],XmNmenuHistory,
diswidget[i]);
3260 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
3261 XtSetArg(args[argcount],XmNnumColumns,3);argcount++;
3262 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
3263 rowcol4=XmCreateRowColumn(rowcol,
"Edit Stations",args,argcount);
3267 rpbutton=XmCreatePushButton(rowcol4,
"Render Grids+MAPs",args,argcount);
3280 gpbutton=XmCreatePushButton(rowcol4,
"Group Edit",args,argcount);
3286 t=XmStringCreateLocalized(
"Precip type");
3288 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
3289 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
3290 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
3291 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
3292 rowcol15=XmCreateSimpleOptionMenu(rowcol,
"Edit Stations",args,argcount);
3294 XtSetArg(args[0],XmNsubMenuId,&widg);
3302 rswidget[i]=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
3313 XtSetArg(args[0],XmNmenuHistory,
rswidget[i]);
3318 sep=XmCreateSeparator(rowcol,
"swp",NULL,0);
3321 t=XmStringCreateLocalized(
"Point type");
3323 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
3324 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
3325 XtManageChild(pbutton);
3329 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
3330 XtSetArg(args[argcount],XmNnumColumns,3);argcount++;
3331 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
3332 rowcol7=XmCreateRowColumn(rowcol,
"Edit Stations",args,argcount);
3336 for(m=0;m<
tsmax;m++)
3341 for(i=0;i<
tsmax+2;i++) {
3349 XtSetArg(args[argcount],XmNselectColor,
cmap[4]);argcount++;
3352 XtSetArg(args[argcount],XmNset,True);
3355 XtSetArg(args[argcount],XmNset,False);
3359 bwidget[i]=XmCreateToggleButton(rowcol7,
s[i],args,argcount);
3366 t=XmStringCreateLocalized(
"Point quality");
3368 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
3369 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
3370 XtManageChild(pbutton);
3374 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
3375 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
3376 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
3377 rowcol8=XmCreateRowColumn(rowcol,
"Edit Stations",args,argcount);
3383 s[4]=
"Questionable";
3403 XtSetArg(args[argcount],XmNselectColor,
cmap[4]);argcount++;
3406 XtSetArg(args[argcount],XmNset,True);
3409 XtSetArg(args[argcount],XmNset,False);
3412 awidget[i]=XmCreateToggleButton(rowcol8,
s[i],args,argcount);
3420 t=XmStringCreateLocalized(
"Point character");
3422 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
3423 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
3424 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
3425 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
3426 rowcol9=XmCreateSimpleOptionMenu(rowcol,
"Edit Stations",args,argcount);
3428 XtSetArg(args[0],XmNsubMenuId,&widg);
3429 XtGetValues(rowcol9,args,1);
3440 pbutton=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
3445 XtSetArg(args[0],XmNmenuHistory,pbutton);
3446 XtSetValues(rowcol9,args,1);
3449 t=XmStringCreateLocalized(
"Point display");
3451 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
3452 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
3453 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
3454 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
3455 rowcol5=XmCreateSimpleOptionMenu(rowcol,
"Edit Stations",args,argcount);
3457 XtSetArg(args[0],XmNsubMenuId,&widg);
3458 XtGetValues(rowcol5,args,1);
3470 pbutton=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
3471 XtAddCallback(pbutton,XmNactivateCallback,
change_plot,
3478 XtSetArg(args[0],XmNmenuHistory,spbutton);
3479 XtSetValues(rowcol5,args,1);
3481 t=XmStringCreateLocalized(
"Point screening");
3484 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
3485 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
3486 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
3487 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
3488 rowcol10=XmCreateSimpleOptionMenu(rowcol,
"Edit Stations",args,argcount);
3490 XtSetArg(args[0],XmNsubMenuId,&widg);
3499 scwidget[i]=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
3513 XtSetArg(args[0],XmNmenuHistory,
scwidget[i]);
3518 t=XmStringCreateLocalized(
"Point Tconsistency");
3521 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
3522 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
3523 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
3524 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
3525 rowcol17=XmCreateSimpleOptionMenu(rowcol,
"Edit Stations",args,argcount);
3527 XtSetArg(args[0],XmNsubMenuId,&widg);
3531 s[1]=
"Inconsistent";
3536 tcwidget[i]=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
3550 XtSetArg(args[0],XmNmenuHistory,
tcwidget[i]);
3555 t=XmStringCreateLocalized(
"Point Sconsistency");
3558 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
3559 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
3560 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
3561 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
3562 rowcol18=XmCreateSimpleOptionMenu(rowcol,
"Edit Stations",args,argcount);
3564 XtSetArg(args[0],XmNsubMenuId,&widg);
3568 s[1]=
"Inconsistent";
3573 dcwidget[i]=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
3587 XtSetArg(args[0],XmNmenuHistory,
dcwidget[i]);
3593 t=XmStringCreateLocalized(
"Point filter (inches)");
3595 XtSetArg(args[argcount],XmNminimum,0);argcount++;
3596 XtSetArg(args[argcount],XmNmaximum,500);argcount++;
3597 XtSetArg(args[argcount],XmNscaleMultiple,1);argcount++;
3598 XtSetArg(args[argcount],XmNdecimalPoints,2);argcount++;
3599 XtSetArg(args[argcount],XmNshowValue,True);argcount++;
3600 XtSetArg(args[argcount],XmNtitleString,
t);argcount++;
3601 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
3602 scale=XmCreateScale(rowcol,
"scale",args,argcount);
3603 XtManageChild(
scale);
3608 t=XmStringCreateLocalized(
"Point reverse filter (inches)");
3610 XtSetArg(args[argcount],XmNminimum,0);argcount++;
3611 XtSetArg(args[argcount],XmNmaximum,2000);argcount++;
3612 XtSetArg(args[argcount],XmNscaleMultiple,1);argcount++;
3613 XtSetArg(args[argcount],XmNdecimalPoints,2);argcount++;
3614 XtSetArg(args[argcount],XmNshowValue,True);argcount++;
3615 XtSetArg(args[argcount],XmNtitleString,
t);argcount++;
3616 XtSetArg(args[argcount],XmNprocessingDirection,XmMAX_ON_LEFT);argcount++;
3617 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
3619 XtSetArg(args[argcount],XmNvalue,ival);argcount++;
3620 scale=XmCreateScale(rowcol,
"scale",args,argcount);
3621 XtManageChild(
scale);
3626 t=XmStringCreateLocalized(
"Point elevation (feet)");
3628 XtSetArg(args[argcount],XmNminimum,0);argcount++;
3629 XtSetArg(args[argcount],XmNmaximum,15000);argcount++;
3630 XtSetArg(args[argcount],XmNshowValue,True);argcount++;
3631 XtSetArg(args[argcount],XmNtitleString,
t);argcount++;
3632 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
3633 scale=XmCreateScale(rowcol,
"scale",args,argcount);
3634 XtManageChild(
scale);
3638 t=XmStringCreateLocalized(
"Pxtemp (deg C)");
3640 XtSetArg(args[argcount],XmNminimum,-100);argcount++;
3641 XtSetArg(args[argcount],XmNmaximum,300);argcount++;
3642 XtSetArg(args[argcount],XmNdecimalPoints,2);argcount++;
3643 XtSetArg(args[argcount],XmNshowValue,True);argcount++;
3644 XtSetArg(args[argcount],XmNtitleString,
t);argcount++;
3645 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
3647 XtSetArg(args[argcount],XmNvalue,ival);argcount++;
3648 scale=XmCreateScale(rowcol,
"scale",args,argcount);
3649 XtManageChild(
scale);
3650 XtAddCallback(
scale,XmNvalueChangedCallback,
new_dm,NULL);
3653 XtManageChild(rowcol);
3655 XtManageChild(rowcol2);
3656 XtManageChild(rowcol4);
3657 XtManageChild(rowcol5);
3658 XtManageChild(rowcol7);
3659 XtManageChild(rowcol8);
3660 XtManageChild(rowcol9);
3688 Widget rowcol,pbutton,rowcol2,rowcol3,rowcol4,rowcol5,rowcol6,rowcol7,rowcol8,rowcol9,arrow1,arrow2,
scale,sep;
3692 Widget widg,spbutton;
3694 static Position x,y;
3697 Atom WM_DELETE_WINDOW;
3699 static XmButtonType otypes[]={XmTITLE};
3700 XmString olabels[1];
3701 olabels[0]=XmStringCreateLocalized(
" ");
3703 XtSetArg(args[0],XmNx,&x);
3704 XtSetArg(args[1],XmNy,&y);
3705 XtSetArg(args[2],XtNwidth,&width);
3741 XtSetArg(args[argcount],XmNx, xpos);argcount++;
3742 XtSetArg(args[argcount],XmNy, y);argcount++;
3743 XtSetArg(args[argcount],XmNdefaultPosition, False);argcount++;
3746 XtUnmanageChild(XmMessageBoxGetChild(
maxmin_widget,XmDIALOG_CANCEL_BUTTON));
3747 XtUnmanageChild(XmMessageBoxGetChild(
maxmin_widget,XmDIALOG_HELP_BUTTON));
3748 XtUnmanageChild(XmMessageBoxGetChild(
maxmin_widget,XmDIALOG_OK_BUTTON));
3749 XtUnmanageChild(XmMessageBoxGetChild(
maxmin_widget,XmDIALOG_SEPARATOR));
3752 WM_DELETE_WINDOW=XmInternAtom(XtDisplay(
top_level),
"WM_DELETE_WINDOW",False);
3759 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
3760 rowcol=XmCreateRowColumn(
maxmin_widget,
"Edit Precipitation",args,argcount);
3762 t=XmStringCreateLocalized(
"Data options");
3764 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
3765 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
3766 XtManageChild(pbutton);
3771 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
3772 XtSetArg(args[argcount],XmNnumColumns,4);argcount++;
3773 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
3774 rowcol2=XmCreateRowColumn(rowcol,
"Edit Stations",args,argcount);
3777 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
3778 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
3779 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
3780 rowcol3=XmCreateSimpleOptionMenu(rowcol2,
"Edit Stations",args,argcount);
3782 XtSetArg(args[0],XmNsubMenuId,&widg);
3783 XtGetValues(rowcol3,args,1);
3791 tpbutton[i]=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
3798 XtSetValues(rowcol3,args,1);
3801 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_UP);argcount++;
3802 arrow1=XmCreateArrowButton(rowcol2,
"up",args,argcount);
3806 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_DOWN);argcount++;
3807 arrow2=XmCreateArrowButton(rowcol2,
"down",args,argcount);
3810 XtManageChild(arrow1);
3811 XtManageChild(arrow2);
3814 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
3815 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
3816 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
3817 rowcol1=XmCreateSimpleOptionMenu(rowcol,
"Edit Stations",args,argcount);
3822 s[3]=
"Points+Grids";
3826 XtSetArg(args[0],XmNsubMenuId,&widg);
3831 diswidget[i]=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
3844 if((i != 0 && i !=5) &&
pcp_in_use[time_pos]==-1)
3873 XtSetArg(args[0],XmNmenuHistory,
diswidget[i]);
3877 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
3878 XtSetArg(args[argcount],XmNnumColumns,3);argcount++;
3879 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
3880 rowcol4=XmCreateRowColumn(rowcol,
"Edit Stations",args,argcount);
3884 rpbutton=XmCreatePushButton(rowcol4,
"Render Grids+MATs",args,argcount);
3898 gpbutton=XmCreatePushButton(rowcol4,
"Group Edit",args,argcount);
3904 sep=XmCreateSeparator(rowcol,
"swp",NULL,0);
3907 t=XmStringCreateLocalized(
"Point type");
3909 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
3910 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
3911 XtManageChild(pbutton);
3915 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
3916 XtSetArg(args[argcount],XmNnumColumns,3);argcount++;
3917 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
3918 rowcol7=XmCreateRowColumn(rowcol,
"Edit Stations",args,argcount);
3922 for(m=0;m<
tsmax;m++)
3927 for(i=0;i<
tsmax+2;i++) {
3938 XtSetArg(args[argcount],XmNselectColor,
cmap[4]);argcount++;
3941 XtSetArg(args[argcount],XmNset,True);
3944 XtSetArg(args[argcount],XmNset,False);
3948 bwidget[i]=XmCreateToggleButton(rowcol7,
s[i],args,argcount);
3955 t=XmStringCreateLocalized(
"Point quality");
3957 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
3958 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
3959 XtManageChild(pbutton);
3963 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
3964 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
3965 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
3966 rowcol8=XmCreateRowColumn(rowcol,
"Edit Stations",args,argcount);
3972 s[4]=
"Questionable";
3992 XtSetArg(args[argcount],XmNselectColor,
cmap[4]);argcount++;
3995 XtSetArg(args[argcount],XmNset,True);
3998 XtSetArg(args[argcount],XmNset,False);
4001 awidget[i]=XmCreateToggleButton(rowcol8,
s[i],args,argcount);
4010 t=XmStringCreateLocalized(
"Point display");
4012 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
4013 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
4014 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
4015 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
4016 rowcol5=XmCreateSimpleOptionMenu(rowcol,
"Edit Stations",args,argcount);
4018 XtSetArg(args[0],XmNsubMenuId,&widg);
4019 XtGetValues(rowcol5,args,1);
4031 pbutton=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
4032 XtAddCallback(pbutton,XmNactivateCallback,
change_plot,
4039 XtSetArg(args[0],XmNmenuHistory,spbutton);
4040 XtSetValues(rowcol5,args,1);
4042 t=XmStringCreateLocalized(
"Point screening");
4044 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
4045 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
4046 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
4047 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
4048 rowcol10=XmCreateSimpleOptionMenu(rowcol,
"Edit Stations",args,argcount);
4050 XtSetArg(args[0],XmNsubMenuId,&widg);
4059 scwidget[i]=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
4073 XtSetArg(args[0],XmNmenuHistory,
scwidget[i]);
4078 t=XmStringCreateLocalized(
"Point elevation (feet)");
4080 XtSetArg(args[argcount],XmNminimum,0);argcount++;
4081 XtSetArg(args[argcount],XmNmaximum,15000);argcount++;
4082 XtSetArg(args[argcount],XmNshowValue,True);argcount++;
4083 XtSetArg(args[argcount],XmNtitleString,
t);argcount++;
4084 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
4085 scale=XmCreateScale(rowcol,
"scale",args,argcount);
4086 XtManageChild(
scale);
4090 XtManageChild(rowcol);
4092 XtManageChild(rowcol2);
4093 XtManageChild(rowcol3);
4094 XtManageChild(rowcol4);
4095 XtManageChild(rowcol7);
4096 XtManageChild(rowcol8);
4097 XtManageChild(rowcol5);
4122 rowcol,pbutton,rowcol2,rowcol3,rowcol4,rowcol5,rowcol6,rowcol7,rowcol8,rowcol9,arrow1,arrow2,
scale,sep;
4126 Widget widg,spbutton;
4128 static Position x,y;
4131 Atom WM_DELETE_WINDOW;
4133 static XmButtonType otypes[]={XmTITLE};
4134 XmString olabels[1];
4135 olabels[0]=XmStringCreateLocalized(
" ");
4137 XtSetArg(args[0],XmNx,&x);
4138 XtSetArg(args[1],XmNy,&y);
4139 XtSetArg(args[2],XtNwidth,&width);
4173 XtSetArg(args[argcount],XmNx, xpos);argcount++;
4174 XtSetArg(args[argcount],XmNy, y);argcount++;
4175 XtSetArg(args[argcount],XmNdefaultPosition, False);argcount++;
4178 XtUnmanageChild(XmMessageBoxGetChild(
z_widget,XmDIALOG_CANCEL_BUTTON));
4179 XtUnmanageChild(XmMessageBoxGetChild(
z_widget,XmDIALOG_HELP_BUTTON));
4180 XtUnmanageChild(XmMessageBoxGetChild(
z_widget,XmDIALOG_OK_BUTTON));
4181 XtUnmanageChild(XmMessageBoxGetChild(
z_widget,XmDIALOG_SEPARATOR));
4184 WM_DELETE_WINDOW=XmInternAtom(XtDisplay(
top_level),
"WM_DELETE_WINDOW",False);
4196 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
4197 rowcol=XmCreateRowColumn(
z_widget,
"Edit Precipitation",args,argcount);
4199 t=XmStringCreateLocalized(
"Data options");
4201 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
4202 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
4203 XtManageChild(pbutton);
4207 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
4208 XtSetArg(args[argcount],XmNnumColumns,4);argcount++;
4209 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
4210 rowcol2=XmCreateRowColumn(rowcol,
"Edit Stations",args,argcount);
4213 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
4214 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
4215 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
4216 rowcol3=XmCreateSimpleOptionMenu(rowcol2,
"Edit Stations",args,argcount);
4218 XtSetArg(args[0],XmNsubMenuId,&widg);
4219 XtGetValues(rowcol3,args,1);
4225 pbutton=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
4230 XtSetArg(args[0],XmNmenuHistory,pbutton);
4231 XtSetValues(rowcol3,args,1);
4234 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_UP);argcount++;
4235 arrow1=XmCreateArrowButton(rowcol2,
"up",args,argcount);
4236 XtAddCallback(arrow1,XmNactivateCallback,
change_z_time,(XtPointer)0);
4239 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_DOWN);argcount++;
4240 arrow2=XmCreateArrowButton(rowcol2,
"down",args,argcount);
4241 XtAddCallback(arrow2,XmNactivateCallback,
change_z_time,(XtPointer)1);
4243 XtManageChild(arrow1);
4244 XtManageChild(arrow2);
4247 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
4248 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
4249 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
4250 rowcol1=XmCreateSimpleOptionMenu(rowcol,
"Edit Stations",args,argcount);
4255 s[3]=
"Points+Grids";
4259 XtSetArg(args[0],XmNsubMenuId,&widg);
4264 diswidget[i]=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
4271 if((i != 0 && i !=5) &&
pcp_in_use[time_pos]==-1)
4299 XtSetArg(args[0],XmNmenuHistory,
diswidget[i]);
4303 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
4304 XtSetArg(args[argcount],XmNnumColumns,3);argcount++;
4305 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
4306 rowcol4=XmCreateRowColumn(rowcol,
"Edit Stations",args,argcount);
4310 rpbutton=XmCreatePushButton(rowcol4,
"Render Grids+MAZs",args,argcount);
4323 t=XmStringCreateLocalized(
"Filter Z");
4325 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
4326 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
4327 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
4328 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
4329 rowcol16=XmCreateSimpleOptionMenu(rowcol,
"Edit Stations",args,argcount);
4331 XtSetArg(args[0],XmNsubMenuId,&widg);
4340 abwidget[i]=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
4354 XtSetArg(args[0],XmNmenuHistory,
abwidget[i]);
4359 sep=XmCreateSeparator(rowcol,
"swp",NULL,0);
4362 t=XmStringCreateLocalized(
"Point display");
4364 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
4365 XtSetArg(args[argcount], XmNbuttonCount, 1);argcount++;
4366 XtSetArg(args[argcount], XmNbuttons, olabels); argcount++;
4367 XtSetArg(args[argcount], XmNbuttonType, otypes); argcount++;
4368 rowcol5=XmCreateSimpleOptionMenu(rowcol,
"Edit Stations",args,argcount);
4370 XtSetArg(args[0],XmNsubMenuId,&widg);
4371 XtGetValues(rowcol5,args,1);
4382 pbutton=XtVaCreateManagedWidget(
s[i],xmPushButtonGadgetClass,widg,NULL);
4383 XtAddCallback(pbutton,XmNactivateCallback,
change_plot,
4390 XtSetArg(args[0],XmNmenuHistory,spbutton);
4391 XtSetValues(rowcol5,args,1);
4393 t=XmStringCreateLocalized(
"Pxtemp (Deg C)");
4395 XtSetArg(args[argcount],XmNminimum,-100);argcount++;
4396 XtSetArg(args[argcount],XmNmaximum,300);argcount++;
4397 XtSetArg(args[argcount],XmNdecimalPoints,2);argcount++;
4398 XtSetArg(args[argcount],XmNshowValue,True);argcount++;
4399 XtSetArg(args[argcount],XmNtitleString,
t);argcount++;
4400 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
4402 XtSetArg(args[argcount],XmNvalue,ival);argcount++;
4403 scale=XmCreateScale(rowcol,
"scale",args,argcount);
4404 XtManageChild(
scale);
4405 XtAddCallback(
scale,XmNvalueChangedCallback,
new_dm,NULL);
4408 XtManageChild(rowcol);
4410 XtManageChild(rowcol2);
4411 XtManageChild(rowcol3);
4412 XtManageChild(rowcol4);
4413 XtManageChild(rowcol5);
4436 else if((
int)data==1)
4439 else if((
int)data==2)
4445 else if((
int)data==1)
4448 else if((
int)data==2)
4528 else if((
int)data==1) {
4586 XtSetArg(args[0],XmNmenuHistory,
diswidget[i]);
4598 XtSetArg(args[0],XmNmenuHistory,
scwidget[i]);
4616 XtSetArg(args[0],XmNmenuHistory,
rswidget[1]);
4642 XtSetArg(args[0],XmNmenuHistory,
rswidget[1]);
4722 else if((
int)data==1) {
4783 XtSetArg(args[0],XmNmenuHistory,
diswidget[i]);
4795 XtSetArg(args[0],XmNmenuHistory,
scwidget[i]);
4831 else if((
int)data==1)
4878 XtSetArg(args[0],XmNmenuHistory,
diswidget[i]);
4919 else if((
int)data==2) {
4926 else if((
int)data==3) {
4933 else if((
int)data==4) {
4941 else if((
int)data==5) {
4967 t=XmStringCreateLocalized(
"Enter handbook 5 I.D.");
4971 XtSetArg(args[argcount],XmNselectionLabelString,
t);argcount++;
4973 XtSetArg(args[argcount],XmNautoUnmanage,False);argcount++;
4977 XtUnmanageChild(XmSelectionBoxGetChild(
find_widget,
4978 XmDIALOG_HELP_BUTTON));
4992 else if((
int)data==0){
4994 bmessage(w,
"Gridding precipitation and building MAPs");
5012 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
grid_file,
5013 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
timefile[4]);
5038 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
grid_file,
5039 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
timefile[m]);
5088 XtSetArg(args[0],XmNmenuHistory,
diswidget[k]);
5093 else if((
int)data==2){
5095 bmessage(w,
"Gridding freezing level and building MAZs");
5115 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
zgrid_file,
5116 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
ztimefile[m]);
5124 make_rsel(num,num-100);
5154 XtSetArg(args[0],XmNmenuHistory,
diswidget[k]);
5159 else if((
int)data==3){
5161 bmessage(w,
"Gridding temperature and building MATs");
5175 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
tgrid_file,
5176 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
ttimefile[4]);
5192 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
tgrid_file,
5193 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
ttimefile[5]);
5219 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
tgrid_file,
5220 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
ttimefile[m]);
5228 make_mat(num,num-150);
5263 XtSetArg(args[0],XmNmenuHistory,
diswidget[k]);
5272 XtDestroyWidget(
err);
5276 void find_name(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
5283 signed long XSIZE,YSIZE;
5286 float lat,lon,xrat,yrat,mult,cmult,dmult;
5290 Dimension width,height;
5302 XtSetArg(args[argcount],XmNtextString,&str);argcount++;
5305 XmStringGetLtoR(str,XmFONTLIST_DEFAULT_TAG,&cstr);
5309 XtSetArg(args[0],XtNwidth,&width);
5310 XtSetArg(args[1],XtNheight,&height);
5313 XSIZE=(long)width*10L;
5314 YSIZE=(long)height*10L;
5316 xrat=(float)XSIZE/(
float)12800;
5317 yrat=(float)YSIZE/(
float)9600;
5337 if(strcasecmp(cstr,
station[ib].hb5)==0) {
5342 r=
dval.
a * cos(lat*conv)/(1+sin(lat*conv))
5345 s=
dval.
a * cos(lat*conv)/(1+sin(lat*conv))
5348 x1=(xmin+(
float)r * cmult)/MY;
5349 y1=(ymin+(float)
s * cmult)/MY;
5371 strcat(dbuf,
" not found");
5386 else if((
int)data==0) {
5392 else if((
int)data==1) {
5465 Widget rowcol,pbutton;
5472 XtSetArg(args[argcount],XmNdeleteResponse,XmDO_NOTHING);argcount++;
5473 XtSetArg(args[argcount],XmNautoUnmanage,False);argcount++;
5474 XtSetArg(args[argcount],XmNwidth, 300);argcount++;
5475 XtSetArg(args[argcount],XmNheight,200);argcount++;
5483 XtUnmanageChild(XmMessageBoxGetChild(
group_dialog,XmDIALOG_CANCEL_BUTTON));
5484 XtUnmanageChild(XmMessageBoxGetChild(
group_dialog,XmDIALOG_HELP_BUTTON));
5485 XtUnmanageChild(XmMessageBoxGetChild(
group_dialog,XmDIALOG_SEPARATOR));
5494 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
5495 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
5496 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
5498 rowcol=XmCreateRadioBox(
group_dialog,
"Edit Stations",args,argcount);
5501 st[1]=
"Screened (Force)";
5502 st[2]=
"Questionable";
5508 XtSetArg(args[argcount],XmNselectColor,
cmap[4]);argcount++;
5511 XtSetArg(args[argcount],XmNset,True);
5514 XtSetArg(args[argcount],XmNset,False);
5518 pbutton=XmCreateToggleButton(rowcol,st[i],args,argcount);
5522 XtManageChild(pbutton);
5526 XtManageChild(rowcol);
5596 XtSetArg(args[0],XmNmenuHistory,
diswidget[k]);
5710 XtSetArg(args[0],XmNmenuHistory,
diswidget[k]);
5784 if(
pdata[j].used[m] !=1 ||
pdata[j].level !=1)
5803 if(
zdata[j].used[m] !=1 ||
zdata[j].level[m] !=1)
5822 if(
tdata[j].used[m] !=1 ||
tdata[j].level[m] !=1)
5850 if(
pdata[j].used[m]!=3 &&
pdata[j].used[m]!=2)
5877 msg=XmStringCreateLocalized(
"Quit daily_qc?");
5880 XtSetArg(args[argcount],XmNmessageString,msg);argcount++;
5881 XtSetArg(args[argcount],XmNdialogStyle,
5882 XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
5884 XtUnmanageChild(XmMessageBoxGetChild(
err,XmDIALOG_HELP_BUTTON));
5903 sprintf(ibuf,
"rm pcp.*.%d",getpid());
5940 XtSetArg(args[0],XmNset,False);
5947 XtSetArg(args[0],XmNset,False);
5954 XtSetArg(args[0],XmNset,False);
5986 XtSetArg(args[0],XmNset,False);
5993 XtSetArg(args[0],XmNset,False);
6000 XtSetArg(args[0],XmNset,False);
6032 XtSetArg(args[0],XmNset,False);
6039 XtSetArg(args[0],XmNset,False);
6046 XtSetArg(args[0],XmNset,False);
6078 XtSetArg(args[0],XmNset,False);
6085 XtSetArg(args[0],XmNset,False);
6092 XtSetArg(args[0],XmNset,False);
6111 off[(int)data]=-
off[(
int)data];
6125 void source_select(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
6135 if((
int)data==
tsmax+1) {
6139 for(i=1;i<
tsmax+2;i++){
6143 XtSetArg(args[0],XmNset,True);
6144 XtSetValues(
bwidget[i],args,argcount);
6152 for(i=1;i<
tsmax+2;i++){
6156 XtSetArg(args[0],XmNset,False);
6157 XtSetValues(
bwidget[i],args,argcount);
6204 XtSetArg(args[0],XmNset,True);
6205 XtSetValues(
awidget[i],args,argcount);
6220 XtSetArg(args[0],XmNset,False);
6221 XtSetValues(
awidget[i],args,argcount);
6233 void handle_expose(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
6237 XEvent *p_event=call_data->event;
6239 if(p_event->xexpose.count==0) {
6253 redraw_diff_legend(
pixm);
6256 redraw_frz_legend(
pixm);
6259 redraw_rpcpn_legend(
pixm);
6262 redraw_maxmin_legend(
pixm);
6278 void handle_resize(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
6282 Dimension width,height;
6285 XtSetArg(args[0],XtNwidth,&width);
6286 XtSetArg(args[1],XtNheight,&height);
6321 Dimension width,height;
6323 int win_x,win_y,xsize,ysize;
6324 unsigned int win_button,state;
6326 win_y=p_event->xbutton.y;
6327 win_x=p_event->xbutton.x;
6328 win_button=p_event->xbutton.button;
6329 state=p_event->xbutton.state;
6331 if((state & ControlMask)==4 && win_button!=Button3) {
6348 XtSetArg(args[0],XtNwidth,&width);
6349 XtSetArg(args[1],XtNheight,&height);
6364 change_rpcpn_legend(win_x,win_y);
6367 change_maxmin_legend(win_x,win_y);
6370 change_diff_legend(win_x,win_y);
6373 change_frz_legend(win_x,win_y);
6380 else if(
group_edit!=1 && win_button !=Button3) {
6387 else if((state & ControlMask)==4 && win_button==Button3)
6425 msg=XmStringCreateLocalized(
string);
6428 XtSetArg(args[argcount],XmNmessageString,msg);argcount++;
6429 XtSetArg(args[argcount],XmNdialogStyle,
6430 XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
6431 err=XmCreateErrorDialog(widget,
"info",args,argcount);
6434 XtUnmanageChild(XmMessageBoxGetChild(
err,XmDIALOG_CANCEL_BUTTON));
6435 XtUnmanageChild(XmMessageBoxGetChild(
err,XmDIALOG_HELP_BUTTON));
6450 msg=XmStringCreateLocalized(
string);
6453 XtSetArg(args[argcount],XmNdialogStyle,
6454 XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
6457 XtUnmanageChild(XmMessageBoxGetChild(
err,XmDIALOG_OK_BUTTON));
6458 XtUnmanageChild(XmMessageBoxGetChild(
err,XmDIALOG_HELP_BUTTON));
6459 XtUnmanageChild(XmMessageBoxGetChild(
err,XmDIALOG_CANCEL_BUTTON));
6460 XtUnmanageChild(XmMessageBoxGetChild(
err,XmDIALOG_SEPARATOR));
6462 XtSetArg(args[0],XmNlabelString,msg);
6463 XtSetValues(XmMessageBoxGetChild(
err,XmDIALOG_MESSAGE_LABEL),args,1);
6464 XtVaSetValues(XtParent(
err),XmNtitle,
" ",0);
6473 void kill_widget(Widget widget,XtPointer client_data,XtPointer call_data)
6477 XtDestroyWidget(widget);
6502 Widget rowcol,ztext;
6507 cancel=XmStringCreateLocalized(
"No");
6517 if(
pdata[j].used[m]!=3 &&
pdata[j].used[m]!=2) {
6519 if(
zdata[j].used[m]!=3 &&
zdata[j].used[m]!=2) {
6521 if(
tdata[j].used[m]!=3 &&
tdata[j].used[m]!=2)
6532 sprintf(tbuf,
"%02d-%02d-%02d\n",
6533 gm->tm_mon+1,gm->tm_mday,gm->tm_year);
6543 btext=XmStringCreateLocalized(
"Save the following Precipitation and MAP datasets?");
6546 XtSetArg(args[argcount],XmNmessageString,btext);argcount++;
6547 XtSetArg(args[argcount],XmNcancelLabelString,cancel);argcount++;
6548 XtSetArg(args[argcount],XmNdialogStyle,
6549 XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
6555 XtUnmanageChild(XmMessageBoxGetChild(
dbase_dialog,XmDIALOG_HELP_BUTTON));
6558 rowcol=XtCreateWidget(
"rowcolo",xmRowColumnWidgetClass,
dbase_dialog,args,argcount);
6561 XtSetArg(args[argcount],XmNeditMode,XmMULTI_LINE_EDIT);argcount++;
6562 XtSetArg(args[argcount],XmNscrollBarDisplayPolicy,XmSTATIC);argcount++;
6563 XtSetArg(args[argcount],XmNeditable,False);argcount++;
6564 XtSetArg(args[argcount],XmNcolumns,40);argcount++;
6565 XtSetArg(args[argcount],XmNrows,10);argcount++;
6566 XtSetArg(args[argcount],XmNscrollVertical,True);argcount++;
6567 XtSetArg(args[argcount],XmNscrollHorizontal,False);argcount++;
6568 XtSetArg(args[argcount],XmNcursorPositionVisible,False);argcount++;
6569 XtSetArg(args[argcount],XmNscrollingPolicy,XmAPPLICATION_DEFINED);argcount++;
6570 XtSetArg(args[argcount],XmNvalue,&text);argcount++;
6571 ztext=XmCreateScrolledText(rowcol,
"text",args,argcount);
6573 XtManageChild(ztext);
6574 XtManageChild(rowcol);
6591 Widget rowcol,ztext;
6596 cancel=XmStringCreateLocalized(
"quit anyway");
6606 if(
pdata[j].used[m]!=1 ||
pdata[j].level !=1 )
6613 sprintf(tbuf,
"Precipitation %02d-%02d-%02d\n",
6614 gm->tm_mon+1,gm->tm_mday,gm->tm_year);
6632 if(
zdata[j].used[m]!=1 ||
zdata[j].level[m]!=1)
6639 sprintf(tbuf,
"Freezing level %02d-%02d-%02d\n",
6640 gm->tm_mon+1,gm->tm_mday,gm->tm_year);
6658 if(
tdata[j].used[m]!=1 ||
tdata[j].level[m]!=1)
6665 sprintf(tbuf,
"Temperature %02d-%02d-%02d\n",
6666 gm->tm_mon+1,gm->tm_mday,gm->tm_year);
6676 btext=XmStringCreateLocalized(
"The following datasets need to be QC'd!");
6679 XtSetArg(args[argcount],XmNmessageString,btext);argcount++;
6680 XtSetArg(args[argcount],XmNcancelLabelString,cancel);argcount++;
6681 XtSetArg(args[argcount],XmNdialogStyle,
6682 XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
6688 XtUnmanageChild(XmMessageBoxGetChild(
dbase_dialog,XmDIALOG_HELP_BUTTON));
6691 rowcol=XtCreateWidget(
"rowcolo",xmRowColumnWidgetClass,
dbase_dialog,args,argcount);
6694 XtSetArg(args[argcount],XmNeditMode,XmMULTI_LINE_EDIT);argcount++;
6695 XtSetArg(args[argcount],XmNscrollBarDisplayPolicy,XmSTATIC);argcount++;
6696 XtSetArg(args[argcount],XmNeditable,False);argcount++;
6697 XtSetArg(args[argcount],XmNcolumns,40);argcount++;
6698 XtSetArg(args[argcount],XmNrows,10);argcount++;
6699 XtSetArg(args[argcount],XmNscrollVertical,True);argcount++;
6700 XtSetArg(args[argcount],XmNscrollHorizontal,False);argcount++;
6701 XtSetArg(args[argcount],XmNcursorPositionVisible,False);argcount++;
6702 XtSetArg(args[argcount],XmNscrollingPolicy,XmAPPLICATION_DEFINED);argcount++;
6703 XtSetArg(args[argcount],XmNvalue,&text);argcount++;
6704 ztext=XmCreateScrolledText(rowcol,
"text",args,argcount);
6706 XtManageChild(ztext);
6707 XtManageChild(rowcol);
6747 char buf[2000],cmd[2000],ebuf[2000],fbuf[2000],mbuf[2000],xbuf[2000],dbuf[2000],pbuf[2000];
6748 int k,j,m,l,ll,num,i,h,len,numzones;
6753 Widget dialog,rowcol,
s_text;
6754 int slider_size,scrollm,ivalue,increment,page_increment;
6762 int archive_flag[10];
6776 text=XmStringCreateLocalized(
"Gridding precipitation,building MAPs and Saving to database");
6779 XtSetArg(args[argcount],XmNmessageString,text);argcount++;
6780 XtSetArg(args[argcount],XmNdialogStyle,
6781 XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
6782 dialog=XmCreateMessageDialog(
drawing_area,
"Save database",args,argcount);
6783 XtUnmanageChild(XmMessageBoxGetChild(dialog,XmDIALOG_CANCEL_BUTTON));
6784 XtUnmanageChild(XmMessageBoxGetChild(dialog,XmDIALOG_OK_BUTTON));
6785 XtUnmanageChild(XmMessageBoxGetChild(dialog,XmDIALOG_HELP_BUTTON));
6786 XtUnmanageChild(XmMessageBoxGetChild(dialog,XmDIALOG_DEFAULT_BUTTON));
6787 XtUnmanageChild(XmMessageBoxGetChild(dialog,XmDIALOG_SEPARATOR));
6790 rowcol=XtCreateWidget(
"rowcolo",xmRowColumnWidgetClass,dialog,args,argcount);
6793 XtSetArg(args[argcount],XmNeditMode,XmMULTI_LINE_EDIT);argcount++;
6794 XtSetArg(args[argcount],XmNscrollBarDisplayPolicy,XmSTATIC);argcount++;
6795 XtSetArg(args[argcount],XmNeditable,False);argcount++;
6796 XtSetArg(args[argcount],XmNcolumns,40);argcount++;
6797 XtSetArg(args[argcount],XmNrows,10);argcount++;
6798 XtSetArg(args[argcount],XmNscrollVertical,True);argcount++;
6799 XtSetArg(args[argcount],XmNscrollHorizontal,False);argcount++;
6800 XtSetArg(args[argcount],XmNcursorPositionVisible,False);argcount++;
6801 XtSetArg(args[argcount],XmNscrollingPolicy,XmAPPLICATION_DEFINED);argcount++;
6802 s_text=XmCreateScrolledText(rowcol,
"text",args,argcount);
6808 XtManageChild(rowcol);
6809 XtManageChild(dialog);
6826 if(
pdata[j].used[m]==3 ||
pdata[j].used[m]==2)
6849 sprintf(fbuf,
"%sbad.%02d-%02d-%02d",
6858 if (
pdata[j].used[l]==0 ||
6859 pdata[j].used[l]==3)
6870 sprintf(xbuf,
"Precipitation %02d-%02d-%02d",gm->tm_mon+1,
6871 gm->tm_mday,gm->tm_year);
6883 XtVaGetValues(
scrollbar,XmNmaximum,&scrollm,NULL);
6884 XmScrollBarGetValues(
scrollbar,&ivalue,&slider_size,
6885 &increment,&page_increment);
6886 XmScrollBarSetValues(
scrollbar,scrollm-slider_size,
6887 slider_size,increment,page_increment,True);
6897 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
grid_file,
6898 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
timefile[l]);
6918 sprintf(fbuf,
"%s%02d-%02d-%02d",
6925 gm=gmtime(&
pdata[j].data_time);
6927 sprintf(buf,
".AR %s %02d%02d%02d DH12/%s ",
6928 station[m].hb5,1900+gm->tm_year,gm->tm_mon+1,gm->tm_mday,pbuf);
6931 if(
pdata[j].used[4] != 0) {
6933 if(
pdata[j].
stn[m].frain[4].data < 0 )
6939 sprintf(mbuf,
"%5.2f",
pdata[j].
stn[m].frain[4].data);
6969 else if(
pdata[j].
stn[m].sflag[4]==1) {
6994 gm=gmtime(&old_time);
6996 sprintf(buf,
".ER %s %02d%02d%02d DH18/%s/DIH+6/",
6997 station[m].hb5,1900+gm->tm_year,gm->tm_mon+1,gm->tm_mday,pbuf);
7001 if(
pdata[j].used[k] == 0) {
7011 else if(
pdata[j].
stn[m].frain[k].data < 0) {
7024 sprintf(mbuf,
"%5.2f",
pdata[j].
stn[m].frain[k].data);
7077 strcpy(ebuf,
"could not execute ");
7098 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
grid_file,
7099 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
timefile[l]);
7111 printf(
"ier is %d %d\n",l,ier);
7112 printf(
"cmd is %s\n",cmd);
7116 strcpy(ebuf,
"could not execute ");
7126 for(m=0;
map[m].
hb5[0] != 0;m++) {
7132 if(
map[m].maps_done[num] == 1)
7141 if(
map[m].hb5[0]==0)
7146 sprintf(fbuf,
"%s%02d-%02d-%02d",
map_file,gm->tm_mon+1,
7147 gm->tm_mday,gm->tm_year);
7155 gm=gmtime(&old_time);
7159 for(m=0;
map[m].
hb5[0] != 0;m++) {
7163 for(l=0;l < 4;l++) {
7165 if(
map[m].zones[l] < 0)
7172 for(l=0;l < 4;l++) {
7174 if(
map[m].zones[l] < 0)
7177 strcpy(xbuf,
".ER ");
7178 strcat(xbuf,
map[m].hb5);
7182 xbuf[i++]=toupper(xbuf[i]);
7187 if(strcmp(
rfc,
"cbrfc")==0 &&
7188 strlen(
map[m].hb5)==7) {
7190 printf(
"polygon write\n");
7199 if(l==0 && numzones != 1) {
7208 else if(l==0 && numzones == 1) {
7242 sprintf(mbuf,
" %02d%02d%02d",1900+gm->tm_year,gm->tm_mon+1,gm->tm_mday);
7245 strcat(xbuf,
" DH18/PPQPBZZ/DIH+6");
7253 if(strcmp(
rfc,
"cbrfc")==0 &&
7254 strlen(
map[m].hb5)==7)
7269 if(
map[m].maps_done[h] != 1)
7273 sprintf(mbuf,
"%5.2f ",temp);
7302 strcpy(ebuf,
"could not execute ");
7311 if(
pdata[j].used[m] != 0)
7322 sprintf(ebuf,
"%sdev.%02d-%02d-%02d",
7337 sprintf(ebuf,
"%sdev.%02d-%02d-%02d",
7368 if(
zdata[j].used[m]==3 ||
zdata[j].used[m]==2)
7386 if (
zdata[j].used[l]==0 ||
7387 zdata[j].used[l]==3)
7398 sprintf(xbuf,
"Freezing level %02d-%02d-%02d",gm->tm_mon+1,
7399 gm->tm_mday,gm->tm_year);
7411 XtVaGetValues(
scrollbar,XmNmaximum,&scrollm,NULL);
7412 XmScrollBarGetValues(
scrollbar,&ivalue,&slider_size,
7413 &increment,&page_increment);
7414 XmScrollBarSetValues(
scrollbar,scrollm-slider_size,
7415 slider_size,increment,page_increment,True);
7419 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
zgrid_file,
7420 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
ztimefile[l]);
7426 make_rsel(num,num-100);
7433 sprintf(fbuf,
"%s%02d-%02d-%02d",
7441 gm=gmtime(&old_time);
7443 sprintf(buf,
".ER %s %02d%02d%02d DH12/%s/DIH+6/",
7444 zstation[m].hb5,1900+gm->tm_year,gm->tm_mon+1,gm->tm_mday,pbuf);
7448 if(
zdata[j].used[k] == 0) {
7458 else if(
zdata[j].
stn[m].zlevel2[k].data < 0) {
7468 sprintf(mbuf,
"%4.1f",
zdata[j].
stn[m].zlevel2[k].data);
7509 strcpy(ebuf,
"could not execute ");
7550 for(m=0;
map[m].
hb5[0] != 0;m++) {
7556 if(
map[m].zmaps_done[num] == 1)
7565 if(
map[m].hb5[0]==0)
7570 sprintf(fbuf,
"%s%02d-%02d-%02d",
rsel_file,gm->tm_mon+1,
7571 gm->tm_mday,gm->tm_year);
7579 gm=gmtime(&old_time);
7583 for(m=0;
map[m].
hb5[0] != 0;m++) {
7587 for(l=0;l < 4;l++) {
7589 if(
map[m].zones[l] < 0)
7596 for(l=0;l < 4;l++) {
7598 if(
map[m].zones[l] < 0)
7601 strcpy(xbuf,
".ER ");
7602 strcat(xbuf,
map[m].hb5);
7606 xbuf[i++]=toupper(xbuf[i]);
7611 if(strcmp(
rfc,
"cbrfc")==0 &&
7612 strlen(
map[m].hb5)==7) {
7614 printf(
"polygon write\n");
7624 if(l==0 && numzones != 1) {
7633 else if(l==0 && numzones == 1) {
7667 sprintf(mbuf,
" %02d%02d%02d",1900+gm->tm_year,gm->tm_mon+1,gm->tm_mday);
7670 strcat(xbuf,
" DH12/HZIPBZZ/DIH+6");
7677 if(strcmp(
rfc,
"cbrfc")==0 &&
7678 strlen(
map[m].hb5)==7)
7694 if(
map[m].zmaps_done[h] != 1)
7698 sprintf(mbuf,
"%4.1f ",temp);
7727 strcpy(ebuf,
"could not execute ");
7736 if(
zdata[j].used[m] != 0)
7757 if(
tdata[j].used[m]==3 ||
tdata[j].used[m]==2)
7775 sprintf(fbuf,
"%sbad.%02d-%02d-%02d",
7791 if (
tdata[j].used[l]==0 ||
7792 tdata[j].used[l]==3)
7803 sprintf(xbuf,
"Temperature %02d-%02d-%02d",gm->tm_mon+1,
7804 gm->tm_mday,gm->tm_year);
7816 XtVaGetValues(
scrollbar,XmNmaximum,&scrollm,NULL);
7817 XmScrollBarGetValues(
scrollbar,&ivalue,&slider_size,
7818 &increment,&page_increment);
7819 XmScrollBarSetValues(
scrollbar,scrollm-slider_size,
7820 slider_size,increment,page_increment,True);
7831 sprintf(dbuf,
"%s%02d-%02d-%02d.%s",
tgrid_file,
7832 gm->tm_mon+1,gm->tm_mday,gm->tm_year,
ttimefile[l]);
7839 make_mat(num,num-150);
7848 sprintf(fbuf,
"%s%02d-%02d-%02d",
7856 gm=gmtime(&old_time);
7859 sprintf(buf,
".ER %s %02d%02d%02d DH12/%s/DIH+6/",
7860 tstation[m].hb5,1900+gm->tm_year,gm->tm_mon+1,gm->tm_mday,pbuf);
7864 if(
tdata[j].used[k] == 0) {
7874 else if(
tdata[j].
stn[m].tlevel2[k].data ==-99) {
7884 sprintf(mbuf,
"%3d",
tdata[j].
stn[m].tlevel2[k].data);
7917 gm=gmtime(&old_time);
7920 sprintf(buf,
".AR %s %02d%02d%02d DH12/%s ",
7921 tstation[m].hb5,1900+gm->tm_year,gm->tm_mon+1,gm->tm_mday,pbuf);
7923 if(
tdata[j].used[4] == 0)
7926 else if(
tdata[j].
stn[m].tlevel2[4].data == -99)
7931 sprintf(mbuf,
"%3d",
tdata[j].
stn[m].tlevel2[4].data);
7958 gm=gmtime(&old_time);
7961 sprintf(buf,
".AR %s %02d%02d%02d DH12/%s ",
7962 tstation[m].hb5,1900+gm->tm_year,gm->tm_mon+1,gm->tm_mday,pbuf);
7964 if(
tdata[j].used[5] == 0)
7967 else if(
tdata[j].
stn[m].tlevel2[5].data ==-99)
7972 sprintf(mbuf,
"%3d",
tdata[j].
stn[m].tlevel2[5].data);
8015 strcpy(ebuf,
"could not execute ");
8057 for(m=0;
map[m].
hb5[0] != 0;m++) {
8063 if(
map[m].tmaps_done[num] == 1)
8072 if(
map[m].hb5[0]==0)
8077 sprintf(fbuf,
"%s%02d-%02d-%02d",
mat_file,gm->tm_mon+1,
8078 gm->tm_mday,gm->tm_year);
8086 gm=gmtime(&old_time);
8090 for(m=0;
map[m].
hb5[0] != 0;m++) {
8094 for(l=0;l < 4;l++) {
8096 if(
map[m].zones[l] < 0)
8103 for(l=0;l < 4;l++) {
8105 if(
map[m].zones[l] < 0)
8108 strcpy(xbuf,
".ER ");
8109 strcat(xbuf,
map[m].hb5);
8113 xbuf[i++]=toupper(xbuf[i]);
8118 if(strcmp(
rfc,
"cbrfc")==0 &&
8119 strlen(
map[m].hb5)==7) {
8121 printf(
"polygon write\n");
8131 if(l==0 && numzones != 1) {
8140 else if(l==0 && numzones == 1) {
8174 sprintf(mbuf,
" %02d%02d%02d",1900+gm->tm_year,gm->tm_mon+1,gm->tm_mday);
8177 strcat(xbuf,
" DH12/TAIPBZZ/DIH+6");
8184 if(strcmp(
rfc,
"cbrfc")==0 &&
8185 strlen(
map[m].hb5)==7)
8201 if(
map[m].tmaps_done[h] != 1)
8205 sprintf(mbuf,
"%4.1f ",temp);
8234 strcpy(ebuf,
"could not execute ");
8243 if(
tdata[j].used[m] != 0)
8257 if(archive_flag[k]==1)
8317 XtSetArg(args[0],XmNmenuHistory,
diswidget[k]);
8324 XtDestroyWidget(dialog);
8343 XmListCallbackStruct *cbs= (XmListCallbackStruct *) junk;
8345 XmStringGetLtoR(cbs->item, XmFONTLIST_DEFAULT_TAG, &value);
8356 XmScaleCallbackStruct *cbs= (XmScaleCallbackStruct *) junk;
8368 XmScaleCallbackStruct *cbs= (XmScaleCallbackStruct *) junk;
8380 XmScaleCallbackStruct *cbs= (XmScaleCallbackStruct *) junk;
8388 void new_dm(Widget w,XtPointer data, XtPointer junk)
8392 XmScaleCallbackStruct *cbs= (XmScaleCallbackStruct *) junk;
8394 pxtemp=(float)cbs->value/100;
8408 int save_pcpn_time_step;
8412 int save_points_flag,save_grids_flag,save_map_flag;
8414 int save_add_topo_flag;
8415 int save_add_isohyet_flag;
8417 int save_kscale,save_zscale,save_tscale;
8418 int save_change_diff_flag,save_change_pcpn_flag,save_change_isohyet_flag,save_change_topo_flag;
8419 int save_change_frz_flag,save_change_rpcpn_flag,save_change_maxmin_flag;
8420 int save_flf_on,save_qpf_on,save_maxmin_on;
8421 int save_contour_pcp_flag,save_contour_maxmin_flag;
8422 float save_filter_value;
8428 int save_contour_topo_flag;
8431 int clayer,rlayer,wlayer,slayer;
8433 signed long XSIZE,YSIZE;
8434 float lat,lon,xrat,yrat,mult,cmult,dmult;
8438 Dimension width,height;
8450 XtSetArg(args[argcount],XmNx,0);argcount++;
8451 XtSetArg(args[argcount],XmNy,0);argcount++;
8452 XtSetArg(args[argcount],XmNwidth,1280);argcount++;
8453 XtSetArg(args[argcount],XmNheight,1024);argcount++;
8457 XtSetArg(args[argcount],XmNwidth,&width);argcount++;
8458 XtSetArg(args[argcount],XmNheight,&height);argcount++;
8486 save_qflag[i]=
qflag[i];
8495 save_dflag[i]=
dflag[i];
8497 for(i=0;i<
tsmax+2;i++) {
8510 clayer=-1;wlayer=-1;rlayer=-1;slayer=-1;
8513 for(i=0;i<100;i++) {
8515 if(
ktems[i].label==NULL)
8576 XtSetArg(args[0],XtNwidth,&width);
8577 XtSetArg(args[1],XtNheight,&height);
8580 XSIZE=(long)width*10L;
8581 YSIZE=(long)height*10L;
8583 xrat=(float)XSIZE/(
float)12800;
8584 yrat=(float)YSIZE/(
float)9600;
8602 for(m=0;m<
maxgif+1;m++) {
8609 r=
dval.
a * cos(lat*conv)/(1+sin(lat*conv))
8612 s=
dval.
a * cos(lat*conv)/(1+sin(lat*conv))
8615 x1=(xmin+(
float)r * cmult)/MY;
8616 y1=(ymin+(float)
s * cmult)/MY;
8695 sprintf(tbuf,
"%02d-%02d-%02d",gm->tm_mon+1,gm->tm_mday,gm->tm_year);
8697 sprintf(cmd,
"/usr/bin/X11/xwd -id %d -out %s/grid.%s.%d.xwd",
window,
gif_file,tbuf,m);
8721 sprintf(tbuf,
"%02d-%02d-%02d",gm->tm_mon+1,gm->tm_mday,gm->tm_year);
8723 sprintf(cmd,
"/usr/bin/X11/xwd -id %d -out %s/map.%s.%d.xwd",
window,
gif_file,tbuf,m);
8755 sprintf(tbuf,
"%02d-%02d-%02d",gm->tm_mon+1,gm->tm_mday,gm->tm_year);
8757 sprintf(cmd,
"/usr/bin/X11/xwd -id %d -out %s/point.%s.%d.xwd",
window,
gif_file,tbuf,m);
8803 sprintf(tbuf,
"%02d-%02d-%02d.%s",gm->tm_mon+1,gm->tm_mday,gm->tm_year,
timefile[
pcpn_time]);
8805 sprintf(cmd,
"/usr/bin/X11/xwd -id %d -out %s/grid.%s.%d.xwd",
window,
gif_file,tbuf,m);
8838 sprintf(tbuf,
"%02d-%02d-%02d.%s",gm->tm_mon+1,gm->tm_mday,gm->tm_year,
timefile[
pcpn_time]);
8840 sprintf(cmd,
"/usr/bin/X11/xwd -id %d -out %s/map.%s.%d.xwd",
window,
gif_file,tbuf,m);
8881 sprintf(tbuf,
"%02d-%02d-%02d.%s",gm->tm_mon+1,gm->tm_mday,gm->tm_year,
timefile[
pcpn_time]);
8883 sprintf(cmd,
"/usr/bin/X11/xwd -id %d -out %s/point.%s.%d.xwd",
window,
gif_file,tbuf,m);
8935 sprintf(tbuf,
"%02d-%02d-%02d.%s",gm->tm_mon+1,gm->tm_mday,gm->tm_year,
ztimefile[
pcpn_time]);
8937 sprintf(cmd,
"/usr/bin/X11/xwd -id %d -out %s/ozgrid.%s.%d.xwd",
window,
gif_file,tbuf,m);
8972 sprintf(tbuf,
"%02d-%02d-%02d.%s",gm->tm_mon+1,gm->tm_mday,gm->tm_year,
ztimefile[
pcpn_time]);
8974 sprintf(cmd,
"/usr/bin/X11/xwd -id %d -out %s/ozma.%s.%d.xwd",
window,
gif_file,tbuf,m);
9015 sprintf(tbuf,
"%02d-%02d-%02d.%s",gm->tm_mon+1,gm->tm_mday,gm->tm_year,
ztimefile[
pcpn_time]);
9017 sprintf(cmd,
"/usr/bin/X11/xwd -id %d -out %s/ozpoint.%s.%d.xwd",
window,
gif_file,tbuf,m);
9068 sprintf(tbuf,
"%02d-%02d-%02d.%s",gm->tm_mon+1,gm->tm_mday,gm->tm_year,
ttimefile[
pcpn_time]);
9070 sprintf(cmd,
"/usr/bin/X11/xwd -id %d -out %s/otgrid.%s.%d.xwd",
window,
gif_file,tbuf,m);
9104 sprintf(tbuf,
"%02d-%02d-%02d.%s",gm->tm_mon+1,gm->tm_mday,gm->tm_year,
ttimefile[
pcpn_time]);
9106 sprintf(cmd,
"/usr/bin/X11/xwd -id %d -out %s/omat.%s.%d.xwd",
window,
gif_file,tbuf,m);
9145 sprintf(tbuf,
"%02d-%02d-%02d.%s",gm->tm_mon+1,gm->tm_mday,gm->tm_year,
ttimefile[
pcpn_time]);
9147 sprintf(cmd,
"/usr/bin/X11/xwd -id %d -out %s/otpoint.%s.%d.xwd",
window,
gif_file,tbuf,m);
9189 qflag[i]=save_qflag[i];
9192 dflag[i]=save_dflag[i];
9226 fp=fopen(
"/usr/local/apps/mm/archive/bad_snotel",
"r");
9234 p=fgets(buf,100,fp);
9240 ier=sscanf(buf,
"%s",hb5);
9244 if(strcasecmp(hb5,
station[i].hb5)==0) {
9249 p=fgets(buf,100,fp);
9254 if(strstr(buf,
"END")!=NULL)
9257 ier=sscanf(buf,
"%d %d",&zday,&reason);
9261 if(
pdata[j].ztime==zday) {
void update_bad_tvalues(int iday)
void read_bad_tvalues(char *fname, int m)
void restore_bad_tvalues(int iday)
void write_bad_tvalues(char *fname, int iday)
void write_bad_values(char *fname, int iday)
void restore_bad_values(int iday)
void read_bad_values(char *fname, int m)
void update_bad_values(int iday)
void quality_control_stations(int j)
void check_consistency(int j)
void area_select(Widget w, XtPointer data)
struct station tstation[1000]
void change_maxmin_edit_mode()
char zstation_list_custom_file[1000]
void berror(Widget widget, char *string)
Widget fgbg_toggle_button
struct station zstation[500]
void new_elevation_filter()
float reverse_filter_value
XFontStruct * info_font[10]
void change_pcp_scaling_mode()
void kill_widget(Widget widget, XtPointer client_data, XtPointer call_data)
void change_tedit_stations()
void change_method(Widget w, XtPointer data, XmDrawingAreaCallbackStruct *call_data)
void change_edit_stations()
char hrap_gage_file[1000]
Widget BuildPulldownPushMenu(Widget parent, char *menu_title, char menu_mnemonic, struct MenuItem *items)
int elevation_filter_value
void map_select(Widget w, XtPointer data, XtPointer call_data)
int main(int argc, char **argv)
struct stn_values * stn_values
void change_pcpn_edit_mode()
char hrap_zgage_file[1000]
char hrap_tgage_file[1000]
char obs_archive_file[1000]
void create_options(Widget parent, XtCallbackProc callback, int active, char **labels, int n)
void display_pcpn_options()
char station_climo_file[1000]
struct bad_daily_values bad_tvalues[6000]
struct hrap_grid * hrap_grid
void clear_drawable(Drawable pixw)
char station_list_custom_file[1000]
void area_callback(Widget w, XtPointer client_data, XtPointer call_data)
char tstation_climo_file[1000]
char proc_pcpn_file[1000]
void change_begin_date(Widget w, XtPointer data, XtPointer junk)
char basin_climo_file[1000]
char station_list_file[1000]
Widget AttachToCascade(Widget parent, char *label, Widget sub_menu)
char tstation_list_custom_file[1000]
struct MenuItem ktems[100]
void change_begin_color(Widget w, XtPointer data, XtPointer junk)
struct MenuItem area_items[10]
char forecast_basin_file[1000]
void change_pcpn_zoom_mode()
Widget topo_toggle_button
void change_z_edit_mode()
void change_maxmin_time()
void change_zedit_stations()
Widget BuildPulldownToggleMenu(Widget parent, char *menu_title, char menu_mnemonic, struct MenuItem *items)
void Create_Colors(Display *pdisplay)
struct maplayer * smaplayer[100]
Widget isoh_toggle_button
Widget CreateMenuButton(char *name, Widget parent, XtCallbackProc callback, XtPointer data, char mnemonic)
char hrap_grid_mask_file[1000]
void other_pcpn_options()
void new_reverse_filter()
void clear_error_widget()
void edit_maxminstations(int win_x, int win_y, unsigned int win_button)
void edit_stations(int win_x, int win_y, unsigned int win_button)
void edit_zstations(int win_x, int win_y, unsigned int win_button)
void estimate_daily_stations(int j)
void estimate_daily_tstations(int j)
void estimate_missing_stations(int j)
void estimate_missing_tstations(int j)
void estimate_partial_stations(int j)
void get_hrap_coord(double maximum_latitude, double minimum_latitude, double center_longitude, int smonth, int emonth)
void get_tgage_grid(double maximum_latitude, double minimum_latitude, double center_longitude)
void get_zgage_grid(double maximum_latitude, double minimum_latitude, double center_longitude)
struct tm * gmttime(time_t *secs)
void group_edit_stations(int win_x, int win_y, unsigned int win_button)
void group_edit_tstations(int win_x, int win_y, unsigned int win_button)
read_maps((char *) data, smonth, emonth)
printf("pcp %d\n", pcp_in_use[103])
get_hrap_mask(hrap_grid_mask_file)
void redraw_pcpn_legend(Drawable)
void get_station_list(char *)
void draw_map(Drawable, int, int)
int read_precip_a(char *, time_t, int)
void plot_topo(Pixmap, int, int)
long ouptime(int, int, int, int, int, int)
void render_pcp(int, int, int)
void contour_topo(Pixmap, int, int)
char * pars_line(char *, char *, char *)
void change_legend_display(int, int)
void plot_stations(Pixmap, int, int, int)
void get_area_menu(FILE *)
void change_pcpn_legend(int, int)
void plot_map(Pixmap, int, int, int)
void redraw_legend_display(Drawable)
void XmtWaitUntilMapped(Widget)
void redraw_map(int, int, unsigned int)
void redraw_topo_legend(Drawable)
void change_topo_legend(int, int)
void contour_pcpn(Pixmap pixm, int, int, char *, int)
void plot_pcpn(Pixmap pixm, int, int, char *, int)
void get_basin_data(char *, char *)
int read_precip_b(char *, time_t, int)
void read_archived_data(char *, char *, char *, time_t, char *)
void contour_isohyets(int, Pixmap, int, int)
void plot_isohyets(int, Pixmap, int, int)
void write_archived_obs_data(char *, char *, char *, time_t, char *)
int read_qpf_grids(int k, char *fname)
void write_qpf_grids(char *fname)
void plot_zstations(Drawable pix, int type, int h, int display_flag)
void plot_tstations(Drawable pix, int type, int h, int display_flag)
void quality_control_tstations(int j)
int read_snow(char *fname, int i)
int read_t_a(char *fname, time_t tget, int i)
int read_t_b(char *fname, time_t tget, int i)
int read_zlevel_a(char *fname, time_t tget, int i)
int read_zlevel_b(char *fname, time_t tget, int i)
void render_z(int pcpn_day, int pcpn_time, int pcpn_time_step)