home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Science / Science.zip / fblnk224.zip / catalogs.c < prev    next >
C/C++ Source or Header  |  1999-01-28  |  6KB  |  199 lines

  1. /*  catalogs.c  */
  2. /*  part of the fitsblink program  */
  3. /*  routines for setting different star catalogs  */
  4. /*  Jure Skvarc                                   */
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7.  
  8. #include <forms.h>
  9. #include <string.h>
  10.  
  11. #include "formblink.h"
  12. #include "functs.h"
  13.  
  14. extern STATE state;
  15. extern BLINK_FRAME *frame;
  16. extern CATALOG catalog[];
  17.  
  18. void
  19. checkusnoC(FL_OBJECT *obj, long val)
  20. {
  21.   catalog[CAT_USNO].use = fl_get_button(obj);
  22. }
  23.  
  24. void
  25. checkppmC(FL_OBJECT *obj, long val)
  26. {
  27.   catalog[CAT_PPM].use = fl_get_button(obj);
  28. }
  29.  
  30. void
  31. checkguideC(FL_OBJECT *obj, long val)
  32. {
  33.   if (val == 0) {
  34.     catalog[CAT_GUIDE].use = fl_get_button(obj);
  35.   }
  36.   else {
  37.     catalog[CAT_GUIDE_SOUTH].use = fl_get_button(obj);
  38.   }
  39. }
  40.  
  41. void
  42. usnodirC(FL_OBJECT *obj, long val)
  43. {
  44.   int l = strlen(fl_get_input(obj));
  45.  
  46.   if (l > catalog[CAT_USNO].lpath) {
  47.     if ((catalog[CAT_USNO].path = (char *) realloc(catalog[CAT_USNO].path, l)) == NULL) {
  48.       fprintf(stderr, "Out of memory, reallocation of space for USNO catalog path,\n");
  49.       exit(1);
  50.     }
  51.     catalog[CAT_USNO].lpath = l;
  52.   }    
  53.   strcpy(catalog[CAT_USNO].path, fl_get_input(obj));
  54. }
  55.  
  56. void
  57. ppmdirC(FL_OBJECT *obj, long val)
  58. {
  59.   int l = strlen(fl_get_input(obj));
  60.  
  61.   if (l > catalog[CAT_PPM].lpath) {
  62.     if ((catalog[CAT_PPM].path = (char *) realloc(catalog[CAT_PPM].path, l)) == NULL) {
  63.       fprintf(stderr, "Out of memory, reallocation of space for PPM catalog path,\n");
  64.       exit(1);
  65.     }
  66.     catalog[CAT_PPM].lpath = l;
  67.   }    
  68.   strcpy(catalog[CAT_PPM].path, fl_get_input(obj));
  69. }
  70.  
  71. void
  72. guidedirC(FL_OBJECT *obj, long val)
  73. {
  74.   int l = strlen(fl_get_input(obj));
  75.  
  76.   if (l > catalog[CAT_GUIDE].lpath) {
  77.     if ((catalog[CAT_GUIDE].path = (char *) realloc(catalog[CAT_GUIDE].path, l)) == NULL) {
  78.       fprintf(stderr, "Out of memory, reallocation of space for GUIDE catalog path,\n");
  79.       exit(1);
  80.     }
  81.     catalog[CAT_GUIDE].lpath = l;
  82.   }    
  83.   strcpy(catalog[CAT_GUIDE].path, fl_get_input(obj));
  84. }
  85.  
  86.  
  87. void
  88. guidedirsouthC(FL_OBJECT *obj, long val)
  89. {
  90.   int l = strlen(fl_get_input(obj));
  91.  
  92.   if (l > catalog[CAT_GUIDE_SOUTH].lpath) {
  93.     if ((catalog[CAT_GUIDE_SOUTH].path = (char *) realloc(catalog[CAT_GUIDE_SOUTH].path, l)) == NULL) {
  94.       fprintf(stderr, "Out of memory, reallocation of space for GUIDE catalog path,\n");
  95.       exit(1);
  96.     }
  97.     catalog[CAT_GUIDE_SOUTH].lpath = l;
  98.   }    
  99.   strcpy(catalog[CAT_GUIDE_SOUTH].path, fl_get_input(obj));
  100. }
  101.  
  102.  
  103. /*  Check if the catalogs are found at their default paths  */
  104. void
  105. check_catalogs(void)
  106.  
  107. {
  108.   char *file;
  109.   FILE *fp;
  110.  
  111.   /*  Check for USNO SA 1.0  */
  112.   file = myalloc(sizeof(char) * (strlen(catalog[CAT_USNO].path) + 13), "check_catalogs", "file");
  113.   sprintf(file, "%s/zone%04d.cat", catalog[CAT_USNO].path, 0);
  114.   /*  Can I open catalog file? */
  115.   if ((catalog[CAT_USNO].use = (((fp = fopen(file, "r")) != NULL)))) {
  116.     fclose(fp);
  117.   }
  118.   free(file);
  119.   /*  Check for GSC north */
  120.   file = myalloc(sizeof(char) * (strlen(catalog[CAT_GUIDE].path) + 
  121.                 strlen("/gsc/n0000/0001.gsc") + 1),
  122.         "check_catalogs", "file");
  123.   sprintf(file, "%s/gsc/n0000/0001.gsc", catalog[CAT_GUIDE].path);
  124.   /*  Can I open catalog file? */
  125.   if ((catalog[CAT_GUIDE].use = (((fp = fopen(file, "r")) != NULL)))) {
  126.     fclose(fp);
  127.   }
  128.   free(file);
  129.  
  130.   if (!catalog[CAT_GUIDE].use) {
  131.     /*  Check for GSC north again  */
  132.     file = myalloc(sizeof(char) * (strlen(catalog[CAT_GUIDE].path) + 
  133.                   strlen("/gsc/n0000/0001.gsc.gz") + 1),
  134.           "check_catalogs", "file");
  135.     sprintf(file, "%s/gsc/n0000/0001.gsc.gz", catalog[CAT_GUIDE].path);
  136.     /*  Can I open catalog file? */
  137.     if ((catalog[CAT_GUIDE].use = (((fp = fopen(file, "r")) != NULL)))) {
  138.       fclose(fp);
  139.     }
  140.     free(file);
  141.   }
  142.   /*  Check for GSC south */
  143.   file = myalloc(sizeof(char) * (strlen(catalog[CAT_GUIDE_SOUTH].path) + 
  144.           strlen("/gsc/s7500/9346.gsc") + 1), "check_catalogs", "file");
  145.   sprintf(file, "%s/gsc/s7500/9346.gsc", catalog[CAT_GUIDE_SOUTH].path);
  146.   /*  Can I open catalog file? */
  147.   if ((catalog[CAT_GUIDE_SOUTH].use = (((fp = fopen(file, "r")) != NULL)))) {
  148.     fclose(fp);
  149.   }
  150.   free(file);
  151.   if (!catalog[CAT_GUIDE_SOUTH].use) {
  152.     /*  Check for GSC south again*/
  153.     file = myalloc(sizeof(char) * (strlen(catalog[CAT_GUIDE_SOUTH].path) + 
  154.                    strlen("/gsc/s7500/9346.gsc.gz") + 1), 
  155.            "check_catalogs", "file");
  156.     sprintf(file, "%s/gsc/s7500/9346.gsc.gz", catalog[CAT_GUIDE_SOUTH].path);
  157.     /*  Can I open catalog file? */
  158.     if ((catalog[CAT_GUIDE_SOUTH].use = (((fp = fopen(file, "r")) != NULL)))) {
  159.       fclose(fp);
  160.     }
  161.     free(file);
  162.   }
  163. }
  164.  
  165.  
  166. /*  Edit catalogs */
  167. void
  168. edit_catalogs(FL_OBJECT *obj, int m)
  169.  
  170. {
  171.   int n;
  172.  
  173.   /*  The window in not created yet, do it now  */
  174.   if (state.catalogs == NULL) {
  175.     state.catalogs = create_form_Catalog();
  176.     fl_set_form_minsize(state.catalogs->Catalog, 
  177.           state.catalogs->Catalog->w, state.catalogs->Catalog->h);
  178.   }
  179.   /*  Deactivate CATALOGS item in the menu */
  180.   fl_set_menu_item_mode(obj, m, FL_PUP_GREY);
  181.   fl_show_form(state.catalogs->Catalog,  FL_FIX_SIZE, FL_FULLBORDER | FL_PLACE_FREE_CENTER, "Star catalogs");
  182.   /*  Write current parameter values into the form */
  183.   n = state.control[state.control_num];
  184.  
  185.   fl_set_button(state.catalogs->checkusnoW, catalog[CAT_USNO].use);
  186.   fl_set_input(state.catalogs->usnodirW, catalog[CAT_USNO].path);
  187.   fl_set_button(state.catalogs->checkppmW, catalog[CAT_PPM].use);
  188.   fl_set_input(state.catalogs->ppmdirW, catalog[CAT_PPM].path);
  189.   /*  Hide PPM for now  */
  190.   fl_hide_object(state.catalogs->checkppmW);
  191.   fl_hide_object(state.catalogs->ppmdirW);
  192.  
  193.   fl_set_button(state.catalogs->checkguideW, catalog[CAT_GUIDE].use);
  194.   fl_set_button(state.catalogs->checkguidesouthW, catalog[CAT_GUIDE_SOUTH].use);
  195.   fl_set_input(state.catalogs->guidedirW, catalog[CAT_GUIDE].path);
  196.   fl_set_input(state.catalogs->guidedirsouthW, catalog[CAT_GUIDE_SOUTH].path);
  197. }
  198.  
  199.