gint display_send_files_dbox(void) { const gchar *ext; gchar **filenames; static gchar *folder = NULL; int ret = 0; // Check for null cable if(linkp.cable_model != CABLE_ILP) { int err; gchar *str; str = g_strdup_printf(_("The current link cable <%s> port <%s> does not allow direct file loading. Do you let me change link port settings to allow direct file loading?"), ticables_model_to_string(linkp.cable_model), ticables_port_to_string(linkp.cable_port)); ret= msg_box2(_("Warning"), str); g_free(str); if(ret == BUTTON2) return -1; // reconfigure link port ti68k_linkport_unconfigure(); linkp.cable_model = CABLE_ILP; linkp.cable_port = PORT_0; err = ti68k_linkport_reconfigure(); handle_error(); } // set mask switch(tihw.calc_type) { case TI92: ext = "*.92?"; break; default: ext = "*.89?;*.92?;*.9x?;*.9X?;*.v2?;*.V2?;*.tig"; break; } // get filename if(folder == NULL) folder = g_strdup(inst_paths.base_dir); filenames = create_fsels(folder, NULL, (char *)ext); if(!filenames) return 0; // keep folder g_free(folder); folder = g_path_get_dirname(filenames[0]); ret = fs_send_files(filenames); g_strfreev(filenames); return ret; }
/* Write the contents of some variables to the RC file in a plain text format. */ void rcfile_write(void) { FILE *txt; rcfile_get_path(&rc_file); #ifndef __WIN32__ mkdir(CONF_DIR, 0755); #else _mkdir(CONF_DIR); #endif txt=fopen(rc_file, "wt"); g_free(rc_file); if(txt==NULL) { //gif->msg_box(_("Error"), _("Unable to write the config file (~/.tilp or tilp.ini).\n")); return; } fprintf(txt, "# Config file for TiEmu 3\n"); fprintf(txt, "# (C) Romain Lievin & Thomas Corvazier 2000-2001\n"); fprintf(txt, "# (C) Romain Lievin 2001-2003\n"); fprintf(txt, "# (C) Julien Blache 2003\n"); fprintf(txt, "# (C) Romain LiƩvin 2004-2005\n"); fprintf(txt, "# Warning: any comments that you add to this file WILL be overwritten\n"); fprintf(txt, "\n"); /* Common part with TiLP */ fprintf(txt, "version=%s\n", TIEMU_VERSION); fprintf(txt, "\n"); fprintf(txt, "#\n"); fprintf(txt, "# LINK SECTION\n"); fprintf(txt, "#\n"); fprintf(txt, "\n"); fprintf(txt, "# Link cable type\n"); fprintf(txt, "cable_model=%s\n", ticables_model_to_string(linkp.cable_model)); fprintf(txt, "\n"); fprintf(txt, "# Port to use (serial, parallel, ...\n"); fprintf(txt, "cable_port=%s\n", ticables_port_to_string(linkp.cable_port)); fprintf(txt, "\n"); fprintf(txt, "# Timeout value in 0.1 seconds\n"); fprintf(txt, "cable_timeout=%i\n", linkp.cable_timeout); fprintf(txt, "\n"); fprintf(txt, "# Delay value\n"); fprintf(txt, "cable_delay=%i\n", linkp.cable_delay); fprintf(txt, "\n"); fprintf(txt, "# Quick-send feature\n"); fprintf(txt, "qs_file=%s\n", options.qs_file); fprintf(txt, "qs_enabled=%i\n", options.qs_enabled); fprintf(txt, "\n"); /* Specific part to TiEmu */ fprintf(txt, "#\n"); fprintf(txt, "# EMULATOR SECTION\n"); fprintf(txt, "#\n"); fprintf(txt, "\n"); fprintf(txt, "# SKIN file\n"); fprintf(txt, "skin_file=%s\n", options.skin_file); fprintf(txt, "\n"); fprintf(txt, "# KEYS file\n"); fprintf(txt, "keys_file=%s\n", options.keys_file); fprintf(txt, "\n"); fprintf(txt, "# IMG file\n"); fprintf(txt, "img_file=%s\n", params.rom_file); fprintf(txt, "\n"); fprintf(txt, "# TIB file\n"); fprintf(txt, "tib_file=%s\n", params.tib_file); fprintf(txt, "\n"); fprintf(txt, "# SAV file\n"); fprintf(txt, "sav_file=%s\n", params.sav_file); fprintf(txt, "\n"); fprintf(txt, "# Skin (0 for LCD only, 1 with skin)\n"); fprintf(txt, "skin=%i\n", options.skin); fprintf(txt, "\n"); fprintf(txt, "# View mode (normal/large/full/custom)\n"); fprintf(txt, "view_mode="); switch(options.view) { case VIEW_NORMAL: fprintf(txt, "normal\n"); break; case VIEW_LARGE: fprintf(txt, "large\n"); break; case VIEW_FULL: fprintf(txt, "full\n"); break; case VIEW_CUSTOM: fprintf(txt, "custom (%1.2f)\n", options.scale); break; } fprintf(txt, "\n"); fprintf(txt, "#\n"); fprintf(txt, "# HARDWARE SECTION\n"); fprintf(txt, "#\n"); fprintf(txt, "\n"); fprintf(txt, "# CPU cycles rate (360000 per 30ms) = OSC1\n"); fprintf(txt, "cpu_rate=%i\n", params.cpu_rate); fprintf(txt, "\n"); fprintf(txt, "# Hardware update rate (625 (hw1) or 1172 (hw2) = OSC2/OSC3\n"); fprintf(txt, "hw_rate=%i\n", params.hw_rate); fprintf(txt, "\n"); fprintf(txt, "# LCD update rate (100 fps max.) = OSC3\n"); fprintf(txt, "lcd_rate=%i\n", params.lcd_rate); fprintf(txt, "\n"); fprintf(txt, "# HW2 protection\n"); fprintf(txt, "hw_protect=%i\n", params.hw_protect); fprintf(txt, "\n"); fprintf(txt, "#\n"); fprintf(txt, "# SCREENSHOT SECTION\n"); fprintf(txt, "#\n"); fprintf(txt, "\n"); fprintf(txt, "# Screenshot: image format (jpg, bmp, ico, eps, pdf, bmp)\n"); fprintf(txt, "img_format="); switch(options2.format) { case IMG_JPG: fprintf(txt, "jpg\n"); break; case IMG_PNG: fprintf(txt, "png\n"); break; case IMG_ICO: fprintf(txt, "ico\n"); break; case IMG_EPS: fprintf(txt, "eps\n"); break; case IMG_PDF: fprintf(txt, "pdf\n"); break; case IMG_BMP: fprintf(txt, "bmp\n"); break; } fprintf(txt, "\n"); fprintf(txt, "# Screenshot: image type (bw, color)\n"); fprintf(txt, "img_type=%s\n", (options2.type == IMG_BW) ? "bw" : "color"); fprintf(txt, "\n"); fprintf(txt, "# Screenshot: image size (lcd, skin)\n"); fprintf(txt, "img_size=%s\n", (options2.size == IMG_LCD) ? "lcd" : "skin"); fprintf(txt, "\n"); fprintf(txt, "# Screenshot folder\n"); fprintf(txt, "screen_folder=%s\n", options2.folder); fprintf(txt, "\n"); fprintf(txt, "# Screenshot base file\n"); fprintf(txt, "screen_file=%s\n", options2.file); fprintf(txt, "\n"); fprintf(txt, "# Screenshot counter\n"); fprintf(txt, "screen_counter=%i\n", options2.counter); fprintf(txt, "\n"); fprintf(txt, "# Screenshot shots\n"); fprintf(txt, "screen_shots=%i\n", options2.shots); fprintf(txt, "\n"); fprintf(txt, "# Screenshot skips\n"); fprintf(txt, "screen_skips=%i\n", options2.skips); fprintf(txt, "\n"); fprintf(txt, "# Screenshot copied to clipboard (no, yes)\n"); fprintf(txt, "clipboard="); switch(options2.clipboard) { case 0: fprintf(txt, "no\n"); break; case 1: fprintf(txt, "yes\n"); break; default: fprintf(txt, "no\n"); break; } fprintf(txt, "\n"); fprintf(txt, "#\n"); fprintf(txt, "# MISC SECTION\n"); fprintf(txt, "#\n"); fprintf(txt, "\n"); fprintf(txt, "# Console mode (no, yes, boot)\n"); fprintf(txt, "console="); switch(options.console) { case 0: fprintf(txt, "no\n"); break; case 1: fprintf(txt, "yes\n"); break; case 2: fprintf(txt, "boot\n"); break; default: fprintf(txt, "no\n"); break; } fprintf(txt, "\n"); fprintf(txt, "# Display key bindings (keyboard map files)\n"); fprintf(txt, "kbd_dbg=%s\n", options.kbd_dbg ? "yes" : "no"); fprintf(txt, "\n"); fprintf(txt, "# File selector to use (native or old (GTK1/2) or new (GTK 2.4+) or win32 (Windows) or kde (KDE))\n"); fprintf(txt, "fs_type="); switch(options.fs_type) { case 0: fprintf(txt, "old\n"); break; case 1: fprintf(txt, "new\n"); break; case 2: fprintf(txt, "native\n"); break; case 3: fprintf(txt, "kde\n"); break; default: fprintf(txt, "old\n"); break; } fprintf(txt, "\n"); fprintf(txt, "#\n"); fprintf(txt, "# DEBUGGER SECTION\n"); fprintf(txt, "#\n"); fprintf(txt, "\n"); fprintf(txt, "# Geometry hints of debugger windows (x,y,w,h,m,c)\n"); fprintf(txt, "calc_wnd=(%i;%i;%i;%i;%i;%i)", options3.calc.rect.x, options3.calc.rect.y, options3.calc.rect.w, options3.calc.rect.h, options3.calc.minimized, options3.calc.closed); fprintf(txt, "\n"); fprintf(txt, "bkpts_wnd=(%i;%i;%i;%i;%i;%i)", options3.bkpts.rect.x, options3.bkpts.rect.y, options3.bkpts.rect.w, options3.bkpts.rect.h, options3.bkpts.minimized, options3.bkpts.closed); fprintf(txt, "\n"); fprintf(txt, "code_wnd=(%i;%i;%i;%i;%i;%i)", options3.code.rect.x, options3.code.rect.y, options3.code.rect.w, options3.code.rect.h, options3.code.minimized, options3.code.closed); fprintf(txt, "\n"); fprintf(txt, "mem_wnd=(%i;%i;%i;%i;%i;%i)", options3.mem.rect.x, options3.mem.rect.y, options3.mem.rect.w, options3.mem.rect.h, options3.mem.minimized, options3.mem.closed); fprintf(txt, "\n"); fprintf(txt, "regs_wnd=(%i;%i;%i;%i;%i;%i)", options3.regs.rect.x, options3.regs.rect.y, options3.regs.rect.w, options3.regs.rect.h, options3.regs.minimized, options3.regs.closed); fprintf(txt, "\n"); fprintf(txt, "pclog_wnd=(%i;%i;%i;%i;%i;%i)", options3.pclog.rect.x, options3.pclog.rect.y, options3.pclog.rect.w, options3.pclog.rect.h, options3.pclog.minimized, options3.pclog.closed); fprintf(txt, "\n"); fprintf(txt, "stack_wnd=(%i;%i;%i;%i;%i;%i)", options3.stack.rect.x, options3.stack.rect.y, options3.stack.rect.w, options3.stack.rect.h, options3.stack.minimized, options3.stack.closed); fprintf(txt, "\n"); fprintf(txt, "heap_wnd=(%i;%i;%i;%i;%i;%i)", options3.heap.rect.x, options3.heap.rect.y, options3.heap.rect.w, options3.heap.rect.h, options3.heap.minimized, options3.heap.closed); fprintf(txt, "\n"); fprintf(txt, "iop_wnd=(%i;%i;%i;%i;%i;%i)", options3.iop.rect.x, options3.iop.rect.y, options3.iop.rect.w, options3.iop.rect.h, options3.iop.minimized, options3.iop.closed); fprintf(txt, "\n"); fprintf(txt, "dock_wnd=(%i;%i;%i;%i;%i;%i)", options3.dock.rect.x, options3.dock.rect.y, options3.dock.rect.w, options3.dock.rect.h, options3.dock.minimized, options3.dock.closed); fprintf(txt, "\n"); fprintf(txt, "wnd_transient=%s\n", options3.transient ? "yes" : "no"); fprintf(txt, "\n"); fprintf(txt, "# Font type\n"); fprintf(txt, "dbg_font_type="); switch(options3.dbg_font_type) { case 0: fprintf(txt, "default\n"); break; case 1: fprintf(txt, "custom\n"); break; default: fprintf(txt, "default\n"); break; } if(options3.dbg_font_name) { fprintf(txt, "dbg_font_name=%s\n", options3.dbg_font_name); fprintf(txt, "\n"); } fprintf(txt, "# Use dock (yes) or multi-window (no)\n"); fprintf(txt, "dbg_dock="); switch(options3.dbg_dock) { case 0: fprintf(txt, "no\n"); break; case 1: fprintf(txt, "yes\n"); break; default: fprintf(txt, "no\n"); break; } fprintf(txt, "\n"); fprintf(txt, "\n"); fprintf(txt, "RC_END\n"); fflush(txt); fclose(txt); }
int tilp_config_write(void) { char* ini_file; GKeyFile* kf; GError* error = NULL; gchar *content; FILE* f; gint remap; int ret = 0; remap = ticalcs_remap_model_from_usb(options.cable_model, options.calc_model); // get file location ini_file = get_config_path(); kf = g_key_file_new(); g_key_file_set_comment(kf, NULL, NULL, "# Config file for TiLP\n" \ "# Copyright (C) 1999-2011 The TiLP Team <*****@*****.**>\n" \ "# Warning: any comments that you add to this file WILL be overwritten", &error); // Section [DEVICE] g_key_file_set_string (kf, SECTION_DEVICE, "calc_model", ticalcs_model_to_string(remap)); g_key_file_set_comment(kf, SECTION_DEVICE, "calc_model", "Calculator model", &error); g_key_file_set_string (kf, SECTION_DEVICE, "cable_model", ticables_model_to_string(options.cable_model)); g_key_file_set_comment(kf, SECTION_DEVICE, "cable_model", "Cable model", &error); g_key_file_set_string (kf, SECTION_DEVICE, "cable_port", ticables_port_to_string(options.cable_port)); g_key_file_set_comment(kf, SECTION_DEVICE, "cable_port", "Port", &error); g_key_file_set_integer(kf, SECTION_DEVICE, "cable_timeout", options.cable_timeout); g_key_file_set_comment(kf, SECTION_DEVICE, "cable_timeout", "Timeout in tenth of seconds", &error); g_key_file_set_integer(kf, SECTION_DEVICE, "cable_delay", options.cable_delay); g_key_file_set_comment(kf, SECTION_DEVICE, "cable_delay", "Inter-bit delay in us", &error); // Section [GUI] g_key_file_set_integer(kf, SECTION_GUI, "pane_x_size", options.pane_x_size); g_key_file_set_comment(kf, SECTION_GUI, "pane_x_size", "Size of remote view", &error); g_key_file_set_integer(kf, SECTION_GUI, "pane_y_size", options.pane_y_size); g_key_file_set_comment(kf, SECTION_GUI, "pane_y_size", "Size of remote view", &error); g_key_file_set_integer(kf, SECTION_GUI, "wnd_x_size1", options.wnd_x_size1); g_key_file_set_comment(kf, SECTION_GUI, "wnd_x_size1", "Size of window (full)", &error); g_key_file_set_integer(kf, SECTION_GUI, "wnd_y_size1", options.wnd_y_size1); g_key_file_set_comment(kf, SECTION_GUI, "wnd_y_size1", "Size of window (full)", &error); g_key_file_set_integer(kf, SECTION_GUI, "wnd_x_size2", options.wnd_x_size2); g_key_file_set_comment(kf, SECTION_GUI, "wnd_x_size2", "Size of window (no local)", &error); g_key_file_set_integer(kf, SECTION_GUI, "wnd_y_size2", options.wnd_y_size2); g_key_file_set_comment(kf, SECTION_GUI, "wnd_y_size2", "Size of window (no local)", &error); g_key_file_set_integer(kf, SECTION_GUI, "local_sort", options.local_sort); g_key_file_set_comment(kf, SECTION_GUI, "local_sort", "Sorting mode for local view", &error); g_key_file_set_integer(kf, SECTION_GUI, "local_sort_order", options.local_sort_order); g_key_file_set_comment(kf, SECTION_GUI, "local_sort_order", "Sorting order for local view", &error); g_key_file_set_integer(kf, SECTION_GUI, "remote_sort", options.remote_sort); g_key_file_set_comment(kf, SECTION_GUI, "remote_sort", "Sorting mode for remote view", &error); g_key_file_set_integer(kf, SECTION_GUI, "remote_sort_order", options.remote_sort_order); g_key_file_set_comment(kf, SECTION_GUI, "remote_sort_order", "Sorting order for remote view", &error); g_key_file_set_integer(kf, SECTION_GUI, "fs_type", options.filesel_type); g_key_file_set_comment(kf, SECTION_GUI, "fs_type", "Obsolete, ignored by current TiLP", &error); g_key_file_set_integer(kf, SECTION_GUI, "filesel_type", options.filesel_type); g_key_file_set_comment(kf, SECTION_GUI, "filesel_type", "File Selector type", &error); g_key_file_set_integer(kf, SECTION_GUI, "full_gui", options.full_gui); g_key_file_set_comment(kf, SECTION_GUI, "full_gui", "Use full gui (TiLP-I) or just remote view", &error); // Section [OPTIONS] g_key_file_set_integer(kf, SECTION_OPTIONS, "auto_detect", options.auto_detect); g_key_file_set_comment(kf, SECTION_OPTIONS, "auto_detect", "Auto-detect USB handheld model", &error); g_key_file_set_integer(kf, SECTION_OPTIONS, "show_all", options.show_all); g_key_file_set_comment(kf, SECTION_OPTIONS, "show_all", "Show hidden files in local view", &error); g_key_file_set_integer(kf, SECTION_OPTIONS, "overwrite", options.overwrite); g_key_file_set_comment(kf, SECTION_OPTIONS, "overwrite", "Ask for overwriting", &error); g_key_file_set_integer(kf, SECTION_OPTIONS, "recv_as_group", options.recv_as_group); g_key_file_set_comment(kf, SECTION_OPTIONS, "recv_as_group", "Receive as group instead of single files", &error); g_key_file_set_integer(kf, SECTION_OPTIONS, "backup_as_tigroup", options.backup_as_tigroup); g_key_file_set_comment(kf, SECTION_OPTIONS, "backup_as_tigroup", "Receive as TIGroup instead of backup/group files", &error); g_key_file_set_string (kf, SECTION_OPTIONS, "working_dir", options.working_dir); g_key_file_set_comment(kf, SECTION_OPTIONS, "working_dir", "Working folder", &error); // Section [FONTS] g_key_file_set_string (kf, SECTION_FONTS, "remote_font_name", options.remote_font_name); g_key_file_set_comment(kf, SECTION_FONTS, "remote_font_name", "Font to use for remote view", &error); g_key_file_set_string (kf, SECTION_FONTS, "local_font_name", options.local_font_name); g_key_file_set_comment(kf, SECTION_FONTS, "local_font_name", "Font to use for local view", &error); // Section [SCREEN] g_key_file_set_integer(kf, SECTION_SCREEN, "screen_format", options.screen_format); g_key_file_set_comment(kf, SECTION_SCREEN, "screen_format", "Screen format", &error); g_key_file_set_integer(kf, SECTION_SCREEN, "screen_scaling", options.screen_scaling); g_key_file_set_comment(kf, SECTION_SCREEN, "screen_scaling", "Screen scaling", &error); g_key_file_set_integer(kf, SECTION_SCREEN, "screen_clipping", options.screen_clipping); g_key_file_set_comment(kf, SECTION_SCREEN, "screen_clipping", "Screen clipping", &error); g_key_file_set_integer(kf, SECTION_SCREEN, "screen_blurry", options.screen_blurry); g_key_file_set_comment(kf, SECTION_SCREEN, "screen_blurry", "Save as blurry image", &error); // export file as string content = g_key_file_to_data(kf, NULL, &error); if(error != NULL) { fprintf (stderr, "Unable to read file: %s\n", error->message); g_error_free(error); ret = -1; goto exit; } // write content f = fopen(ini_file, "wt"); if (f == NULL) { gif->msg_box1(_("Error"), _("Unable to write the config file (~/.tilp or ~/tilp.ini).\n")); ret = -1; goto exit; } if (fwrite(content, strlen(content), 1, f) < 1) { ret = -1; } fclose(f); exit: // free structures g_free(content); g_key_file_free(kf); g_free(ini_file); return ret; }