Beispiel #1
0
int
main(int argc, char **argv)
{
    handle_common_asf_args(&argc, &argv, "ASF CEOS Metadata Viewer");

    gchar *glade_xml_file;

    gtk_init(&argc, &argv);

    // glade_xml_file = (gchar *) find_in_path("mdv.glade");
    glade_xml_file = (gchar *) find_in_share("mdv.glade");
    glade_xml = glade_xml_new(glade_xml_file, NULL, NULL);

    g_free(glade_xml_file);

    set_app_title();
    set_font();

    if (argc > 1)
        add_file(argv[1]);

    glade_xml_signal_autoconnect(glade_xml);
    gtk_main ();

    exit (EXIT_SUCCESS);
}
Beispiel #2
0
int
main(int argc, char **argv)
{
    gtk_init(&argc, &argv);

    gchar *glade_xml_file = (gchar *) find_in_share("proj2proj.glade");
    printf("Found proj2proj.glade: %s\n", glade_xml_file);
    glade_xml = glade_xml_new(glade_xml_file, NULL, NULL);
    free(glade_xml_file);

    set_font();

    glade_xml_signal_autoconnect(glade_xml);

    // default to lat/lon -> UTM
    GtkWidget *w = get_widget_checked("source_projection_option_menu");
    set_combo_box_item(w, 5);

    geocode_options_changed(TRUE);
    geocode_options_changed(FALSE);

    if (argc > 1) {
        put_file_in_textview(argv[1], "source_textview");
        forward();
    }

    set_toolbar_images();

    gtk_main ();

    exit (EXIT_SUCCESS);
}
Beispiel #3
0
void add_delta_shapes(meta_parameters *meta)
{
  const char *file = "corner_reflectors.csv";
  char *crf = find_in_share(file);
  add_generic_csv(meta,crf,TRUE);
  free(crf);
}
Beispiel #4
0
void img_loc(gchar *loc, gchar* file)
{
  gchar * tmp = find_in_share(file);
  if (tmp) {
    strcpy(loc, tmp);
    g_free(tmp);
  } else {
    strcpy(loc, file);
  }
}
Beispiel #5
0
// try to find a program we can use to view the generated csv files
const char * detect_csv_assoc()
{
    static char *csv_app = NULL;
    if (!csv_app) {
        char *csv_file = find_in_share("asf_view_cfg.csv");

#ifdef win32
        // On Windows, use the file association table to find out what we
        // can do with csv files.
        char path[1024];
        int ret = (int)FindExecutable((LPCTSTR)csv_file,
                                      (LPCTSTR)get_asf_share_dir(), (LPTSTR)path);
        if (ret > 32 && strlen(path) > 0) {
            csv_app = escapify(path);
            printf("Path to CSV Application: %s\n", csv_app);
        } else {
            if (ret==SE_ERR_FNF)
                printf("File not found: %s\n", csv_file);
            else if (ret==SE_ERR_NOASSOC)
                printf("No association for: %s\n", csv_file);
            else if (ret==SE_ERR_OOM)
                printf("Out of resources.\n");
            else
                printf("Unknown error! (return value: %d)\n", ret);

            csv_app = STRDUP("notepad.exe");
            printf("CSV Application not found -- using notepad.\n");
        }
        FREE(csv_file);
#else
        // On Linux, get the app from the configuration file
        FILE *cfg = fopen(csv_file, "r");
        if (cfg) {
            char tmp[1024];
            while (fgets(tmp, 1024, cfg) != NULL) {
                if (strncmp_case(tmp, "CSV,", 4) == 0) {
                    csv_app = trim_whitespace(tmp+4);
                    printf("CSV Application from config file: %s\n", csv_app);
                }
            }
            if (!csv_app)
                csv_app = STRDUP("");
            fclose(cfg);
        } else {
            printf("Failed to open %s: %s\n", csv_file, strerror(errno));
            csv_app = STRDUP("");
            printf("CSV Application not found.\n");
        }
#endif
    }
    return csv_app;
}
Beispiel #6
0
/* danger: returns pointer to static data!! */
static const char * imgloc(char * file)
{
    static char loc[1024];
    gchar * tmp = find_in_share(file);
    if (tmp) {
      strcpy(loc, tmp);
      g_free(tmp);
    } else {
      strcpy(loc, file);
    }

    return loc;
}
Beispiel #7
0
static char *get_arclist_from_settings(char *sensor)
{
    if (strcmp_case(sensor, "ERS-1") == 0 ||
            strcmp_case(sensor, "ERS-2") == 0)
    {
        char *settings_file = find_in_share("mapready_settings.cfg");
        if (!settings_file) {
            asfPrintWarning("Could not find mapready_settings.cfg");
            return NULL;
        }
        char match_str[256];
        char *arclist = NULL;
        sprintf(match_str, "precise orbits %s", sensor);
        FILE *fSettings = FOPEN(settings_file, "r");
        if (fSettings) {
            char line[1024];
            while (fgets(line, 1024, fSettings) != NULL) {
                if (strncmp(line, match_str, strlen(match_str)) == 0) {
                    arclist = read_str(line, match_str);
                    if (strcmp_case(arclist, "<location of arclist file>") == 0)
                        strcpy(arclist, "");
                    break;
                }
            }
            FCLOSE(fSettings);
            if (!arclist || strlen(arclist) == 0) {
                // not an error, user probably does not have precision state vectors
                asfPrintStatus("No precise orbits found in mapready_settings.cfg for %s\n",
                               sensor);
            }
            FREE(settings_file);
            return arclist;
        }
        else {
            asfPrintError("Could not open mapready_settings.cfg");
            return NULL;
        }
    }
    else {
        asfPrintError("Internal error, bad sensor: %s\n", sensor);
        return NULL;
    }
    // not reached
    return NULL;
}
Beispiel #8
0
int
main(int argc, char **argv)
{
    gtk_init(&argc, &argv);

    char *glade_xml_file = find_in_share("c2v.glade");
    if (!glade_xml_file) {
        printf("Couldn't find the glade file: c2v.glade.  "
               "Aborting...\n");
        exit(1);
    }

    glade_xml = glade_xml_new(glade_xml_file, NULL, NULL);
    free(glade_xml_file);

    set_font();
    set_title();

    GtkWidget *win = get_widget_checked("c2v_window");
    GError *err=NULL;
    int ok=gtk_window_set_icon_from_file(GTK_WINDOW(win),
                                         imgloc("c2v.png"),&err);
    if (!ok)
        printf("Error loading icon: %s\n", err->message);

    if (argc>1) {
        select_defaults_by_file_type(argv[1],TRUE);
        add_input_file(argv[1]);
        int output_format = get_combo_box_item("output_format_combobox");
        process();
        // if we opened up an external application, we can just exit now
        // otherwise we will stay open
        if (output_format == OUTPUT_KML || output_format == OUTPUT_ALOS_CSV)
            exit(EXIT_SUCCESS);
    }
    else {
        set_combo_box_item("input_format_combobox", INPUT_AUTO);
        set_combo_box_item("output_format_combobox", OUTPUT_KML);
    }

    glade_xml_signal_autoconnect(glade_xml);
    gtk_main ();

    exit (EXIT_SUCCESS);
}
Beispiel #9
0
int
main(int argc, char **argv)
{
    gchar *glade_xml_file;

    gtk_init(&argc, &argv);

    glade_xml_file = (gchar *) find_in_share("preview.glade");
    glade_xml = glade_xml_new(glade_xml_file, NULL, NULL);
    g_free(glade_xml_file);

    set_app_title();
    set_font();

    if (argc > 1)
        add_file(argv[1]);

    glade_xml_signal_autoconnect(glade_xml);
    gtk_main ();

    exit (EXIT_SUCCESS);
}
int
main(int argc, char **argv)
{
    GtkWidget *widget;
    gchar *glade_xml_file;

    gtk_init(&argc, &argv);
    set_font();
    get_asf_share_dir_with_argv0(argv[0]);
    set_tiff_warning_handler();

    asfPrintStatus("\nASF MapReady:\n");
    const char *share_dir = get_asf_share_dir();

    if (!share_dir)
      // this actually should never happen with the current implementation
      // of get_asf_share_dir() -- always sets the share dir to something
      // even if it is a bad guess... in which case the next check will fail
      asfPrintError("Could not find the ASF share directory!\n");

    glade_xml_file = (gchar *)find_in_share("mapready.glade");
    if (!glade_xml_file)
      asfPrintError("Could not find the mapready.glade file!\n"
                    "It should be in the share files directory, here:\n"
                    "  %s\n", share_dir);
    glade_xml = glade_xml_new(glade_xml_file, NULL, NULL);
    if (!glade_xml)
      asfPrintError("Could not load the mapready.glade file!\n"
                    "This file may be corrupt. mapready.glade was found in:\n"
                    "  %s\n", share_dir);
    g_free(glade_xml_file);

    asfPrintStatus("Using share files directory: %s\n\n", share_dir);

    /* thumbnails supported in GTK 2.4 or greater */
#ifdef G_THREADS_ENABLED
    use_thumbnails = gtk_major_version >= 2 && gtk_minor_version >= 4;
#else
    use_thumbnails = FALSE;
#endif

#ifdef win32
    // On windows, ensure that our installed sh.exe is the one that is found,
    // by severely restricting the path.
    char pathenv[1024];
    sprintf(pathenv, "PATH=%s", get_asf_bin_dir());
    putenv(pathenv);
#endif

    if (!use_thumbnails)
    {
        printf("GTK Version < 2.4 -- output thumbnails disabled.\n");
    }
    else
    {
        // We will want to load thumbnails in other threads.
        if ( !g_thread_supported () ) {
            g_thread_init (NULL);
        }
    }

    /* allow FOPEN, FREAD, FWRITE to fail without aborting */
    caplib_behavior_on_error = BEHAVIOR_ON_ERROR_CONTINUE;

    /* add version number to window title, request a default size */
    char gtitle [256];
    sprintf (gtitle, "ASF MapReady: Version %s",
             MAPREADY_VERSION_STRING);

    widget = get_widget_checked("asf_convert");
    gtk_window_set_title(GTK_WINDOW(widget), gtitle);
    // commenting this out - now supported within glade
    //gtk_window_resize(GTK_WINDOW(widget), 1000, 700);

    /* select defaults for dropdowns & buttons & labeling */
    widget = get_widget_checked("scaling_method_combobox");
    set_combo_box_item(widget, SCALING_METHOD_SIGMA);

    widget = get_widget_checked("import_checkbutton");
    gtk_widget_set_sensitive(widget, FALSE);

    widget = get_widget_checked("input_data_type_combobox");
    set_combo_box_item(widget, INPUT_TYPE_AMP);

    widget = get_widget_checked("resample_option_menu");
    set_combo_box_item(widget, RESAMPLE_BILINEAR);

    // Populate the colormap drop-downs on both the import tab and in the
    // browse dialog
    populate_polsarpro_classification_optionmenu();
    widget = get_widget_checked("browse_select_colormap_optionmenu");
    gtk_option_menu_set_history(GTK_OPTION_MENU(widget), 0);

    widget = get_widget_checked("output_format_combobox");
    set_combo_box_item(widget, OUTPUT_FORMAT_JPEG);

    widget = get_widget_checked("geocode_checkbutton");
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
    geocode_options_changed();
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), FALSE);

    widget = get_widget_checked("about_dialog_copyright_label");
    gtk_label_set_text(GTK_LABEL(widget), ASF_COPYRIGHT_STRING);

    // Hide latitude selection stuff until we start supporting
    // swath products (level 0) again
    widget = get_widget_checked("latitude_checkbutton");
    gtk_widget_hide(widget);
    widget = get_widget_checked("latitude_low_label");
    gtk_widget_hide(widget);
    widget = get_widget_checked("latitude_hi_label");
    gtk_widget_hide(widget);
    widget = get_widget_checked("latitude_low_entry");
    gtk_widget_hide(widget);
    widget = get_widget_checked("latitude_hi_entry");
    gtk_widget_hide(widget);

    // For now, do not allow manual offsets
    show_widget("hbox_tc_matching", FALSE);

    // This option is deprecated -- we always apply the fix now
    // and don't give the user the option of turning it off.  Probably
    // we can just delete all code associated with it, but for now we
    // just turn it on, and hide it.
    set_checked("apply_metadata_fix_checkbutton", TRUE);
    widget = get_widget_checked("apply_metadata_fix_checkbutton");
    gtk_widget_hide(widget);

    // Muck with the fonts in the About dialog
    widget = get_widget_checked("about_dialog_mapready_label");
    gchar *str = gtitle;
    gchar *text;
    PangoAttrList *attrs;
    sprintf(gtitle,
                "\n<b>ASF MapReady</b>\n"
                "<i>Remote Sensing Toolkit</i>\n"
                "ver. %s",
                MAPREADY_VERSION_STRING);
    if (strlen(SVN_REV)>0)
        sprintf(gtitle, "%s (build %s)", gtitle, SVN_REV);
    else
        strcat(gtitle, " (custom build)");

    pango_parse_markup(str, -1, 0, &attrs, &text, NULL, NULL);
    gtk_label_set_attributes(GTK_LABEL(widget), attrs);
    gtk_label_set_text(GTK_LABEL(widget), text);
    PangoFontDescription *font_desc =
      pango_font_description_from_string("Sans 12");
    gtk_widget_modify_font(widget, font_desc);

    // Muck with the "Select Processing Steps" label
    widget = get_widget_checked("select_processing_steps_label");
    str = gtitle;
    sprintf(gtitle, "<b><i>  Select Processing Steps:</i></b>");
    pango_parse_markup(str, -1, 0, &attrs, &text, NULL, NULL);
    gtk_label_set_attributes(GTK_LABEL(widget), attrs);
    gtk_label_set_text(GTK_LABEL(widget), text);
    font_desc = pango_font_description_from_string("Sans 12");
    gtk_widget_modify_font(widget, font_desc);

    /* fire handlers for hiding/showing stuff */
    output_format_combobox_changed();
    input_data_type_changed();
    geocode_options_changed();
    load_external_commands();
    external_settings_changed();
    set_toolbar_images();
    show_execute_button(TRUE);

    /* build columns in the files section */
    show_full_paths = FALSE; // Set before setup_files_list(), default to FALSE
    widget = get_widget_checked("show_full_path_names_checkbutton");
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), FALSE);
    setup_files_list();

    /* allow multiple selects */
    widget = get_widget_checked("input_file_selection");
    gtk_file_selection_set_select_multiple(GTK_FILE_SELECTION(widget), TRUE);

    /* drag-n-drop setup */
    setup_dnd();

    /* right-click menu setup */
    setup_popup_menu();

    /* bands dropdown setup*/
    setup_band_comboboxes();

    current_naming_scheme = naming_scheme_default();

    /* set initial vpanel setting */
    //widget = get_widget_checked("vertical_pane");
    //gtk_paned_set_position(GTK_PANED(widget), 240);

    /* Connect signal handlers.  */
    glade_xml_signal_autoconnect (glade_xml);

    /* initial flag settings */
    processing = FALSE;
    settings_on_execute = NULL;

    /* explicit call to the function that refreshes the "summary" */
    /* section when options are changed, so get the settings      */
    /* initially in there                                         */
    input_data_formats_changed();
    input_data_type_combobox_changed();
    default_to_terrcorr_on();
    default_to_keep_temp();
    terrcorr_options_changed();
    init_browse_format_combobox();

    /* For some reason, it did not work to set this via glade        */
    /* So, we have to select our default faraday rotation style here */
    rb_select("rb_fr_global", TRUE);
    polarimetry_settings_changed();

    /* put files on the command-line into the files section */
    populate_files_list(argc, argv);

    /* set up the rgb stuff on the export tab */
    rgb_combo_box_setup();

    /* enters the main GTK loop */
    gtk_main ();

    /* clean up, application has been closed */
    if (settings_on_execute)
        settings_delete(settings_on_execute);

    if (output_directory)
        g_free(output_directory);

    if (current_naming_scheme)
        naming_scheme_delete(current_naming_scheme);

    release_predefined_projections();

    exit (EXIT_SUCCESS);
}
Beispiel #11
0
void settings_save(Settings *s)
{
    char *sav_file = find_in_share("req_settings.txt");
    if (sav_file && fileExists(sav_file)) {
        // update an existing file
        printf("Found settings file: %s\n", sav_file);
        char *new_sav_txt = MALLOC(sizeof(char)*1024);
        strcpy(new_sav_txt, "");
        int i,len=2048;
        int wrote_csv=FALSE,
            wrote_output=FALSE,
            wrote_obs_req_num=FALSE,
            wrote_obs_req_id_aadn=FALSE,
            wrote_obs_req_id_tdrs=FALSE,
            wrote_acq_req_num=FALSE,
            wrote_odl0_seq_num=FALSE,
            wrote_odl0_req_id=FALSE,
            wrote_station_code=FALSE;

        int wrote_acq_req_id[MAX_STATIONS];
        int wrote_acq_req_stn_code[MAX_STATIONS];
        for (i=0; i<MAX_STATIONS; ++i) {
            wrote_acq_req_id[i] = FALSE;
            wrote_acq_req_stn_code[i] = FALSE;
        }

        FILE *fp = FOPEN(sav_file, "r");
        if (!fp) {
            message_box("Error opening output file!\n");
            return;
        }

        char buf[1024];
        while (fgets(buf, 1024, fp) != NULL) {
            if (s->csv_dir && matches(buf, csv_dir_key)) {
                add_to_text(&new_sav_txt, &len,
                    "%s = %s\r\n", csv_dir_key, s->csv_dir);
                wrote_csv = TRUE;
            } else if (s->output_dir && matches(buf, output_dir_key)) {
                add_to_text(&new_sav_txt, &len,
                    "%s = %s\r\n", output_dir_key, s->output_dir);
                wrote_output = TRUE;
            } else if (matches(buf, obs_req_num_key)) {
                add_to_text(&new_sav_txt, &len,
                    "%s = %d\r\n", obs_req_num_key, s->obs_req_num);
                wrote_obs_req_num = TRUE;
            } else if (matches(buf, obs_req_id_aadn_key)) {
                add_to_text(&new_sav_txt, &len,
                    "%s = %d\r\n", obs_req_id_aadn_key, s->obs_req_id_aadn);
                wrote_obs_req_id_aadn = TRUE;
            } else if (matches(buf, obs_req_id_tdrs_key)) {
                add_to_text(&new_sav_txt, &len,
                    "%s = %d\r\n", obs_req_id_tdrs_key, s->obs_req_id_tdrs);
                wrote_obs_req_id_tdrs = TRUE;
            } else if (matches(buf, acq_req_num_key)) {
                add_to_text(&new_sav_txt, &len,
                    "%s = %d\r\n", acq_req_num_key, s->acq_req_num);
                wrote_acq_req_num = TRUE;
            } else if (matches(buf, odl0_seq_num_key)) {
                add_to_text(&new_sav_txt, &len,
                    "%s = %d\r\n", odl0_seq_num_key, s->odl0_seq_num);
                wrote_odl0_seq_num = TRUE;
            } else if (matches(buf, odl0_req_id_key)) {
                add_to_text(&new_sav_txt, &len,
                    "%s = %d\r\n", odl0_req_id_key, s->odl0_req_id);
                wrote_odl0_req_id = TRUE;
            } else if (s->station_code && matches(buf, station_code_key)) {
                add_to_text(&new_sav_txt, &len,
                    "%s = %s\r\n", station_code_key, s->station_code);
                wrote_station_code = TRUE;
            } else {
                int found=0;
                for (i=0; i<MAX_STATIONS; ++i) {
                    char id_key[128], stn_code_key[128];
                    snprintf(id_key, 128, "%s %d", acq_req_id_key, i+1);
                    snprintf(stn_code_key, 128, "%s %d", acq_req_stn_code_key, i+1);
                    if (matches(buf, id_key)) {
                        found = TRUE;
                        add_to_text(&new_sav_txt, &len, "%s = %s\r\n",
                            stn_code_key, s->acq_req_stn_codes[i]);
                        wrote_acq_req_stn_code[i] = TRUE;
                    } else if (matches(buf, stn_code_key)) {
                        found = TRUE;
                        add_to_text(&new_sav_txt, &len, "%s = %d\r\n",
                            id_key, s->acq_req_ids[i]);
                        wrote_acq_req_id[i] = TRUE;
                    }
                }
                if (!found)
                    add_to_text(&new_sav_txt, &len, "%s", buf);
            }
        }
        FCLOSE(fp);

        if (s->csv_dir && !wrote_csv)
            add_to_text(&new_sav_txt, &len,
                "%s = %s\r\n", csv_dir_key, s->csv_dir);
        if (s->output_dir && !wrote_output)
            add_to_text(&new_sav_txt, &len,
                "%s = %s\r\n", output_dir_key, s->output_dir);
        if (!wrote_obs_req_num && s->obs_req_num > 1)
            add_to_text(&new_sav_txt, &len,
                "%s = %d\r\n", obs_req_num_key, s->obs_req_num);
        if (!wrote_obs_req_id_aadn && s->obs_req_id_aadn > 1)
            add_to_text(&new_sav_txt, &len,
                "%s = %d\r\n", obs_req_id_aadn_key, s->obs_req_id_aadn);
        if (!wrote_obs_req_id_tdrs && s->obs_req_id_tdrs > 1)
            add_to_text(&new_sav_txt, &len,
                "%s = %d\r\n", obs_req_id_tdrs_key, s->obs_req_id_tdrs);
        if (!wrote_acq_req_num && s->acq_req_num > 1)
            add_to_text(&new_sav_txt, &len,
                "%s = %d\r\n", acq_req_num_key, s->acq_req_num);
        if (!wrote_odl0_seq_num && s->odl0_seq_num > 1)
            add_to_text(&new_sav_txt, &len,
                "%s = %d\r\n", odl0_seq_num_key, s->odl0_seq_num);
        if (!wrote_odl0_req_id && s->odl0_req_id > 1)
            add_to_text(&new_sav_txt, &len,
                "%s = %d\r\n", s->odl0_req_id);
        if (s->station_code && !wrote_station_code)
            add_to_text(&new_sav_txt, &len,
                "%s = %s\r\n", station_code_key, s->station_code);

        for (i=0; i<MAX_STATIONS; ++i) {
            if (!wrote_acq_req_id[i] && s->acq_req_ids[i] > 0 &&
                !wrote_acq_req_stn_code[i] &&
                strlen(s->acq_req_stn_codes[i]) > 0)
            {
                char id_key[128], stn_code_key[128];
                snprintf(id_key, 128, "%s %d", acq_req_id_key, i+1);
                snprintf(stn_code_key, 128, "%s %d", acq_req_stn_code_key, i+1);
                add_to_text(&new_sav_txt, &len,
                    "%s = %d\r\n", stn_code_key, s->acq_req_stn_codes[i]);
                add_to_text(&new_sav_txt, &len,
                    "%s = %d\r\n", id_key, s->acq_req_ids[i]);
            }
        }

        fp = FOPEN(sav_file, "w");
        fprintf(fp, "%s", new_sav_txt);
        FCLOSE(fp);
    } else {
        sav_file = MALLOC(sizeof(char)*(strlen(get_asf_share_dir())+32));
        sprintf(sav_file, "%s/req_settings.txt", get_asf_share_dir());
        // write a new file
        FILE *fp = FOPEN(sav_file, "w");
        if (s->csv_dir)
            fprintf(fp, "%s = %s\r\n", csv_dir_key, s->csv_dir);
        if (s->output_dir)
            fprintf(fp, "%s = %s\r\n", output_dir_key, s->output_dir);
        fprintf(fp, "%s = %d\r\n", obs_req_num_key, s->obs_req_num);
        fprintf(fp, "%s = %d\r\n", obs_req_id_aadn_key, s->obs_req_id_aadn);
        fprintf(fp, "%s = %d\r\n", obs_req_id_tdrs_key, s->obs_req_id_tdrs);
        fprintf(fp, "%s = %d\r\n", acq_req_num_key, s->acq_req_num);
        fprintf(fp, "%s = %d\r\n", odl0_seq_num_key, s->odl0_seq_num);
        fprintf(fp, "%s = %d\r\n", odl0_req_id_key, s->odl0_req_id);

        int i;
        for (i=0; i<MAX_STATIONS; ++i) {
            if (s->acq_req_ids[i] > 0 && strlen(s->acq_req_stn_codes[i]) > 0) {
                char id_key[128], stn_code_key[128];
                snprintf(stn_code_key, 128, "%s %d", acq_req_stn_code_key, i+1);
                fprintf(fp, "%s = %s\r\n", stn_code_key, s->acq_req_stn_codes[i]);
                snprintf(id_key, 128, "%s %d", acq_req_id_key, i+1);
                fprintf(fp, "%s = %d\r\n", id_key, s->acq_req_ids[i]);
            }
        }
        if (s->station_code)
            fprintf(fp, "%s = %s\r\n", station_code_key, s->station_code);
        FCLOSE(fp);
    }
    free(sav_file);
}
Beispiel #12
0
Settings *settings_load()
{
    int i;
    Settings *s = settings_new();
    char *sav_file = find_in_share("req_settings.txt");
    if (fileExists(sav_file)) {
        FILE *fp = FOPEN(sav_file, "r");
        if (fp) {
            char buf[1024];
            while (fgets(buf, 1024, fp) != NULL) {
                read_string_param(buf, csv_dir_key, &s->csv_dir);
                read_string_param(buf, output_dir_key, &s->output_dir);
                read_int_param(buf, obs_req_num_key, &s->obs_req_num);
                read_int_param(buf, obs_req_id_aadn_key, &s->obs_req_id_aadn);
                read_int_param(buf, obs_req_id_tdrs_key, &s->obs_req_id_tdrs);
                read_int_param(buf, acq_req_num_key, &s->acq_req_num);
                read_int_param(buf, odl0_seq_num_key, &s->odl0_seq_num);
                read_int_param(buf, odl0_req_id_key, &s->odl0_req_id);
                read_string_param(buf, station_code_key, &s->station_code);
                for (i=0; i<MAX_STATIONS; ++i) {
                    char id_key[128], stn_code_key[128];
                    snprintf(id_key, 128, "%s %d", acq_req_id_key, i+1);
                    read_int_param(buf, id_key, &s->acq_req_ids[i]);
                    snprintf(stn_code_key, 128, "%s %d", acq_req_stn_code_key, i+1);
                    char *tmp=NULL;
                    read_string_param(buf, stn_code_key, &tmp);
                    if (tmp) {
                        if (strlen(tmp) > 4)
                            tmp[4] = '\0';
                        strcpy(s->acq_req_stn_codes[i], tmp);
                        free(tmp);
                    }
                }
            }
            FCLOSE(fp);
        } else {
            printf("Failed to open settings file: %s\n", sav_file);
        }
    } else {
        printf("No settings file found.\n");
    }

    FREE(sav_file);

    if (s->obs_req_num < 1) s->obs_req_num = 1;
    if (s->obs_req_id_aadn < 1) s->obs_req_id_aadn = 1;
    if (s->obs_req_id_tdrs < 1) s->obs_req_id_tdrs = 1;
    if (s->acq_req_num < 1) s->acq_req_num = 1;
    for (i=0; i<MAX_STATIONS; ++i)
        if (s->acq_req_ids[i] < 1) s->acq_req_ids[i] = 1;
    if (s->odl0_seq_num < 1) s->odl0_seq_num = 1;
    if (s->odl0_req_id < 1) s->odl0_req_id = 1;

    if (!s->station_code)
        s->station_code = STRDUP("AADN");

#ifdef DEBUG_SETTINGS
    settings_print(s);
#endif

    return s;
}
Beispiel #13
0
int
main(int argc, char **argv)
{
    if (detect_flag_options(argc, argv, "-help", "--help", NULL))
      help();

    char band[512], lut[512], mask_file_name[512];

    strcpy(band, "");
    strcpy(mask_file_name, "");

    int band_specified = extract_string_options(&argc, &argv, band,
        "-band", "--band", "-b", NULL);
    int lut_specified = extract_string_options(&argc, &argv, lut,
        "-colormap", "--colormap", "-lut", "--lut", NULL);
    int planner_mode = extract_flag_options(&argc, &argv,
        "-plan", "--plan", NULL);
    int mask_specified = extract_string_options(&argc, &argv, mask_file_name,
        "-mask", "--mask", "--layover-mask", "--layover-mask", NULL);
    generic_specified = extract_flag_options(&argc, &argv,
        "-generic", "--generic", NULL);
    if (generic_specified) {
       char type[512];
       if (!extract_int_options(&argc, &argv, &generic_bin_width,
                "-width", "--width", "-cols", "--cols", NULL) ||
           !extract_int_options(&argc, &argv, &generic_bin_height,
                "-height", "--height", "-rows", "--rows", NULL)) {
         asfPrintError("When reading generic data, specify the size "
            "(--width, --height).\n");
       }
       generic_bin_byteswap =
         extract_flag_options(&argc, &argv,
                              "--byteswap", "-byteswap", NULL);
       if (extract_string_options(&argc, &argv, type,
                "-type", "--type", NULL))
       {
         if (strcmp_case(type, "BYTE") == 0 ||
             strcmp_case(type, "INT8") == 0) {
           generic_bin_datatype = BYTE;
         }
         else if (strcmp_case(type, "FLOAT") == 0 ||
                  strcmp_case(type, "REAL32") == 0) {
           generic_bin_datatype = REAL32;
         }
         else {
           asfPrintError("Unknown generic data type: %s\n", type);
         }
       } else {
         asfPrintStatus("Generic binary: assuming REAL32 data.\n");
         generic_bin_datatype = REAL32;
       }
    }

    if (planner_mode) {
      if (detect_flag_options(argc, argv, "-calibrate-reference", NULL)) {
        calibrate_planner_reference();
        exit(EXIT_SUCCESS);
      }
    }

    handle_common_asf_args(&argc, &argv, "ASF View");

    // point to "polygon 0" as the one we initially work on
    g_poly = &g_polys[0];

    // set up image array
    curr = &image_info[0];
    curr->data_name = curr->meta_name = NULL;
    int ii;

    if (argc < 2) {
        curr->filename = STRDUP(find_in_share("startup.jpg"));
    }
    else {
        n_images_loaded = 0;
	for (ii=1; ii<argc; ++ii) {
           if (strlen(argv[ii]) > 0) {
               image_info[n_images_loaded].filename = STRDUP(argv[ii]);
               ++n_images_loaded;
           }
        }    
    }


    if (n_images_loaded == 1) {
        asfPrintStatus("Loading 1 image: %s\n", image_info[0].filename);
    }
    else {
        asfPrintStatus("Loading %d images:\n", n_images_loaded);
        for (ii=0; ii<n_images_loaded; ++ii)
            asfPrintStatus("%d: %s\n", ii+1, image_info[ii].filename);
    }

    if (mask_specified)
        asfPrintStatus("Mask: %s\n", mask_file_name);

    // we could call load_file() here, but don't because this way we can
    // interleave the call to gtk_init() with some of the loading code --
    // which keeps the window from showing up until after it has been loaded,
    // which looks much nicer

    // initialize globals
    reset_globals(TRUE);

    // Get rid of leftover (temporary) colormap luts if they exist, say if asf_view errored out
    // rather than being exited normally
    char embedded_tiff_lut_file[1024];
    char embedded_asf_colormap_file[1024];
    char *lut_loc = (char *)MALLOC(sizeof(char)*(strlen(get_asf_share_dir())+64));
    sprintf(lut_loc, "%s%clook_up_tables", get_asf_share_dir(), DIR_SEPARATOR);
    sprintf(embedded_tiff_lut_file,"%s%c%s", lut_loc, DIR_SEPARATOR, EMBEDDED_TIFF_COLORMAP_LUT_FILE);
    sprintf(embedded_asf_colormap_file,"%s%c%s", lut_loc, DIR_SEPARATOR,
            EMBEDDED_ASF_COLORMAP_LUT_FILE);
    FREE(lut_loc);
    if (fileExists(embedded_tiff_lut_file)) remove(embedded_tiff_lut_file);
    if (fileExists(embedded_asf_colormap_file)) remove(embedded_asf_colormap_file);

    if (mask_specified) {
        curr = mask = &mask_info;
        mask->filename = STRDUP(mask_file_name);

        if (mask->filename[strlen(mask->filename)-1] == '.')
            mask->filename[strlen(mask->filename)-1] = '\0';
        
        read_file(mask->filename, NULL, FALSE, TRUE);
        //set_lut("layover_mask");
    }
    
    // load the image we're going to actually show last
    for (ii=n_images_loaded-1; ii>=0; --ii)
    {
        curr = &image_info[ii];
        
        // strip off any trailing "."
        if (curr->filename[strlen(curr->filename)-1] == '.')
            curr->filename[strlen(curr->filename)-1] = '\0';
        
        read_file(curr->filename, band_specified ? band : NULL, FALSE, TRUE);
        check_for_embedded_tiff_lut(curr->filename, &lut_specified, lut);
        if (lut_specified)
            set_lut(lut);
        
        assert(curr->data_name);
        assert(curr->meta_name);
        
        // we load the thumbnail data before bringing up the window, looks
        // much nicer.  When loading an image within the GUI, we don't need
        // to do get_thumbnail_data() as a separate step.
        ThumbnailData *thumbnail_data = get_thumbnail_data(curr);
        
        // first time through the loop only, set up GTK
        if (ii == n_images_loaded-1) {
            gtk_init(&argc, &argv);
            
            gchar *glade_xml_file = (gchar *)find_in_share("asf_view.glade");
            printf("Found asf_view.glade: %s\n", glade_xml_file);
            glade_xml = glade_xml_new(glade_xml_file, NULL, NULL);
            free(glade_xml_file);
            
            // set up window title, etc
            set_button_images();
            
            // set up the acquisition planner, if we are in that mode
            if (planner_mode) {
                setup_planner();
                
                // getting rid of the info section makes more room for the found
                // acquisitions, and isn't really necessary in the planner
                show_widget("info_hbox", FALSE);
            }
            
            // populate the look up table list, and apply the default
            // look-up-table, if there is one.  In this case, we will need to
            // apply it retroactively to the thumbnail data we already loaded
            // (In new.c, this kludge isn't required - we load/apply in the
            // same pass -- here it is required because we pre-load the thumbnail)
            populate_lut_combo();
            if (check_for_embedded_tiff_lut(curr->filename, &lut_specified, lut)) {
                GtkWidget *option_menu = get_widget_checked("lut_optionmenu");
                gtk_option_menu_set_history(GTK_OPTION_MENU(option_menu), get_tiff_lut_index());
                set_current_index(get_tiff_lut_index());
            }
            else if (is_colormap_ASF_file(curr->filename)) {
                /*
                * lut_specified = 1;
                * strcpy(lut, EMBEDDED_ASF_COLORMAP_LUT);
                * GtkWidget *option_menu = get_widget_checked("lut_optionmenu");
                * gtk_option_menu_set_history(GTK_OPTION_MENU(option_menu), get_asf_lut_index());
                * set_current_index(get_asf_lut_index());
                * check_lut();
                * apply_lut_to_data(thumbnail_data);
                */
            }
        }
        else if (ii == 0) {
            set_title(band_specified, band);
        }

        if (curr->meta && curr->meta->general)  {
            if (set_lut_based_on_image_type(curr->meta->general->image_data_type))
            {
                check_lut();
                // data we loaded needs to be lutted
                apply_lut_to_data(thumbnail_data);
            }
        }
        
        // load the metadata & image data, other setup
        setup_gdk_window_ids();
        setup_small_image_size();
        fill_small_have_data(thumbnail_data, curr);
        fill_big(curr);
        update_pixel_info(curr);
        update_zoom();
        set_font();
        fill_meta_info();
        update_map_settings(curr);
        fill_stats(curr);
        set_mapping_defaults(curr);
        setup_bands_tab(curr->meta);
        disable_meta_button_if_necessary();
        if (lut_specified)
            select_lut(lut);
    }

    if (n_images_loaded>0) {
        asfPrintStatus("Currently displaying %d: %s\n",
                       current_image_info_index, curr->filename);
    }

    glade_xml_signal_autoconnect(glade_xml);
    gtk_main ();

    // If the last viewed file left behind a (temporary) color map lut,
    // then get rid of it
    if (fileExists(embedded_tiff_lut_file))
      remove(embedded_tiff_lut_file);
    if (fileExists(embedded_asf_colormap_file))
      remove(embedded_asf_colormap_file);

    image_info_free(curr);
    free_shapes();
    exit (EXIT_SUCCESS);
}