// Main wnd by loading glade xml file or by executing glade generated code gint display_main_wnd(void) { GladeXML *xml; gchar *title; xml = glade_xml_new (tilp_paths_build_glade("calc-2.glade"), "calc_wnd", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed !\n"), __FILE__); glade_xml_signal_autoconnect(xml); main_wnd = glade_xml_get_widget(xml, "calc_wnd"); area = glade_xml_get_widget(xml, "drawingarea1"); gtk_window_move(GTK_WINDOW(main_wnd), options3.calc.rect.x, options3.calc.rect.y); gtk_widget_realize(main_wnd); // set drawing area valid // set window title (useful for TIGCC-IDE for instance) // Note: lpWindowName is "TiEmu (%s)" and lpClassName is "gdkWindowToplevel" title = g_strdup_printf("TiEmu (%s)", ti68k_calctype_to_string(tihw.calc_type)); gtk_window_set_title(GTK_WINDOW(main_wnd), title); g_free(title); return 0; }
void ti68k_display_tib_infos(IMG_INFO *s) { tiemu_info(_("TIB information:")); tiemu_info(_(" Calculator : %s"), ti68k_calctype_to_string(s->calc_type)); tiemu_info(_(" Firmware : %s"), s->version); tiemu_info(_(" Memory type : %s"), ti68k_romtype_to_string(s->flash)); tiemu_info(_(" Memory size : %iMB (%i bytes)"), s->size >> 20, s->size); tiemu_info(_(" ROM base : %02x"), s->rom_base & 0xff); }
void ti68k_display_tib_infos(IMG_INFO *s) { printl(0, _("Tib informations:\n")); printl(0, _(" Calculator : %s\n"), ti68k_calctype_to_string(s->calc_type)); printl(0, _(" Firmware : v%s\n"), s->version); printl(0, _(" Memory type : %s\n"), ti68k_romtype_to_string(s->flash)); printl(0, _(" Memory size : %iMB (%i bytes)\n"), s->size >> 20, s->size); printl(0, _(" ROM base : %02x\n"), s->rom_base & 0xff); }
void ti68k_display_img_infos(IMG_INFO *s) { tiemu_info(_("Image information:")); tiemu_info(_(" Calculator : %s"), ti68k_calctype_to_string(s->calc_type)); tiemu_info(_(" Firmware : %s"), s->version); tiemu_info(_(" Memory type : %s"), ti68k_romtype_to_string(s->flash)); tiemu_info(_(" Memory size : %iMB (%i bytes)"), s->size >> 20, s->size); tiemu_info(_(" ROM base : %02x"), s->rom_base & 0xff); tiemu_info(_(" Hardware : %i"), s->hw_type); tiemu_info(_(" Has boot : %s"), s->has_boot ? _("yes") : _("no")); }
void ti68k_display_img_infos(IMG_INFO *s) { printl(0, _("Image informations:\n")); printl(0, _(" Calculator : %s\n"), ti68k_calctype_to_string(s->calc_type)); printl(0, _(" Firmware : v%s\n"), s->version); printl(0, _(" Memory type : %s\n"), ti68k_romtype_to_string(s->flash)); printl(0, _(" Memory size : %iMB (%i bytes)\n"), s->size >> 20, s->size); printl(0, _(" ROM base : %02x\n"), s->rom_base & 0xff); printl(0, _(" Hardware : %i\n"), s->hw_type); printl(0, _(" Has boot : %s\n"), s->has_boot ? "yes" : "no"); }
gint display_infos_dbox() { GladeXML *xml; GtkWidget *dbox; GtkWidget *label; gint result; gchar *str; xml = glade_xml_new (tilp_paths_build_glade("infos-2.glade"), "infos_dbox", PACKAGE); if (!xml) g_error(_("%s: GUI loading failed!\n"), __FILE__); glade_xml_signal_autoconnect(xml); dbox = glade_xml_get_widget(xml, "infos_dbox"); label = glade_xml_get_widget(xml, "label20"); switch(skin_infos.type) { case SKIN_TYPE_TIEMU: str = g_strdup_printf("%s", "TiEmu v2.00"); break; case SKIN_TYPE_VTI: str = g_strdup_printf("%s", "VTi 2.5"); break; case SKIN_TYPE_OLD_VTI: str = g_strdup_printf("%s", "VTi 2.1"); break; default: str = g_strdup_printf("%s", _("unknown")); break; } gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label21"); str = g_strdup_printf("%s", skin_infos.name); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label22"); if(skin_infos.author) str = g_strdup_printf("%s", skin_infos.author); else str = g_strdup(""); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label23"); str = g_strdup_printf("%s", ti68k_calctype_to_string(tihw.calc_type)); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label24"); str = g_strdup_printf("%s", tihw.rom_version); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label25"); str = g_strdup_printf("%i KB", tihw.ram_size >> 10); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label26"); str = g_strdup_printf("%i KB", tihw.rom_size >> 10); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label27"); str = g_strdup_printf("%s", ti68k_romtype_to_string(tihw.rom_flash)); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); label = glade_xml_get_widget(xml, "label28"); str = g_strdup_printf("%s", ti68k_hwtype_to_string(tihw.hw_type)); gtk_label_set_text(GTK_LABEL(label), str); g_free(str); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: break; default: break; } gtk_widget_destroy(dbox); return 0; }
static int match_keymap(int calc_type) { gchar *keys_name, *s; int ct, ok; s = g_strdup(ti68k_calctype_to_string(calc_type)); keys_name = g_ascii_strdown(s, strlen(s)); if(!strcmp(keys_name, "ti92+") || !strcmp(keys_name, "ti89t")) keys_name[4] = '\0'; if(!strcmp(keys_name, "v200plt")) strcpy(keys_name, "ti92"); // filename is "", load default keymap if(!strcmp(g_basename(options.keys_file), "")) { g_free(options.keys_file); options.keys_file = g_strdup_printf("%s%s.map", inst_paths.skin_dir, keys_name); } // load keymap header ct = keymap_read_header(options.keys_file); if(ct == -1) { g_free(options.keys_file); options.keys_file = g_strdup_printf("%s%s.map", inst_paths.skin_dir, keys_name); g_free(keys_name); return -1; } // is keymap compatible switch(tihw.calc_type) { case TI92: case TI92p: case V200: ok = (ct == TI92) || (ct == TI92p) || (ct == V200); break; case TI89: case TI89t: ok = (ct == TI89) || (ct == TI89t); break; default: ok = 0; break; } if(!ok) { g_free(options.keys_file); options.keys_file = g_strdup_printf("%s%s.map", inst_paths.skin_dir, keys_name); //tiemu_error(0, _("keymap incompatible with the current calc model. Falling back to default keymap.")); g_free(keys_name); return -1; } g_free(keys_name); return 0; }
static int match_skin(int calc_type) { SKIN_INFOS *sk = &skin_infos; int ok; gchar *skin_name, *s; s = g_strdup(ti68k_calctype_to_string(calc_type)); skin_name = g_ascii_strdown(s, strlen(s)); g_free(s); if(!strcmp(skin_name, "ti92+") || !strcmp(skin_name, "ti89t")) skin_name[4] = '\0'; #ifdef __IPAQ__ s = g_strconcat("ipaq_", skin_name, NULL); g_free(skin_name); skin_name = s; #endif // filename is "", load default skin if(!strcmp(g_basename(options.skin_file), "")) { g_free(options.skin_file); options.skin_file = g_strdup_printf("%s%s.skn", inst_paths.skin_dir, skin_name); g_free(skin_name); return -1; } // load skin header if(skin_read_header(sk, options.skin_file) == -1) { g_free(options.skin_file); options.skin_file = g_strdup_printf("%s%s.skn", inst_paths.skin_dir, skin_name); g_free(skin_name); return -1; } // is skin compatible switch(tihw.calc_type) { case TI92: case TI92p: ok = !strcmp(sk->calc, SKIN_TI92) || !strcmp(sk->calc, SKIN_TI92P); break; case TI89: case TI89t: ok = !strcmp(sk->calc, SKIN_TI89) || !strcmp(sk->calc, SKIN_TI89T); break; case V200: ok = !strcmp(sk->calc, SKIN_V200); break; default: ok = 0; break; } if(!ok) { g_free(options.skin_file); options.skin_file = g_strdup_printf("%s%s.skn", inst_paths.skin_dir, skin_name); //tiemu_error(0, _("skin incompatible with the current calc model. Falling back to default skin.")); g_free(skin_name); return -1; } g_free(skin_name); return 0; }
/* Scan images in a given directory and write list into img_list.txt. */ int ti68k_scan_images(const char *dirname, const char *filename) { FILE *file; IMG_INFO img; GDir *dir; GError *error = NULL; G_CONST_RETURN gchar *dirent; gchar *path, *str; int ret; struct stat f_info; char *line[7]; tiemu_info(_("Scanning images/upgrades... ")); // Create file (and overwrite) file = fopen(filename, "wt"); if(file == NULL) { tiemu_warning(_("Unable to open this file: <%s>"), filename); return ERR_CANT_OPEN; } // List all files available in the directory dir = g_dir_open(dirname, 0, &error); if (dir == NULL) { tiemu_warning(_("Opendir error")); return ERR_CANT_OPEN_DIR; } while ((dirent = g_dir_read_name(dir)) != NULL) { if (dirent[0] == '.') continue; path = g_strconcat(dirname, dirent, NULL); ret = stat(path, &f_info); if(ret == -1) { tiemu_warning(_("Can not stat: <%s>"), dirent); perror("stat: "); } else { if(ti68k_is_a_img_file(path)) { memset(&img, 0, sizeof(IMG_INFO)); ret = ti68k_get_img_infos(path, &img); if(ret) { tiemu_warning(_("Can not get ROM/update info: <%s>"), path); break; } } else continue; str = g_strdup_printf("%iKB", (int)(img.size >> 10)); line[0] = (char *)dirent; line[1] = (char *)ti68k_calctype_to_string(img.calc_type); line[2] = img.version; line[3] = (char *)ti68k_romtype_to_string(img.flash); line[4] = str; line[5] = img.has_boot ? _("yes") : _("no"); line[6] = (char *)ti68k_hwtype_to_string(img.hw_type); fprintf(file, "%s,%s,%s,%s,%s,%s,%s\n", line[0], line[1], line[2], line[3], line[4], line[5], line[6]); g_free(str); } g_free(path); } // Close g_dir_close(dir); fclose(file); tiemu_info(_("Done.")); return 0; }