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(); } }
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; }
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; }
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); } }
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; }
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); }
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); } }
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; }
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; }
gint clip_file_browse( GtkWidget *widget, GdkEvent *event, gpointer data ) { file_selector( FS_CLIP_FILE ); return FALSE; }