Mapper
mapper.c
Go to the documentation of this file.
1 #include <sqlhdr.h>
2 #include <sqliapi.h>
3 #line 1 "mapper.ec"
4 #include "prototypes.h"
5 
6 char saved_hb5[6];
7 char nexrad_file[100];
8 char savefile[100];
9 char rec_found[100];
10 char *ls[]={"topography",
11  "precipitation",
12  "temperature",
13  "humidity",
14  "wind"};
15 char *legend[100];
17 char grid_file[100];
19 char hrap_file[100];
20 char data_file[100],decode_file[100];
21 
23 
24 float hr1_rainfall_max=3.0;
25 float hr6_rainfall_max=7.5;
26 float hr24_rainfall_max=15.0;
27 float rainfall_level_1[20];
28 float rainfall_level_2[20];
29 float filter_value=-9999;
30 float delim[16];
31 
32 int debug=0;
33 int drt=0;
35 int saved_j;
37 int topo_number=-1;
38 int topo_buf[10];
39 int print_flag=0;
42 int defrain=-1;
43 int defscale=0;
44 int deflinear=0;
45 int hgflag=1,hpflag=1;
46 int nexrad_flag=-1;
51 int ditime[]={30,60,120,180,240,360,540,720,1080,1440,2880,4320,5760,7200,10080};
52 int maxitimes=15;
53 int regrid_flag=-1;
54 int legend_flag=-1;
56 int maxdays=7;
57 int maxhours=168;
58 int maxmonths=60;
60 int indexx,dt=-1;
62 int rain_flag=-1;
63 int data_type=-1;
65 int plot_view=6;
68 int xh_logo[4],yh_logo[4];
69 int cursorflag[4];
70 int spoint[2];
71 int contour_flag=-1;
72 int raster_flag=-1;
78 int pcp_in_use[50];
79 int fgbgflag=-1;
80 int pcp_map_flag=-1;
81 int pcp_flag=0;
84 int first_area=-1;
87 int exp_flag=-1;
92 int xsave[10];
93 int posit;
94 int ilegend_save=-1;
95 int qlegend_save=-1;
101 int kscale=0,iscale=0;
105 int opoint[2],npoint[2],off[100],zoom=1;
106 int dflag[10];
108 
109 signed long xclip=25,yclip=25;
110 
111 unsigned car[100];
112 
113 unsigned int sensortype;
114 unsigned int w_logo[4],h_logo[4];
115 
116 unsigned long zmap[16],xmap[16],imap[16],nmap[20],qmap[16],tmap[50],vmap[50];
117 unsigned long mmap[16],cmap[16],amap[16];
118 
121 struct database dbase;
122 struct sindx *sdx;
125 struct save_rec save_rec[10];
127 struct grid *grid;
128 struct saved *fsaved;
129 /*
130 struct custom custom[6000];
131 */
132 struct custom custom[9000];
133 struct map map[500];
134 struct Cur cursor[4];
135 struct display_set display_set[4];
136 struct MenuItem ktems[100];
137 struct MenuItem area_items[10];
138 struct MenuItem drt_items[100];
139 struct save save;
140 struct pcp *pcp;
141 struct pcp *spf;
143 struct topo *topo=NULL;
144 struct isoh *isoh=NULL;
145 struct maplayer *smaplayer[100];
148 struct dval dval;
149 
150 time_t itime[500],dtime[500],xtime[500],htime[500];
151 time_t qtime;
152 
156 
157 Dimension owidth,oheight;
158 
159 Display *display;
160 
161 Font font[10];
162 
163 GC gc;
164 
165 Pixmap pixf;
166 Pixmap pixb;
167 Pixmap logo[4];
168 Pixmap pixcursor[4];
169 
170 Region region;
171 
172 String fallbacks[]={"*fontList: -adobe-helvetica-bold-r-*-140-*",NULL};
173 
175 Widget rowcolzoom;
176 Widget widg;
177 Widget mbutton[100];
178 Widget mpbutton[10];
179 Widget hgwidget[3];
180 Widget draw_dialog[10];
182 Widget bdrawing_area[10];
183 Widget cerr;
184 Widget mwidget[50];
187 Widget drt_menu;
188 
189 Window bwindow[20];
191 Window window;
192 
193 XColor colors[256];
194 
195 XFontStruct *info_font[10];
196 
197 XImage *image;
198 
199 XtAppContext app;
200 XtIntervalId timer;
201 
202 void allocate_colors(int);
204 void find_name();
205 void quit_callback();
207 void quit_all();
212 void change_plot();
217 void kill_main_widget();
218 void clear_error_widget();
226 void view_temperature();
227 void view_precipitation();
228 void drt_change();
229 void get_current_data();
230 void itation();
231 void view_humidity();
232 void view_wind();
233 void view_stage();
234 void view_snow();
235 void view_watertemp();
236 void change_mode();
237 void kill_dialog();
238 void new_filter();
241 void rfs_options();
242 void hg_select();
243 void get_data();
244 
245 /*------------------------------------------------------------*/
246 
247 int main(int argc, char *argv[])
248 {
249 
250 char *fontname,*p;
251 char *tstring;
252 char atname[100];
253 
254 int depth, argcount,i;
255 int line_style,cap_style,join_style,j;
256 int gflag=0;
257 int c;
258 int ier;
259 
260 unsigned line_width;
261 
262 FILE *fp;
263 
264 Arg args[20];
265 
266 
267 /*
268  * $database "fastetc";
269  */
270 #line 264 "mapper.ec"
271  {
272 #line 264 "mapper.ec"
273  sqli_db_open("fastetc", 0);
274 #line 264 "mapper.ec"
275  }
276 
277 /*
278 while((c=getopt(argc,argv,"g"))!=-1)
279 {
280  switch(c)
281  {
282  case 'g':
283  gflag=1;
284  break;
285  default:
286  exit(1);
287  }
288 }
289 */
290 
291 /* check to see if any command line arguments */
292  for(i=1;i<=argc-1;i++)
293  {
294  /* check debug flag */
295  if(!strcmp(argv[i],"-debug"))
296  debug=1;
297 
298  /* displaced real time mode */
299  if(!strcmp(argv[i],"-drt"))
300  drt=1;
301  }
302 
303 topo_buf[0]=800;
304 topo_buf[1]=1600;
305 topo_buf[2]=2400;
306 topo_buf[3]=3200;
307 topo_buf[4]=4000;
308 
309 rec_found[0]=0;
310 
311 if(gflag==1)
312 {
313  for(i=0;i<10;i++)
314  {
315  if(i==0)
316  sprintf(atname,"/mapper");
317  else
318  sprintf(atname,"/mapper%d",i);
319  /*ier=qnx_name_attach(0,atname);*/
320  ier = -1;
321  if(ier!=-1)
322  break;
323  }
324 }
325 
326 else
327 {
328  for(i=0;i<10;i++)
329  {
330  if(i==0)
331  sprintf(atname,"mapper");
332  else
333  sprintf(atname,"mapper%d",i);
334  /*ier=qnx_name_attach(0,atname); */
335  ier = -1;
336  if(ier!=-1)
337  break;
338  }
339 }
340 
344 maxindex4=(maxdays-1)*4;
345 maxindex5=(maxdays-1);
346 /*maxindex5=2;*/
347 maxindex6=6;
349 
350 /*
351 strcpy(nexrad_file,"/awips/hydroapps/rfc/local/apps/mapper/nexrad/scratch");
352 */
353 strcpy(nexrad_file,"/local/apps/mapper/nexrad/scratch");
354 
355 legend[0]="Air Temperature (Deg F)";
356 legend[1]="24hr Air Temperature change (Deg F)";
357 legend[2]="Maximum Air Temperature (Deg F)";
358 legend[3]="Stage/Pool (Ft)";
359 legend[4]="Flow (Kcfs)/Storage (Kac-Ft)";
360 legend[5]="Depth above flood stage (Ft)";
361 legend[6]="Percent of flood flow";
362 legend[7]="Minimum Air Temperature (Deg F)";
363 legend[9]="Dewpoint (Deg F)";
364 legend[8]="Relative Humidity";
365 legend[10]="24hr Dewpoint change (Deg F)";
366 legend[11]="Wind Speed (mph)";
367 legend[12]="Wind Direction (deg)";
368 legend[13]="Instantaneous Precipitation";
369 legend[14]="Hourly Precipitation";
370 legend[15]="Six Hourly Precipitation";
371 legend[16]="Daily Precipitation";
372 legend[17]="Snow Water Equivalent";
373 legend[18]="Change in Snow Water Equivalent";
374 legend[19]="not assigned";
375 /*legend[19]="Snow Water Equivalent - %Avg";*/
376 legend[20]="not assigned";
377 legend[21]="Six Hourly Precipitation - QC'd";
378 legend[22]="Daily Precipitation - QC'd";
379 legend[23]="Monthly Precipitation";
380 legend[24]="Monthly Precipitation - %Avg";
381 legend[25]="WY Precipitation";
382 legend[26]="WY Precipitation - %Avg";
383 legend[27]="Snow Water Equivalent (inches)";
384 legend[28]="Snow Water Equivalent - %Avg";
385 legend[29]="SWE - % of April 1 Average";
386 legend[30]="Water Temperature (Deg F)";
387 
388 
389 custom[0].hb5[0]=0;
390 save.inuse=-1;
391 spoint[0]=-1;
392 spoint[1]=-1;
393 fsaved=NULL;
394 
395 for(j=0;j<100;j++)
396 {
397  smaplayer[j]=NULL;
398  car[j]=-1;
399  off[j]=-1;
400 }
401 
402 for(j=0;j<10;j++)
403  dflag[j]=1;
404 
405 for(j=0;j<20;j++)
406 {
407  rainfall_level_1[j]=9999;
408  rainfall_level_2[j]=9999;
409 }
410 
411 /*
412 fp=fopen("/awips/hydroapps/rfc/local/apps/mapper/maps/area","r");
413 */
414 fp=fopen("/local/apps/mapper/maps/area","r");
415 
416 if(!fp)
417 {
418  printf("could not open area\n");
419  exit(1);
420 }
421 
422 /* build area menu */
424 fclose(fp);
425 
426 npoint[0]=opoint[0]=320;
427 npoint[1]=opoint[1]=240;
428 zoom=1;
429 
430 /*Create and initialize the top-level widget */
431 
432 XtSetLanguageProc(NULL,NULL,NULL);
433 
434 top_level = XtVaAppInitialize(&app,"mapper awips.1.6",NULL,0,&argc,argv,fallbacks,NULL);
435 
436 /*Initialize the Main Window */
437 
438 tstring="mapper awips.1.7";
439 
440 XtSetArg(args[0],XmNtitle,tstring);
441 XtSetValues(top_level,args,1);
442 
443 
444 argcount=0;
445 /*
446 XtSetArg(args[argcount],XmNwidth,774);argcount++;
447 XtSetArg(args[argcount],XmNheight,580);argcount++;
448 */
449 XtSetArg(args[argcount],XmNwidth,1024);argcount++;
450 XtSetArg(args[argcount],XmNheight,768);argcount++;
451 XtSetArg(args[argcount],XmNbackground,0);argcount++;
452 
453 main_window=XmCreateMainWindow(top_level,"Main",args,argcount);
454 
455 XtManageChild(main_window);
456 
457 
458 owidth=640;
459 oheight=480;
460 
461 /* Create the drawing area */
462 
463 argcount=0;
464 /*
465 XtSetArg(args[argcount],XmNwidth,774);argcount++;
466 XtSetArg(args[argcount],XmNheight,580);argcount++;
467 */
468 XtSetArg(args[argcount],XmNwidth,1024);argcount++;
469 XtSetArg(args[argcount],XmNheight,768);argcount++;
470 XtSetArg(args[argcount],XmNresizePolicy,XmRESIZE_ANY);argcount++;
471 XtSetArg(args[argcount],XmNbackground,0);argcount++;
472 drawing_area=XmCreateDrawingArea(main_window,"drawing_area",args,argcount);
473 
474 XtManageChild(drawing_area);
475 
476 XmMainWindowSetAreas(main_window,NULL,NULL,NULL,NULL,drawing_area);
477 
478 display=XtDisplay(drawing_area);
479 
480 fontname="*Adobe-Helvetica-Medium-r-normal-*-10-100-75*";
481 font[0]=XLoadFont(display,fontname);
482 info_font[0]=XQueryFont(display,font[0]);
483 
484 fontname="*Adobe-Helvetica-Bold-o-normal-*-10-100-75*";
485 font[1]=XLoadFont(display,fontname);
486 info_font[1]=XQueryFont(display,font[1]);
487 
488 fontname="*Adobe-Helvetica-Bold-r-normal-*-18-180-75*";
489 font[2]=XLoadFont(display,fontname);
490 info_font[2]=XQueryFont(display,font[2]);
491 
492 fontname="*Adobe-Helvetica-Bold-r-normal-*-14-140-75*";
493 font[3]=XLoadFont(display,fontname);
494 info_font[3]=XQueryFont(display,font[3]);
495 
496 fontname="*Adobe-Helvetica-Bold-r-normal-*-12-120-75*";
497 font[4]=XLoadFont(display,fontname);
498 info_font[4]=XQueryFont(display,font[4]);
499 
500 legendxsize =XTextWidth(info_font[0],"10.0 to 10.0",12) + rs + 10 + 10;
501 
502 root_win=RootWindow(display,DefaultScreen(display));
503 max_width=DisplayWidth(display,DefaultScreen(display));
504 max_height=DisplayHeight(display,DefaultScreen(display));
505 depth=DefaultDepth(display,DefaultScreen(display));
506 
509 
510 /* Set up cursor pixmaps */
511 
512 for(i=0;i<4;i++)
513  cursorflag[i]=-1;
514 
515 pixcursor[0]=XCreatePixmap(display,root_win,16,16,depth);
516 pixcursor[1]=XCreatePixmap(display,root_win,16,16,depth);
517 pixcursor[2]=XCreatePixmap(display,root_win,16,16,depth);
518 pixcursor[3]=XCreatePixmap(display,root_win,16,16,depth);
519 
520 /*Make Colors and Create GC */
521 
523 
524 gc= XCreateGC(display,pixf,0,0);
525 
528 
529 image=XGetImage(display,pixf,0,0,max_width,max_height,AllPlanes,ZPixmap);
530 
531 argcount=0;
532 /*
533 XtSetArg(args[argcount],XmNwidth,774);argcount++;
534 XtSetArg(args[argcount],XmNheight,580);argcount++;
535 XtSetArg(args[argcount],XmNwidth,1024);argcount++;
536 XtSetArg(args[argcount],XmNheight,50);argcount++;
537 */
538 XtSetArg(args[argcount],XmNheight,30);argcount++;
539 XtSetArg(args[argcount],XmNbackground,0);argcount++;
540 XtSetArg(args[argcount],XmNforeground,0);argcount++;
541 menu_bar=XmCreateMenuBar(main_window,"Menubar",args,argcount);
542 XtManageChild(menu_bar);
543 
544 line_width=0;
545 line_style=LineSolid;
546 cap_style=CapButt;
547 join_style=JoinMiter;
548 
549 XSetLineAttributes(display,gc,line_width,line_style,cap_style,join_style);
550 
551 XtAddCallback(drawing_area,XmNexposeCallback,handle_expose,NULL);
552 XtAddCallback(drawing_area,XmNresizeCallback,handle_resize,NULL);
553 XtAddEventHandler(drawing_area,ButtonPressMask,FALSE,handle_mouse,NULL);
554 XtAddEventHandler(drawing_area,PointerMotionMask,FALSE,handle_motion,NULL);
555 XtAddEventHandler(drawing_area,ButtonReleaseMask,FALSE,handle_release,NULL);
556 
557 XtRealizeWidget(top_level);
558 window=XtWindow(drawing_area);
559 
560 watch_cursor=XCreateFontCursor(display,XC_watch);
561 crosshair_cursor=XCreateFontCursor(display,XC_crosshair);
562 dotbox_cursor=XCreateFontCursor(display,XC_plus);
563 
564 if(XReadBitmapFile(display,root_win,
565  "/usr/include/X11/bitmaps/left_ptr",
566  &w_logo[1],&h_logo[1],&logo[1],&xh_logo[1],&yh_logo[1])!=BitmapSuccess)
567 {
568  printf("could not find /usr/include/X11/bitmaps/left_ptr\n");
569  exit(1);
570 }
571 
572 if(XReadBitmapFile(display,root_win,
573  "/usr/include/X11/bitmaps/boxes",
574  &w_logo[0],&h_logo[0],&logo[0],&xh_logo[0],&yh_logo[0])!=BitmapSuccess)
575 {
576  printf("could not find /usr/include/X11/bitmaps/boxes\n");
577  exit(1);
578 }
579 
580 if(XReadBitmapFile(display,root_win,
581  "/usr/include/X11/bitmaps/cross_weave",
582  &w_logo[2],&h_logo[2],&logo[2],&xh_logo[2],&yh_logo[2])!=BitmapSuccess)
583 {
584  printf("could not find /usr/include/X11/bitmaps/cross_weave\n");
585  exit(1);
586 }
587 
588 XGrabButton(display,AnyButton,AnyModifier,window,TRUE,
589  ButtonPressMask | ButtonMotionMask | ButtonReleaseMask,
590  GrabModeAsync,GrabModeAsync,XtWindow(top_level),
591  XCreateFontCursor(display,XC_crosshair));
592 
593 XDefineCursor(display,root_win,dotbox_cursor);
594 
595 XmUpdateDisplay(top_level);
596 
598 
599 XtAppMainLoop(app);
600 }
601 
603 {
604 Arg args[10];
605 Cardinal argcount;
606 XmString str[10],t;
607 int number,i;
608 Widget pbutton,rowcol;
609 
610  t=XmStringCreateLocalized("Map areas");
611 
612  for(i=0;i<10;i++)
613  {
614  if(area_items[i].label==NULL)
615  break;
616  str[i]=XmStringCreateLocalized(area_items[i].label);
617  }
618 
619  number=i;
620 
621  argcount=0;
622  XtSetArg(args[argcount],XmNwidth, 300);argcount++;
623  XtSetArg(args[argcount],XmNheight,250);argcount++;
624  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
625  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
626  XtSetArg(args[argcount],XmNdialogStyle,
627  XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
628  XtSetArg(args[argcount],XmNautoUnmanage,False);argcount++;
629  start_dialog=XmCreateMessageDialog(drawing_area,"Map areas",args,argcount);
630 
631  XtUnmanageChild(XmMessageBoxGetChild(start_dialog,XmDIALOG_HELP_BUTTON));
632  XtUnmanageChild(XmMessageBoxGetChild(start_dialog,XmDIALOG_SEPARATOR));
633 
634  argcount=0;
635  XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
636  rowcol=XmCreateRowColumn(start_dialog,"dummy",args,argcount);
637 
638  t=XmStringCreateLocalized("Map area");
639  argcount=0;
640  XtSetArg(args[argcount],XmNlabelString,t);argcount++;
641  pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
642  XtManageChild(pbutton);
643  XmStringFree(t);
644 
645  argcount=0;
646  XtSetArg(args[argcount],XmNitemCount,number);argcount++;
647  XtSetArg(args[argcount],XmNitems,str);argcount++;
648  XtSetArg(args[argcount],XmNlistSizePolicy,XmCONSTANT);argcount++;
649  XtSetArg(args[argcount],XmNvisibleItemCount,5);argcount++;
650  XtSetArg(args[argcount],XmNselectionPolicy,XmSINGLE_SELECT);argcount++;
651  area_menu=XmCreateScrolledList(rowcol,"areas",args,argcount);
652  XtAddCallback(area_menu,XmNsingleSelectionCallback,save_selection2,NULL);
653 
654  XtManageChild(area_menu);
655  XtManageChild(rowcol);
656  XtManageChild(start_dialog);
657 
658  XtAddCallback(start_dialog,XmNokCallback,area_callback,NULL);
659  XtAddCallback(start_dialog,XmNcancelCallback,quit_callback,NULL);
660 
661  for(i=0;i<number;i++)
662  XmStringFree(str[i]);
663 }
664 
665 void area_callback(Widget w,XtPointer client_data,XtPointer call_data)
666 {
667 int i;
668 char tstring[100];
669 int argcount;
670 Arg args[10];
671 
672  if(rec_found[0]==0)
673  return;
674 
675  for(i=0;i<10;i++)
676  {
677  if(area_items[i].label==NULL)
678  break;
679 
680  if(strcmp(rec_found,area_items[i].label)==0)
681  {
682  sprintf(tstring,"mapper awips.1.7 (%s)",rec_found);
683  XtSetArg(args[0],XmNtitle,tstring);
684  XtSetValues(top_level,args,1);
685 
686  XtDestroyWidget(start_dialog);
687  XmUpdateDisplay(top_level);
688  area_select(drawing_area,area_items[i].callback_data);
689  }
690  }
691 }
692 
693 Widget BuildPulldownToggleMenu(Widget parent,char *menu_title,char
694  menu_mnemonic,struct MenuItem *items)
695 {
696  Widget Pulldown, button;
697  int i;
698  int argcount;
699  Arg args[10];
700  int jj;
701 
702  argcount=0;
703 
704  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
705  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
706  Pulldown=XmCreatePulldownMenu(parent,"pulldown",args,argcount);
707 
708  jj=0;
709  for(i=0;items[i].label!=NULL;i++)
710  {
711  argcount=0;
712 
713  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
714  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
715  XtSetArg(args[argcount],XmNselectColor,cmap[4]);argcount++;
716 
717  if(i==topo_number && add_topo_flag==1)
718  XtSetArg(args[argcount],XmNset,True);
719 
720  else if(i==topo_number)
721  XtSetArg(args[argcount],XmNset,False);
722 
723  else if(off[jj]==1)
724  XtSetArg(args[argcount],XmNset,True);
725 
726  else
727  XtSetArg(args[argcount],XmNset,False);
728 
729  argcount++;
730 
731  mbutton[i]=XmCreateToggleButton(Pulldown,items[i].label,args,argcount);
732 
733  if(i==fgbg_number)
735 
736  XtAddCallback(mbutton[i],XmNvalueChangedCallback,items[i].callback,
737  items[i].callback_data);
738 
739  XtManageChild(mbutton[i]);
740 
741  if(i != topo_number)
742  jj++;
743  }
744  return(Pulldown);
745 }
746 
747 Widget BuildPulldownPushMenu(Widget parent,char *menu_title,char menu_mnemonic,struct MenuItem *items)
748 
749 {
750 
751 Widget Pulldown, button;
752 int i;
753 int argcount;
754 Arg args[10];
755 
756  argcount=0;
757  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
758  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
759  Pulldown=XmCreatePulldownMenu(parent,"pulldown",args,argcount);
760 
761  for(i=0;items[i].label!=NULL;i++)
762  {
763  button=XmCreatePushButton(Pulldown,items[i].label,args,argcount);
764  XtAddCallback(button,XmNactivateCallback,items[i].callback,
765  items[i].callback_data);
766  XtManageChild(button);
767  }
768  return(Pulldown);
769 }
770 
771 Widget AttachToCascade(Widget parent, char *label,Widget sub_menu)
772 
773 {
774 Arg args[10];
775 Cardinal argcount;
776 Widget cbutton;
777 
778  argcount=0;
779  XtSetArg(args[argcount],XmNsubMenuId,sub_menu);argcount++;
780  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
781  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
782  cbutton=XmCreateCascadeButton(parent,label,args,argcount);
783  XtManageChild(cbutton);
784  return(cbutton);
785 }
786 
787 void Create_Colors(Display *pdisplay)
788 {
789 int scr=DefaultScreen(display);
790 Colormap def_colormap=DefaultColormap(display,scr);
791 int ncolors,i,nplanes,npixels,a=256,new_map;
792 unsigned long pixels[70];
793 unsigned long planemask;
794 float mult[10];
795 int x;
796 
797  /* Get total number of cells */
798 
799  ncolors=DisplayCells(display,scr);
800 
801  /* Initialize colors */
802 
803  for(i=0;i<ncolors;i++)
804  {
805  colors[i].pixel=i;
806  colors[i].flags=DoRed|DoGreen|DoBlue;
807  }
808 
809 /* Set Up Screen Colors */
810 
811 colors[0].red= 0*a;colors[0].green= 0*a;colors[0].blue= 0*a;
812 colors[1].red= 188*a;colors[1].green= 188*a;colors[1].blue= 188*a;
813 colors[2].red= 188*a;colors[2].green= 152*a;colors[2].blue= 67*a;
814 colors[3].red= 100*a;colors[3].green= 188*a;colors[3].blue= 20;
815 colors[4].red= 0*a;colors[4].green= 255*a;colors[4].blue= 255*a;
816 colors[5].red= 0*a;colors[5].green= 127*a;colors[5].blue= 255*a;
817 colors[6].red= 0*a;colors[6].green= 255*a;colors[6].blue= 0*a;
818 colors[7].red= 255*a;colors[7].green= 0*a;colors[7].blue= 0*a;
819 colors[8].red= 188*a;colors[8].green= 188*a;colors[8].blue= 0*a;
820 colors[9].red= 110*a;colors[9].green= 110*a;colors[9].blue= 110*a;
821 colors[10].red= 0*a;colors[10].green=139*a;colors[10].blue= 0*a;
822 colors[11].red= 0*a;colors[11].green=175*a;colors[11].blue=175*a;
823 colors[12].red=255*a;colors[12].green= 0*a;colors[12].blue=255*a;
824 colors[13].red=175*a;colors[13].green= 0*a;colors[13].blue=175*a;
825 colors[14].red= 0*a;colors[14].green= 0*a;colors[14].blue=255*a;
826 colors[15].red= 0*a;colors[15].green= 0*a;colors[15].blue=175*a;
827 colors[16].red=255*a;colors[16].green=255*a;colors[16].blue= 0*a;
828 colors[17].red= 0*a;colors[17].green=139*a;colors[17].blue=139*a;
829 colors[18].red=255*a;colors[18].green=156*a;colors[18].blue= 0*a;
830 colors[19].red=175*a;colors[19].green= 0*a;colors[19].blue= 0*a;
831 colors[20].red=255*a;colors[20].green=255*a;colors[20].blue=255*a;
832 
833 colors[56].red=130*a;colors[56].green=130*a;colors[56].blue= 0*a;
834 colors[57].red=114*a;colors[57].green=159*a;colors[57].blue=255*a;
835 colors[58].red=255*a;colors[58].green=120*a;colors[58].blue=120*a;
836 colors[59].red=215*a;colors[59].green=215*a;colors[59].blue=215*a;
837 colors[60].red=220*a;colors[60].green=220*a;colors[60].blue=220*a;
838 colors[61].red=225*a;colors[61].green=225*a;colors[61].blue=225*a;
839 colors[62].red=230*a;colors[62].green=230*a;colors[62].blue=230*a;
840 colors[63].red=235*a;colors[63].green=235*a;colors[63].blue=235*a;
841 colors[64].red=215*a;colors[64].green=95*a;colors[64].blue=238*a;
842 colors[65].red=90*a;colors[65].green=90*a;colors[65].blue=90*a;
843 
844 colors[24].red=130*a;colors[24].green=130*a;colors[24].blue=130*a;
845 colors[31].red=130*a;colors[31].green=115*a;colors[31].blue= 90*a;
846 colors[38].red=130*a;colors[38].green= 90*a;colors[38].blue= 65*a;
847 colors[45].red=130*a;colors[45].green=130*a;colors[45].blue= 65*a;
848 colors[52].red= 0*a;colors[52].green=130*a;colors[52].blue= 0*a;
849 
850 mult[0]=0.80;
851 mult[1]=0.87;
852 mult[2]=0.94;
853 mult[3]=1.00;
854 mult[4]=1.15;
855 mult[5]=1.30;
856 mult[6]=1.45;
857 
858  for(i=0;i<7;i++)
859  {
860  x=i-3;
861 
862  colors[24+x].red=mult[i]*colors[24].red;
863  colors[24+x].green=mult[i]*colors[24].green;
864  colors[24+x].blue=mult[i]*colors[24].blue;
865 
866  colors[31+x].red=mult[i]*colors[31].red;
867  colors[31+x].green=mult[i]*colors[31].green;
868  colors[31+x].blue=mult[i]*colors[31].blue;
869 
870  colors[38+x].red=mult[i]*colors[38].red;
871  colors[38+x].green=mult[i]*colors[38].green;
872  colors[38+x].blue=mult[i]*colors[38].blue;
873 
874  colors[45+x].red=mult[i]*colors[45].red;
875  colors[45+x].green=mult[i]*colors[45].green;
876  colors[45+x].blue=mult[i]*colors[45].blue;
877 
878  colors[52+x].red=mult[i]*colors[52].red;
879  colors[52+x].green=mult[i]*colors[52].green;
880  colors[52+x].blue=mult[i]*colors[52].blue;
881  }
882 
883 allocate_colors(66);
884 
885 cmap[0]=colors[0].pixel;
886 cmap[8]=colors[1].pixel;
887 cmap[6]=colors[2].pixel;
888 cmap[12]=colors[3].pixel;
889 cmap[2]=colors[4].pixel;
890 cmap[10]=colors[5].pixel;
891 cmap[14]=colors[6].pixel;
892 cmap[4]=colors[7].pixel;
893 cmap[1]=colors[20].pixel;
894 cmap[3]=colors[11].pixel;
895 cmap[5]=colors[20].pixel;
896 cmap[7]=colors[16].pixel;
897 cmap[9]=colors[56].pixel;
898 
899 nmap[0]=colors[1].pixel;
900 nmap[1]=colors[9].pixel;
901 nmap[2]=colors[17].pixel;
902 nmap[3]=colors[11].pixel;
903 nmap[4]=colors[6].pixel;
904 nmap[5]=colors[10].pixel;
905 nmap[6]=colors[12].pixel;
906 nmap[7]=colors[13].pixel;
907 nmap[8]=colors[14].pixel;
908 nmap[9]=colors[15].pixel;
909 nmap[10]=colors[8].pixel;
910 nmap[11]=colors[16].pixel;
911 nmap[12]=colors[18].pixel;
912 nmap[13]=colors[7].pixel;
913 nmap[14]=colors[19].pixel;
914 nmap[15]=colors[20].pixel;
915 nmap[16]=colors[65].pixel;
916 
917  for(i=0;i<16;i++)
918  {
919  qmap[i]=nmap[i];
920  imap[i]=nmap[i];
921  xmap[i]=nmap[i];
922  }
923 
924 tmap[0]=colors[21].pixel;
925 tmap[1]=colors[22].pixel;
926 tmap[2]=colors[23].pixel;
927 tmap[3]=colors[24].pixel;
928 tmap[4]=colors[25].pixel;
929 tmap[5]=colors[26].pixel;
930 tmap[6]=colors[27].pixel;
931 
932 tmap[7]=colors[28].pixel;
933 tmap[8]=colors[29].pixel;
934 tmap[9]=colors[30].pixel;
935 tmap[10]=colors[31].pixel;
936 tmap[11]=colors[32].pixel;
937 tmap[12]=colors[33].pixel;
938 tmap[13]=colors[34].pixel;
939 
940 tmap[14]=colors[35].pixel;
941 tmap[15]=colors[36].pixel;
942 tmap[16]=colors[37].pixel;
943 tmap[17]=colors[38].pixel;
944 tmap[18]=colors[39].pixel;
945 tmap[19]=colors[40].pixel;
946 tmap[20]=colors[41].pixel;
947 
948 tmap[21]=colors[42].pixel;
949 tmap[22]=colors[43].pixel;
950 tmap[23]=colors[44].pixel;
951 tmap[24]=colors[45].pixel;
952 tmap[25]=colors[46].pixel;
953 tmap[26]=colors[47].pixel;
954 tmap[27]=colors[48].pixel;
955 
956 tmap[28]=colors[49].pixel;
957 tmap[29]=colors[50].pixel;
958 tmap[30]=colors[51].pixel;
959 tmap[31]=colors[52].pixel;
960 tmap[32]=colors[53].pixel;
961 tmap[33]=colors[54].pixel;
962 tmap[34]=colors[55].pixel;
963 
964 tmap[35]=colors[56].pixel;
965 tmap[36]=colors[57].pixel;
966 tmap[37]=colors[58].pixel;
967 tmap[38]=colors[59].pixel;
968 tmap[39]=colors[60].pixel;
969 tmap[40]=colors[61].pixel;
970 tmap[41]=colors[62].pixel;
971 tmap[42]=colors[63].pixel;
972 tmap[43]=colors[64].pixel;
973 
974  for(i=0;i<44;i++)
975  vmap[i]=tmap[i];
976 
977 zmap[0]=colors[6].pixel;
978 zmap[1]=colors[4].pixel;
979 zmap[2]=colors[16].pixel;
980 zmap[3]=colors[12].pixel;
981 zmap[4]=colors[6].pixel;
982 zmap[5]=colors[4].pixel;
983 zmap[6]=colors[16].pixel;
984 zmap[7]=colors[12].pixel;
985 
986 mmap[0]=colors[0].pixel;
987 mmap[1]=colors[57].pixel;
988 mmap[2]=colors[1].pixel;
989 mmap[3]=colors[20].pixel;
990 mmap[4]=colors[7].pixel;
991 mmap[5]=colors[16].pixel;
992 mmap[6]=colors[10].pixel;
993 mmap[7]=colors[4].pixel;
994 mmap[8]=colors[64].pixel;
995 mmap[9]=colors[18].pixel;
996 mmap[10]=colors[6].pixel;
997 
998 amap[0]=colors[20].pixel;
999 amap[1]=colors[58].pixel;
1000 amap[2]=colors[4].pixel;
1001 amap[3]=colors[16].pixel;
1002 amap[4]=colors[12].pixel;
1003 
1004 return;
1005 }
1006 
1007 void allocate_colors(int maxcolors)
1008 {
1009 int j;
1010 XColor exact_def;
1011 XColor color;
1012 int scr=DefaultScreen(display);
1013 Colormap def_colormap=DefaultColormap(display,scr);
1014 Colormap new_colormap;
1015 int ncolors,i,nplanes,npixels;
1016 unsigned long planemask;
1017 unsigned long pixels[70];
1018 int fval[3];
1019 int m;
1020 
1021  for(j=0;j<maxcolors;j++)
1022  {
1023  exact_def.red=colors[j].red;
1024  exact_def.blue=colors[j].blue;
1025  exact_def.green=colors[j].green;
1026 
1027  if(!XAllocColor(display,def_colormap,&exact_def))
1028  {
1029  printf("could not allocate\n");
1030  return;
1031  }
1032 
1033  fval[0]=abs(exact_def.red - colors[j].red);
1034  fval[1]=abs(exact_def.blue - colors[j].blue);
1035  fval[2]=abs(exact_def.green - colors[j].green);
1036 
1037  if(fval[0] > 500 || fval[1] > 500 || fval[2] > 500)
1038  {
1039  printf("allocating %d %d %d %d %d %d %d %d %d %d\n",
1040  j,fval[0],fval[1],fval[2],exact_def.red,colors[j].red,
1041  exact_def.blue,colors[j].blue,exact_def.green,colors[j].green);
1042 
1043  nplanes=0;
1044  npixels=1;
1045  if(!XAllocColorCells(display,def_colormap,FALSE,&planemask,nplanes,pixels,npixels))
1046  {
1047  printf("could not allocate\n");
1048  return;
1049  }
1050 
1051  color.red=colors[j].red;
1052  color.blue=colors[j].blue;
1053  color.green=colors[j].green;
1054  color.pixel=pixels[0];
1055  colors[j].pixel=pixels[0];
1056  color.flags=DoRed|DoGreen|DoBlue;
1057 
1058  XStoreColor(display,def_colormap,&color);
1059  }
1060  else
1061  {
1062  colors[j].pixel=exact_def.pixel;
1063  }
1064  }
1065 }
1066 
1067 void clear_drawable(Drawable pixw)
1068 {
1069 Dimension width,height;
1070 
1071  XSetFunction(display,gc,GXcopy);
1072  XSetForeground(display,gc,mmap[0]);
1073  XSetBackground(display,gc,mmap[0]);
1074  width=max_width;
1076  /*
1077  XSetClipMask(display,gc,None);
1078  */
1079  XFillRectangle(display,pixw,gc,0,0,max_width,max_height);
1080 }
1081 
1083 {
1084 Dimension width,height;
1085 Arg args[10];
1086 signed long XSIZE,YSIZE,xsize,ysize,xbegin,ybegin;
1087 int h;
1088 int i;
1089 
1090 XtSetArg(args[0],XtNwidth,&width);
1091 XtSetArg(args[1],XtNheight,&height);
1092 XtGetValues(drawing_area,args,2);
1093 
1095 
1096 XSIZE=(long)width*10L;;
1097 YSIZE=(long)height*10L;
1098 
1099 display_set[0].dmult[0]=1.0;
1100 display_set[0].xmin[0]=0;
1101 display_set[0].ymin[0]=0;
1102 display_set[0].xmax[0]=XSIZE;
1103 display_set[0].ymax[0]=YSIZE;
1104 display_set[0].xcen[0]=XSIZE/2;
1105 display_set[0].ycen[0]=YSIZE/2;
1106 display_set[0].xoff[0]=0;
1107 display_set[0].yoff[0]=0;
1108 
1109 display_set[3].dmult[0]=0.5;
1110 display_set[3].dmult[1]=0.5;
1111 display_set[3].dmult[2]=0.5;
1112 display_set[3].dmult[3]=0.5;
1113 
1114 for(h=0;h<4;h++) {
1115 
1116  display_set[3].xmin[h]=0;
1117  display_set[3].ymin[h]=0;
1118  display_set[3].xmax[h]=XSIZE/2-xclip*10;
1119  display_set[3].ymax[h]=YSIZE/2-yclip*10;
1120  display_set[3].xcen[h]=XSIZE/4;
1121 
1122  display_set[3].ycen[h]=YSIZE/4;
1123 
1124 
1125  }
1126 
1127 display_set[3].xoff[0]=0;
1128 display_set[3].yoff[0]=0;
1129 
1130 display_set[3].xoff[1]=XSIZE/2+xclip*10;
1131 display_set[3].yoff[1]=0;
1132 
1133 display_set[3].xoff[2]=0;
1134 display_set[3].yoff[2]=YSIZE/2+yclip*10;
1135 
1136 display_set[3].xoff[3]=XSIZE/2+xclip*10;
1137 display_set[3].yoff[3]=YSIZE/2+yclip*10;
1138 
1139 XSetFunction(display,gc,GXcopy);
1140 
1141 XDefineCursor(display,window,watch_cursor);
1142 
1143 XmUpdateDisplay(top_level);
1144 
1145 
1146 h=0;
1147 
1148 /*create background pixmap */
1149 
1151 
1152 if(change_map_flag==1) {
1153 
1155 
1156  if(add_topo_flag==1) {
1157 
1158  if(contour_topo_flag==0)
1160 
1161  else
1163 
1164  change_map_flag=0;
1165  }
1166 
1167  }
1168 
1169 
1170 for(h=0;h < display_flag+1;h++) {
1171 
1173 
1174  if(fgbgflag==-1)
1176 
1177  xsize=display_set[display_flag].xmax[h]-
1179  ysize=display_set[display_flag].ymax[h]-
1181 
1182  xbegin=display_set[display_flag].xoff[h];
1183  ybegin=display_set[display_flag].yoff[h];
1184 
1185 /* copy raster backgrounds*/
1186 
1187  if(add_topo_flag==1)
1188  XCopyArea(display,pixb,pixf,gc,0,0,xsize/10,ysize/10,0,0);
1189 
1190 /* maps background */
1191 
1192  if(fgbgflag==-1)
1194 
1195 /* raster and contour */
1196 
1197  if((contour_flag==1 || raster_flag==1) && regrid_flag==1) {
1198 
1200  regrid_flag=-1;
1201 
1202  }
1203 
1204  if(raster_flag==1) {
1205 
1208 
1209  }
1210 
1211  if(contour_flag==1) {
1212 
1215 
1216  }
1217 
1218  /* plot data */
1219 
1220  if((data_type==13 || data_type==14 || data_type==15 ||
1221  data_type==16 || data_type==21 || data_type==22 ||
1222  data_type==23 || data_type==24 ||
1223  data_type==25 || data_type==26) && dflag[0]==1)
1225 
1226 
1227 
1228  if(plot_view > 0 && data_type >= 0)
1230 
1231 
1232 /* map backgrounds foreground */
1233 
1234  if(fgbgflag==1)
1236 
1237  }
1238 
1239 
1240 XSetForeground(display,gc,nmap[15]);
1241 
1242 XSetFunction(display,gc,GXcopy);
1243 
1244 if(legend_flag==0)
1246 
1247 else if(legend_flag > 0)
1249 
1250 else if(first_through != 0)
1252 
1253 XCopyArea(display,pixf,window,gc,0,0,xsize/10,ysize/10,xbegin/10,ybegin/10);
1254 
1255 XUndefineCursor(display,window);
1256 
1257 XDefineCursor(display,window,dotbox_cursor);
1258 
1260 
1261 }
1262 
1263 
1264 static int menu_flag=0;
1265 static Widget save_widget;
1266 
1267 void area_select(Widget w,XtPointer data)
1268 
1269 {
1270 
1271 Cardinal argcount;
1272 Arg args[20];
1273 Widget dialog,rowcol,pbutton;
1274 Widget jwidget;
1275 XmString text;
1276 struct MenuItem items[50];
1277 Widget main_bar;
1278 int slider_size,scrollm,ivalue,increment,page_increment,j;
1279 FILE *fr;
1280 char *p, ibuf[256],dbuf[100];
1281 time_t tim;
1282 struct tm *gmtim;
1283 char rbuf[100];
1284 int m,ier;
1285 int i;
1286 
1287 XDefineCursor(display,window,watch_cursor);
1288  XmUpdateDisplay(top_level);
1289 argcount=0;
1290 /*
1291 XtSetArg(args[argcount],XmNwidth,774);argcount++;
1292 XtSetArg(args[argcount],XmNheight,580);argcount++;
1293 */
1294 XtSetArg(args[argcount],XmNwidth,1024);argcount++;
1295 XtSetArg(args[argcount],XmNheight,30);argcount++;
1296 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1297 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1298 menu_bar=XmCreateMenuBar(main_window,"Menubar",args,argcount);
1299 text=XmStringCreateLocalized("Reading map backgrounds and data");
1300 
1301 argcount=0;
1302 XtSetArg(args[argcount],XmNwidth, 300);argcount++;
1303 XtSetArg(args[argcount],XmNheight,300);argcount++;
1304 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1305 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1306 XtSetArg(args[argcount],XmNmessageString,text);argcount++;
1307 XtSetArg(args[argcount],XmNdialogStyle,
1308  XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
1309 dialog=XmCreateMessageDialog(drawing_area,"Map Backgrounds",args,argcount);
1310 XtUnmanageChild(XmMessageBoxGetChild(dialog,XmDIALOG_CANCEL_BUTTON));
1311 XtUnmanageChild(XmMessageBoxGetChild(dialog,XmDIALOG_HELP_BUTTON));
1312 XtUnmanageChild(XmMessageBoxGetChild(dialog,XmDIALOG_SEPARATOR));
1313 XtAddCallback(dialog,XmNokCallback,kill_dialog,NULL);
1314 
1315 argcount=0;
1316 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1317 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1318 rowcol=XtCreateWidget("rowcolo",xmRowColumnWidgetClass,dialog,args,argcount);
1319 
1320 argcount=0;
1321 XtSetArg(args[argcount],XmNeditMode,XmMULTI_LINE_EDIT);argcount++;
1322 XtSetArg(args[argcount],XmNscrollBarDisplayPolicy,XmSTATIC);argcount++;
1323 XtSetArg(args[argcount],XmNeditable,False);argcount++;
1324 XtSetArg(args[argcount],XmNcolumns,40);argcount++;
1325 XtSetArg(args[argcount],XmNrows,10);argcount++;
1326 XtSetArg(args[argcount],XmNscrollVertical,True);argcount++;
1327 XtSetArg(args[argcount],XmNscrollHorizontal,False);argcount++;
1328 XtSetArg(args[argcount],XmNcursorPositionVisible,False);argcount++;
1329 XtSetArg(args[argcount],XmNscrollingPolicy,XmAPPLICATION_DEFINED);argcount++;
1330 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1331 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1332 s_text=XmCreateScrolledText(rowcol,"text",args,argcount);
1333 
1334 XtManageChild(s_text);
1335 
1336 XtVaGetValues(XtParent(s_text),XmNverticalScrollBar,&scrollbar,NULL);
1337 
1338 XtManageChild(rowcol);
1339 XtManageChild(dialog);
1340 XmStringFree(text);
1341 
1342 XtSetSensitive(XmMessageBoxGetChild(dialog,XmDIALOG_OK_BUTTON),False);
1343 
1345 
1346 posit=0;
1347 
1349 
1350 legend_save=-1;
1351 tlegend_save=-1;
1352 add_topo_flag=-1;
1353 zoom=1;
1354 
1355 read_maps((char *)data,0,0);
1356 
1357 hrap_file[0]=0;
1358 grid_file[0]=0;data_file[0]=0;
1359 decode_file[0]=0;station_list_file[0]=0;
1360 
1361 /*
1362 strcpy(data_file,"/awips/hydroapps/rfc/local/apps/mapper/data");
1363 */
1364 
1365 strcpy(data_file,"/local/apps/mapper/data");
1366 printf("data file is <%s>\n",data_file);
1367 
1368 fr=fopen((char *)data,"r");
1369 
1370 for(;;)
1371 {
1372 /*p=fgets(ibuf,80,fr);*/
1373  p=fgets(ibuf,256,fr);
1374 
1375  if(p==NULL)
1376  break;
1377 
1378  p=strchr(ibuf,'\n');
1379  if(p!=NULL)
1380  *p=0;
1381 
1382  rbuf[0]=0;
1383  p=pars_line(ibuf,"topo_elevation=",rbuf);
1384  if(rbuf[0]!=0)
1385  {
1386  m=0;
1387  while(rbuf[m] != 0)
1388  {
1389  if(rbuf[m]==',')
1390  rbuf[m]=' ';
1391  m++;
1392  }
1393  ier=sscanf(rbuf,"%d %d %d %d %d",
1394  &topo_buf[0], &topo_buf[1],
1395  &topo_buf[2], &topo_buf[3],
1396  &topo_buf[4]);
1397  }
1398 
1399  p=pars_line(ibuf,"custom_file=",station_list_file);
1400  p=pars_line(ibuf,"hrap=",hrap_file);
1401  p=pars_line(ibuf,"data=",data_file);
1402  p=pars_line(ibuf,"decode=",decode_file);
1403  p=pars_line(ibuf,"linear=flow",rbuf);
1404  if(p!=NULL)
1405  deflinear=1;
1406 
1407  p=pars_line(ibuf,"scale=flood",rbuf);
1408  if(p!=NULL)
1409  defscale=1;
1410 
1411  p=pars_line(ibuf,"rain_bar=hourly",rbuf);
1412  if(p!=NULL)
1413  defrain=0;
1414 
1415  p=pars_line(ibuf,"rain_bar=6_hourly",rbuf);
1416  if(p!=NULL)
1417  defrain=1;
1418 
1419  p=pars_line(ibuf,"rain_bar=24_hourly",rbuf);
1420  if(p!=NULL)
1421  defrain=2;
1422 
1423  rbuf[0]=0;
1424  p=pars_line(ibuf,"1_hr_rainfall_max=",rbuf);
1425  if(rbuf[0]!=0)
1426  hr1_rainfall_max=atof(rbuf);
1427 
1428  rbuf[0]=0;
1429  p=pars_line(ibuf,"6_hr_rainfall_max=",rbuf);
1430  if(rbuf[0]!=0)
1431  hr6_rainfall_max=atof(rbuf);
1432 
1433  rbuf[0]=0;
1434  p=pars_line(ibuf,"24_hr_rainfall_max=",rbuf);
1435  if(rbuf[0]!=0)
1436  hr24_rainfall_max=atof(rbuf);
1437 
1438  rbuf[0]=0;
1439  p=pars_line(ibuf,"past_time_series_days=",rbuf);
1440  if(rbuf[0]!=0)
1441  past_time_series_days=atoi(rbuf);
1442 
1443  p=pars_line(ibuf,"future_time_series_days=",rbuf);
1444  if(rbuf[0]!=0)
1445  future_time_series_days=atoi(rbuf);
1446 
1447  rbuf[0]=0;
1448  p=pars_line(ibuf,"rainfall_level_1=",rbuf);
1449  if(rbuf[0]!=0)
1450  {
1451  m=0;
1452  while(rbuf[m] != 0)
1453  {
1454  if(rbuf[m]==',')
1455  rbuf[m]=' ';
1456  m++;
1457  }
1458  ier=sscanf(rbuf,"%f %f %f %f %f %f %f %f %f %f %f %f",
1464  &rainfall_level_1[10], &rainfall_level_1[11]);
1465  }
1466  rbuf[0]=0;
1467  p=pars_line(ibuf,"rainfall_level_2=",rbuf);
1468  if(rbuf[0]!=0)
1469  {
1470  m=0;
1471  while(rbuf[m] != 0)
1472  {
1473  if(rbuf[m]==',')
1474  rbuf[m]=' ';
1475  m++;
1476  }
1477  ier=sscanf(rbuf,"%f %f %f %f %f %f %f %f %f %f %f %f",
1483  &rainfall_level_2[10], &rainfall_level_2[11]);
1484  }
1485 }
1486 
1487 
1488 for(i=0;i<4;i++)
1489  topo_buf[i]=topo_buf[i]/10;
1490 
1491 if(station_list_file[0]!=0)
1493 
1494 fclose(fr);
1495 
1497 
1498 items[0].label=NULL;
1499 items[0].callback=NULL;
1500 items[0].callback_data=NULL;
1501 
1502 main_bar=BuildPulldownPushMenu(menu_bar,"File",'M',items);
1503 jwidget=AttachToCascade(menu_bar,"File",main_bar);
1504 
1505 argcount=0;
1506 
1507 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1508 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1509 
1510 pbutton=XmCreatePushButton(main_bar,"Print",args,argcount);
1511 XtAddCallback(pbutton,XmNactivateCallback,print_screen,NULL);
1512 XtManageChild(pbutton);
1513 
1514 argcount=0;
1515 
1516 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1517 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1518 
1519 pbutton=XmCreatePushButton(main_bar,"Quit",args,argcount);
1520 XtAddCallback(pbutton,XmNactivateCallback,quit_all,NULL);
1521 XtManageChild(pbutton);
1522 
1523 main_bar=BuildPulldownToggleMenu(menu_bar,"Backgrounds",'M',ktems);
1524 jwidget=AttachToCascade(menu_bar,"Backgrounds",main_bar);
1525 
1526 tim=time(NULL);
1527 
1528 gmtim=gmtime(&tim);
1529 
1530 strcpy(dbuf,"reading data\n");
1531 posit=posit+strlen(dbuf);
1532 XmTextInsert(s_text,posit,dbuf);
1533 
1534 XtVaGetValues(scrollbar,XmNmaximum,&scrollm,NULL);
1535 XmScrollBarGetValues(scrollbar,&ivalue,&slider_size,
1536  &increment,&page_increment);
1537 XmScrollBarSetValues(scrollbar,scrollm-slider_size,
1538  slider_size,increment,page_increment,True);
1539 
1540 XmUpdateDisplay(top_level);
1541 
1542 sprintf(dbuf,"%s",decode_file);
1543 
1544 /*
1545 system(dbuf);
1546 */
1547 
1548 get_data();
1549 
1550 if(qtime==0)
1551  strcpy(dbuf,"No data\n");
1552 else
1553  strcpy(dbuf,"Data found\n");
1554 
1555 posit=posit+strlen(dbuf);
1556 XmTextInsert(s_text,posit,dbuf);
1557 
1558 XtVaGetValues(scrollbar,XmNmaximum,&scrollm,NULL);
1559 XmScrollBarGetValues(scrollbar,&ivalue,&slider_size,
1560  &increment,&page_increment);
1561 XmScrollBarSetValues(scrollbar,scrollm-slider_size,
1562  slider_size,increment,page_increment,True);
1563 
1564 XmUpdateDisplay(top_level);
1565 
1566 if(menu_flag==1)
1567  XtDestroyWidget(save_widget);
1568 
1569 /* edit menus */
1570 
1571 items[0].label="Precipitation";
1572 items[0].callback=view_precipitation;
1573 items[0].callback_data=NULL;
1574 items[1].label="Stage";
1575 items[1].callback=view_stage;
1576 items[1].callback_data=NULL;
1577 items[2].label="Air Temperature";
1578 items[2].callback=view_temperature;
1579 items[2].callback_data=NULL;
1580 items[3].label="Humidity";
1581 items[3].callback=view_humidity;
1582 items[3].callback_data=NULL;
1583 items[4].label="Wind";
1584 items[4].callback=view_wind;
1585 items[4].callback_data=NULL;
1586 items[5].label="Snow";
1587 items[5].callback=view_snow;
1588 items[5].callback_data=NULL;
1589 items[6].label="Water Temperature";
1590 items[6].callback=view_watertemp;
1591 items[6].callback_data=NULL;
1592 items[7].label=NULL;
1593 
1594 main_bar=BuildPulldownPushMenu(menu_bar,"View",'M',items);
1595 jwidget=AttachToCascade(menu_bar,"View",main_bar);
1596 
1597 items[0].label="Find station";
1598 items[0].callback=other_pcpn_options;
1599 items[0].callback_data=(XtPointer)0;
1600 
1601 items[1].label="Zoom";
1603 items[1].callback_data=(XtPointer)1;
1604 
1605 items[2].label="Edit";
1607 items[2].callback_data=(XtPointer)2;
1608 
1609 items[3].label=NULL;
1610 
1611 main_bar=BuildPulldownPushMenu(menu_bar,"Options",'M',items);
1612 jwidget=AttachToCascade(menu_bar,"Options",main_bar);
1613 
1614 items[0].label="1 day ";
1615 items[0].callback=change_past_days;
1616 items[0].callback_data=(XtPointer)0;
1617 
1618 items[1].label="3 days";
1619 items[1].callback=change_past_days;
1620 items[1].callback_data=(XtPointer)1;
1621 
1622 items[2].label="5 days";
1623 items[2].callback=change_past_days;
1624 items[2].callback_data=(XtPointer)2;
1625 
1626 items[3].label="7 days";
1627 items[3].callback=change_past_days;
1628 items[3].callback_data=(XtPointer)3;
1629 
1630 items[4].label=NULL;
1631 
1632 main_bar=BuildPulldownPushMenu(menu_bar,"Plot Options",'M',items);
1633 jwidget=AttachToCascade(menu_bar,"Plot Options",main_bar);
1634 
1635 items[0].label="Refresh Current Data Now";
1636 items[0].callback=get_current_data;
1637 items[0].callback_data=(XtPointer)0;
1638 
1639 items[1].label="Displaced RealTime Mode";
1640 items[1].callback=drt_change;
1641 items[1].callback_data=(XtPointer)1;
1642 
1643 items[2].label=NULL;
1644 
1645 main_bar=BuildPulldownPushMenu(menu_bar,"Data",'M',items);
1646 jwidget=AttachToCascade(menu_bar,"Data",main_bar);
1647 
1648 /* products menu */
1649 
1650 XtManageChild(menu_bar);
1651 
1652 XmMainWindowSetAreas(main_window,menu_bar,NULL,NULL,NULL,drawing_area);
1653 
1654 XtSetSensitive(XmMessageBoxGetChild(dialog,XmDIALOG_OK_BUTTON),True);
1655 
1656 strcpy(dbuf,"Done!!!\n");
1657 posit=posit+strlen(dbuf);
1658 XmTextInsert(s_text,posit,dbuf);
1659 
1660 XtVaGetValues(scrollbar,XmNmaximum,&scrollm,NULL);
1661 XmScrollBarGetValues(scrollbar,&ivalue,&slider_size,
1662  &increment,&page_increment);
1663 XmScrollBarSetValues(scrollbar,scrollm-slider_size,
1664  slider_size,increment,page_increment,True);
1665 
1666 XmUpdateDisplay(top_level);
1667 
1668 first_area=1;
1669 menu_flag=1;
1670 
1671 }
1672 
1673 
1674 void print_screen(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
1675 {
1676  print_flag=1;
1677  handle_expose(w,data,call_data);
1678 }
1679 
1680 
1681 void kill_dialog(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
1682 {
1683  first_through=1;
1684  XtDestroyWidget(w);
1685  send_expose();
1686 }
1687 
1688 
1689 void change_rain(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
1690 {
1692  send_expose();
1693 }
1694 
1695 void change_plot(Widget w,XtPointer data,XtPointer junk)
1696 {
1697  plot_view=(int)data;
1698  send_expose();
1699 }
1700 
1701 
1703 {
1704 Dimension width;
1705 static Position x,y;
1706 int leftx,xpos;
1707 Arg args[20];
1708 Cardinal argcount;
1709 char *s[15];
1710 XmString t;
1711 Widget rowcol,pbutton,rowcol2,rowcol1,rowcol3,rowcol4,rowcol5,rowcol6,arrow1,arrow2;
1712 Widget scale;
1713 int i,m;
1714 Atom WM_DELETE_WINDOW;
1715 Widget shell;
1716 
1717 if(main_widget != NULL)
1718  kill_main_widget();
1719 
1720 XtSetArg(args[0],XmNx,&x);
1721 XtSetArg(args[1],XmNy,&y);
1722 XtSetArg(args[2],XtNwidth,&width);
1723 XtGetValues(top_level,args,3);
1724 
1725 leftx=max_width- (x + width);
1726 
1727 if(leftx >= 265)
1728  xpos= x + width;
1729 else
1730  xpos=max_width-265;
1731 
1732 /*
1733 printf("max_width %d\n"
1734  "max_height %d\n"
1735  "leftx %d\n"
1736  "width %d\n"
1737  "xpos %d\n"
1738  "x %d\n"
1739  "y %d\n",max_width,max_height,leftx,width,xpos,x,y);
1740 */
1741 
1742 argcount=0;
1743 XtSetArg(args[argcount],XmNx, xpos);argcount++;
1744 XtSetArg(args[argcount],XmNy, y);argcount++;
1745 XtSetArg(args[argcount],XmNdefaultPosition, False);argcount++;
1746 XtSetArg(args[argcount],XmNwidth,252);argcount++;
1747 XtSetArg(args[argcount],XmNheight,500);argcount++;
1748 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1749 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1750 main_widget=XmCreateMessageDialog(drawing_area,"View_Precipitation",args,argcount);
1751 
1752 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_CANCEL_BUTTON));
1753 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_HELP_BUTTON));
1754 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_OK_BUTTON));
1755 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_SEPARATOR));
1756 
1757 shell=XtParent(main_widget);
1758 WM_DELETE_WINDOW=XmInternAtom(XtDisplay(top_level),"WM_DELETE_WINDOW",False);
1759 XmAddWMProtocolCallback(shell,WM_DELETE_WINDOW,kill_main_widget,NULL);
1760 
1761 argcount=0;
1762 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1763 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1764 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
1765 rowcol=XmCreateRowColumn(main_widget,"View Precipitation",args,argcount);
1766 
1767 t=XmStringCreateLocalized("Display:");
1768 
1769 argcount=0;
1770 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1771 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1772 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
1773 rowcol1=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
1774 
1775 XtSetArg(args[0],XmNsubMenuId,&widg);
1776 XtGetValues(rowcol1,args,1);
1777 
1778 s[0]="Instant";
1779 s[1]="Hrly";
1780 s[2]="Six hrly";
1781 s[3]="Daily";
1782 s[4]="QC'd Six hrly";
1783 s[5]="QC'd Daily";
1784 s[6]="Monthly";
1785 s[7]="Monthly - %Avg";
1786 s[8]="Water Year";
1787 s[9]="WY - %Avg";
1788 
1789 for(i=0;i<=9;i++)
1790 {
1791  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
1792  XtAddCallback(pbutton,XmNactivateCallback,change_mode,
1793  (XtPointer)i);
1794 }
1795 
1796 XmStringFree(t);
1797 
1798 argcount=0;
1799 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1800 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1801 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
1802 XtSetArg(args[argcount],XmNnumColumns,4);argcount++;
1803 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
1804 rowcol2=XmCreateRowColumn(rowcol,"Edit Stations",args,argcount);
1805 
1806 t=XmStringCreateLocalized("Time:");
1807 argcount=0;
1808 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1809 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1810 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
1811 pbutton=XmCreateLabel(rowcol2,"Label",args,argcount);
1812 XtManageChild(pbutton);
1813 XmStringFree(t);
1814 
1815 argcount=0;
1816 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1817 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1818 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_UP);argcount++;
1819 arrow1=XmCreateArrowButton(rowcol2,"up",args,argcount);
1820 XtAddCallback(arrow1,XmNactivateCallback,change_index_time,(XtPointer)0);
1821 
1822 argcount=0;
1823 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1824 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1825 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_DOWN);argcount++;
1826 arrow2=XmCreateArrowButton(rowcol2,"down",args,argcount);
1827 XtAddCallback(arrow2,XmNactivateCallback,change_index_time,(XtPointer)1);
1828 
1829 XtManageChild(arrow1);
1830 XtManageChild(arrow2);
1831 
1832 t=XmStringCreateLocalized("Data:");
1833 argcount=0;
1834 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1835 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1836 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
1837 rowcol4=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
1838 
1839 XtSetArg(args[0],XmNsubMenuId,&widg);
1840 XtGetValues(rowcol4,args,1);
1841 
1842 s[0]="HB5";
1843 s[1]="Number";
1844 s[2]="PC";
1845 s[3]="Name";
1846 s[4]="Elev";
1847 s[5]="Data";
1848 
1849 for(i=0;i<6;i++)
1850 {
1851  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
1852  XtAddCallback(pbutton,XmNactivateCallback,change_plot,
1853  (XtPointer)(i+1));
1854 }
1855 
1856 XtSetArg(args[0],XmNmenuHistory,pbutton);
1857 XtSetValues(rowcol4,args,1);
1858 
1859 XmStringFree(t);
1860 
1861 t=XmStringCreateLocalized("Station type");
1862 argcount=0;
1863 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1864 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1865 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
1866 pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
1867 XtManageChild(pbutton);
1868 XmStringFree(t);
1869 
1870 argcount=0;
1871 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1872 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1873 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
1874 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
1875 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
1876 rowcol3=XmCreateRowColumn(rowcol,"Edit Stations",args,argcount);
1877 
1878 s[0]="RADAR";
1879 s[1]="PHONE (P)";
1880 s[2]="SNOTEL (M)";
1881 s[3]="ALERT (R)";
1882 s[4]="GOES (G)";
1883 s[5]="DEFAULT (Z)";
1884 s[6]="ALL";
1885 
1886 dflag[0]=-1;
1887 
1888 for(i=1;i<7;i++)
1889 {
1890  argcount=0;
1891  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1892  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1893  XtSetArg(args[argcount],XmNselectColor,cmap[4]);argcount++;
1894 
1895  if(dflag[i]==1)
1896  XtSetArg(args[argcount],XmNset,True);
1897  else
1898  XtSetArg(args[argcount],XmNset,False);
1899  argcount++;
1900 
1901  bwidget[i]=XmCreateToggleButton(rowcol3,s[i],args,argcount);
1902  XtAddCallback(bwidget[i],XmNvalueChangedCallback,source_select,
1903  (XtPointer)i);
1904  XtManageChild(bwidget[i]);
1905 }
1906 
1908 
1909 t=XmStringCreateLocalized("Filter Elevation (Feet)");
1910 argcount=0;
1911 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1912 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1913 XtSetArg(args[argcount],XmNminimum,0);argcount++;
1914 XtSetArg(args[argcount],XmNmaximum,12000);argcount++;
1915 XtSetArg(args[argcount],XmNdecimalPoints,0);argcount++;
1916 XtSetArg(args[argcount],XmNshowValue,True);argcount++;
1917 XtSetArg(args[argcount],XmNtitleString,t);argcount++;
1918 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
1919 scale=XmCreateScale(rowcol,"scale",args,argcount);
1920 XtManageChild(scale);
1921 
1922 XtAddCallback(scale,XmNvalueChangedCallback,elevation_filter,NULL);
1923 XmStringFree(t);
1924 
1925 t=XmStringCreateLocalized("Filter Precipitation (Inches)");
1926 argcount=0;
1927 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1928 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1929 XtSetArg(args[argcount],XmNminimum,0);argcount++;
1930 XtSetArg(args[argcount],XmNmaximum,100);argcount++;
1931 XtSetArg(args[argcount],XmNdecimalPoints,2);argcount++;
1932 XtSetArg(args[argcount],XmNshowValue,True);argcount++;
1933 XtSetArg(args[argcount],XmNtitleString,t);argcount++;
1934 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
1935 scale=XmCreateScale(rowcol,"scale",args,argcount);
1936 XtManageChild(scale);
1937 
1938 XtAddCallback(scale,XmNvalueChangedCallback,new_filter,NULL);
1939 XmStringFree(t);
1940 
1941 /*
1942 t=XmStringCreateLocalized("Mouse:");
1943 
1944 argcount=0;
1945 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1946 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1947 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
1948 rowcolzoom=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
1949 
1950 XtSetArg(args[0],XmNsubMenuId,&widg);
1951 XtGetValues(rowcolzoom,args,1);
1952 
1953 s[0]="Off";
1954 s[1]="Zoom";
1955 s[2]="Edit";
1956 
1957 for(i=0;i<3;i++)
1958 {
1959  zwidget[i]=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
1960  XtAddCallback(zwidget[i],XmNactivateCallback,change_pcpn_zoom_mode,
1961  (XtPointer)i);
1962 }
1963 
1964 XmStringFree(t);
1965 
1966 if(zoom_mode==1)
1967  pbutton=zwidget[1];
1968 else if(edit_mode==1)
1969  pbutton=zwidget[2];
1970 else
1971  pbutton=zwidget[0];
1972 
1973 XtSetArg(args[0],XmNmenuHistory,pbutton);
1974 XtSetValues(rowcolzoom,args,1);
1975 
1976 t=XmStringCreateLocalized("Render:");
1977 argcount=0;
1978 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
1979 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
1980 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
1981 rowcol6=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
1982 
1983 XtSetArg(args[0],XmNsubMenuId,&widg);
1984 XtGetValues(rowcol6,args,1);
1985 
1986 s[0]="Off";
1987 s[1]="Raster";
1988 s[2]="Contour";
1989 
1990 for(i=0;i<3;i++)
1991 {
1992  diswidget[i]=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
1993  XtAddCallback(diswidget[i],XmNactivateCallback,display_options,(XtPointer)i);
1994 }
1995 XmStringFree(t);
1996 */
1997 
1998 filter_value=-9999;
1999 dt=0;
2000 data_type=13;
2001 indexx=0;
2002 kscale=0;
2003 rfs_flag=-1;
2004 
2007 write_screen();
2008 
2009 XtManageChild(rowcol);
2010 XtManageChild(rowcol1);
2011 XtManageChild(rowcol2);
2012 XtManageChild(rowcol3);
2013 XtManageChild(rowcol4);
2014 /*
2015 XtManageChild(rowcolzoom);
2016 XtManageChild(rowcol6);
2017 */
2018 XtManageChild(main_widget);
2019 
2020 return;
2021 }
2022 
2024 {
2025 Dimension width;
2026 static Position x,y;
2027 int leftx,xpos;
2028 Arg args[20];
2029 Cardinal argcount;
2030 char *s[10];
2031 XmString t;
2032 Widget rowcol,pbutton,rowcol2,rowcol1,rowcol3,rowcol4,rowcol5,rowcol6,arrow1,arrow2;
2033 Widget scale;
2034 int i;
2035 Atom WM_DELETE_WINDOW;
2036 Widget shell;
2037 
2038 if(main_widget != NULL)
2039  kill_main_widget();
2040 
2041 XtSetArg(args[0],XmNx,&x);
2042 XtSetArg(args[1],XmNy,&y);
2043 XtSetArg(args[2],XtNwidth,&width);
2044 XtGetValues(top_level,args,3);
2045 
2046 leftx=max_width- (x + width);
2047 
2048 if(leftx >= 234)
2049  xpos= x + width;
2050 else
2051  xpos=max_width-234;
2052 
2053 argcount=0;
2054 XtSetArg(args[argcount],XmNx, xpos);argcount++;
2055 XtSetArg(args[argcount],XmNy, y);argcount++;
2056 XtSetArg(args[argcount],XmNdefaultPosition, False);argcount++;
2057 XtSetArg(args[argcount],XmNwidth,221);argcount++;
2058 XtSetArg(args[argcount],XmNheight,400);argcount++;
2059 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2060 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2061 main_widget=XmCreateMessageDialog(drawing_area,"View_Water_Temperature",args,argcount);
2062 
2063 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_CANCEL_BUTTON));
2064 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_HELP_BUTTON));
2065 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_OK_BUTTON));
2066 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_SEPARATOR));
2067 
2068 shell=XtParent(main_widget);
2069 WM_DELETE_WINDOW=XmInternAtom(XtDisplay(top_level),"WM_DELETE_WINDOW",False);
2070 XmAddWMProtocolCallback(shell,WM_DELETE_WINDOW,kill_main_widget,NULL);
2071 
2072 argcount=0;
2073 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2074 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2075 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
2076 rowcol=XmCreateRowColumn(main_widget,"View Water Temperature",args,argcount);
2077 
2078 t=XmStringCreateLocalized("Display:");
2079 
2080 argcount=0;
2081 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2082 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2083 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2084 rowcol1=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
2085 
2086 XtSetArg(args[0],XmNsubMenuId,&widg);
2087 XtGetValues(rowcol1,args,1);
2088 
2089 s[0]="Hourly";
2090 
2091 for(i=0;i<=0;i++)
2092 {
2093  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
2094  XtAddCallback(pbutton,XmNactivateCallback,change_mode,
2095  (XtPointer)i);
2096 }
2097 
2098 XmStringFree(t);
2099 
2100 argcount=0;
2101 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2102 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2103 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
2104 XtSetArg(args[argcount],XmNnumColumns,4);argcount++;
2105 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
2106 rowcol2=XmCreateRowColumn(rowcol,"Edit Stations",args,argcount);
2107 
2108 t=XmStringCreateLocalized("Time:");
2109 argcount=0;
2110 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2111 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2112 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2113 pbutton=XmCreateLabel(rowcol2,"Label",args,argcount);
2114 XtManageChild(pbutton);
2115 XmStringFree(t);
2116 
2117 argcount=0;
2118 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2119 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2120 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_UP);argcount++;
2121 arrow1=XmCreateArrowButton(rowcol2,"up",args,argcount);
2122 XtAddCallback(arrow1,XmNactivateCallback,change_index_time,(XtPointer)0);
2123 
2124 argcount=0;
2125 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2126 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2127 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_DOWN);argcount++;
2128 arrow2=XmCreateArrowButton(rowcol2,"down",args,argcount);
2129 XtAddCallback(arrow2,XmNactivateCallback,change_index_time,(XtPointer)1);
2130 
2131 XtManageChild(arrow1);
2132 XtManageChild(arrow2);
2133 
2134 t=XmStringCreateLocalized("Data:");
2135 argcount=0;
2136 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2137 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2138 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2139 rowcol4=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
2140 
2141 XtSetArg(args[0],XmNsubMenuId,&widg);
2142 XtGetValues(rowcol4,args,1);
2143 
2144 s[0]="HB5";
2145 s[1]="Number";
2146 s[2]="PC";
2147 s[3]="Name";
2148 s[4]="Elev";
2149 s[5]="Data";
2150 
2151 for(i=0;i<6;i++)
2152 {
2153  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
2154  XtAddCallback(pbutton,XmNactivateCallback,change_plot,
2155  (XtPointer)(i+1));
2156 }
2157 
2158 XtSetArg(args[0],XmNmenuHistory,pbutton);
2159 XtSetValues(rowcol4,args,1);
2160 
2161 XmStringFree(t);
2162 
2163 t=XmStringCreateLocalized("Station type");
2164 argcount=0;
2165 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2166 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2167 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2168 pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
2169 XtManageChild(pbutton);
2170 XmStringFree(t);
2171 
2172 argcount=0;
2173 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2174 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2175 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
2176 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
2177 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
2178 rowcol3=XmCreateRowColumn(rowcol,"Edit Stations",args,argcount);
2179 
2180 s[0]="";
2181 s[1]="PHONE (P)";
2182 s[2]="SNOTEL (M)";
2183 s[3]="ALERT (R)";
2184 s[4]="GOES (G)";
2185 s[5]="DEFAULT (Z)";
2186 s[6]="ALL";
2187 
2188 for(i=1;i<7;i++)
2189 {
2190  argcount=0;
2191  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2192  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2193  XtSetArg(args[argcount],XmNselectColor,cmap[4]);argcount++;
2194 
2195  if(dflag[i]==1)
2196  XtSetArg(args[argcount],XmNset,True);
2197  else
2198  XtSetArg(args[argcount],XmNset,False);
2199 
2200  argcount++;
2201 
2202  bwidget[i]=XmCreateToggleButton(rowcol3,s[i],args,argcount);
2203  XtAddCallback(bwidget[i],XmNvalueChangedCallback,source_select,
2204  (XtPointer)i);
2205  XtManageChild(bwidget[i]);
2206 }
2208 t=XmStringCreateLocalized("Filter Elevation (Feet)");
2209 argcount=0;
2210 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2211 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2212 XtSetArg(args[argcount],XmNminimum,0);argcount++;
2213 XtSetArg(args[argcount],XmNmaximum,12000);argcount++;
2214 XtSetArg(args[argcount],XmNdecimalPoints,0);argcount++;
2215 XtSetArg(args[argcount],XmNshowValue,True);argcount++;
2216 XtSetArg(args[argcount],XmNtitleString,t);argcount++;
2217 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
2218 scale=XmCreateScale(rowcol,"scale",args,argcount);
2219 XtManageChild(scale);
2220 
2221 XtAddCallback(scale,XmNvalueChangedCallback,elevation_filter,NULL);
2222 
2223 XmStringFree(t);
2224 
2225 filter_value=-9999;
2226 
2227 dt=30;
2228 data_type=30;
2229 indexx=0;
2230 kscale=0;
2231 rfs_flag=-1;
2232 
2235 write_screen();
2236 
2237 XtManageChild(rowcol);
2238 XtManageChild(rowcol1);
2239 XtManageChild(rowcol2);
2240 XtManageChild(rowcol3);
2241 XtManageChild(rowcol4);
2242 XtManageChild(main_widget);
2243 
2244 return;
2245 }
2246 
2248 {
2249 Dimension width;
2250 static Position x,y;
2251 int leftx,xpos;
2252 Arg args[20];
2253 Cardinal argcount;
2254 char *s[10];
2255 XmString t;
2256 Widget rowcol,pbutton,rowcol2,rowcol1,rowcol3,rowcol4,rowcol5,rowcol6,arrow1,arrow2;
2257 Widget scale;
2258 int i;
2259 Atom WM_DELETE_WINDOW;
2260 Widget shell;
2261 
2262 if(main_widget != NULL)
2263  kill_main_widget();
2264 
2265 XtSetArg(args[0],XmNx,&x);
2266 XtSetArg(args[1],XmNy,&y);
2267 XtSetArg(args[2],XtNwidth,&width);
2268 XtGetValues(top_level,args,3);
2269 
2270 leftx=max_width- (x + width);
2271 
2272 if(leftx >= 234)
2273  xpos= x + width;
2274 else
2275  xpos=max_width-234;
2276 
2277 argcount=0;
2278 XtSetArg(args[argcount],XmNx, xpos);argcount++;
2279 XtSetArg(args[argcount],XmNy, y);argcount++;
2280 XtSetArg(args[argcount],XmNdefaultPosition, False);argcount++;
2281 XtSetArg(args[argcount],XmNwidth,221);argcount++;
2282 XtSetArg(args[argcount],XmNheight,400);argcount++;
2283 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2284 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2285 main_widget=XmCreateMessageDialog(drawing_area,"View_Air_Temperature",args,argcount);
2286 
2287 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_CANCEL_BUTTON));
2288 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_HELP_BUTTON));
2289 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_OK_BUTTON));
2290 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_SEPARATOR));
2291 
2292 shell=XtParent(main_widget);
2293 WM_DELETE_WINDOW=XmInternAtom(XtDisplay(top_level),"WM_DELETE_WINDOW",False);
2294 XmAddWMProtocolCallback(shell,WM_DELETE_WINDOW,kill_main_widget,NULL);
2295 
2296 argcount=0;
2297 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2298 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2299 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
2300 rowcol=XmCreateRowColumn(main_widget,"View Air Temperature",args,argcount);
2301 
2302 t=XmStringCreateLocalized("Display:");
2303 
2304 argcount=0;
2305 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2306 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2307 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2308 rowcol1=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
2309 
2310 XtSetArg(args[0],XmNsubMenuId,&widg);
2311 XtGetValues(rowcol1,args,1);
2312 
2313 s[0]="Hourly";
2314 s[1]="24 hr chg";
2315 s[2]="Daily max";
2316 s[3]="Daily min";
2317 
2318 for(i=0;i<4;i++)
2319 {
2320  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
2321  XtAddCallback(pbutton,XmNactivateCallback,change_mode,
2322  (XtPointer)i);
2323 }
2324 
2325 XmStringFree(t);
2326 
2327 argcount=0;
2328 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2329 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2330 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
2331 XtSetArg(args[argcount],XmNnumColumns,4);argcount++;
2332 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
2333 rowcol2=XmCreateRowColumn(rowcol,"Edit Stations",args,argcount);
2334 
2335 t=XmStringCreateLocalized("Time:");
2336 argcount=0;
2337 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2338 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2339 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2340 pbutton=XmCreateLabel(rowcol2,"Label",args,argcount);
2341 XtManageChild(pbutton);
2342 XmStringFree(t);
2343 
2344 argcount=0;
2345 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2346 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2347 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_UP);argcount++;
2348 arrow1=XmCreateArrowButton(rowcol2,"up",args,argcount);
2349 XtAddCallback(arrow1,XmNactivateCallback,change_index_time,(XtPointer)0);
2350 
2351 argcount=0;
2352 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2353 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2354 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_DOWN);argcount++;
2355 arrow2=XmCreateArrowButton(rowcol2,"down",args,argcount);
2356 XtAddCallback(arrow2,XmNactivateCallback,change_index_time,(XtPointer)1);
2357 
2358 XtManageChild(arrow1);
2359 XtManageChild(arrow2);
2360 
2361 t=XmStringCreateLocalized("Data:");
2362 argcount=0;
2363 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2364 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2365 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2366 rowcol4=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
2367 
2368 XtSetArg(args[0],XmNsubMenuId,&widg);
2369 XtGetValues(rowcol4,args,1);
2370 
2371 s[0]="HB5";
2372 s[1]="Number";
2373 s[2]="PC";
2374 s[3]="Name";
2375 s[4]="Elev";
2376 s[5]="Data";
2377 
2378 for(i=0;i<6;i++)
2379 {
2380  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
2381  XtAddCallback(pbutton,XmNactivateCallback,change_plot,
2382  (XtPointer)(i+1));
2383 }
2384 
2385 XtSetArg(args[0],XmNmenuHistory,pbutton);
2386 XtSetValues(rowcol4,args,1);
2387 
2388 XmStringFree(t);
2389 
2390 t=XmStringCreateLocalized("Station type");
2391 argcount=0;
2392 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2393 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2394 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2395 pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
2396 XtManageChild(pbutton);
2397 XmStringFree(t);
2398 
2399 argcount=0;
2400 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2401 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2402 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
2403 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
2404 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
2405 rowcol3=XmCreateRowColumn(rowcol,"Edit Stations",args,argcount);
2406 
2407 s[0]="";
2408 s[1]="PHONE (P)";
2409 s[2]="SNOTEL (M)";
2410 s[3]="ALERT (R)";
2411 s[4]="GOES (G)";
2412 s[5]="DEFAULT (Z)";
2413 s[6]="ALL";
2414 
2415 for(i=1;i<7;i++)
2416 {
2417  argcount=0;
2418  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2419  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2420  XtSetArg(args[argcount],XmNselectColor,cmap[4]);argcount++;
2421 
2422  if(dflag[i]==1)
2423  XtSetArg(args[argcount],XmNset,True);
2424  else
2425  XtSetArg(args[argcount],XmNset,False);
2426 
2427  argcount++;
2428 
2429  bwidget[i]=XmCreateToggleButton(rowcol3,s[i],args,argcount);
2430  XtAddCallback(bwidget[i],XmNvalueChangedCallback,source_select,
2431  (XtPointer)i);
2432  XtManageChild(bwidget[i]);
2433 }
2434 
2436 t=XmStringCreateLocalized("Filter Elevation (Feet)");
2437 argcount=0;
2438 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2439 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2440 XtSetArg(args[argcount],XmNminimum,0);argcount++;
2441 XtSetArg(args[argcount],XmNmaximum,12000);argcount++;
2442 XtSetArg(args[argcount],XmNdecimalPoints,0);argcount++;
2443 XtSetArg(args[argcount],XmNshowValue,True);argcount++;
2444 XtSetArg(args[argcount],XmNtitleString,t);argcount++;
2445 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
2446 scale=XmCreateScale(rowcol,"scale",args,argcount);
2447 XtManageChild(scale);
2448 
2449 XtAddCallback(scale,XmNvalueChangedCallback,elevation_filter,NULL);
2450 
2451 XmStringFree(t);
2452 /*
2453 t=XmStringCreateLocalized("Mouse:");
2454 
2455 argcount=0;
2456 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2457 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2458 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2459 rowcolzoom=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
2460 
2461 XtSetArg(args[0],XmNsubMenuId,&widg);
2462 XtGetValues(rowcolzoom,args,1);
2463 
2464 s[0]="Off";
2465 s[1]="Zoom";
2466 s[2]="Edit";
2467 
2468 for(i=0;i<3;i++)
2469 {
2470  zwidget[i]=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
2471  XtAddCallback(zwidget[i],XmNactivateCallback,change_pcpn_zoom_mode,
2472  (XtPointer)i);
2473 }
2474 
2475 XmStringFree(t);
2476 
2477 if(zoom_mode==1)
2478  pbutton=zwidget[1];
2479 
2480 else if(edit_mode==1)
2481  pbutton=zwidget[2];
2482 
2483 else
2484  pbutton=zwidget[0];
2485 
2486 XtSetArg(args[0],XmNmenuHistory,pbutton);
2487 XtSetValues(rowcolzoom,args,1);
2488 t=XmStringCreateLocalized("Render:");
2489 argcount=0;
2490 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2491 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2492 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2493 rowcol6=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
2494 
2495 XtSetArg(args[0],XmNsubMenuId,&widg);
2496 XtGetValues(rowcol6,args,1);
2497 
2498 s[0]="Off";
2499 s[1]="Raster";
2500 s[2]="Contour";
2501 
2502 for(i=0;i<3;i++)
2503 {
2504  diswidget[i]=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
2505  XtAddCallback(diswidget[i],XmNactivateCallback,display_options,
2506  (XtPointer)i);
2507 }
2508 
2509 XmStringFree(t);
2510 */
2511 
2512 filter_value=-9999;
2513 dt=2;
2514 data_type=0;
2515 indexx=0;
2516 kscale=0;
2517 rfs_flag=-1;
2518 
2521 write_screen();
2522 
2523 XtManageChild(rowcol);
2524 XtManageChild(rowcol1);
2525 XtManageChild(rowcol2);
2526 XtManageChild(rowcol3);
2527 XtManageChild(rowcol4);
2528 /*
2529 XtManageChild(rowcolzoom);
2530 XtManageChild(rowcol6);
2531 */
2532 XtManageChild(main_widget);
2533 
2534 return;
2535 }
2536 
2537 
2539 {
2540 Dimension width;
2541 static Position x,y;
2542 int leftx,xpos;
2543 Arg args[20];
2544 Cardinal argcount;
2545 char *s[10];
2546 XmString t;
2547 Widget rowcol,pbutton,rowcol2,rowcol1,rowcol3,rowcol4,rowcol5,rowcol6,arrow1,arrow2;
2548 Widget rowcol45,scale;
2549 int i;
2550 Atom WM_DELETE_WINDOW;
2551 Widget shell;
2552 
2553 if(main_widget != NULL)
2554  kill_main_widget();
2555 
2556 XtSetArg(args[0],XmNx,&x);
2557 XtSetArg(args[1],XmNy,&y);
2558 XtSetArg(args[2],XtNwidth,&width);
2559 XtGetValues(top_level,args,3);
2560 
2561 leftx=max_width- (x + width);
2562 
2563 if(leftx >= 259)
2564  xpos= x + width;
2565 else
2566  xpos=max_width-259;
2567 
2568 argcount=0;
2569 XtSetArg(args[argcount],XmNx, xpos);argcount++;
2570 XtSetArg(args[argcount],XmNy, y);argcount++;
2571 XtSetArg(args[argcount],XmNdefaultPosition, False);argcount++;
2572 XtSetArg(args[argcount],XmNwidth,246);argcount++;
2573 XtSetArg(args[argcount],XmNheight,400);argcount++;
2574 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2575 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2576 main_widget=XmCreateMessageDialog(drawing_area,"View_Humidity",args,argcount);
2577 
2578 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_CANCEL_BUTTON));
2579 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_HELP_BUTTON));
2580 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_OK_BUTTON));
2581 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_SEPARATOR));
2582 
2583 shell=XtParent(main_widget);
2584 WM_DELETE_WINDOW=XmInternAtom(XtDisplay(top_level),"WM_DELETE_WINDOW",False);
2585 XmAddWMProtocolCallback(shell,WM_DELETE_WINDOW,kill_main_widget,NULL);
2586 
2587 argcount=0;
2588 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2589 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2590 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
2591 rowcol=XmCreateRowColumn(main_widget,"Edit Precipitation",args,argcount);
2592 
2593 t=XmStringCreateLocalized("Display:");
2594 
2595 argcount=0;
2596 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2597 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2598 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2599 rowcol1=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
2600 
2601 XtSetArg(args[0],XmNsubMenuId,&widg);
2602 XtGetValues(rowcol1,args,1);
2603 
2604 s[0]="Dewpt";
2605 s[1]="Dewpt 24hr chg";
2606 s[2]="Rel Hum";
2607 
2608 for(i=0;i<3;i++)
2609 {
2610  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
2611  XtAddCallback(pbutton,XmNactivateCallback,change_mode,
2612  (XtPointer)i);
2613 }
2614 
2615 argcount=0;
2616 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2617 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2618 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
2619 XtSetArg(args[argcount],XmNnumColumns,4);argcount++;
2620 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
2621 rowcol2=XmCreateRowColumn(rowcol,"Edit Stations",args,argcount);
2622 
2623 t=XmStringCreateLocalized("Time:");
2624 argcount=0;
2625 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2626 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2627 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2628 pbutton=XmCreateLabel(rowcol2,"Label",args,argcount);
2629 XtManageChild(pbutton);
2630 XmStringFree(t);
2631 
2632 argcount=0;
2633 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2634 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2635 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_UP);argcount++;
2636 arrow1=XmCreateArrowButton(rowcol2,"up",args,argcount);
2637 XtAddCallback(arrow1,XmNactivateCallback,change_index_time,(XtPointer)0);
2638 
2639 argcount=0;
2640 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2641 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2642 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_DOWN);argcount++;
2643 arrow2=XmCreateArrowButton(rowcol2,"down",args,argcount);
2644 XtAddCallback(arrow2,XmNactivateCallback,change_index_time,(XtPointer)1);
2645 
2646 XtManageChild(arrow1);
2647 XtManageChild(arrow2);
2648 
2649 t=XmStringCreateLocalized("Data:");
2650 argcount=0;
2651 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2652 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2653 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2654 rowcol4=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
2655 
2656 XtSetArg(args[0],XmNsubMenuId,&widg);
2657 XtGetValues(rowcol4,args,1);
2658 
2659 s[0]="HB5";
2660 s[1]="Number";
2661 s[2]="PC";
2662 s[3]="Name";
2663 s[4]="Elev";
2664 s[5]="Data";
2665 
2666 for(i=0;i<6;i++)
2667 {
2668  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
2669  XtAddCallback(pbutton,XmNactivateCallback,change_plot,
2670  (XtPointer)(i+1));
2671 }
2672 
2673 XtSetArg(args[0],XmNmenuHistory,pbutton);
2674 XtSetValues(rowcol4,args,1);
2675 
2676 XmStringFree(t);
2677 
2678 t=XmStringCreateLocalized("Station type");
2679 argcount=0;
2680 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2681 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2682 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2683 pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
2684 XtManageChild(pbutton);
2685 XmStringFree(t);
2686 
2687 argcount=0;
2688 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2689 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2690 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
2691 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
2692 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
2693 rowcol3=XmCreateRowColumn(rowcol,"Edit Stations",args,argcount);
2694 
2695 s[0]="";
2696 s[1]="PHONE (P)";
2697 s[2]="SNOTEL (M)";
2698 s[3]="ALERT (R)";
2699 s[4]="GOES (G)";
2700 s[5]="DEFAULT (Z)";
2701 s[6]="ALL";
2702 
2703 for(i=1;i<7;i++)
2704 {
2705  argcount=0;
2706  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2707  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2708  XtSetArg(args[argcount],XmNselectColor,cmap[4]);argcount++;
2709 
2710  if(dflag[i]==1)
2711  XtSetArg(args[argcount],XmNset,True);
2712  else
2713  XtSetArg(args[argcount],XmNset,False);
2714 
2715  argcount++;
2716 
2717  bwidget[i]=XmCreateToggleButton(rowcol3,s[i],args,argcount);
2718  XtAddCallback(bwidget[i],XmNvalueChangedCallback,source_select,
2719  (XtPointer)i);
2720  XtManageChild(bwidget[i]);
2721 }
2722 
2724 
2725 t=XmStringCreateLocalized("Filter Elevation (Feet)");
2726 argcount=0;
2727 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2728 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2729 XtSetArg(args[argcount],XmNminimum,0);argcount++;
2730 XtSetArg(args[argcount],XmNmaximum,12000);argcount++;
2731 XtSetArg(args[argcount],XmNdecimalPoints,0);argcount++;
2732 XtSetArg(args[argcount],XmNshowValue,True);argcount++;
2733 XtSetArg(args[argcount],XmNtitleString,t);argcount++;
2734 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
2735 scale=XmCreateScale(rowcol,"scale",args,argcount);
2736 XtManageChild(scale);
2737 
2738 XtAddCallback(scale,XmNvalueChangedCallback,elevation_filter,NULL);
2739 XmStringFree(t);
2740 
2741 /*
2742 t=XmStringCreateLocalized("Mouse:");
2743 
2744 argcount=0;
2745 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2746 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2747 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2748 rowcolzoom=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
2749 
2750 XtSetArg(args[0],XmNsubMenuId,&widg);
2751 XtGetValues(rowcolzoom,args,1);
2752 
2753 s[0]="Off";
2754 s[1]="Zoom";
2755 s[2]="Edit";
2756 
2757 for(i=0;i<3;i++)
2758 {
2759  zwidget[i]=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
2760  XtAddCallback(zwidget[i],XmNactivateCallback,change_pcpn_zoom_mode,
2761  (XtPointer)i);
2762 }
2763 
2764 XmStringFree(t);
2765 
2766 if(zoom_mode==1)
2767  pbutton=zwidget[1];
2768 else if(edit_mode==1)
2769  pbutton=zwidget[2];
2770 else
2771  pbutton=zwidget[0];
2772 
2773 XtSetArg(args[0],XmNmenuHistory,pbutton);
2774 XtSetValues(rowcolzoom,args,1);
2775 t=XmStringCreateLocalized("Render:");
2776 argcount=0;
2777 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2778 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2779 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2780 rowcol6=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
2781 
2782 XtSetArg(args[0],XmNsubMenuId,&widg);
2783 XtGetValues(rowcol6,args,1);
2784 
2785 s[0]="Off";
2786 s[1]="Raster";
2787 s[2]="Contour";
2788 
2789 for(i=0;i<3;i++)
2790 {
2791  diswidget[i]=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
2792  XtAddCallback(diswidget[i],XmNactivateCallback,display_options,
2793  (XtPointer)i);
2794 }
2795 XmStringFree(t);
2796 */
2797 
2798 filter_value=-9999;
2799 dt=3;
2800 data_type=9;
2801 indexx=0;
2802 kscale=0;
2803 rfs_flag=-1;
2804 
2807 write_screen();
2808 
2809 XtManageChild(rowcol);
2810 XtManageChild(rowcol1);
2811 XtManageChild(rowcol2);
2812 XtManageChild(rowcol3);
2813 XtManageChild(rowcol4);
2814 /*
2815 XtManageChild(rowcolzoom);
2816 XtManageChild(rowcol6);
2817 */
2818 
2819 XtManageChild(main_widget);
2820 
2821 return;
2822 }
2823 
2824 
2826 {
2827 Dimension width;
2828 static Position x,y;
2829 int leftx,xpos;
2830 Arg args[20];
2831 Cardinal argcount;
2832 char *s[10];
2833 XmString t;
2834 Widget rowcol,pbutton,rowcol0,rowcol2,rowcol1,rowcol3,rowcol4,rowcol5,arrow1,arrow2;
2835 Widget rowcol7,scale;
2836 int i;
2837 Atom WM_DELETE_WINDOW;
2838 Widget shell;
2839 
2840 if(main_widget != NULL)
2841  kill_main_widget();
2842 
2843 XtSetArg(args[0],XmNx,&x);
2844 XtSetArg(args[1],XmNy,&y);
2845 XtSetArg(args[2],XtNwidth,&width);
2846 XtGetValues(top_level,args,3);
2847 
2848 leftx=max_width- (x + width);
2849 
2850 if(leftx >= 287)
2851  xpos= x + width;
2852 else
2853  xpos=max_width-287;
2854 
2855 argcount=0;
2856 XtSetArg(args[argcount],XmNx, xpos);argcount++;
2857 XtSetArg(args[argcount],XmNy, y);argcount++;
2858 XtSetArg(args[argcount],XmNdefaultPosition, False);argcount++;
2859 XtSetArg(args[argcount],XmNwidth,274);argcount++;
2860 XtSetArg(args[argcount],XmNheight,530);argcount++;
2861 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2862 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2863 main_widget=XmCreateMessageDialog(drawing_area,"View_Stage",args,argcount);
2864 
2865 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_CANCEL_BUTTON));
2866 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_HELP_BUTTON));
2867 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_OK_BUTTON));
2868 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_SEPARATOR));
2869 
2870 shell=XtParent(main_widget);
2871 WM_DELETE_WINDOW=XmInternAtom(XtDisplay(top_level),"WM_DELETE_WINDOW",False);
2872 XmAddWMProtocolCallback(shell,WM_DELETE_WINDOW,kill_main_widget,NULL);
2873 
2874 argcount=0;
2875 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2876 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2877 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
2878 rowcol=XmCreateRowColumn(main_widget,"Edit Stage",args,argcount);
2879 
2880 t=XmStringCreateLocalized("Display:");
2881 argcount=0;
2882 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2883 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2884 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2885 rowcol1=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
2886 
2887 XtSetArg(args[0],XmNsubMenuId,&widg);
2888 XtGetValues(rowcol1,args,1);
2889 
2890 s[0]="Stage/Pool";
2891 s[1]="Flow/Storage";
2892 s[2]="Depth abv flood stg";
2893 s[3]="Pcnt of flood flow";
2894 
2895 for(i=0;i<4;i++)
2896 {
2897  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
2898  XtAddCallback(pbutton,XmNactivateCallback,change_mode,
2899  (XtPointer)i);
2900 }
2901 
2902 XmStringFree(t);
2903 
2904 argcount=0;
2905 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2906 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2907 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
2908 XtSetArg(args[argcount],XmNnumColumns,4);argcount++;
2909 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
2910 rowcol2=XmCreateRowColumn(rowcol,"Edit Stations",args,argcount);
2911 
2912 t=XmStringCreateLocalized("Time:");
2913 argcount=0;
2914 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2915 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2916 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2917 pbutton=XmCreateLabel(rowcol2,"Label",args,argcount);
2918 XtManageChild(pbutton);
2919 XmStringFree(t);
2920 
2921 argcount=0;
2922 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2923 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2924 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_UP);argcount++;
2925 arrow1=XmCreateArrowButton(rowcol2,"up",args,argcount);
2926 XtAddCallback(arrow1,XmNactivateCallback,change_index_time,(XtPointer)0);
2927 
2928 argcount=0;
2929 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2930 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2931 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_DOWN);argcount++;
2932 arrow2=XmCreateArrowButton(rowcol2,"down",args,argcount);
2933 XtAddCallback(arrow2,XmNactivateCallback,change_index_time,(XtPointer)1);
2934 
2935 XtManageChild(arrow1);
2936 XtManageChild(arrow2);
2937 
2938 t=XmStringCreateLocalized("Data:");
2939 argcount=0;
2940 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2941 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2942 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2943 rowcol4=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
2944 
2945 XtSetArg(args[0],XmNsubMenuId,&widg);
2946 XtGetValues(rowcol4,args,1);
2947 
2948 s[0]="HB5";
2949 s[1]="Number";
2950 s[2]="PC";
2951 s[3]="Name";
2952 s[4]="Elev";
2953 s[5]="Data";
2954 
2955 for(i=0;i<6;i++)
2956 {
2957  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
2958  XtAddCallback(pbutton,XmNactivateCallback,change_plot,
2959  (XtPointer)(i+1));
2960 }
2961 
2962 XtSetArg(args[0],XmNmenuHistory,pbutton);
2963 XtSetValues(rowcol4,args,1);
2964 
2965 XmStringFree(t);
2966 
2967 t=XmStringCreateLocalized("Type:");
2968 
2969 argcount=0;
2970 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2971 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
2972 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
2973 rowcol0=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
2974 
2975 XtSetArg(args[0],XmNsubMenuId,&widg);
2976 XtGetValues(rowcol0,args,1);
2977 
2978 s[0]="All";
2979 s[1]="Stream";
2980 s[2]="Reservoir";
2981 
2982 hgflag=1;hpflag=1;
2983 
2984 for(i=0;i<3;i++)
2985 {
2986  hgwidget[i]=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
2987  XtAddCallback(hgwidget[i],XmNactivateCallback,hg_select,
2988  (XtPointer)i);
2989 }
2990 
2991 XtSetArg(args[0],XmNmenuHistory,hgwidget[0]);
2992 XtSetValues(rowcol0,args,1);
2993 
2994 XmStringFree(t);
2995 
2996 t=XmStringCreateLocalized("Forecasts:");
2997 argcount=0;
2998 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
2999 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3000 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3001 rowcol7=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
3002 
3003 XtSetArg(args[0],XmNsubMenuId,&widg);
3004 XtGetValues(rowcol7,args,1);
3005 
3006 s[0]="Yes";
3007 s[1]="No ";
3008 
3009 for(i=0;i<2;i++)
3010 {
3011  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
3012  XtAddCallback(pbutton,XmNactivateCallback,rfs_options,
3013  (XtPointer)i);
3014 }
3015 
3016 XmStringFree(t);
3017 
3018 t=XmStringCreateLocalized("Station type");
3019 argcount=0;
3020 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3021 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3022 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3023 pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
3024 XtManageChild(pbutton);
3025 XmStringFree(t);
3026 
3027 argcount=0;
3028 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3029 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3030 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
3031 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
3032 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
3033 rowcol3=XmCreateRowColumn(rowcol,"Edit Stations",args,argcount);
3034 
3035 s[0]="";
3036 s[1]="PHONE (P)";
3037 s[2]="SNOTEL (M)";
3038 s[3]="ALERT (R)";
3039 s[4]="GOES (G)";
3040 s[5]="DEFAULT (Z)";
3041 s[6]="ALL";
3042 
3043 for(i=1;i<7;i++)
3044 {
3045  argcount=0;
3046  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3047  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3048  XtSetArg(args[argcount],XmNselectColor,cmap[4]);argcount++;
3049 
3050  if(dflag[i]==1)
3051  XtSetArg(args[argcount],XmNset,True);
3052  else
3053  XtSetArg(args[argcount],XmNset,False);
3054 
3055  argcount++;
3056 
3057  bwidget[i]=XmCreateToggleButton(rowcol3,s[i],args,argcount);
3058  XtAddCallback(bwidget[i],XmNvalueChangedCallback,source_select,
3059  (XtPointer)i);
3060  XtManageChild(bwidget[i]);
3061 }
3062 
3064 t=XmStringCreateLocalized("Filter Elevation (Feet)");
3065 argcount=0;
3066 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3067 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3068 XtSetArg(args[argcount],XmNminimum,0);argcount++;
3069 XtSetArg(args[argcount],XmNmaximum,12000);argcount++;
3070 XtSetArg(args[argcount],XmNdecimalPoints,0);argcount++;
3071 XtSetArg(args[argcount],XmNshowValue,True);argcount++;
3072 XtSetArg(args[argcount],XmNtitleString,t);argcount++;
3073 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
3074 scale=XmCreateScale(rowcol,"scale",args,argcount);
3075 XtManageChild(scale);
3076 
3077 XtAddCallback(scale,XmNvalueChangedCallback,elevation_filter,NULL);
3078 
3079 XmStringFree(t);
3080 
3081 /*
3082 
3083 t=XmStringCreateLocalized("Mouse:");
3084 
3085 argcount=0;
3086 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3087 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3088 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3089 rowcolzoom=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
3090 
3091 XtSetArg(args[0],XmNsubMenuId,&widg);
3092 XtGetValues(rowcolzoom,args,1);
3093 
3094 s[0]="Off";
3095 s[1]="Zoom";
3096 s[2]="Edit";
3097 
3098 for(i=0;i<3;i++)
3099 {
3100  zwidget[i]=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
3101  XtAddCallback(zwidget[i],XmNactivateCallback,change_pcpn_zoom_mode,
3102  (XtPointer)i);
3103 }
3104 
3105 XmStringFree(t);
3106 
3107 if(zoom_mode==1)
3108  pbutton=zwidget[1];
3109 else if(edit_mode==1)
3110  pbutton=zwidget[2];
3111 else
3112  pbutton=zwidget[0];
3113 
3114 XtSetArg(args[0],XmNmenuHistory,pbutton);
3115 XtSetValues(rowcolzoom,args,1);
3116 
3117 */
3118 filter_value=-9999;
3119 dt=1;
3120 data_type=3;
3121 indexx=0;
3122 kscale=0;
3123 rfs_flag=-1;
3124 
3127 write_screen();
3128 
3129 XtManageChild(rowcol);
3130 XtManageChild(rowcol0);
3131 XtManageChild(rowcol1);
3132 XtManageChild(rowcol2);
3133 XtManageChild(rowcol3);
3134 XtManageChild(rowcol4);
3135 XtManageChild(rowcol7);
3136 /*XtManageChild(rowcolzoom);*/
3137 XtManageChild(main_widget);
3138 
3139 return;
3140 
3141 }
3142 
3144 {
3145 
3146 Dimension width;
3147 static Position x,y;
3148 int leftx,xpos;
3149 Arg args[20];
3150 Cardinal argcount;
3151 char *s[10];
3152 XmString t;
3153 Widget rowcol,pbutton,rowcol2,rowcol1,rowcol3,rowcol4,rowcol5,rowcol6,arrow1,arrow2;
3154 Widget rowcol7,scale;
3155 int i;
3156 Atom WM_DELETE_WINDOW;
3157 Widget shell;
3158 
3159 if(main_widget != NULL)
3160  kill_main_widget();
3161 
3162 XtSetArg(args[0],XmNx,&x);
3163 XtSetArg(args[1],XmNy,&y);
3164 XtSetArg(args[2],XtNwidth,&width);
3165 XtGetValues(top_level,args,3);
3166 
3167 leftx=max_width- (x + width);
3168 
3169 if(leftx >= 234)
3170  xpos= x + width;
3171 else
3172  xpos=max_width-234;
3173 
3174 argcount=0;
3175 XtSetArg(args[argcount],XmNx, xpos);argcount++;
3176 XtSetArg(args[argcount],XmNy, y);argcount++;
3177 XtSetArg(args[argcount],XmNdefaultPosition, False);argcount++;
3178 XtSetArg(args[argcount],XmNwidth,221);argcount++;
3179 XtSetArg(args[argcount],XmNheight,400);argcount++;
3180 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3181 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3182 main_widget=XmCreateMessageDialog(drawing_area,"View_Wind",args,argcount);
3183 
3184 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_CANCEL_BUTTON));
3185 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_HELP_BUTTON));
3186 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_OK_BUTTON));
3187 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_SEPARATOR));
3188 
3189 shell=XtParent(main_widget);
3190 WM_DELETE_WINDOW=XmInternAtom(XtDisplay(top_level),"WM_DELETE_WINDOW",False);
3191 XmAddWMProtocolCallback(shell,WM_DELETE_WINDOW,kill_main_widget,NULL);
3192 
3193 argcount=0;
3194 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3195 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3196 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
3197 rowcol=XmCreateRowColumn(main_widget,"Edit Wind",args,argcount);
3198 
3199 t=XmStringCreateLocalized("Display:");
3200 
3201 argcount=0;
3202 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3203 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3204 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3205 rowcol1=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
3206 
3207 XtSetArg(args[0],XmNsubMenuId,&widg);
3208 XtGetValues(rowcol1,args,1);
3209 
3210 s[0]="Hourly";
3211 
3212 for(i=0;i<1;i++)
3213 {
3214  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
3215  XtAddCallback(pbutton,XmNactivateCallback,change_mode,
3216  (XtPointer)i);
3217 }
3218 
3219 XmStringFree(t);
3220 
3221 argcount=0;
3222 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3223 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3224 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
3225 XtSetArg(args[argcount],XmNnumColumns,4);argcount++;
3226 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
3227 rowcol2=XmCreateRowColumn(rowcol,"Edit Stations",args,argcount);
3228 
3229 t=XmStringCreateLocalized("Time:");
3230 argcount=0;
3231 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3232 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3233 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3234 pbutton=XmCreateLabel(rowcol2,"Label",args,argcount);
3235 XtManageChild(pbutton);
3236 XmStringFree(t);
3237 
3238 argcount=0;
3239 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3240 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3241 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_UP);argcount++;
3242 arrow1=XmCreateArrowButton(rowcol2,"up",args,argcount);
3243 XtAddCallback(arrow1,XmNactivateCallback,change_index_time,(XtPointer)0);
3244 
3245 argcount=0;
3246 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3247 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3248 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_DOWN);argcount++;
3249 arrow2=XmCreateArrowButton(rowcol2,"down",args,argcount);
3250 XtAddCallback(arrow2,XmNactivateCallback,change_index_time,(XtPointer)1);
3251 
3252 XtManageChild(arrow1);
3253 XtManageChild(arrow2);
3254 
3255 t=XmStringCreateLocalized("Data:");
3256 argcount=0;
3257 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3258 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3259 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3260 rowcol4=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
3261 
3262 XtSetArg(args[0],XmNsubMenuId,&widg);
3263 XtGetValues(rowcol4,args,1);
3264 
3265 s[0]="HB5";
3266 s[1]="Number";
3267 s[2]="PC";
3268 s[3]="Name";
3269 s[4]="Elev";
3270 s[5]="Data";
3271 
3272 for(i=0;i<6;i++)
3273 {
3274  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
3275  XtAddCallback(pbutton,XmNactivateCallback,change_plot,
3276  (XtPointer)(i+1));
3277 }
3278 
3279 XtSetArg(args[0],XmNmenuHistory,pbutton);
3280 XtSetValues(rowcol4,args,1);
3281 
3282 XmStringFree(t);
3283 
3284 t=XmStringCreateLocalized("Station type");
3285 argcount=0;
3286 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3287 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3288 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3289 pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
3290 XtManageChild(pbutton);
3291 XmStringFree(t);
3292 
3293 argcount=0;
3294 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3295 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3296 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
3297 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
3298 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
3299 rowcol3=XmCreateRowColumn(rowcol,"Edit Stations",args,argcount);
3300 
3301 s[0]="";
3302 s[1]="PHONE (P)";
3303 s[2]="SNOTEL (M)";
3304 s[3]="ALERT (R)";
3305 s[4]="GOES (G)";
3306 s[5]="DEFAULT (Z)";
3307 s[6]="ALL";
3308 
3309 for(i=1;i<7;i++)
3310 {
3311  argcount=0;
3312  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3313  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3314  XtSetArg(args[argcount],XmNselectColor,cmap[4]);argcount++;
3315 
3316  if(dflag[i]==1)
3317  XtSetArg(args[argcount],XmNset,True);
3318  else
3319  XtSetArg(args[argcount],XmNset,False);
3320 
3321  argcount++;
3322 
3323  bwidget[i]=XmCreateToggleButton(rowcol3,s[i],args,argcount);
3324  XtAddCallback(bwidget[i],XmNvalueChangedCallback,source_select,
3325  (XtPointer)i);
3326  XtManageChild(bwidget[i]);
3327 }
3328 
3330 t=XmStringCreateLocalized("Filter Elevation (Feet)");
3331 argcount=0;
3332 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3333 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3334 XtSetArg(args[argcount],XmNminimum,0);argcount++;
3335 XtSetArg(args[argcount],XmNmaximum,12000);argcount++;
3336 XtSetArg(args[argcount],XmNdecimalPoints,0);argcount++;
3337 XtSetArg(args[argcount],XmNshowValue,True);argcount++;
3338 XtSetArg(args[argcount],XmNtitleString,t);argcount++;
3339 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
3340 scale=XmCreateScale(rowcol,"scale",args,argcount);
3341 XtManageChild(scale);
3342 XtAddCallback(scale,XmNvalueChangedCallback,elevation_filter,NULL);
3343 
3344 /*
3345 XmStringFree(t);
3346 t=XmStringCreateLocalized("Mouse:");
3347 
3348 argcount=0;
3349 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3350 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3351 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3352 rowcolzoom=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
3353 
3354 XtSetArg(args[0],XmNsubMenuId,&widg);
3355 XtGetValues(rowcolzoom,args,1);
3356 
3357 s[0]="Off";
3358 s[1]="Zoom";
3359 s[2]="Edit";
3360 
3361 for(i=0;i<3;i++)
3362 {
3363  zwidget[i]=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
3364  XtAddCallback(zwidget[i],XmNactivateCallback,change_pcpn_zoom_mode,
3365  (XtPointer)i);
3366 }
3367 
3368 XmStringFree(t);
3369 
3370 if(zoom_mode==1)
3371  pbutton=zwidget[1];
3372 else if(edit_mode==1)
3373  pbutton=zwidget[2];
3374 else
3375  pbutton=zwidget[0];
3376 
3377 XtSetArg(args[0],XmNmenuHistory,pbutton);
3378 XtSetValues(rowcolzoom,args,1);
3379 t=XmStringCreateLocalized("Render:");
3380 argcount=0;
3381 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3382 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3383 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3384 rowcol6=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
3385 
3386 XtSetArg(args[0],XmNsubMenuId,&widg);
3387 XtGetValues(rowcol6,args,1);
3388 
3389 s[0]="Off";
3390 s[1]="Raster";
3391 s[2]="Contour";
3392 
3393 for(i=0;i<3;i++)
3394 {
3395  diswidget[i]=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
3396  XtAddCallback(diswidget[i],XmNactivateCallback,display_options,
3397  (XtPointer)i);
3398 }
3399 
3400 XmStringFree(t);
3401 */
3402 
3403 filter_value=-9999;
3404 dt=4;
3405 data_type=11;
3406 indexx=0;
3407 kscale=0;
3408 rfs_flag=-1;
3409 
3412 write_screen();
3413 
3414 XtManageChild(rowcol);
3415 XtManageChild(rowcol1);
3416 XtManageChild(rowcol2);
3417 XtManageChild(rowcol3);
3418 XtManageChild(rowcol4);
3419 /*
3420 XtManageChild(rowcolzoom);
3421 XtManageChild(rowcol6);
3422 */
3423 XtManageChild(main_widget);
3424 
3425 return;
3426 }
3427 
3429 {
3430 
3431 Dimension width;
3432 static Position x,y;
3433 int leftx,xpos;
3434 Arg args[20];
3435 Cardinal argcount;
3436 char *s[15];
3437 XmString t;
3438 Widget rowcol,pbutton,rowcol2,rowcol1,rowcol3,rowcol4,rowcol5,rowcol6,arrow1,arrow2;
3439 Widget rowcol45,scale;
3440 int i;
3441 Atom WM_DELETE_WINDOW;
3442 Widget shell;
3443 
3444 if(main_widget != NULL)
3445  kill_main_widget();
3446 
3447 XtSetArg(args[0],XmNx,&x);
3448 XtSetArg(args[1],XmNy,&y);
3449 XtSetArg(args[2],XtNwidth,&width);
3450 XtGetValues(top_level,args,3);
3451 
3452 leftx=max_width- (x + width);
3453 
3454 if(leftx >= 234)
3455  xpos= x + width;
3456 else
3457  xpos=max_width-234;
3458 
3459 argcount=0;
3460 XtSetArg(args[argcount],XmNx, xpos);argcount++;
3461 XtSetArg(args[argcount],XmNy, y);argcount++;
3462 XtSetArg(args[argcount],XmNdefaultPosition, False);argcount++;
3463 XtSetArg(args[argcount],XmNwidth,221);argcount++;
3464 XtSetArg(args[argcount],XmNheight,400);argcount++;
3465 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3466 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3467 main_widget=XmCreateMessageDialog(drawing_area,"View_Snow",args,argcount);
3468 
3469 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_CANCEL_BUTTON));
3470 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_HELP_BUTTON));
3471 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_OK_BUTTON));
3472 XtUnmanageChild(XmMessageBoxGetChild(main_widget,XmDIALOG_SEPARATOR));
3473 
3474 shell=XtParent(main_widget);
3475 WM_DELETE_WINDOW=XmInternAtom(XtDisplay(top_level),"WM_DELETE_WINDOW",False);
3476 XmAddWMProtocolCallback(shell,WM_DELETE_WINDOW,kill_main_widget,NULL);
3477 
3478 argcount=0;
3479 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3480 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3481 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
3482 rowcol=XmCreateRowColumn(main_widget,"Edit Precipitation",args,argcount);
3483 
3484 t=XmStringCreateLocalized("Display:");
3485 
3486 argcount=0;
3487 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3488 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3489 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3490 rowcol1=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
3491 
3492 XtSetArg(args[0],XmNsubMenuId,&widg);
3493 XtGetValues(rowcol1,args,1);
3494 
3495 /*
3496 s[0]="12Z SWE";
3497 s[1]="12Z SWE %Avg";
3498 s[2]="Change";
3499 s[3]="Monthly SWE";
3500 s[4]="Monthly %Avg";
3501 s[5]="% APR 1 Avg";
3502 */
3503 
3504 s[0]="12Z SWE";
3505 s[1]="Change";
3506 s[2]="Monthly SWE";
3507 s[3]="Monthly %Avg";
3508 s[4]="% APR 1 Avg";
3509 
3510 /*
3511 for(i=0;i<6;i++)
3512 */
3513 for(i=0;i<5;i++)
3514 {
3515  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
3516  XtAddCallback(pbutton,XmNactivateCallback,change_mode,
3517  (XtPointer)i);
3518 }
3519 XmStringFree(t);
3520 
3521 argcount=0;
3522 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3523 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3524 XtSetArg(args[argcount],XmNpacking,XmPACK_TIGHT); argcount++;
3525 XtSetArg(args[argcount],XmNnumColumns,4);argcount++;
3526 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
3527 rowcol2=XmCreateRowColumn(rowcol,"Edit Stations",args,argcount);
3528 
3529 t=XmStringCreateLocalized("Time:");
3530 argcount=0;
3531 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3532 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3533 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3534 pbutton=XmCreateLabel(rowcol2,"Label",args,argcount);
3535 XtManageChild(pbutton);
3536 XmStringFree(t);
3537 
3538 argcount=0;
3539 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3540 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3541 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_UP);argcount++;
3542 arrow1=XmCreateArrowButton(rowcol2,"up",args,argcount);
3543 XtAddCallback(arrow1,XmNactivateCallback,change_index_time,(XtPointer)0);
3544 
3545 argcount=0;
3546 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3547 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3548 XtSetArg(args[argcount],XmNarrowDirection,XmARROW_DOWN);argcount++;
3549 arrow2=XmCreateArrowButton(rowcol2,"down",args,argcount);
3550 XtAddCallback(arrow2,XmNactivateCallback,change_index_time,(XtPointer)1);
3551 
3552 XtManageChild(arrow1);
3553 XtManageChild(arrow2);
3554 
3555 t=XmStringCreateLocalized("Data:");
3556 argcount=0;
3557 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3558 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3559 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3560 rowcol4=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
3561 
3562 XtSetArg(args[0],XmNsubMenuId,&widg);
3563 XtGetValues(rowcol4,args,1);
3564 
3565 s[0]="HB5";
3566 s[1]="Number";
3567 s[2]="PC";
3568 s[3]="Name";
3569 s[4]="Elev";
3570 s[5]="Data";
3571 
3572 for(i=0;i<6;i++)
3573 {
3574  pbutton=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
3575  XtAddCallback(pbutton,XmNactivateCallback,change_plot,
3576  (XtPointer)(i+1));
3577 }
3578 
3579 XtSetArg(args[0],XmNmenuHistory,pbutton);
3580 XtSetValues(rowcol4,args,1);
3581 
3582 XmStringFree(t);
3583 
3584 t=XmStringCreateLocalized("Station type");
3585 argcount=0;
3586 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3587 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3588 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3589 pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
3590 XtManageChild(pbutton);
3591 XmStringFree(t);
3592 
3593 argcount=0;
3594 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3595 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3596 XtSetArg(args[argcount],XmNpacking,XmPACK_COLUMN); argcount++;
3597 XtSetArg(args[argcount],XmNnumColumns,2);argcount++;
3598 XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
3599 rowcol3=XmCreateRowColumn(rowcol,"Edit Stations",args,argcount);
3600 
3601 s[0]="";
3602 s[1]="PHONE (P)";
3603 s[2]="SNOTEL (M)";
3604 s[3]="ALERT (R)";
3605 s[4]="GOES (G)";
3606 s[5]="DEFAULT (Z)";
3607 s[6]="ALL";
3608 
3609 for(i=1;i<7;i++)
3610 {
3611  argcount=0;
3612  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3613  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3614  XtSetArg(args[argcount],XmNselectColor,cmap[4]);argcount++;
3615 
3616  if(dflag[i]==1)
3617  XtSetArg(args[argcount],XmNset,True);
3618  else
3619  XtSetArg(args[argcount],XmNset,False);
3620 
3621  argcount++;
3622 
3623  bwidget[i]=XmCreateToggleButton(rowcol3,s[i],args,argcount);
3624  XtAddCallback(bwidget[i],XmNvalueChangedCallback,source_select,
3625  (XtPointer)i);
3626  XtManageChild(bwidget[i]);
3627 }
3628 
3630 t=XmStringCreateLocalized("Filter Elevation (Feet)");
3631 argcount=0;
3632 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3633 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3634 XtSetArg(args[argcount],XmNminimum,0);argcount++;
3635 XtSetArg(args[argcount],XmNmaximum,12000);argcount++;
3636 XtSetArg(args[argcount],XmNdecimalPoints,0);argcount++;
3637 XtSetArg(args[argcount],XmNshowValue,True);argcount++;
3638 XtSetArg(args[argcount],XmNtitleString,t);argcount++;
3639 XtSetArg(args[argcount],XmNorientation,XmHORIZONTAL);argcount++;
3640 scale=XmCreateScale(rowcol,"scale",args,argcount);
3641 XtManageChild(scale);
3642 
3643 XtAddCallback(scale,XmNvalueChangedCallback,elevation_filter,NULL);
3644 
3645 XmStringFree(t);
3646 /*
3647 t=XmStringCreateLocalized("Mouse:");
3648 
3649 argcount=0;
3650 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3651 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3652 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3653 rowcolzoom=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
3654 
3655 XtSetArg(args[0],XmNsubMenuId,&widg);
3656 XtGetValues(rowcolzoom,args,1);
3657 
3658 s[0]="Off";
3659 s[1]="Zoom";
3660 s[2]="Edit";
3661 
3662 for(i=0;i<3;i++)
3663 {
3664  zwidget[i]=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
3665  XtAddCallback(zwidget[i],XmNactivateCallback,change_pcpn_zoom_mode,
3666  (XtPointer)i);
3667 }
3668 
3669 XmStringFree(t);
3670 
3671 if(zoom_mode==1)
3672  pbutton=zwidget[1];
3673 else if(edit_mode==1)
3674  pbutton=zwidget[2];
3675 else
3676  pbutton=zwidget[0];
3677 
3678 XtSetArg(args[0],XmNmenuHistory,pbutton);
3679 XtSetValues(rowcolzoom,args,1);
3680 
3681 t=XmStringCreateLocalized("Render:");
3682 argcount=0;
3683 XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3684 XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3685 XtSetArg(args[argcount],XmNlabelString,t);argcount++;
3686 rowcol6=XmCreateSimpleOptionMenu(rowcol,"Edit Stations",args,argcount);
3687 
3688 XtSetArg(args[0],XmNsubMenuId,&widg);
3689 XtGetValues(rowcol6,args,1);
3690 
3691 s[0]="Off";
3692 s[1]="Raster";
3693 s[2]="Contour";
3694 
3695 for(i=0;i<3;i++)
3696 {
3697  diswidget[i]=XtVaCreateManagedWidget(s[i],xmPushButtonGadgetClass,widg,NULL);
3698  XtAddCallback(diswidget[i],XmNactivateCallback,display_options,
3699  (XtPointer)i);
3700 }
3701 XmStringFree(t);
3702 */
3703 
3704 filter_value=-9999;
3705 dt=5;
3706 data_type=17;
3707 indexx=0;
3708 kscale=0;
3709 rfs_flag=-1;
3710 
3713 write_screen();
3714 
3715 XtManageChild(rowcol);
3716 XtManageChild(rowcol1);
3717 XtManageChild(rowcol2);
3718 XtManageChild(rowcol3);
3719 XtManageChild(rowcol4);
3720 /*
3721 XtManageChild(rowcolzoom);
3722 XtManageChild(rowcol6);
3723 */
3724 XtManageChild(main_widget);
3725 
3726 return;
3727 }
3728 
3729 
3730 void other_pcpn_options(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
3731 {
3732 Cardinal argcount;
3733 Arg args[10];
3734 XmString t;
3735 
3736  if((int)data==0)
3737  {
3738  t=XmStringCreateLocalized("Enter handbook 5 I.D.");
3739  argcount=0;
3740  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
3741  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
3742  XtSetArg(args[argcount],XmNdialogStyle,
3743  XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
3744  XtSetArg(args[argcount],XmNselectionLabelString,t);argcount++;
3745  XtSetArg(args[argcount],XmNautoUnmanage,False);argcount++;
3746  find_widget=XmCreatePromptDialog(drawing_area,"find station",
3747  args,argcount);
3748  XtUnmanageChild(XmSelectionBoxGetChild(find_widget,
3749  XmDIALOG_HELP_BUTTON));
3750  XtAddCallback(find_widget,XmNokCallback,find_name,(XtPointer)0);
3751  XtAddCallback(find_widget,XmNcancelCallback,find_name,(XtPointer)1);
3752  XtManageChild(find_widget);
3753  XmStringFree(t);
3754  return;
3755  }
3756 }
3757 
3758 void display_options(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
3759 {
3760 Arg args[10];
3761 Cardinal argcount;
3762 
3763  if((int)data==0)
3764  {
3765  raster_flag=-1;
3766  contour_flag=-1;
3767  }
3768  else if((int)data==1)
3769  {
3770  raster_flag=1;
3771  contour_flag=-1;
3772  }
3773  else
3774  {
3775  raster_flag=-1;
3776  contour_flag=1;
3777  }
3779  write_screen();
3780 }
3781 
3782 void rfs_options(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
3783 {
3784 Arg args[10];
3785 Cardinal argcount;
3786 
3787  if((int)data==0)
3789  else if((int)data==1)
3791  /*
3792  if((int)data==0)
3793  rfs_flag=-1;
3794  else if((int)data==1)
3795  rfs_flag=1;
3796  */
3797 
3799 write_screen();
3800 }
3801 
3802 
3803 void find_name(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
3804 {
3805 XmString str;
3806 char *cstr;
3807 int x1,y1,MY=10;
3808 signed long XSIZE,YSIZE;
3809 Cardinal argcount;
3810 Arg args[10];
3811 float lat,lon,xrat,yrat,mult,cmult,dmult;
3812 long r,s;
3813 float conv=.0174;
3814 long xmin,ymin;
3815 Dimension width,height;
3816 char dbuf[50];
3817 struct saved *saved;
3818 
3819 if((int)data==1)
3820 {
3821  XtDestroyWidget(find_widget);
3822  return;
3823 }
3824 
3825 argcount=0;
3826 XtSetArg(args[argcount],XmNtextString,&str);argcount++;
3827 XtGetValues(find_widget,args,argcount);
3828 
3829 XmStringGetLtoR(str,XmFONTLIST_DEFAULT_TAG,&cstr);
3830 if(cstr[0]==0)
3831  return;
3832 
3833 XtSetArg(args[0],XtNwidth,&width);
3834 XtSetArg(args[1],XtNheight,&height);
3835 XtGetValues(drawing_area,args,2);
3836 
3837 XSIZE=(long)width*10L;
3838 YSIZE=(long)height*10L;
3839 
3840 xrat=(float)XSIZE/(float)12800;
3841 yrat=(float)YSIZE/(float)9600;
3842 
3843 if(xrat < yrat)
3844  mult=xrat;
3845 else
3846  mult=yrat;
3847 
3851 cmult=mult*dmult;
3852 
3854  display_set[display_flag].xmin[0])/10;
3856  display_set[display_flag].ymin[0])/10;
3857 
3858 
3859 saved=fsaved;
3860 
3861 while(saved!=NULL)
3862 {
3863  if(strcasecmp(cstr,saved->hb5)==0)
3864  {
3865  lat=saved->lat;
3866  lon=saved->lon;
3867 
3868  r=dval.a * cos(lat*conv)/(1+sin(lat*conv))
3869  * cos((lon-dval.lo-90)*conv) + dval.xo +.5;
3870  s=dval.a * cos(lat*conv)/(1+sin(lat*conv))
3871  * sin((lon-dval.lo-90)*conv) + dval.yo + .5;
3872 
3873  x1=(xmin+(float)r * cmult)/MY;
3874  y1=(ymin+(float)s * cmult)/MY;
3875 
3876  zoom=1;
3877  opoint[0]=XSIZE/2;
3878  opoint[1]=YSIZE/2;
3879 
3880  XtDestroyWidget(find_widget);
3881  strcpy(find_station_buf,saved->hb5);
3882  redraw_map(x1,y1,Button1);
3883  return;
3884  }
3885 
3886  saved=saved->next;
3887  if(saved==NULL)
3888  break;
3889 }
3890 
3891 strcpy(dbuf,cstr);
3892 strcat(dbuf," not found");
3893 berror(find_widget,dbuf);
3894 
3895 }
3896 
3897 void change_past_days(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
3898 {
3899 Arg args[10];
3900  if((int)data==0)
3902  if((int)data==1)
3904  if((int)data==2)
3906  if((int)data==3)
3908 }
3909 
3910 
3911 void change_pcpn_zoom_mode(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
3912 {
3913 Arg args[10];
3914 
3915  if((int)data==0)
3916  {
3917  zoom_mode=-1;
3918  edit_mode=-1;
3919  }
3920  else if((int)data==1)
3921  {
3922  zoom_mode=1;
3923  edit_mode=-1;
3924  }
3925  else if((int)data==2)
3926  {
3927  zoom_mode=-1;
3928  edit_mode=1;
3929  }
3931  write_screen();
3932 }
3933 
3935 {
3936  XtDestroyWidget(main_widget);
3937  main_widget=NULL;
3938  data_type=-1;
3939  contour_flag=-1;
3940  raster_flag=-1;
3941  plot_view=6;
3942  nexrad_flag=-1;
3944  write_screen();
3945 }
3946 
3947 void quit_all()
3948 {
3949 Cardinal argcount;
3950 Arg args[10];
3951 XmString msg;
3952 Widget err;
3953 
3954  msg=XmStringCreateLocalized("Quit mapper?");
3955 
3956  argcount=0;
3957  XtSetArg(args[argcount],XmNmessageString,msg);argcount++;
3958  XtSetArg(args[argcount],XmNdialogStyle,
3959  XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
3960  err=XmCreateErrorDialog(drawing_area,"info",args,argcount);
3961  XtUnmanageChild(XmMessageBoxGetChild(err,XmDIALOG_HELP_BUTTON));
3962  XtAddCallback(err,XmNokCallback,quit_callback,NULL);
3963  XtManageChild(err);
3964  XmStringFree(msg);
3965 }
3966 
3968 {
3969  raise(SIGKILL);
3970 }
3971 
3973 {
3974  fgbgflag=-fgbgflag;
3975  send_expose();
3976 }
3977 
3979 {
3980 int i;
3981 Arg args[10];
3982 Cardinal argcount;
3983 
3984  fgbgflag=1;
3985  for(i=0;i<100;i++)
3986  off[i]=-1;
3987 
3988  add_topo_flag=-1;
3989 
3990  i=0;
3991  while(ktems[i].label!=NULL)
3992  {
3993  argcount=1;
3994  XtSetArg(args[0],XmNset,False);
3995  XtSetValues(mbutton[i],args,argcount);
3996  i++;
3997  }
3998 
3999  argcount=1;
4000  XtSetArg(args[0],XmNset,True);
4001  XtSetValues(fgbg_toggle_button,args,argcount);
4002  send_expose();
4003 }
4004 
4006 {
4007 Cardinal argcount;
4008 Arg args[10];
4009 
4011  tlegend_save=-1;
4012 
4013  if(current_raster != 0)
4014  change_map_flag=1;
4015 
4016  current_raster=0;
4017  send_expose();
4018 }
4019 
4020 void map_select(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
4021 {
4022  off[(int)data]=-off[(int)data];
4023  send_expose();
4024 }
4025 
4027 {
4029  write_screen();
4030 }
4031 
4032 void source_select(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
4033 {
4034 int i;
4035 Cardinal argcount;
4036 Arg args[10];
4037 
4038  dflag[(int)data]=-dflag[(int)data];
4039 
4040  if((int)data==6)
4041  {
4042  if(dflag[6]==1)
4043  {
4044  /* changed 5/13/16 rkh from i=0 */
4045  for(i=1;i<7;i++)
4046  {
4047  if(i==0 && dt != 0)
4048  continue;
4049  dflag[i]=1;
4050  argcount=1;
4051  XtSetArg(args[0],XmNset,True);
4052  XtSetValues(bwidget[i],args,argcount);
4053  }
4054  }
4055  else
4056  {
4057  /* changed 5/13/16 rkh from i=0 */
4058  for(i=1;i<7;i++)
4059  {
4060  if(i==0 && dt != 0)
4061  continue;
4062  dflag[i]=-1;
4063  argcount=1;
4064  XtSetArg(args[0],XmNset,False);
4065  XtSetValues(bwidget[i],args,argcount);
4066  }
4067  }
4068  }
4069 
4070 /*
4071  if(dflag[0]==1 &&
4072  (data_type==25 || data_type==26 ||
4073  (data_type==23 || data_type==24 ||
4074  (data_type==21 || data_type==22 ||
4075  data_type==13 || data_type==14 ||
4076  data_type==15 || data_type==16)))
4077  read_and_sum_nexrad(data_type,indexx);
4078 */
4079  send_expose();
4080 }
4081 
4082 void handle_expose(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
4083 {
4084 extern GC gc;
4085 extern Widget drawing_area;
4086 XEvent *p_event=call_data->event;
4087 
4088 if(p_event->xexpose.count==0)
4089 {
4090  XSetFunction(display,gc,GXcopy);
4091 
4092  if(legend_flag==0)
4094  else if(legend_flag > 0)
4096  else if(first_through != 0)
4098 
4099  XCopyArea(display,pixf,window,gc,0,0,max_width,max_height,0,0);
4100 }
4101 
4102 if(print_flag==1 && main_widget != 0)
4103  XtUnmanageChild(main_widget);
4104 
4105 XmUpdateDisplay(drawing_area);
4106 
4107 if(print_flag==1)
4108  print_draw();
4109 
4110 return;
4111 }
4112 
4114 {
4115 char cmd[200];
4116 time_t tim;
4117 struct tm *gm;
4118 char tbuf[100];
4119 char obuf[100];
4120 
4121 tim=time(NULL);
4122 gm=gmtime(&tim);
4123 
4124 /*
4125 sprintf(tbuf,"/awips/hydroapps/rfc/local/apps/mapper/data/graph.%02d%02d%02d",
4126  gm->tm_hour,gm->tm_min,gm->tm_sec);
4127 */
4128 sprintf(tbuf,"/local/apps/mapper/data/graph.%02d%02d%02d",
4129  gm->tm_hour,gm->tm_min,gm->tm_sec);
4130 sprintf(cmd,"xwd -id %ld -out %s",window,tbuf);
4131 system(cmd);
4132 /*
4133 sprintf(cmd,"/awips/hydroapps/rfc/local/apps/mapper/bin/print_graph %s &",tbuf);
4134 */
4135 sprintf(cmd,"/local/apps/mapper/bin/print_graph %s &",tbuf);
4136 system(cmd);
4137 print_flag=0;
4138 XtManageChild(main_widget);
4139 }
4140 
4141 static int first=0;
4142 void handle_resize(Widget w,XtPointer data,XmDrawingAreaCallbackStruct *call_data)
4143 {
4144 extern GC gc;
4145 extern Widget drawing_area;
4146 Dimension width,height;
4147 Arg args[10];
4148 
4149 XtSetArg(args[0],XtNwidth,&width);
4150 XtSetArg(args[1],XtNheight,&height);
4151 XtGetValues(drawing_area,args,2);
4152 
4153 first++;
4154 if(first==1)
4155  return;
4156 
4157 npoint[0]=(float)npoint[0]*(float)width/(float)owidth;
4158 npoint[1]=(float)npoint[1]*(float)height/(float)oheight;
4159 
4160 if(add_topo_flag != 1)
4161  current_raster=-1;
4162 
4163 if(add_topo_flag==1)
4164  change_map_flag=1;
4165 
4167 
4168 write_screen();
4169 
4170 owidth=width;
4171 oheight=height;
4172 opoint[0]=npoint[0];
4173 opoint[1]=npoint[1];
4174 
4175 return;
4176 }
4177 
4178 static int owin_x,owin_y;
4179 
4180 void handle_motion(Widget w, XtPointer data,XEvent *p_event)
4181 {
4182 
4183 int win_x,win_y,xloc,yloc,i,swin_x,swin_y;
4184 Arg args[10];
4185 Dimension width,height;
4186 
4187 XtSetArg(args[0],XtNwidth,&width);
4188 XtSetArg(args[1],XtNheight,&height);
4189 XtGetValues(drawing_area,args,2);
4190 
4192 
4193 win_x=p_event->xbutton.x;
4194 win_y=p_event->xbutton.y;
4195 
4196 if(display_flag==0)
4197 {
4198  for(i=0;i<4;i++)
4199  cursorflag[i]=-1;
4200  return;
4201 }
4202 
4203 if(abs(win_y - owin_y) < 3 && abs(win_x - owin_x) < 3)
4204  return;
4205 
4206 /* restore part cursor wrote over */
4207 XSetFunction(display,gc,GXcopy);
4208 
4209 for(i=0;i<4;i++)
4210 {
4211  if(cursorflag[i]==1)
4212  {
4213  XCopyArea(display,pixcursor[i],window,gc,0,0,16,16,cursor[i].x,cursor[i].y);
4214  cursorflag[i]=-1;
4215  }
4216 }
4217 
4218 /* write cursors to other three screens */
4219 
4220 XSetForeground(display,gc,nmap[15]);
4221 
4222 swin_x=win_x;
4223 swin_y=win_y;
4224 
4225 if(win_x > width/2)
4226  swin_x=win_x-width/2 - xclip;
4227 
4228 if(win_y > height/2)
4229  swin_y=win_y-height/2 - yclip;
4230 
4231 for(i=0; i < 4; i++)
4232 {
4233  if(i==0)
4234  {
4235  if(win_x < width/2 && win_y < height/2 )
4236  continue;
4237  xloc=swin_x;
4238  yloc=swin_y;
4239  }
4240  else if(i==1)
4241  {
4242  if(win_x >= width/2 && win_y < height/2)
4243  continue;
4244 
4245  xloc=swin_x +width/2 + xclip;
4246  yloc=swin_y;
4247  }
4248  else if(i==2)
4249  {
4250  if(win_x < width/2 && win_y >= height/2)
4251  continue;
4252 
4253  xloc=swin_x;
4254  yloc=swin_y + height/2 + yclip;
4255  }
4256 
4257  else if(i==3)
4258  {
4259  if(win_x >= width/2 && win_y >= height/2)
4260  continue;
4261 
4262  xloc=swin_x + width/2 + xclip;
4263  yloc=swin_y + height/2 + yclip;
4264  }
4265 
4266  cursorflag[i]=1;
4267  cursor[i].x=xloc;
4268  cursor[i].y=yloc;
4269  XSetFunction(display,gc,GXcopy);
4270 
4271  XCopyArea(display,window,pixcursor[i],gc,xloc,yloc,xloc+16,yloc+16,0,0);
4272 
4273  XSetFunction(display,gc,GXcopy);
4274  XSetClipMask(display,gc,logo[1]);
4275  XSetClipOrigin(display,gc,xloc,yloc);
4276  XCopyPlane(display,logo[1],window,gc,0,0,w_logo[1],h_logo[1],xloc,yloc,1);
4277 
4278  XSetClipMask(display,gc,None);
4279 
4280  owin_x=win_x;
4281  owin_y=win_y;
4282 }
4283 }
4284 
4285 void handle_release(Widget w, XtPointer data, XEvent *p_event)
4286 {
4287 if(spoint[0] > 0 && spoint[1] > 0)
4288 {
4290  write_screen();
4291 }
4292 spoint[0]=-1;
4293 spoint[1]=-1;
4294 save.inuse=-1;
4295 }
4296 
4297 void handle_mouse(Widget w, XtPointer data, XEvent *p_event)
4298 {
4299 Dimension width,height;
4300 Arg args[10];
4301 int win_x,win_y,xsize,ysize;
4302 unsigned int win_button,state;
4303 
4304 win_y=p_event->xbutton.y;
4305 win_x=p_event->xbutton.x;
4306 win_button=p_event->xbutton.button;
4307 state=p_event->xbutton.state;
4308 
4309 if((state & ControlMask)==4)
4310 {
4311  xsize=(display_set[display_flag].xmax[0]-
4312  display_set[display_flag].xmin[0])/10;
4313  ysize=(display_set[display_flag].ymax[0]-
4314  display_set[display_flag].ymin[0])/10;
4315 
4316  opoint[0]=xsize/2;
4317  opoint[1]=ysize/2;
4318  zoom=1;
4319 
4320  redraw_map(xsize/2,ysize/2,Button2);
4321 
4322  return;
4323 }
4324 
4325 if((state & ShiftMask)==1)
4326 {
4328 
4329  if(manage_flag==-1)
4330  {
4331  if(main_widget!=0)
4332  XtUnmanageChild(main_widget);
4333  }
4334  else if(manage_flag==1)
4335  {
4336  if(main_widget != 0)
4337  XtManageChild(main_widget);
4338  }
4339  return;
4340 }
4341 
4342 
4343 XtSetArg(args[0],XtNwidth,&width);
4344 XtSetArg(args[1],XtNheight,&height);
4345 XtGetValues(drawing_area,args,2);
4346 
4347 if(win_x > (width - legendxsize))
4348 {
4349  if(legend_flag==0)
4350  change_topo_legend(win_x,win_y);
4351  else if(legend_flag > 0)
4352  change_legend(win_x,win_y);
4353  else
4354  change_legend_display(win_x,win_y);
4355 }
4356 
4357 else if(zoom_mode==1 && win_button != Button3)
4358 {
4359  /*
4360  zoom_mode=-1;
4361  */
4362  redraw_map(win_x,win_y,win_button);
4363  /*
4364  XtSetArg(args[0],XmNmenuHistory,zwidget[0]);
4365  XtSetValues(rowcolzoom,args,1);
4366  */
4367 }
4368 
4369 
4370 else if(edit_mode==1 && win_button==Button1)
4371 {
4372  saved_hb5[0]=0;
4373  saved_j=-1;
4374  edit_stations(win_x,win_y,win_button);
4375 }
4376 else if(win_button==Button3)
4377 {
4378  time_series(win_x,win_y,win_button,data_type);
4379 }
4380 }
4381 
4382 
4383 void input_time_step(Widget widget,XtPointer data,XtPointer call_data)
4384 {
4385  time_step=(int)data;
4386  send_expose();
4387  return;
4388 }
4389 
4391 {
4392  drt=0;
4393  get_data();
4394 }
4395 
4396 void get_data()
4397 {
4398 
4399 FILE *fp;
4400 char hb5[20],pc[20],*p,snum[10];
4401 float lat,lon;
4402 double data;
4403 int num,type,ier,i;
4404 char mbuf[5000];
4405 float l1,l2,l3,l4,l5;
4406 struct datalayer *edatalayer;
4407 int first;
4408 struct tm *gm;
4409 time_t tim2;
4410 struct dirent *de;
4411 DIR *dirp;
4412 time_t ctime;
4413 char directory[100];
4414 char file[100],ofile[100];
4415 struct stat statbuf;
4416 time_t newtime;
4417 time_t deltat;
4418 int found_file;
4419 Dimension width,height;
4420 Cardinal argcount;
4421 Arg args[20];
4422 char tbuf[100];
4423 int yheight,text_width,length;
4424 
4425 
4426 /* don't update data if user is looking at a drt file */
4427 if(drt==2)
4428  return;
4429 
4430 found_file=0;
4431 ctime=time(NULL);
4432 
4433 strcpy(directory,data_file);
4434 if(drt)
4435 {
4436 /*
4437  strcat(directory,"/drt");
4438 */
4439  strcpy(directory,"/local/apps/mapper/data/drt");
4440  if(debug)
4441  printf("drt=%d\n"
4442  "data_directory=<%s>\n"
4443  "data_file=<%s>\n",drt,directory,rec_found);
4444  drt=2;
4445 }
4446 
4447 
4448 first=0;
4449 
4450 dirp=opendir(directory);
4451 
4452 system("date");
4453 
4454 if(dirp==NULL)
4455 {
4456  printf("could not open %s\n",directory);
4457  exit(1);
4458 }
4459 
4460 ofile[0]=0;
4461 newtime=0;
4462 
4463 if(!drt)
4464 {
4465  for(;;)
4466  {
4467  de=readdir(dirp);
4468 
4469  if(de==NULL)
4470  break;
4471 
4472  if(strncasecmp("hydro.out",de->d_name,9)!=0)
4473  continue;
4474 
4475  strcpy(file,directory);
4476  strcat(file,"/");
4477  strcat(file,de->d_name);
4478 
4479  stat(file,&statbuf);
4480 
4481  deltat=ctime-statbuf.st_mtime;
4482 
4483  if(deltat > 3600*2)
4484  {
4485  unlink(file);
4486  continue;
4487  }
4488 
4489  read_data_flag=1;
4490 
4491  fp=fopen(file,"r");
4492 
4493  p=fgets(mbuf,100,fp);
4494 
4495  fclose(fp);
4496 
4497  if(p==NULL)
4498  continue;
4499 
4500  p=strstr(mbuf,"done");
4501 
4502  if(p==NULL)
4503  continue;
4504 
4505  found_file=1;
4506  if(statbuf.st_mtime > newtime)
4507  {
4508  newtime=statbuf.st_mtime;
4509  strcpy(ofile,file);
4510  }
4511  }
4512 }
4513 else
4514 {
4515  strcpy(ofile,rec_found);
4516  found_file=1;
4517 }
4518 
4519 
4520 /*
4521  gm=gmtime(&newtime);
4522  printf("newtime=%d %02d/%02d/%02d %02d:%02d:%02d\n",
4523  newtime,gm->tm_mon+1,gm->tm_mday,gm->tm_year+1900,gm->tm_hour,gm->tm_min,gm->tm_sec);
4524  gm=gmtime(&statbuf.st_mtime);
4525  printf("statbuf=%d %02d/%02d/%02d %02d:%02d:%02d\n",
4526  statbuf.st_mtime,gm->tm_mon+1,gm->tm_mday,gm->tm_year+1900,gm->tm_hour,gm->tm_min,gm->tm_sec);
4527 */
4528 
4529 closedir(dirp);
4530 
4531 if(!found_file)
4532 {
4533  qtime=0;
4534  goto reread;
4535 }
4536 
4537 /*
4538 if(!strcmp(savefile,ofile))
4539  goto reread;
4540 */
4541 
4542 if(sdatalayer != NULL)
4543 {
4545 
4546  while(datalayer != NULL)
4547  {
4548  free(datalayer->data);
4549  edatalayer=datalayer->next;
4550  free(datalayer);
4551  datalayer=edatalayer;
4552  }
4553 }
4554 
4555 sdatalayer=NULL;
4556 
4557 /*
4558 cerror(drawing_area,"reading new data");
4559 */
4560 
4561 XtSetArg(args[0],XtNwidth,&width);
4562 XtSetArg(args[1],XtNheight,&height);
4563 XtGetValues(drawing_area,args,2);
4564 
4565 XSetFont(display,gc,font[2]);
4566 
4567 XSetFunction(display,gc,GXcopy);
4568 XSetForeground(display,gc,nmap[12]);
4569 XSetBackground(display,gc,mmap[0]);
4570 strcpy(tbuf,"READING NEW DATA");
4571 length=strlen(tbuf);
4572 
4573 yheight=info_font[2]->ascent;
4574 
4575 text_width=XTextWidth(info_font[2],tbuf,length);
4576 
4577 XFillRectangle(display,window,gc,0,0,
4578  text_width,yheight*2);
4579 
4580 XSetForeground(display,gc,qmap[15]);
4581 XDrawString(display,window,gc,0,yheight,tbuf,length);
4582 
4583 XDefineCursor(display,window,watch_cursor);
4584 
4585 XmUpdateDisplay(top_level);
4586 
4587 strcpy(savefile,ofile);
4588 
4589 fp=fopen(ofile,"r");
4590 if(fp==NULL)
4591 {
4592  sdatalayer=NULL;
4593  read_data_flag=0;
4594  qtime=0;
4595  goto reread;
4596 }
4597 
4598 p=fgets(mbuf,5000,fp);
4599 if(p==NULL)
4600 {
4601  sdatalayer=NULL;
4602  read_data_flag=0;
4603  qtime=0;
4604  goto reread;
4605 }
4606 
4607 ier=sscanf(mbuf,"%d",&qtime);
4608 
4609 gm=gmtime(&qtime);
4610 printf("qtime=%d %02d/%02d/%02d %02d:%02d:%02d\n",
4611  qtime,gm->tm_mon+1,gm->tm_mday,gm->tm_year+1900,gm->tm_hour,gm->tm_min,gm->tm_sec);
4612 
4613 
4614 tim2=qtime-gm->tm_hour-12;
4615 
4616 if(gm->tm_hour < 12)
4617  tim2=qtime-(gm->tm_hour+12)*3600 - gm->tm_min*60;
4618 else
4619  tim2=qtime-(gm->tm_hour-12)*3600 - gm->tm_min*60;
4620 
4621 dtime[0]=qtime;
4622 for(i=0;i<maxdays;i++)
4623  dtime[i+1]=tim2-i*86400;
4624 
4625 htime[0]=qtime;
4626 tim2=qtime-gm->tm_min*60;
4627 
4628 for(i=0;i<maxhours;i++)
4629  htime[i+1]=tim2-i*3600;
4630 
4631 xtime[0]=qtime;
4632 tim2=qtime-(gm->tm_hour-(gm->tm_hour/6)*6) *3600 - gm->tm_min*60;
4633 
4634 for(i=0;i<maxdays*4;i++)
4635  xtime[i+1]=tim2-i*3600*6;
4636 
4637 p=fgets(mbuf,5000,fp);
4638 if(p==NULL)
4639 {
4640  sdatalayer=NULL;
4641  read_data_flag=0;
4642  qtime=0;
4643  goto reread;
4644 }
4645 
4646 for(;;)
4647 {
4648  if(first==0)
4649  {
4650  datalayer=(struct datalayer *) calloc(1,sizeof(struct datalayer));
4652  first=1;
4653  }
4654 
4655  p=strchr(mbuf,'\n');
4656  if(p!=NULL)
4657  *p=0;
4658 
4659  ier=sscanf(mbuf,"%s %s %s %d %f %f %f %f %f", hb5,pc,snum,&type,
4660  &l1,&l2,&l3,&l4,&l5);
4661 
4662  p=mbuf;
4663  for(i=0;i<9;i++)
4664  {
4665  p=strno(p,' ');
4666 
4667  p=strchr(p,' ');
4668  if(p==NULL)
4669  break;
4670  }
4671 
4672  p=strno(p,' ');
4673 
4674  if(p!=NULL)
4675  strcpy(datalayer->name,p);
4676 
4677  pc[8]=0;
4678  hb5[6]=0;
4679 
4680  strcpy(datalayer->hb5,hb5);
4681  strcpy(datalayer->pc,pc);
4682  strcpy(datalayer->snum,snum);
4683  datalayer->type=type;
4684  datalayer->lvl1=l1;
4685  datalayer->lvl2=l2;
4686  datalayer->lvl3=l3;
4687  datalayer->lvl4=l4;
4688  datalayer->elev=l5;
4689 
4690  p=fgets(mbuf,5000,fp);
4691 
4692  if(p==NULL)
4693  break;
4694  ier=sscanf(mbuf,"%f %f %d",&lat,&lon,&num);
4695  datalayer->lat=lat;
4696  datalayer->lon=lon;
4697 
4698  if(lat < 25 || lon < 70)
4699  {
4700  datalayer->lat=-99;
4701  datalayer->lon=-99;
4702  }
4703 
4704  datalayer->num=num;
4705 
4706  datalayer->data=calloc(num,sizeof(double));
4707 
4708  p=mbuf;
4709  for(i=0;i<3;i++)
4710  {
4711  p=strno(p,' ');
4712  p=strchr(p,' ');
4713  if(p==NULL)
4714  break;
4715  }
4716 
4717  p=strno(p,' ');
4718  if(p!=NULL)
4719  {
4720  for(i=0;i<num;i++)
4721  {
4722  sscanf(p,"%lf",&data);
4723  datalayer->data[i]=data;
4724  p=strchr(p,' ');
4725  p=strno(p,' ');
4726  if(p==NULL)
4727  break;
4728  }
4729  }
4730 
4731  p=fgets(mbuf,5000,fp);
4732 
4733  if(p==NULL)
4734  break;
4735 
4736  datalayer->next=(struct datalayer *) calloc(1,sizeof(struct datalayer));
4738 }
4739 
4740 datalayer->next=NULL;
4741 fclose(fp);
4742 
4745 write_screen();
4746 
4747 /*XtDestroyWidget(cerr); */
4748 reread:
4749 read_data_flag=0;
4750 timer=XtAppAddTimeOut(XtWidgetToApplicationContext(top_level),300000,get_data,NULL);
4751 }
4752 
4753 void berror(Widget widget,char *string)
4754 {
4755 Cardinal argcount;
4756 Arg args[10];
4757 Widget err;
4758 XmString msg;
4759 
4760  if(error_widget_flag==1)
4761  return;
4762 
4764  msg=XmStringCreateLocalized(string);
4765 
4766  argcount=0;
4767  XtSetArg(args[argcount],XmNmessageString,msg);argcount++;
4768  XtSetArg(args[argcount],XmNdialogStyle,
4769  XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
4770  err=XmCreateErrorDialog(widget,"info",args,argcount);
4771  XtAddCallback(err,XmNokCallback,clear_error_widget,NULL);
4772 
4773  XtUnmanageChild(XmMessageBoxGetChild(err,XmDIALOG_CANCEL_BUTTON));
4774  XtUnmanageChild(XmMessageBoxGetChild(err,XmDIALOG_HELP_BUTTON));
4775 
4776  XtManageChild(err);
4777  XmStringFree(msg);
4778 }
4779 
4780 void cerror(Widget widget,char *string)
4781 {
4782 Cardinal argcount;
4783 Arg args[10];
4784 XmString msg;
4785 
4786  msg=XmStringCreateLocalized(string);
4787 
4788  argcount=0;
4789  XtSetArg(args[argcount],XmNmessageString,msg);argcount++;
4790  XtSetArg(args[argcount],XmNdialogStyle,
4791  XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
4792  cerr=XmCreateErrorDialog(widget,"info",args,argcount);
4793 
4794  XtUnmanageChild(XmMessageBoxGetChild(cerr,XmDIALOG_CANCEL_BUTTON));
4795  XtUnmanageChild(XmMessageBoxGetChild(cerr,XmDIALOG_OK_BUTTON));
4796  XtUnmanageChild(XmMessageBoxGetChild(cerr,XmDIALOG_HELP_BUTTON));
4797  XtUnmanageChild(XmMessageBoxGetChild(cerr,XmDIALOG_DEFAULT_BUTTON));
4798  XtUnmanageChild(XmMessageBoxGetChild(cerr,XmDIALOG_SEPARATOR));
4799 
4800  XtManageChild(cerr);
4801  XmStringFree(msg);
4802 
4804 }
4805 
4806 void kill_widget(Widget widget,XtPointer client_data,XtPointer call_data)
4807 {
4808  XtDestroyWidget(widget);
4809 }
4810 
4812 {
4814 }
4815 
4816 
4817 void change_mode(Widget widget,XtPointer data,XtPointer call_data)
4818 {
4821 
4822 if(change_mode_in_flag==2)
4823 {
4824 /*
4825 printf("data is %d\n",(int)data);
4826 */
4827 
4828 if(dt==0)
4829 {
4830  indexx=0;
4831  if((int)data==0)
4832  data_type=13;
4833  else if((int)data==1)
4834  data_type=14;
4835  else if((int)data==2)
4836  data_type=15;
4837  else if((int)data==3)
4838  data_type=16;
4839  else if((int)data==4)
4840  data_type=21;
4841  else if((int)data==5)
4842  data_type=22;
4843  else if((int)data==6)
4844  data_type=23;
4845  else if((int)data==7)
4846  data_type=24;
4847  else if((int)data==8)
4848  data_type=25;
4849  else if((int)data==9)
4850  data_type=26;
4851 
4852  if(data_type==21 || data_type==22)
4853  indexx=1;
4854  nexrad_flag=-1;
4855 }
4856 
4857 else if(dt==1)
4858 {
4859  if((int)data==0)
4860  data_type=3;
4861  else if((int)data==1)
4862  data_type=4;
4863  else if((int)data==2)
4864  data_type=5;
4865  else if((int)data==3)
4866  data_type=6;
4867 }
4868 
4869 else if(dt==2)
4870 {
4871  if(((int)data ==2 || (int)data==7) &&
4872  (data_type==0 || data_type==1))
4873  indexx=0;
4874  if((int)data==0)
4875  data_type=0;
4876  else if((int)data==1)
4877  data_type=1;
4878  else if((int)data==2)
4879  data_type=2;
4880  else if((int)data==3)
4881  data_type=7;
4882 }
4883 
4884 else if(dt==3)
4885 {
4886  if((int)data==0)
4887  data_type=9;
4888  else if((int)data==1)
4889  data_type=10;
4890  else if((int)data==2)
4891  data_type=8;
4892 }
4893 
4894 else if(dt==4)
4895 {
4896  if((int)data==0)
4897  data_type=11;
4898 }
4899 
4900 else if(dt==5)
4901 {
4902  indexx=0;
4903  if((int)data==0)
4904  data_type=17;
4905  else if((int)data==1)
4906  data_type=18;
4907  else if((int)data==2)
4908  data_type=27;
4909  else if((int)data==3)
4910  data_type=28;
4911  else if((int)data==4)
4912  data_type=29;
4913 }
4914 
4915 else if(dt==6)
4916 {
4917  if((int)data==0)
4918  data_type=30;
4919 }
4920 
4923 write_screen();
4925 }
4926 }
4927 
4928 void change_index_time(Widget widget,XtPointer data,XtPointer call_data)
4929 {
4930 int toggle;
4931 
4932 /*
4933 if(data_type==17)
4934  return;
4935 */
4936 
4937 toggle=(int)data;
4938 
4939 if(toggle==0)
4940  indexx--;
4941 else
4942  indexx++;
4943 
4944 if(indexx < 0)
4945  indexx=0;
4946 
4947 if(data_type==13 && indexx > maxindex3)
4948  indexx=maxindex3;
4949 
4950 else if((data_type==21 || data_type==15) && indexx > maxindex4)
4951  indexx=maxindex4;
4952 
4953 else if((data_type==23 || data_type==24 || data_type==27 || data_type==28 ||
4954  data_type==29) && indexx > maxindex7)
4955  indexx=maxindex7;
4956 
4957 else if((data_type==25 || data_type==26) && indexx > 2)
4958  indexx=2;
4959 
4960 else if(data_type==17 && indexx > maxindex5)
4961  indexx=maxindex5;
4962 
4963 else if(data_type==18 && indexx > maxindex6)
4964  indexx=maxindex6;
4965 
4966 else if((data_type==2 || data_type==7 || data_type==16 || data_type==22) && indexx > maxindex2)
4967  indexx=maxindex2;
4968 
4969 else if(indexx > maxindex)
4970  indexx=maxindex;
4971 
4972 nexrad_flag=-1;
4975 write_screen();
4976 }
4977 
4978 void save_selection2(Widget w,XtPointer data, XtPointer junk)
4979 {
4980 char *value;
4981 
4982  XmListCallbackStruct *cbs= (XmListCallbackStruct *) junk;
4983  XmStringGetLtoR(cbs->item, XmFONTLIST_DEFAULT_TAG, &value);
4984  strcpy(rec_found,value);
4985  XtFree(value);
4986 }
4987 
4988 void new_filter(Widget w,XtPointer data, XtPointer junk)
4989 {
4990  XmScaleCallbackStruct *cbs= (XmScaleCallbackStruct *) junk;
4991  filter_value=(float)cbs->value/100;
4993  write_screen();
4994 }
4995 
4996 void elevation_filter(Widget w,XtPointer data, XtPointer junk)
4997 {
4998  XmScaleCallbackStruct *cbs= (XmScaleCallbackStruct *) junk;
4999  elevation_filter_value=(float)cbs->value;
5001  write_screen();
5002 }
5003 
5004 void hg_select(Widget w,XtPointer data, XtPointer junk)
5005 {
5006  if((int)data==0)
5007  {
5008  hgflag=1;
5009  hpflag=1;
5010  }
5011  else if((int)data==1)
5012  {
5013  hgflag=1;
5014  hpflag=-1;
5015  }
5016  else if((int)data==2)
5017  {
5018  hgflag=-1;
5019  hpflag=1;
5020  }
5023  write_screen();
5024 }
5025 
5027 {
5028 char drt_file[100];
5029 
5030  strcpy(drt_file,"/local/apps/mapper/data/drt");
5031  get_drt_menu(drt_file);
5032  create_drt_menu();
5033  return;
5034 }
5035 
5037 {
5038 Arg args[10];
5039 Cardinal argcount;
5040 XmString str[100],t;
5041 int number,i;
5042 Widget pbutton,rowcol;
5043 
5044  t=XmStringCreateLocalized("DRT Data Files");
5045 
5046  for(i=0;i<100;i++)
5047  {
5048  if(drt_items[i].label==NULL)
5049  break;
5050  str[i]=XmStringCreateLocalized(drt_items[i].label);
5051  }
5052 
5053  number=i;
5054 
5055  argcount=0;
5056  XtSetArg(args[argcount],XmNwidth, 300);argcount++;
5057  XtSetArg(args[argcount],XmNheight,250);argcount++;
5058  XtSetArg(args[argcount],XmNbackground,mmap[1]);argcount++;
5059  XtSetArg(args[argcount],XmNforeground,mmap[0]);argcount++;
5060  XtSetArg(args[argcount],XmNdialogStyle,
5061  XmDIALOG_FULL_APPLICATION_MODAL);argcount++;
5062  XtSetArg(args[argcount],XmNautoUnmanage,False);argcount++;
5063  start_dialog=XmCreateMessageDialog(drawing_area,"DRT Data Files",args,argcount);
5064 
5065  XtUnmanageChild(XmMessageBoxGetChild(start_dialog,XmDIALOG_HELP_BUTTON));
5066  XtUnmanageChild(XmMessageBoxGetChild(start_dialog,XmDIALOG_SEPARATOR));
5067 
5068  argcount=0;
5069  XtSetArg(args[argcount],XmNorientation,XmVERTICAL);argcount++;
5070  rowcol=XmCreateRowColumn(start_dialog,"dummy",args,argcount);
5071 
5072  t=XmStringCreateLocalized("Available Data Files");
5073  argcount=0;
5074  XtSetArg(args[argcount],XmNlabelString,t);argcount++;
5075  pbutton=XmCreateLabel(rowcol,"Label",args,argcount);
5076  XtManageChild(pbutton);
5077  XmStringFree(t);
5078 
5079  argcount=0;
5080  XtSetArg(args[argcount],XmNitemCount,number);argcount++;
5081  XtSetArg(args[argcount],XmNitems,str);argcount++;
5082  XtSetArg(args[argcount],XmNlistSizePolicy,XmCONSTANT);argcount++;
5083  XtSetArg(args[argcount],XmNvisibleItemCount,5);argcount++;
5084  XtSetArg(args[argcount],XmNselectionPolicy,XmSINGLE_SELECT);argcount++;
5085  drt_menu=XmCreateScrolledList(rowcol,"Files",args,argcount);
5086  XtAddCallback(drt_menu,XmNsingleSelectionCallback,save_selection2,NULL);
5087 
5088  XtManageChild(drt_menu);
5089  XtManageChild(rowcol);
5090  XtManageChild(start_dialog);
5091 
5092  XtAddCallback(start_dialog,XmNokCallback,drt_callback,NULL);
5093  XtAddCallback(start_dialog,XmNcancelCallback,quit_drt_callback,NULL);
5094 
5095  for(i=0;i<number;i++)
5096  XmStringFree(str[i]);
5097 }
5098 
5099 void quit_drt_callback(Widget w,XtPointer client_data,XtPointer call_data)
5100 {
5101  XtDestroyWidget(w);
5102  w=NULL;
5103 }
5104 
5105 
5106 void drt_callback(Widget w,XtPointer client_data,XtPointer call_data)
5107 {
5108 int i;
5109 char tstring[100];
5110 int argcount;
5111 Arg args[10];
5112 
5113  if(rec_found[0]==0)
5114  return;
5115 
5116  for(i=0;i<100;i++)
5117  {
5118  if(drt_items[i].label==NULL)
5119  break;
5120 
5121  if(strcmp(rec_found,drt_items[i].label)==0)
5122  {
5123  printf("selected <%s>\n",rec_found);
5124  drt=1; /* set to get_data using selected filename */
5125  get_data();
5126  XtDestroyWidget(w);
5127  w=NULL;
5128  }
5129  }
5130 }
5131 
5132 
5133 #line 5120 "mapper.ec"
static int i
void change_legend(int win_x, int win_y)
Definition: change_legend.c:4
void change_legend_display(int win_x, int win_y)
void change_topo_legend(int win_x, int win_y)
void contour_data(Pixmap pixm, int h, int display_flag)
Definition: contour_data.c:4
void contour_topo(Pixmap pixm, int h, int display_flag)
Definition: contour_topo.c:4
char directory[100]
Definition: decode_HDP.c:3
#define TRUE
Definition: decode_HDP.c:8
#define FALSE
Definition: decode_HDP.c:9
int scale
Definition: display_data.c:4
Widget dialog
Definition: display_rec.c:5
Widget text
Definition: display_rec.c:5
void draw_map(Drawable pix, int h, int display_flag)
Definition: draw_map.c:5
float mult
Definition: edit_stations.c:6
void edit_stations(int win_x, int win_y, unsigned int win_button)
Definition: edit_stations.c:11
void get_area_menu(FILE *fp)
Definition: get_area_menu.c:7
void get_custom_list(char *fname)
void get_drt_menu(char *data_file)
Definition: get_drt_menu.c:7
void get_hrap_coord(double maximum_latitude, double minimum_latitude, double center_longitude)
Definition: get_hrap_coord.c:4
void get_legend(int type, int kscale, float *delim)
Definition: get_legend.c:3
void grid_data(int type)
Definition: grid_data.c:3
char * pars_line(char *buf, char *s, char *sbuf)
Definition: pars_line.c:3
void time_series(int, int, unsigned int, char *)
Definition: time_series.c:3
void plot_topo(Pixmap, int, int)
Definition: plot_topo.c:5
void read_maps(char *, int, int)
Definition: new_read_maps.c:4
char * strno(char *, char)
Definition: strno.c:4
void redraw_legend_display(Drawable)
void XmtWaitUntilMapped(Widget)
Definition: Wait.c:39
void redraw_map(int, int, unsigned int)
Definition: redraw_map.c:4
void redraw_topo_legend(Drawable)
fclose(fp)
sprintf(fbuf,"/usr/mapper/nexrad/ngrid.%02d-%02d-%02d-%02d", year, month, day, hour)
printf("fbuf is %s\n", fbuf)
fp
Definition: make_NEXRAD.c:339
system(tarbuf)
int j
Definition: mapp2h.h:48
double lat
Definition: mapp2h.h:41
double lon
Definition: mapp2h.h:41
int points_flag
Definition: mapper.c:104
void area_select(Widget w, XtPointer data)
Definition: mapper.c:1267
int ilegend_save
Definition: mapper.c:94
Widget main_window
Definition: mapper.c:185
int rs
Definition: mapper.c:103
int print_flag
Definition: mapper.c:39
Widget widg
Definition: mapper.c:176
int maxindex4
Definition: mapper.c:59
Cursor crosshair_cursor
Definition: mapper.c:154
int raster_flag
Definition: mapper.c:72
int maxmonths
Definition: mapper.c:58
void berror(Widget widget, char *string)
Definition: mapper.c:4753
int main(int argc, char *argv[])
Definition: mapper.c:247
int ditime[]
Definition: mapper.c:51
int pcpn_time
Definition: mapper.c:83
Widget qwidget[10]
Definition: mapper.c:185
int plot_view
Definition: mapper.c:65
Widget zwidget[3]
Definition: mapper.c:185
Widget diswidget[3]
Definition: mapper.c:186
unsigned int sensortype
Definition: mapper.c:113
Widget fgbg_toggle_button
Definition: mapper.c:174
static int menu_flag
Definition: mapper.c:1264
int indexx
Definition: mapper.c:60
Widget bmain_window
Definition: mapper.c:181
void map_select(Widget w, XtPointer data, XmDrawingAreaCallbackStruct *call_data)
Definition: mapper.c:4020
void elevation_filter()
Widget tswidget[10]
Definition: mapper.c:185
void handle_resize()
unsigned int w_logo[4]
Definition: mapper.c:114
XFontStruct * info_font[10]
Definition: mapper.c:195
double cen_lon
Definition: mapper.c:22
Widget mwidget[50]
Definition: mapper.c:184
unsigned long nmap[20]
Definition: mapper.c:116
float rainfall_level_1[20]
Definition: mapper.c:27
int legendysize
Definition: mapper.c:103
int contour_isoh_flag
Definition: mapper.c:89
char decode_file[100]
Definition: mapper.c:20
void rfs_options()
void change_pcp_scaling_mode()
Widget bwidget[8]
Definition: mapper.c:185
int pcpn_time_step
Definition: mapper.c:75
void save_selection2()
int legend_save
Definition: mapper.c:97
int spoint[2]
Definition: mapper.c:70
Widget scwidget[3]
Definition: mapper.c:185
int change_mode_in_flag
Definition: mapper.c:107
unsigned long mmap[16]
Definition: mapper.c:117
int defrain
Definition: mapper.c:42
struct sensor_rec * sensor_rec
Definition: mapper.c:119
void kill_widget(Widget widget, XtPointer client_data, XtPointer call_data)
Definition: mapper.c:4806
char savefile[100]
Definition: mapper.c:8
void screening_options()
int add_topo_flag
Definition: mapper.c:96
int numverts
Definition: mapper.c:91
int change_pcpn_flag
Definition: mapper.c:98
void input_time_step(Widget widget, XtPointer data, XtPointer call_data)
Definition: mapper.c:4383
void kill_main_widget()
Definition: mapper.c:3934
int maxkscale
Definition: mapper.c:102
struct datalayer * sdatalayer
Definition: mapper.c:147
int max_stations
Definition: mapper.c:64
Widget find_widget
Definition: mapper.c:186
int time_step
Definition: mapper.c:85
char saved_hb5[6]
Definition: mapper.c:6
time_t dtime[500]
Definition: mapper.c:150
Widget BuildPulldownPushMenu(Widget parent, char *menu_title, char menu_mnemonic, struct MenuItem *items)
Definition: mapper.c:747
Widget twidget[5]
Definition: mapper.c:185
int maxdays
Definition: mapper.c:56
struct saved * fsaved
Definition: mapper.c:128
int elevation_filter_value
Definition: mapper.c:47
int max_height
Definition: mapper.c:99
Widget top_level
Definition: mapper.c:185
int yh_logo[4]
Definition: mapper.c:68
int error_widget_flag
Definition: mapper.c:77
static Widget save_widget
Definition: mapper.c:1265
char grid_file[100]
Definition: mapper.c:17
struct stn_values * stn_values
Definition: mapper.c:124
struct pcp * pcp
Definition: mapper.c:140
void handle_motion()
void handle_mouse()
int hgflag
Definition: mapper.c:45
void foreground_select()
Definition: mapper.c:3972
Pixmap pixb
Definition: mapper.c:166
void view_humidity()
Definition: mapper.c:2538
char rec_found[100]
Definition: mapper.c:9
XtAppContext app
Definition: mapper.c:199
int data_type
Definition: mapper.c:63
unsigned long vmap[50]
Definition: mapper.c:116
int maxindex6
Definition: mapper.c:59
void change_mode()
int pcp_in_use[50]
Definition: mapper.c:78
Widget draw_dialog[10]
Definition: mapper.c:180
int hpflag
Definition: mapper.c:45
double min_lat
Definition: mapper.c:22
int begin_hour
Definition: mapper.c:67
int tlegend_save
Definition: mapper.c:97
int off[100]
Definition: mapper.c:105
void view_watertemp()
Definition: mapper.c:2023
void write_screen()
Definition: mapper.c:1082
Widget bdwidget[5]
Definition: mapper.c:185
Pixmap pixf
Definition: mapper.c:165
int first_area
Definition: mapper.c:84
char station_list_file[256]
Definition: mapper.c:18
struct Cur cursor[4]
Definition: mapper.c:134
int dflag[10]
Definition: mapper.c:106
Widget edwidget[5]
Definition: mapper.c:185
char find_station_buf[10]
Definition: mapper.c:16
char * ls[]
Definition: mapper.c:10
unsigned long qmap[16]
Definition: mapper.c:116
Widget cwidget[5]
Definition: mapper.c:185
int pcpn_day
Definition: mapper.c:83
GC gc
Definition: mapper.c:163
int pcp_map_flag
Definition: mapper.c:80
int maxindex5
Definition: mapper.c:59
int pcp_flag
Definition: mapper.c:81
int xh_logo[4]
Definition: mapper.c:68
int rfs_flag
Definition: mapper.c:36
int begin_year
Definition: mapper.c:67
int begin_day
Definition: mapper.c:67
void cerror(Widget widget, char *string)
Definition: mapper.c:4780
void quit_all()
Definition: mapper.c:3947
int nexrad_flag
Definition: mapper.c:46
float hr1_rainfall_max
Definition: mapper.c:24
struct datalayer * datalayer
Definition: mapper.c:146
int legend_flag
Definition: mapper.c:54
unsigned long tmap[50]
Definition: mapper.c:116
struct hrap_grid * hrap_grid
Definition: mapper.c:142
static int first
Definition: mapper.c:4141
Widget scrollbar
Definition: mapper.c:185
int write_screen_flag
Definition: mapper.c:50
void clear_backgrounds()
Definition: mapper.c:3978
void change_past_days()
int deflinear
Definition: mapper.c:44
int drt
Definition: mapper.c:33
int current_raster
Definition: mapper.c:73
Pixmap pixcursor[4]
Definition: mapper.c:168
struct number_rec * number_rec
Definition: mapper.c:123
void clear_drawable(Drawable pixw)
Definition: mapper.c:1067
int end_year
Definition: mapper.c:67
signed long xclip
Definition: mapper.c:109
Widget bdrawing_area[10]
Definition: mapper.c:182
char hrap_file[100]
Definition: mapper.c:19
void change_index_time()
unsigned long xmap[16]
Definition: mapper.c:116
Window bwindow[20]
Definition: mapper.c:189
String fallbacks[]
Definition: mapper.c:172
int edit_mode
Definition: mapper.c:90
int saved_j
Definition: mapper.c:35
int begin_month
Definition: mapper.c:67
Widget start_dialog
Definition: mapper.c:185
int defscale
Definition: mapper.c:43
Widget main_widget
Definition: mapper.c:186
void view_wind()
Definition: mapper.c:3143
void quality_select()
void print_screen()
int iscale
Definition: mapper.c:101
Display * display
Definition: mapper.c:159
int future_time_series_days
Definition: mapper.c:41
void create_drt_menu()
Definition: mapper.c:5036
unsigned long zmap[16]
Definition: mapper.c:116
int posit
Definition: mapper.c:93
signed long yclip
Definition: mapper.c:109
time_t itime[500]
Definition: mapper.c:150
void area_callback(Widget w, XtPointer client_data, XtPointer call_data)
Definition: mapper.c:665
int dt
Definition: mapper.c:60
float hr24_rainfall_max
Definition: mapper.c:26
Font font[10]
Definition: mapper.c:161
void topo_select()
Definition: mapper.c:4005
int map_flag
Definition: mapper.c:104
unsigned long cmap[16]
Definition: mapper.c:117
Widget drt_menu
Definition: mapper.c:187
Widget rowcolzoom
Definition: mapper.c:175
Pixmap logo[4]
Definition: mapper.c:167
Cursor dotbox_cursor
Definition: mapper.c:155
void itation()
Widget owidget[5]
Definition: mapper.c:185
void quit_callback()
Definition: mapper.c:3967
int first_through
Definition: mapper.c:61
Widget menu_bar
Definition: mapper.c:185
int time_index
Definition: mapper.c:85
float filter_value
Definition: mapper.c:29
int past_time_series_days
Definition: mapper.c:40
int contour_flag
Definition: mapper.c:71
void allocate_colors(int)
Definition: mapper.c:1007
void send_expose()
Definition: mapper.c:4026
void new_filter()
int max_width
Definition: mapper.c:99
int maxhours
Definition: mapper.c:57
int manage_flag
Definition: mapper.c:76
void quit_drt_callback()
int opoint[2]
Definition: mapper.c:105
Widget view_widget
Definition: mapper.c:186
float delim[16]
Definition: mapper.c:30
int rain_flag
Definition: mapper.c:62
void print_draw()
Definition: mapper.c:4113
struct pcp * spf
Definition: mapper.c:141
void drt_callback(Widget w, XtPointer client_data, XtPointer call_data)
Definition: mapper.c:5106
Widget AttachToCascade(Widget parent, char *label, Widget sub_menu)
Definition: mapper.c:771
int exp_flag
Definition: mapper.c:87
void get_data()
Definition: mapper.c:4396
int end_index
Definition: mapper.c:67
int read_data_flag
Definition: mapper.c:49
float rainfall_level_2[20]
Definition: mapper.c:28
int end_month
Definition: mapper.c:67
unsigned long amap[16]
Definition: mapper.c:117
time_t qtime
Definition: mapper.c:151
struct sensor_type * stype
Definition: mapper.c:120
int max_legends
Definition: mapper.c:55
int maxindex3
Definition: mapper.c:59
struct grid * grid
Definition: mapper.c:127
void change_plot()
int init_subdisplay
Definition: mapper.c:48
int maxindex2
Definition: mapper.c:59
int zoom
Definition: mapper.c:105
int gridded_flag
Definition: mapper.c:104
struct MenuItem ktems[100]
Definition: mapper.c:136
char * legend[100]
Definition: mapper.c:15
struct MenuItem area_items[10]
Definition: mapper.c:137
Window root_win
Definition: mapper.c:190
char nexrad_file[100]
Definition: mapper.c:7
unsigned int h_logo[4]
Definition: mapper.c:114
void display_options()
int debug
Definition: mapper.c:32
void change_pcpn_zoom_mode()
struct sensor_file * sfile
Definition: mapper.c:126
int legendxsize
Definition: mapper.c:103
int current_date_pointer
Definition: mapper.c:74
Window window
Definition: mapper.c:190
int fgbgflag
Definition: mapper.c:79
void create_area_menu()
Definition: mapper.c:602
Widget drawing_area
Definition: mapper.c:185
time_t htime[500]
Definition: mapper.c:150
int render_pcp_flag
Definition: mapper.c:82
Widget mbutton[100]
Definition: mapper.c:177
int end_day
Definition: mapper.c:67
Widget hgwidget[3]
Definition: mapper.c:179
Widget s_text
Definition: mapper.c:185
Window menu_bar_window
Definition: mapper.c:190
Widget mpbutton[10]
Definition: mapper.c:178
int begin_index
Definition: mapper.c:67
int npoint[2]
Definition: mapper.c:105
Widget cerr
Definition: mapper.c:183
unsigned long imap[16]
Definition: mapper.c:116
void get_current_data()
Definition: mapper.c:4390
void view_stage()
Definition: mapper.c:2825
void layer_select()
void source_select()
void change_rain(Widget w, XtPointer data, XmDrawingAreaCallbackStruct *call_data)
Definition: mapper.c:1689
int map_edit_flag
Definition: mapper.c:66
int change_map_flag
Definition: mapper.c:86
Region region
Definition: mapper.c:170
int contour_topo_flag
Definition: mapper.c:88
int topo_number
Definition: mapper.c:37
Widget BuildPulldownToggleMenu(Widget parent, char *menu_title, char menu_mnemonic, struct MenuItem *items)
Definition: mapper.c:693
void view_snow()
Definition: mapper.c:3428
void kill_dialog()
int xsave[10]
Definition: mapper.c:92
int cursorflag[4]
Definition: mapper.c:69
XColor colors[256]
Definition: mapper.c:193
int kscale
Definition: mapper.c:101
int maxindex
Definition: mapper.c:59
void Create_Colors(Display *pdisplay)
Definition: mapper.c:787
char data_file[100]
Definition: mapper.c:20
int end_hour
Definition: mapper.c:67
void view_temperature()
Definition: mapper.c:2247
Dimension owidth
Definition: mapper.c:157
Widget area_menu
Definition: mapper.c:185
void hg_select()
struct maplayer * smaplayer[100]
Definition: mapper.c:145
unsigned car[100]
Definition: mapper.c:111
Widget awidget[8]
Definition: mapper.c:185
int maxitimes
Definition: mapper.c:52
void view_precipitation()
Definition: mapper.c:1702
int maxiscale
Definition: mapper.c:102
int qlegend_save
Definition: mapper.c:95
void handle_expose()
static int owin_x
Definition: mapper.c:4178
int maxindex7
Definition: mapper.c:59
struct MenuItem drt_items[100]
Definition: mapper.c:138
XImage * image
Definition: mapper.c:197
float hr6_rainfall_max
Definition: mapper.c:25
struct sindx * sdx
Definition: mapper.c:122
Cursor watch_cursor
Definition: mapper.c:153
void other_pcpn_options()
void drt_change()
Definition: mapper.c:5026
int display_flag
Definition: mapper.c:100
struct database dbase
Definition: mapper.c:121
int zoom_mode
Definition: mapper.c:90
void find_name()
double max_lat
Definition: mapper.c:22
int topo_buf[10]
Definition: mapper.c:38
static int owin_y
Definition: mapper.c:4178
void handle_release()
void clear_error_widget()
Definition: mapper.c:4811
int legendystart
Definition: mapper.c:103
int regrid_flag
Definition: mapper.c:53
int fgbg_number
Definition: mapper.c:34
XtIntervalId timer
Definition: mapper.c:200
Dimension oheight
Definition: mapper.c:157
time_t xtime[500]
Definition: mapper.c:150
void plot_data(Drawable, int, int, int, int)
Definition: plot_data.c:2
void raster_data(Drawable, int, int)
void redraw_legend(Drawable)
Definition: redraw_legend.c:3
void render_data(int, int)
Definition: render_data.c:3
void plot_nexrad(Pixmap pixm, int h, int display_flag)
Definition: plot_nexrad.c:4
float xrat
int color
float value
float yrat
float cmult
Dimension height
Dimension width
int yheight
Arg args[10]
long xmin
unsigned long XSIZE
int MY
float dmult
long ymin
unsigned long YSIZE
char cmd[100]
Definition: send_afos.c:7
struct dirent * de
Definition: shef_structs.h:266
DIR * dirp
Definition: shef_structs.h:265
Definition: misc.h:315
int x
Definition: misc.h:317
int y
Definition: misc.h:318
Definition: misc.h:459
char * label
Definition: misc.h:461
void(* callback)()
Definition: misc.h:463
XtPointer callback_data
Definition: misc.h:464
Definition: misc.h:30
char hb5[10]
Definition: misc.h:32
float lvl3
Definition: misc.h:349
float lat
Definition: misc.h:353
char snum[10]
Definition: misc.h:345
float lvl2
Definition: misc.h:348
char name[40]
Definition: misc.h:346
double * data
Definition: misc.h:356
struct datalayer * next
Definition: misc.h:357
float lon
Definition: misc.h:354
int num
Definition: misc.h:355
int type
Definition: misc.h:352
float lvl1
Definition: misc.h:347
float lvl4
Definition: misc.h:350
char hb5[10]
Definition: misc.h:343
float elev
Definition: misc.h:351
char pc[10]
Definition: misc.h:344
float dmult[4]
Definition: misc.h:613
long xmin[4]
Definition: misc.h:607
long xmax[4]
Definition: misc.h:609
long ymax[4]
Definition: misc.h:610
long xoff[4]
Definition: misc.h:605
long ymin[4]
Definition: misc.h:608
long yoff[4]
Definition: misc.h:606
long ycen[4]
Definition: misc.h:612
long xcen[4]
Definition: misc.h:611
Definition: misc.h:470
double lo
Definition: misc.h:475
double a
Definition: misc.h:472
double yo
Definition: misc.h:474
double xo
Definition: misc.h:473
Definition: misc.h:538
Definition: misc.h:538
Definition: misc.h:236
Definition: misc.h:443
Definition: misc.h:596
Definition: misc.h:213
Definition: misc.h:322
short int inuse
Definition: misc.h:324
Definition: misc.h:361
char hb5[10]
Definition: misc.h:363
double data
Definition: misc.h:378
float lat
Definition: misc.h:376
int r
Definition: misc.h:369
int s
Definition: misc.h:370
struct saved * next
Definition: misc.h:379
float lon
Definition: misc.h:377
Definition: misc.h:523
char * fontname
Definition: subdisplay.c:52
static int depth
Definition: subdisplay.c:35
tim()
Definition: tim.c:4