int gfm_tifiles_group(const char **filenames, int type) { char **ptr; gchar *input; gchar *target = NULL; gchar *dirname = g_path_get_dirname(filenames[0]); // gchar *basename = g_path_get_basename(filenames[0]); int err = 0; // Check for selection consistency for(ptr = (char **)filenames; *ptr; ptr++) { if(tifiles_file_is_group(*ptr) || tifiles_file_is_tigroup(*ptr)) { msgbox_one(MSGBOX_ERROR, _("Group files are not allowed in selection.")); return -1; } if(tifiles_file_is_flash(*ptr) && type != TIFILE_TIGROUP) { msgbox_one(MSGBOX_ERROR, _("FLASH files are not allowed in group files.")); return -1; } } // Ask for group name input = msgbox_input(_("Group files"), "group", _("Group name: ")); if(input == NULL) return -1; // And group if(type == TIFILE_GROUP) { target = g_strconcat(dirname, G_DIR_SEPARATOR_S, input, ".", tifiles_fext_of_group(tifiles_file_get_model(filenames[0])), NULL); g_free(input); err = tifiles_group_files((char **)filenames, target); } else if(type == TIFILE_TIGROUP) { target = g_strconcat(dirname, G_DIR_SEPARATOR_S, input, ".tig", NULL); g_free(input); err = tifiles_tigroup_files((char **)filenames, target); } if(err) { gchar *str; tifiles_error_get(err, &str); msgbox_one(MSGBOX_ERROR, str); g_free(str); } g_free(target); return 0; }
GLADE_CB void on_add_clicked (GtkToolButton *toolbutton, gpointer user_data) { char **array, **ptr; CalcModel model; FileContent *content; int ret; unsigned int i; array = create_fsels(inst_paths.home_dir, "", "*.*"); if(array == NULL) return; for(ptr = array; *ptr; ptr++) { char *fn = *ptr; if(tifiles_file_is_tigroup(fn)) { msgbox_one(MSGBOX_ERROR, _("Importing of TiGroup files is not allowed.")); return; } model = tifiles_file_get_model(fn); if(!tifiles_calc_are_compat(GFMFile.model, model)) { msgbox_one(MSGBOX_ERROR, _("File is not compatible with current target.")); return; } content = tifiles_content_create_regular(model); ret = tifiles_file_read_regular(fn, content); for(i = 0; i < content->num_entries; i++) { VarEntry *ve = content->entries[i]; if(ticalcs_dirlist_ve_exist(GFMFile.trees.vars, ve)) { msgbox_one(MSGBOX_ERROR, _("The entry already exists. Skipped!")); continue; } ticalcs_dirlist_ve_add(GFMFile.trees.vars, ve); } ret = tifiles_content_delete_regular(content); } enable_save(TRUE); enable_tree(TRUE); ctree_refresh(); labels_refresh(); }
static void renderer_edited(GtkCellRendererText * cell, const gchar * path_string, const gchar * new_text, gpointer user_data) { GtkTreeModel *model = GTK_TREE_MODEL(tree); GtkTreePath *path = gtk_tree_path_new_from_string(path_string); GtkTreeIter iter; const char *old_text; VarEntry *ve; gchar *str; VarEntry *arg; if (!gtk_tree_model_get_iter(model, &iter, path)) return; gtk_tree_model_get(model, &iter, COLUMN_NAME, &old_text, -1); gtk_tree_model_get(model, &iter, COLUMN_DATA, &ve, -1); // tokenize and check for existence str = ticonv_varname_tokenize(GFMFile.model, new_text, ve->type); arg = tifiles_ve_dup(ve); if(strlen(str) > 8) str[8] = '\0'; strcpy(arg->name, str); ticonv_varname_free(str); if(ticalcs_dirlist_ve_exist(GFMFile.trees.vars, arg)) { msgbox_one(MSGBOX_INFO, _("The name already exists. Please choose another one...")); tifiles_ve_delete(arg); return; } // update entry strcpy(ve->name, arg->name); tifiles_ve_delete(arg); gtk_tree_store_set(tree, &iter, COLUMN_NAME, new_text, -1); gtk_tree_path_free(path); enable_save(TRUE); }
int gfm_tifiles_ungroup(const char *filename, int type) { gchar *dirname = g_path_get_dirname(filename); gchar *basename = g_path_get_basename(filename); gchar *src_file; gchar *dst_file; gchar *folder, *tmp; gchar *input; gchar *e; int err = 0; // Ask for folder folder = g_strdup(basename); e = strrchr(folder, '.'); if(e) *e = '\0'; input = msgbox_input(_("Create new directory"), folder, _("Directory where files will be ungrouped: ")); g_free(folder); if (input == NULL) return -1; tmp = g_filename_from_utf8(input, -1, NULL, NULL, NULL); g_free(input); folder = g_strconcat(dirname, G_DIR_SEPARATOR_S, tmp, NULL); g_free(tmp); // Check for folder existence if(!strcmp(dirname, ".") || !strcmp(dirname, "")) { msgbox_one(MSGBOX_ERROR, _("You can't ungroup in this folder.")); g_free(basename); g_free(dirname); return -1; } // Create folder if(file_mkdir(folder)) { g_free(basename); g_free(dirname); return -1; } file_chdir(folder); // Copy file to target src_file = g_strdup(filename); dst_file = g_strconcat(folder, G_DIR_SEPARATOR_S, basename, NULL); file_copy(src_file, dst_file); // Ungroup if(type == TIFILE_GROUP) err = tifiles_ungroup_file(dst_file, NULL); else if(type == TIFILE_TIGROUP) err = tifiles_untigroup_file(dst_file, NULL); if(err) { gchar *str; tifiles_error_get(err, &str); msgbox_one(MSGBOX_ERROR, str); g_free(str); } file_chdir(".."); // And release g_free(basename); g_free(dirname); g_free(src_file); g_free(dst_file); return 0; }