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