static int new_folder (CalcHandle* handle, VarRequest* vr) { uint8_t data[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x40, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23 }; char varname[18]; char *utf8; tifiles_build_fullname(handle->model, varname, vr->folder, "a1234567"); utf8 = ticonv_varname_to_utf8(handle->model, vr->folder, -1); g_snprintf(update_->text, sizeof(update_->text), _("Creating %s..."), utf8); g_free(utf8); update_label(); // send empty expression TRYF(ti92_send_RTS(0x10, 0x00, varname)); TRYF(ti92_recv_ACK(NULL)); TRYF(ti92_recv_CTS()); TRYF(ti92_send_ACK()); TRYF(ti92_send_XDP(0x10, data)); TRYF(ti92_recv_ACK(NULL)); TRYF(ti92_send_EOT()); TRYF(ti92_recv_ACK(NULL)); // delete 'a1234567' variable strcpy(vr->name, "a1234567"); TRYF(del_var(handle, vr)); return 0; }
TILP_EXPORT void action_rename_clicked(GtkButton * button, gpointer user_data) { GtkTreeModel *model = GTK_TREE_MODEL(list); GtkTreeIter iter; gboolean valid; for (valid = gtk_tree_model_get_iter_first(model, &iter); valid; valid = gtk_tree_model_iter_next(model, &iter)) { FileEntry *f; FileContent *c; VarEntry *v; VarEntry *w; int n; gchar *new_name = NULL; gchar **row_text = g_malloc0(5 * sizeof(gchar *)); char *trans; char full_name[260]; gtk_tree_model_get(model, &iter, COLUMN_DATA_F, &f, COLUMN_DATA_V, &v, COLUMN_DATA_N, &n, -1); if (!f->selected) continue; // get new name c = f->content1; new_name = gif->msg_entry(_("Rename the file"), _("New name: "), tifiles_get_varname(v->name)); if (new_name == NULL) continue; // check that new varname does not exist tifiles_build_fullname(options.calc_model, full_name, v->folder, new_name); g_free(new_name); w = ticalcs_dirlist_ve_exist(remote.var_tree, v); // update action v->attr = (w != NULL) ? w->attr : ATTRB_NONE; v->action = (v->attr != ATTRB_NONE) ? ACT_SKIP : ACT_RENAME; // update var entry strncpy(v->folder, tifiles_get_fldname(full_name), 8); v->folder[8] = 0; strncpy(v->name, tifiles_get_varname(full_name), 8); v->name[8] = 0; trans = ticonv_varname_to_utf8(options.calc_model, (const char *)v->name, v->type); // update entry row_text[0] = g_strdup(trans); g_free(trans); row_text[1] = g_strdup(tifiles_attribute_to_string(v->attr)); row_text[3] = g_strdup(action2string(v->action)); gtk_list_store_set(list, &iter, COLUMN_VAR, row_text[0], COLUMN_ATTR, row_text[1], COLUMN_ACTION, row_text[3], -1); g_strfreev(row_text); //bug } }
static int send_var (CalcHandle* handle, CalcMode mode, FileContent* content) { int i; uint16_t status; char *utf8; update_->cnt2 = 0; update_->max2 = content->num_entries; for (i = 0; i < content->num_entries; i++) { VarEntry *entry = content->entries[i]; uint8_t buffer[65536 + 4] = { 0 }; char varname[18]; if(entry->action == ACT_SKIP) continue; if (mode & MODE_LOCAL_PATH) strcpy(varname, entry->name); else tifiles_build_fullname(handle->model, varname, entry->folder, entry->name); utf8 = ticonv_varname_to_utf8(handle->model, varname, entry->type); g_snprintf(update_->text, sizeof(update_->text), "%s", utf8); g_free(utf8); update_label(); TRYF(ti92_send_VAR(entry->size, entry->type, varname)); TRYF(ti92_recv_ACK(NULL)); TRYF(ti92_recv_CTS()); TRYF(ti92_send_ACK()); memcpy(buffer + 4, entry->data, entry->size); TRYF(ti92_send_XDP(entry->size + 4, buffer)); TRYF(ti92_recv_ACK(&status)); TRYF(ti92_send_EOT()); TRYF(ti92_recv_ACK(NULL)); ticalcs_info(""); update_->cnt2 = i+1; update_->max2 = content->num_entries; update_->pbar(); } return 0; }
static int recv_var (CalcHandle* handle, CalcMode mode, FileContent* content, VarRequest* vr) { uint16_t status; VarEntry *ve; uint32_t unused; char varname[18]; char *utf8; content->model = CALC_TI92; strcpy(content->comment, tifiles_comment_set_single()); content->num_entries = 1; content->entries = tifiles_ve_create_array(1); ve = content->entries[0] = tifiles_ve_create(); memcpy(ve, vr, sizeof(VarEntry)); tifiles_build_fullname(handle->model, varname, vr->folder, vr->name); utf8 = ticonv_varname_to_utf8(handle->model, varname, vr->type); g_snprintf(update_->text, sizeof(update_->text), "%s", utf8); g_free(utf8); update_label(); TRYF(ti92_send_REQ(0, vr->type, varname)); TRYF(ti92_recv_ACK(&status)); if (status != 0) return ERR_MISSING_VAR; TRYF(ti92_recv_VAR(&ve->size, &ve->type, ve->name)); TRYF(ti92_send_ACK()); TRYF(ti92_send_CTS()); TRYF(ti92_recv_ACK(NULL)); ve->data = tifiles_ve_alloc_data(ve->size + 4); TRYF(ti92_recv_XDP(&unused, ve->data)); memmove(ve->data, ve->data + 4, ve->size); TRYF(ti92_send_ACK()); TRYF(ti92_recv_EOT()); TRYF(ti92_send_ACK()); return 0; }
static int del_var (CalcHandle* handle, VarRequest* vr) { int i; char varname[18]; char *utf8; tifiles_build_fullname(handle->model, varname, vr->folder, vr->name); utf8 = ticonv_varname_to_utf8(handle->model, varname, vr->type); g_snprintf(update_->text, sizeof(update_->text), _("Deleting %s..."), utf8); g_free(utf8); update_label(); send_key(handle, KEY92P_ON); send_key(handle, KEY92P_ESC); send_key(handle, KEY92P_ESC); send_key(handle, KEY92P_ESC); send_key(handle, KEY92P_2ND + KEY92P_ESC); send_key(handle, KEY92P_2ND + KEY92P_ESC); send_key(handle, KEY92P_CTRL + KEY92P_Q); send_key(handle, KEY92P_CLEAR); send_key(handle, KEY92P_CLEAR); send_key(handle, 'd'); send_key(handle, 'e'); send_key(handle, 'l'); send_key(handle, 'v'); send_key(handle, 'a'); send_key(handle, 'r'); send_key(handle, KEY92P_SPACE); for(i = 0; i < (int)strlen(varname); i++) send_key(handle, varname[i]); send_key(handle, KEY92P_ENTER); return 0; }
// The main function int main(int argc, char **argv) { char *msg = NULL; char buffer[256]; int i; int ret; // init library tifiles_library_init(); // test tifiles.c printf("Library version : <%s>\n", tifiles_version_get()); printf("--\n"); // test error.c tifiles_error_get(515, &msg); printf("Error message: <%s>\n", msg); #ifndef __WIN32__ free(msg); #endif printf("--\n"); // test type2str.c printf("tifiles_string_to_model: <%i> <%i>\n", CALC_TI92, tifiles_string_to_model(tifiles_model_to_string(CALC_TI92))); printf("tifiles_string_to_attribute: <%i> <%i>\n", ATTRB_LOCKED, tifiles_string_to_attribute(tifiles_attribute_to_string(ATTRB_LOCKED))); printf("tifiles_string_to_class: <%i> <%i>\n", TIFILE_SINGLE, tifiles_string_to_class(tifiles_class_to_string(TIFILE_SINGLE))); printf("--\n"); // test filetypes.c for(i = CALC_TI73; i <= CALC_V200; i++) { printf("%s (%i) ", tifiles_fext_of_group(i), i); } printf("\n"); for(i = CALC_TI73; i <= CALC_V200; i++) { printf("%s ", tifiles_fext_of_backup(i)); } printf("\n"); for(i = CALC_TI73; i <= CALC_V200; i++) { printf("%s ", tifiles_fext_of_flash_os(i)); } printf("\n"); for(i = CALC_TI73; i <= CALC_V200; i++) { printf("%s ", tifiles_fext_of_flash_app(i)); } printf("\n"); printf("--\n"); printf("<%s> <%s>\n", "foo.bar", tifiles_fext_get("foo.bar")); ret = tifiles_file_is_ti(PATH("misc/str.92s")); printf("tifiles_file_is_ti: %i\n", ret); ret = tifiles_file_is_single(PATH("misc/str.92s")); printf("tifiles_file_is_single: %i\n", ret); ret = tifiles_file_is_group(PATH("misc/group.92g")); printf("tifiles_file_is_group: %i\n", ret); ret = tifiles_file_is_regular(PATH("misc/str.92s")); printf("tifiles_file_is_regular: %i\n", ret); ret = tifiles_file_is_regular(PATH("misc/group.92g")); printf("tifiles_file_is_regular: %i\n", ret); ret = tifiles_file_is_backup(PATH("misc/backup.83b")); printf("tifiles_file_is_backup: %i\n", ret); ret = tifiles_file_is_flash(PATH("misc/ticabfra.89k")); printf("tifiles_file_is_flash: %i\n", ret); ret = tifiles_file_is_flash(PATH("misc/TI73_OS160.73U")); printf("tifiles_file_is_flash: %i\n", ret); ret = tifiles_file_is_tib(PATH("misc/ams100.tib")); printf("tifiles_file_is_tib: %i\n", ret); ret = tifiles_file_is_tigroup(PATH("misc/test.tig")); printf("tifiles_file_is_tigroup: %i\n", ret); printf("--\n"); // test typesxx.c printf("tifiles_file_get_model: %s\n", tifiles_model_to_string(tifiles_file_get_model(PATH("misc/str.92s")))); printf("tifiles_file_get_class: %s\n", tifiles_class_to_string(tifiles_file_get_class(PATH("misc/group.92g")))); printf("tifiles_file_get_type: %s\n", tifiles_file_get_type(PATH("misc/TI73_OS160.73U"))); printf("tifiles_file_get_icon: %s\n", tifiles_file_get_icon(PATH("misc/str.92s"))); printf("--\n"); // test misc.c printf("tifiles_calc_is_ti8x: %i\n", tifiles_calc_is_ti8x(CALC_TI83)); printf("tifiles_calc_is_ti9x: %i\n", tifiles_calc_is_ti9x(CALC_TI89)); printf("tifiles_has_folder: %i\n", tifiles_has_folder(CALC_TI92)); printf("tifiles_is_flash: %i\n", tifiles_is_flash(CALC_TI73)); printf("tifiles_get_varname: <%s>\n", tifiles_get_varname("fld\\var")); printf("tifiles_get_fldname: <%s>\n", tifiles_get_fldname("fld\\var")); tifiles_build_fullname(CALC_TI89, buffer, "fld", "var"); printf("tifiles_build_fullname: <%s>\n", buffer); printf("--\n"); // test filesxx.c & grouped.c do { // TI73 support change_dir(PATH("ti73")); ret = test_ti73_backup_support(); if (ret) break; ret = test_ti73_regular_support(); if (ret) break; ret = test_ti73_group_support(); if (ret) break; ret = test_ti73_ungroup_support(); if (ret) break; // TI82 support change_dir(PATH("ti82")); ret = test_ti82_backup_support(); if (ret) break; ret = test_ti82_regular_support(); if (ret) break; ret = test_ti82_group_support(); if (ret) break; ret = test_ti82_ungroup_support(); if (ret) break; // TI83 support change_dir(PATH("ti83")); ret = test_ti83_backup_support(); if (ret) break; ret = test_ti83_regular_support(); if (ret) break; ret = test_ti83_group_support(); if (ret) break; ret = test_ti83_ungroup_support(); if (ret) break; // TI84+ support change_dir(PATH("ti84p")); ret = test_ti84p_regular_support(); if (ret) break; ret = test_ti84p_group_support(); if (ret) break; ret = test_ti84p_ungroup_support(); if (ret) break; ret = test_ti84p_flash_support(); if (ret) break; // TI85 support change_dir(PATH("ti85")); ret = test_ti85_regular_support(); if (ret) break; // TI86 support change_dir(PATH("ti86")); ret = test_ti86_backup_support(); if (ret) break; ret = test_ti86_regular_support(); if (ret) break; ret = test_ti86_group_support(); if (ret) break; ret = test_ti86_ungroup_support(); if (ret) break; // TI89 support change_dir(PATH("ti89")); ret = test_ti89_regular_support(); if (ret) break; ret = test_ti89_flash_support(); if (ret) break; ret = test_v200_regular_support(); if (ret) break; // TI92 support change_dir(PATH("ti92")); ret = test_ti92_backup_support(); if (ret) break; ret = test_ti92_regular_support(); if (ret) break; ret = test_ti92_group_support(); if (ret) break; ret = test_ti92_ungroup_support(); if (ret) break; // TIXX certificates change_dir(PATH("certs")); ret = test_ti8x_cert_support(); if (ret) break; ret = test_ti9x_cert_support(); if (ret) break; // Add/Del files change_dir(PATH("misc")); ret = test_ti8x_group_merge(); if (ret) break; change_dir(PATH("tig")); ret = test_tigroup(); } while(0); // end of test tifiles_library_exit(); return ret; }
gint display_action_dbox(gchar *target) { GtkBuilder *builder; GError* error = NULL; GtkWidget *dbox; GtkWidget *data; GtkTreeIter iter; GList *sel; int button = 0; gint result; gboolean empty = TRUE; // update folder listing (if supported) if (!(ticalcs_calc_features(calc_handle) & FTS_SILENT) ) return BUTTON1; else { if(remote.var_tree == NULL) { if (tilp_dirlist_remote()) return BUTTON1; ctree_refresh(); labels_refresh(); } } // box creation builder = gtk_builder_new(); if (!gtk_builder_add_from_file (builder, tilp_paths_build_builder("action.ui"), &error)) { g_warning (_("Couldn't load builder file: %s\n"), error->message); g_error_free (error); return 0; // THIS RETURNS ! } gtk_builder_connect_signals(builder, NULL); dbox = GTK_WIDGET (gtk_builder_get_object (builder, "action_dbox")); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dbox), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL,-1); clist = data = GTK_WIDGET (gtk_builder_get_object (builder, "treeview1")); // clist creation create_clist(data); // fill model for (sel = local.selection1; sel != NULL; sel = sel->next) { FileEntry *f = (FileEntry *)sel->data; FileContent *c = (FileContent *)f->content1; if(f->content1 == NULL) // file can't be loaded continue; // we have now 1 VarEntry per FileContent { VarEntry *v = c->entries[0]; VarEntry *w; gchar **row_text = g_malloc0(5 * sizeof(gchar *)); char *trans; char full_name[260]; // modify attr or folder if target is specified if(strcmp(target, "")) { if(!strcmp(target, "<FLASH>")) { v->attr = ATTRB_ARCHIVED; } else { strcpy(v->folder, target); } } // search for matching var tifiles_build_fullname(options.calc_model, full_name, v->folder, v->name); trans = ticonv_varname_to_utf8(options.calc_model, (const char *)full_name, v->type); w = ticalcs_dirlist_ve_exist(remote.var_tree, v); if (w == NULL) continue; if(w->attr == ATTRB_LOCKED || w->attr == ATTRB_ARCHIVED) v->action = ACT_SKIP; else v->action = ACT_SKIP; //don't overwrite as default behaviour // file contains an already existing var: add it to the window row_text[0] = trans; row_text[1] = g_strdup(tifiles_attribute_to_string(v->attr)); row_text[2] = g_strdup(f->name); row_text[3] = g_strdup(action2string(v->action)); tilp_vars_translate(row_text[0]); gtk_list_store_append(list, &iter); gtk_list_store_set(list, &iter, COLUMN_VAR, row_text[0], COLUMN_ATTR, row_text[1], COLUMN_FILE, row_text[2], COLUMN_ACTION, row_text[3], COLUMN_DATA_F, (gpointer)f, COLUMN_DATA_V, (gpointer)v, -1); g_strfreev(row_text); empty = FALSE; } } if (empty == TRUE) { button = BUTTON1; // skip box as ok goto out_clean; } // select all vars { GtkTreeView *view = GTK_TREE_VIEW(clist); GtkTreeSelection *sel2; sel2 = gtk_tree_view_get_selection(view); gtk_tree_selection_select_all(sel2); } // box running gtk_dialog_set_default_response(GTK_DIALOG(dbox), GTK_RESPONSE_CANCEL); result = gtk_dialog_run(GTK_DIALOG(dbox)); switch (result) { case GTK_RESPONSE_OK: button = BUTTON1; break; case GTK_RESPONSE_CANCEL: button = BUTTON2; default: button = BUTTON2; break; } out_clean: gtk_widget_destroy(dbox); return button; }