static void save(button b) { char *file, buf[256], *p; FILE *fp; setuserfilter("All files (*.*)\0*.*\0\0"); strcpy(buf, getenv("R_USER")); R_fixbackslash(buf); file = askfilesavewithdir(G_("Select directory for file 'Rconsole'"), "Rconsole", buf); if(!file) return; strcpy(buf, file); p = buf + strlen(buf) - 2; if(!strncmp(p, ".*", 2)) *p = '\0'; fp = R_fopen(buf, "w"); if(fp == NULL) { MessageBox(0, "Cannot open file to fp", "Configuration Save Error", MB_TASKMODAL | MB_ICONSTOP | MB_OK); return; } fprintf(fp, "%s\n%s\n%s\n\n%s\n%s\n", "# Optional parameters for the console and the pager", "# The system-wide copy is in rwxxxx/etc.", "# A user copy can be installed in `R_USER'.", "## Style", "# This can be `yes' (for MDI) or `no' (for SDI)."); fprintf(fp, "MDI = %s\n", ischecked(rb_mdi)?"yes":"no"); fprintf(fp, "%s\n%s%s\n%s%s\n\n", "# the next two are only relevant for MDI", "toolbar = ", ischecked(toolbar)?"yes":"no", "statusbar = ", ischecked(statusbar)?"yes":"no"); fprintf(fp, "%s\n%s\n%s\n%s\n%s\n", "## Font.", "# Please use only fixed width font.", "# If font=FixedFont the system fixed font is used; in this case", "# points and style are ignored. If font begins with \"TT \", only", "# True Type fonts are searched for."); fprintf(fp, "font = %s%s\npoints = %s\nstyle = %s # Style can be normal, bold, italic\n\n\n", ischecked(tt_font)?"TT ":"", gettext(f_font), gettext(d_point), gettext(f_style)); fprintf(fp, "# Dimensions (in characters) of the console.\n"); fprintf(fp, "rows = %s\ncolumns = %s\n", gettext(f_crows), gettext(f_ccols)); fprintf(fp, "# Dimensions (in characters) of the internal pager.\n"); fprintf(fp, "pgrows = %s\npgcolumns = %s\n", gettext(f_prows), gettext(f_pcols)); fprintf(fp, "# should options(width=) be set to the console width?\n"); fprintf(fp, "setwidthonresize = %s\n\n", ischecked(c_resize) ? "yes" : "no"); fprintf(fp, "# memory limits for the console scrolling buffer, in chars and lines\n"); fprintf(fp, "bufbytes = %s\nbuflines = %s\n\n", gettext(f_cbb), gettext(f_cbl)); fprintf(fp, "# Initial position of the console (pixels, relative to the workspace for MDI)\n"); fprintf(fp, "xconsole = %s\nyconsole = %s\n\n", gettext(f_cx), gettext(f_cy)); fprintf(fp, "%s\n%s\n%s\n%s\n%s\n%s\n\n", "# Dimension of MDI frame in pixels", "# Format (w*h+xorg+yorg) or use -ve w and h for offsets from right bottom", "# This will come up maximized if w==0", "# MDIsize = 0*0+0+0", "# MDIsize = 1000*800+100+0", "# MDIsize = -50*-50+50+50 # 50 pixels space all round"); fprintf(fp, "%s\n%s\n%s\npagerstyle = %s\n\n\n", "# The internal pager can displays help in a single window", "# or in multiple windows (one for each topic)", "# pagerstyle can be set to `singlewindow' or `multiplewindows'", ischecked(rb_mwin) ? "multiplewindows" : "singlewindow"); fprintf(fp, "## Colours for console and pager(s)\n# (see rwxxxx/etc/rgb.txt for the known colours).\n"); for (int i=0; i<numGuiColors; i++) fprintf(fp, "%s = %s\n", GuiElementNames[i], rgbtoname(dialogColors[i])); fprintf(fp, "\n\n%s\n%s\nxgraphics = %s\nygraphics = %s\n", "## Initial position of the graphics window", "## (pixels, <0 values from opposite edge)", gettext(f_grx), gettext(f_gry)); fprintf(fp, "\n\n%s\nlanguage = %s\n", "## Language for messages", gettext(f_lang)); fprintf(fp, "\n\n## Default setting for console buffering: 'yes' or 'no'\n"); fprintf(fp, "buffered = %s\n", ischecked(c_buff) ? "yes" : "no"); fprintf(fp, "\n\n%s\ncursor_blink = %s\n", "## Console cursor blink", BlinkList[getlistitem(f_blink)]); fclose(fp); }
char *askfilesave(const char *title, const char *default_name) { return askfilesavewithdir(title, default_name, NULL); }