Beispiel #1
0
static int read_geoid(void)
{
    int x,y;
    FILE *f=fopen_share_file("WW15MGH.DAC","rb");
    for (y=0;y<h;y++)
	for (x=0;x<w;x++) {
            signed char hi=fgetc(f);
            unsigned char lo=fgetc(f);
            float height=((hi<<8)+lo)*(1.0/100);
            *(geoid_heights + y*w + x) = height;
	}
    fclose(f);
    return 0;
}
Beispiel #2
0
SIGNAL_CALLBACK void
on_help_button_clicked(GtkWidget *widget)
{
#ifdef win32
    char pdf_dir[1024], pdf_file[128], pdf_viewer[1024];
    snprintf(pdf_dir, 1023, "%s/doc/", get_asf_share_dir());
    strcpy(pdf_file, "mapready_manual.pdf");
    //printf("pdf: %s/%s\n", pdf_dir, pdf_file);

    FindExecutable((LPCTSTR)pdf_file, (LPCTSTR)pdf_dir, (LPTSTR)pdf_viewer);
    printf("Found PDF Viewer: %s\n", pdf_viewer);

    if (strlen(pdf_viewer)) {
      asfSystem_NoWait("\"%s\" \"%s/%s\"", pdf_viewer, pdf_dir, pdf_file);
    } else {
      message_box("Couldn't find path to a PDF Viewer!");
    }
#else
    GtkWidget *help_dialog;
    GtkWidget *help_text;
    GtkTextBuffer * text_buffer;
    FILE * help_file;
    gchar * help_filename;

    help_dialog =
        get_widget_checked("help_dialog");

    help_text =
        get_widget_checked("help_text");

    text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(help_text));

    gtk_text_buffer_set_text(text_buffer, "", -1);

    help_filename = "mapready.txt";
    //help_file = fopen(help_filename, "rt");
    help_file = fopen_share_file(help_filename, "rt");
    if (help_file)
    {
        int line_count = 0;
        gchar * buffer = (gchar *) g_malloc(sizeof(gchar) * max_line_len);
        while (!feof(help_file))
        {
            gchar *p = fgets(buffer, max_line_len, help_file);
            if (p)
            {
                if (strlen(p)) line_count++;
                GtkTextIter end;
                gchar * q = strstr(buffer, "$VERSION");

                if (q)
                {
                    gchar * r = g_strdup(q + 8); /* 8 = length of '$VERSION' */

                    strcpy(q, MAPREADY_VERSION_STRING);
                    strcat(buffer, r);
                    g_free(r);
                }

                gtk_text_buffer_get_end_iter(text_buffer, &end);
                gtk_text_buffer_insert(text_buffer, &end, buffer, -1);
            }
        }
        if (!line_count) {
            sprintf(buffer, "\n\n  ERROR: Empty help file (mapready.txt) in share folder\n(%s)\n",
                    get_asf_share_dir());
            GtkTextIter end;
            gtk_text_buffer_get_end_iter(text_buffer, &end);
            gtk_text_buffer_insert(text_buffer, &end, buffer, -1);
        }

        fclose(help_file);
        g_free(buffer);
    }
    else {
        // No help file found
        gchar *buffer = (gchar *) g_malloc(sizeof(gchar) * max_line_len);
        strcpy(buffer, "\n\n  ERROR: Cannot find help file (mapready.txt) in share folder.\n");
        GtkTextIter end;
        gtk_text_buffer_get_end_iter(text_buffer, &end);
        gtk_text_buffer_insert(text_buffer, &end, buffer, -1);
        g_free(buffer);
    }

    gtk_widget_show(help_dialog);
