22 extern struct ts ts[20];
30 extern unsigned long cmap[16];
51 Widget rowcol,rowcol3,pbutton,
rowcol1,sep;
57 double testdist,maxdist;
60 Dimension width,height;
61 signed long XSIZE,YSIZE;
66 char *st[10],buf[100],muf[10];
68 int time_pos,naflag,m;
86 XtSetArg(args[0],XtNwidth,&width);
87 XtSetArg(args[1],XtNheight,&height);
90 XSIZE=(long)width*10L;
91 YSIZE=(long)height*10L;
93 xrat=(float)XSIZE/(
float)12800;
94 yrat=(float)YSIZE/(
float)9600;
113 lint1=(long)
npoint[0]*(
long)MY;
114 lint2=(long)
npoint[1]*(
long)MY;
129 win_x=((x*MY-xcen)/
zoom + lint1)/mult;
130 win_y=((y*MY-ycen)/
zoom + lint2)/mult;
144 x=(((win_x*mult)-lint1)*
zoom+xcen)/MY;
145 y=(((win_y*mult)-lint2)*
zoom+ycen)/MY;
192 for(m=0;m<
tsmax;m++) {
194 if(strncmp(&
station[i].parm[3],
ts[m].abr,2)==0 &&
dflag[m+1] == 1)
215 r=
dval.
a * cos(lat*conv)/(1+sin(lat*conv))
218 s=
dval.
a * cos(lat*conv)/(1+sin(lat*conv))
221 testdist= pow((
double)(win_x-r),2) + pow((
double)(win_y-
s),2);
222 testdist= pow(testdist,.5);
224 if(testdist < maxdist) {
245 "You cannot quality control a time distributed station");
251 help_string=XmStringCreateLocalized(
"graph");
254 XtSetArg(args[argcount],XmNdeleteResponse,XmDO_NOTHING);argcount++;
255 XtSetArg(args[argcount],XmNautoUnmanage,False);argcount++;
256 XtSetArg(args[argcount],XmNwidth, 300);argcount++;
257 XtSetArg(args[argcount],XmNheight,500);argcount++;
258 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
259 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
261 XtSetArg(args[argcount],XmNhelpLabelString,help_string);argcount++;
271 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
272 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
273 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
274 rowcol=XmCreateRowColumn(
edit_dialog,
"Edit Stations",args,argcount);
279 t=XmStringCreateLocalized(buf);
281 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
282 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
283 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
284 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
285 XtManageChild(pbutton);
289 t=XmStringCreateLocalized(buf);
291 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
292 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
293 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
294 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
295 XtManageChild(pbutton);
301 strcat(buf,
"tipping");
304 strcat(buf,
"weighing");
306 t=XmStringCreateLocalized(buf);
308 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
309 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
310 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
311 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
312 XtManageChild(pbutton);
318 t=XmStringCreateLocalized(buf);
320 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
321 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
322 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
323 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
324 XtManageChild(pbutton);
331 sprintf(buf,
"estimate %5.2f in. dev %5.2f",
335 t=XmStringCreateLocalized(buf);
337 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
338 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
339 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
340 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
341 XtManageChild(pbutton);
349 sprintf(buf,
"Freezing level %dft",
352 t=XmStringCreateLocalized(buf);
354 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
355 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
356 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
357 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
358 XtManageChild(pbutton);
365 sprintf(buf,
"SNOTEL error is ");
368 strcat(buf,
" SNOTEL >> PCPN");
371 strcat(buf,
" CONTINUATION");
374 strcat(buf,
" PCPN RESET");
377 strcat(buf,
" PCPN >> SNOTEL");
379 t=XmStringCreateLocalized(buf);
381 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
382 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
383 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
384 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
385 XtManageChild(pbutton);
396 t=XmStringCreateLocalized(buf);
398 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
399 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
400 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
401 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
402 XtManageChild(pbutton);
408 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
409 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
410 XtSetArg(args[argcount],XmNselectColor,
cmap[4]);argcount++;
413 XtSetArg(args[argcount],XmNset,True);
416 XtSetArg(args[argcount],XmNset,False);
420 snotelwidget=XmCreateToggleButton(rowcol,
"Use SWD for PPD",args,argcount);
437 XtSetArg(args[argcount],XmNvalue,muf);argcount++;
438 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
439 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
440 textz=XmCreateTextField(rowcol,
"Point QPF",args,argcount);
441 XtManageChild(
textz);
445 t=XmStringCreateLocalized(
"Station quality");
448 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
449 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
450 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
451 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
452 XtManageChild(pbutton);
465 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
466 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
467 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
468 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
469 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
470 rowcol1=XmCreateRadioBox(rowcol,
"Edit Stations",args,argcount);
475 st[1]=
"Reset to Original";
480 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
481 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
482 XtSetArg(args[argcount],XmNselectColor,
cmap[4]);argcount++;
485 XtSetArg(args[argcount],XmNset,True);
488 XtSetArg(args[argcount],XmNset,False);
492 pbutton=XmCreateToggleButton(
rowcol1,st[i],args,argcount);
496 XtManageChild(pbutton);
508 st[1]=
"Screened (Force)";
509 st[2]=
"Questionable";
516 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
517 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
518 XtSetArg(args[argcount],XmNselectColor,
cmap[4]);argcount++;
521 XtSetArg(args[argcount],XmNset,True);
524 XtSetArg(args[argcount],XmNset,False);
528 pbutton=XmCreateToggleButton(
rowcol1,st[i],args,argcount);
531 XtManageChild(pbutton);
534 XtSetSensitive(pbutton,False);
553 sep=XmCreateSeparator(rowcol,
"swp",NULL,0);
559 t=XmStringCreateLocalized(
"Station Location");
561 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
562 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
563 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
564 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
565 XtManageChild(pbutton);
569 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
570 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
571 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
572 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
573 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
574 rowcol3=XmCreateRadioBox(rowcol,
"Edit Stations",args,argcount);
584 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
585 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
586 XtSetArg(args[argcount],XmNselectColor,
cmap[4]);argcount++;
589 XtSetArg(args[argcount],XmNset,True);
592 XtSetArg(args[argcount],XmNset,False);
596 pbutton=XmCreateToggleButton(rowcol3,st[i],args,argcount);
599 XtManageChild(pbutton);
604 XtManageChild(rowcol3);
605 XtManageChild(rowcol);
622 else if((
int)data==2) {
629 else if((
int)data==1) {
636 else if((
int)data==3) {
712 XtSetArg(args[0],XmNset,&bval);
754 XtSetArg(args[argcount],XmNvalue,&cstr);argcount++;
755 XtGetValues(
textz,args,argcount);
795 t=XmStringCreateLocalized(
"Inconsistent data");
797 XtSetArg(args[argcount],XmNdeleteResponse,XmDO_NOTHING);argcount++;
798 XtSetArg(args[argcount],XmNautoUnmanage,False);argcount++;
799 XtSetArg(args[argcount],XmNwidth, 300);argcount++;
800 XtSetArg(args[argcount],XmNheight,300);argcount++;
801 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
802 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
803 XtSetArg(args[argcount],XmNdialogStyle,
804 XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
806 XtSetArg(args[argcount],XmNmessageString,
t);argcount++;
811 XtUnmanageChild(XmMessageBoxGetChild(
cons_dialog,XmDIALOG_CANCEL_BUTTON));
812 XtUnmanageChild(XmMessageBoxGetChild(
cons_dialog,XmDIALOG_HELP_BUTTON));
813 XtUnmanageChild(XmMessageBoxGetChild(
cons_dialog,XmDIALOG_SEPARATOR));
815 XtSetArg(args[argcount],XmNbackground,
mmap[1]);argcount++;
816 XtSetArg(args[argcount],XmNforeground,
mmap[0]);argcount++;
817 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
818 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
819 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
820 rowcol=XmCreateRowColumn(
cons_dialog,
"Edit Stations",args,argcount);
827 XtSetArg(args[argcount],XmNlabelString,
t);argcount++;
828 pbutton=XmCreateLabel(rowcol,
"Label",args,argcount);
829 XtManageChild(pbutton);
837 XtSetArg(args[argcount],XmNvalue,muf);argcount++;
839 textk[m]=XmCreateTextField(rowcol,
"Point QPF",args,argcount);
840 XtManageChild(
textk[m]);
845 XtManageChild(rowcol);
889 printf(
"conditions met\n");
945 XtSetArg(args[0],XmNmenuHistory,
diswidget[k]);
1096 void read_text(Widget w,XtPointer data, XtPointer call_data)
1125 XtSetArg(args[argcount],XmNvalue,&cstr);argcount++;
1126 XtGetValues(
textk[k],args,argcount);
1137 else if(fdif > .005 && p == NULL) {
1194 XtSetArg(args[0],XmNmenuHistory,
diswidget[k]);
void restore_bad_values(int iday)
void update_bad_values(int iday)
void quality_control_stations(int j)
void check_consistency(int j)
void berror(Widget widget, char *string)
float reverse_filter_value
void kill_widget(Widget widget, XtPointer client_data, XtPointer call_data)
int elevation_filter_value
char station_list_custom_file[1000]
void display_data(char *hb5, char *pc, int dmonth, int dday, int dyear, int dhour, int ddays)
void change_station_quality(Widget w, XtPointer data, XtPointer call_data)
void reset_station_quality(Widget w, XtPointer data, XtPointer call_data)
void graph_file(Widget w, XtPointer data, XtPointer call_data)
void edit_stations(int win_x, int win_y, unsigned int win_button)
void change_custom_file(Widget w, XtPointer data, XtPointer call_data)
void change_station_location(Widget w, XtPointer data, XtPointer call_data)
void estimate_daily_stations(int j)
void estimate_partial_stations(int j)
printf("pcp %d\n", pcp_in_use[103])