Ejemplo n.º 1
0
void file_save (windata_t *vwin, int ci)
{
    switch (ci) {
    case SAVE_OUTPUT:
    case SAVE_CONSOLE:
    case SAVE_SCRIPT:
    case SAVE_GP_CMDS:
    case SAVE_R_CMDS:
    case SAVE_DATA:
    case SAVE_DATA_AS:
	file_selector(ci, FSEL_DATA_VWIN, vwin);
	break;
    case EXPORT_CSV:
    case EXPORT:
	data_export_selection_wrapper(ci);
	break;
    case SAVE_FUNCTIONS:
	functions_selection_wrapper();
	break;
    case SAVE_TEX:
    case SAVE_TEXT:
	file_selector(ci, FSEL_DATA_MISC, vwin->data);
	break;
    default:
	dummy_call();
    }
}
Ejemplo n.º 2
0
type8 ms_save_file (type8s *name, type8 *ptr, type16 size)
{
    gchar *filename;
    GIOChannel *file;
    gsize bytes_written;
    GError *error = NULL;

    const gchar *filters[] =
	{
	    "Saved game files (*.sav)", "*.sav",
	    NULL
	};

    if (!name)
    {
	filename = file_selector (TRUE, NULL, filters, "Save game");
	if (!filename)
	    return -1;
    } else
	filename = g_strdup ((gchar *) name);

    file = g_io_channel_new_file (filename, "w", &error);
    g_io_channel_set_encoding (file, NULL, &error);
    g_io_channel_write_chars (file, (gchar *) ptr, size, &bytes_written, &error);
    g_io_channel_unref (file);
    g_free (filename);
    return 0;
}
Ejemplo n.º 3
0
type8 ms_load_file (type8s *name, type8 *ptr, type16 size)
{
    gchar *filename;
    GIOChannel *file = NULL;
    gsize bytes_read;
    GError *error = NULL;

    const gchar *filters[] =
	{
	    "Saved game files (*.sav)", "*.sav",
	    NULL
	};

    if (!name)
    {
	filename = file_selector (FALSE, NULL, filters, "Restore game");
	if (!filename)
	    return -1;
    } else
	filename = g_strdup ((gchar *) name);

    if (g_file_test (filename, G_FILE_TEST_EXISTS))
    {
	file = g_io_channel_new_file (filename, "r", &error);
	g_io_channel_set_encoding (file, NULL, &error);
	g_io_channel_read_chars (file, (gchar *) ptr, size, &bytes_read, &error);
	g_io_channel_unref (file);
    }
    g_free (filename);
    return file ? 0 : -1;
}
Ejemplo n.º 4
0
void open_data (GtkAction *action)
{
    if (!dataset_locked()) {
	int code = open_data_code(gtk_action_get_name(action));

	file_selector(code, FSEL_DATA_NONE, NULL);
    }
}
Ejemplo n.º 5
0
filelist_t *get_filelist(const char *path, const char *filter) {
    DIR *d;
    struct stat st_in;
    struct dirent *de, **names=0, **tmp;
    size_t cnt=0, len=0;
    filelist_t *filelist;

    if (stat(path, &st_in) != 0 ) {
        return NULL;
    }

    if (!S_ISDIR(st_in.st_mode)) {
        filelist = filelist_alloc(1);
        sprintf(filelist->files[0],"%s",path);
        return filelist;
    }

	if ((d = opendir(path)) == NULL) {
		return(NULL);
    }

    while ((de = readdir(d))) {
        if (!file_selector(de->d_name, filter)) {
            continue;
        }
        if (cnt >= len) {
            len = 2*len+1;
            if (len > SIZE_MAX/sizeof *names) {
                break;
            }
            tmp = realloc(names, len * sizeof *names);
            if (!tmp) {
                break;
            }
            names = tmp;
        }
        names[cnt] = malloc(de->d_reclen);
        if (!names[cnt]) {
            break;
        }
        memcpy(names[cnt++], de, de->d_reclen);
    }
    closedir(d);

    filelist = filelist_alloc(cnt);

    if (names) {
        while (cnt-->0) {
            sprintf(filelist->files[cnt],"%s/%s",path,names[cnt]->d_name);
            free(names[cnt]);
        }
       free(names);
    }

    return filelist;
}
Ejemplo n.º 6
0
void file_inf()
{
    int ok;
    FILE *fp;
    char filename[256];
    sprintf(filename,"%s.pars",this_file);
    ping();
    if(!file_selector("Save info",filename,"*.pars*"))return;
    /* if(new_string("Filename: ",filename)==0)return; */
    open_write_file(&fp,filename,&ok);
    if(!ok)return;
    redraw_params();
    do_info(fp);
    fclose(fp);
}
Ejemplo n.º 7
0
void new_lookup_com(int i) {
  char file[128];
  int index, ok, status;
  double xlo, xhi;
  int npts;
  char newform[80];

  index = select_table();
  if (index == -1)
    return;
  if (i == 1) {
    view_table(index);
    return;
  }
  if (my_table[index].flag == 1) {
    strcpy(file, my_table[index].filename);
    status = file_selector("Load table", file, "*.tab");
    if (status == 0)
      return;
    ok = load_table(file, index);
    if (ok == 1)
      strcpy(my_table[index].filename, file);
  }
  if (my_table[index].flag == 2) {
    npts = my_table[index].n;

    xlo = my_table[index].xlo;
    xhi = my_table[index].xhi;
    strcpy(newform, my_table[index].filename);
    new_int("Auto-evaluate? (1/0)", &my_table[index].autoeval);
    new_int("NPts: ", &npts);
    new_float("Xlo: ", &xlo);
    new_float("Xhi: ", &xhi);
    new_string("Formula :", newform);
    create_fun_table(npts, xlo, xhi, newform, index);
  }
}
Ejemplo n.º 8
0
filelist_t *get_filelist(const char *path, const char *filter) {
    DIR *d;
    struct stat st_in;
    struct dirent *de;
    char **names = 0, **tmp;

    size_t cnt = 0, len = 0;
    filelist_t *filelist;

    if (stat(path, &st_in) != 0 ) {
        OPENDCP_LOG(LOG_DEBUG, "path not found %s", path);
        return NULL;
    }

    if (!S_ISDIR(st_in.st_mode)) {
        OPENDCP_LOG(LOG_DEBUG, "single file mode");
        filelist = filelist_alloc(1);
        snprintf(filelist->files[0], MAX_FILENAME_LENGTH, "%s", path);
        return filelist;
    }

    if ((d = opendir(path)) == NULL) {
        return(NULL);
    }

    OPENDCP_LOG(LOG_DEBUG, "reading directory");

    while ((de = readdir(d))) {
        if (!file_selector(de->d_name, filter)) {
            continue;
        }

        if (cnt >= len) {
            len = 2 * len + 1;

            if (len > SIZE_MAX / sizeof * names) {
                break;
            }

            tmp = realloc(names, len * sizeof * names);

            if (!tmp) {
                break;
            }

            names = tmp;
        }

        names[cnt] = malloc(strlen(de->d_name) + 1);

        if (!names[cnt]) {
            break;
        }

        snprintf(names[cnt++], strlen(de->d_name) + 1, "%s", de->d_name);
        OPENDCP_LOG(LOG_DEBUG, "Found %s", de->d_name);
    }

    closedir(d);

    OPENDCP_LOG(LOG_DEBUG, "found %d files", cnt);
    filelist = filelist_alloc(cnt);

    if (names) {
        while (cnt-- > 0) {
            OPENDCP_LOG(LOG_DEBUG, "Adding file %s", names[cnt]);
            snprintf(filelist->files[cnt], MAX_FILENAME_LENGTH, "%s/%s", path, names[cnt]);
            free(names[cnt]);
        }

        free(names);
    }

    return filelist;
}
Ejemplo n.º 9
0
gboolean start_new_game (gchar *game_filename, gchar *graphics_filename,
			 gchar *splash_filename, gchar *music_filename,
			 gchar *hints_filename)
{
    const gchar *filters[] =
	{
	    "Magnetic Scrolls data file (*.mag)", "*.mag",
	    NULL
	};

    if (!game_filename)
	game_filename = file_selector (FALSE, NULL, filters, "Open game file");

    if (!game_filename)
	return TRUE;

    stop_main_loop ();

    if (ms_is_running ())
    {
	ms_stop ();
	ms_freemem ();
    }

    stop_recording (TRUE);
    stop_scripting (TRUE);
    stop_replaying (TRUE);

    if (!graphics_filename)
	graphics_filename = change_file_extension (game_filename, "gfx");

    if (!splash_filename)
	splash_filename = change_file_extension (game_filename, "png");
    
    if (!music_filename)
	music_filename = change_file_extension (game_filename, "mp3");

    if (!hints_filename)
	hints_filename = change_file_extension (game_filename, "hnt");

    display_splash_screen (splash_filename, music_filename);

    text_clear ();
    graphics_clear ();
    hints_clear ();

    if (applicationExiting)
	return FALSE;

    if (!ms_init ((type8s *) game_filename, (type8s *) graphics_filename, (type8s *) hints_filename), NULL)
    {
	GtkWidget *error;
	gchar *basename;
	
	basename = g_path_get_basename (game_filename);
	error = gtk_message_dialog_new (
	    GTK_WINDOW (Gui.main_window),
	    GTK_DIALOG_DESTROY_WITH_PARENT,
	    GTK_MESSAGE_ERROR,
	    GTK_BUTTONS_OK,
	    "Could not start the game! The most likely cause is\n"
	    "that '%s' is not a valid game file.",
	    basename);
	gtk_dialog_run (GTK_DIALOG (error));
	g_free (basename);
	gtk_widget_destroy (error);
    } else
	start_main_loop ();
    
    g_free (game_filename);
    g_free (graphics_filename);
    g_free (splash_filename);
    g_free (music_filename);
    g_free (hints_filename);
    
    gtk_widget_grab_focus (Gui.text_view);
    return TRUE;
}
Ejemplo n.º 10
0
gint clip_file_browse( GtkWidget *widget, GdkEvent *event, gpointer data )
{
	file_selector( FS_CLIP_FILE );

	return FALSE;
}