#endif
}
Beispiel #3
0
SIGNAL_CALLBACK void
on_help_button_clicked(GtkWidget *widget)
{
#ifdef win32
    char hh[1024];

    // First method, get location of help viewer from the standard registry location
    get_string_from_registry_ex("SOFTWARE\\Classes\\chm.file\\shell\\open\\command", "", hh);

    if (strlen(hh) > 0) {
        char *p = strstr(hh, "%1");
        if (p) *p = '\0';

        char * escaped_share_dir = escapify(get_asf_share_dir());
        strcat(hh, escaped_share_dir);
        strcat(hh, "/mapready.chm");
        FREE(escaped_share_dir);
    }

    // Failed to find location of hh.exe through registry... try the system directory
    char *sr = getenv("SYSTEMROOT");
    if (strlen(sr) > 0) {
        int i, j = 0;
        for (i = 0; i < strlen(sr); ++i) {
            switch(sr[i]) {
                case '\\': hh[j] = '\\'; hh[j+1] = '\\'; ++j; break;
                default:   hh[j] = sr[i]; break;
            }
            ++j;
        }
        hh[j] = '\0';
        strcat(hh, "/hh.exe ");
        char * escaped_share_dir = escapify(get_asf_share_dir());
        strcat(hh, escaped_share_dir);
        strcat(hh, "/mapready.chm");
        FREE(escaped_share_dir);
    }

    if (strlen(hh)>0) {
        static GThreadPool *ttp = NULL;
        GError *err = NULL;

        if (!ttp)
        {
            if (!g_thread_supported ()) g_thread_init (NULL);
            ttp = g_thread_pool_new ((GFunc)help_viewer_thread, NULL,
                                     4, TRUE, &err);
            g_assert(!err);
        }

        g_thread_pool_push (ttp, g_string_new (hh), &err);
        g_assert(!err);
    }
    else {
        // Failed, give up.
        message_box("Couldn't find the help viewer!");
    }
#else
    GtkWidget *help_dialog;
    GtkWidget *help_text;
    GtkTextBuffer * text_buffer;
    FILE * help_file;
    gchar * help_filename;

    help_dialog =
        get_widget_checked("help_dialog");

    help_text =
        get_widget_checked("help_text");

    text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(help_text));

    gtk_text_buffer_set_text(text_buffer, "", -1);

    help_filename = "mapready.txt";
    //help_file = fopen(help_filename, "rt");
    help_file = fopen_share_file(help_filename, "rt");
    if (help_file)
    {
        int line_count = 0;
        gchar * buffer = (gchar *) g_malloc(sizeof(gchar) * max_line_len);
        while (!feof(help_file))
        {
            gchar *p = fgets(buffer, max_line_len, help_file);
            if (p)
            {
                if (strlen(p)) line_count++;
                GtkTextIter end;
                gchar * q = strstr(buffer, "$VERSION");

                if (q)
                {
                    gchar * r = g_strdup(q + 8); /* 8 = length of '$VERSION' */

                    strcpy(q, MAPREADY_VERSION_STRING);
                    strcat(buffer, r);
                    g_free(r);
                }

                gtk_text_buffer_get_end_iter(text_buffer, &end);
                gtk_text_buffer_insert(text_buffer, &end, buffer, -1);
            }
        }
        if (!line_count) {
            sprintf(buffer, "\n\n  ERROR: Empty help file (mapready.txt) in share folder\n(%s)\n",
                    get_asf_share_dir());
            GtkTextIter end;
            gtk_text_buffer_get_end_iter(text_buffer, &end);
            gtk_text_buffer_insert(text_buffer, &end, buffer, -1);
        }

        fclose(help_file);
        g_free(buffer);
    }
    else {
        // No help file found
        gchar *buffer = (gchar *) g_malloc(sizeof(gchar) * max_line_len);
        strcpy(buffer, "\n\n  ERROR: Cannot find help file (mapready.txt) in share folder.\n");
        GtkTextIter end;
        gtk_text_buffer_get_end_iter(text_buffer, &end);
        gtk_text_buffer_insert(text_buffer, &end, buffer, -1);
        g_free(buffer);
    }

    gtk_widget_show(help_dialog);
#endif
}