Nederlandse vertaling II
[sgc.git] / file.c
blobebb76d747e86af13800061699e4777b3f50c39c9
1 #include "sgc.h"
3 gchar *base = NULL;
4 gchar *file = NULL;
6 gchar * checkpinyin(gchar *pinyin) {
7 gchar **result;
8 g_ascii_strdown(pinyin, -1);
9 g_strcanon(pinyin, "#012345abcdefghijklmnopqrstuvwxyz\n", '-');
10 result = g_strsplit(pinyin, "-", MAXTESTS * 2);
11 g_free(pinyin);
12 pinyin = g_strjoinv(NULL, result);
13 return pinyin;
16 void clear() {
17 gtk_list_store_clear(GTK_LIST_STORE(liststore));
18 treevalid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(liststore), &mainIter);
19 updateWidgets();
22 void setBase(gchar *newbase) {
23 if (base != NULL)
24 g_free(base);
25 base = newbase;
28 void setFile(gchar *newfile) {
29 if (file != NULL)
30 g_free(file);
32 file = newfile;
35 void fileOpen(gchar *filename) {
36 gchar **testList = NULL;
37 gchar *contents;
38 gsize length;
40 clear();
42 if (g_file_get_contents(filename, &contents, &length, NULL) != FALSE) {
43 int i = 0;
44 gchar *processed = checkpinyin(contents);
46 testList = g_strsplit(processed, "\n", MAXTESTS);
47 while ( testList[i] != NULL) {
48 if (g_str_has_prefix (testList[i], "#")) {
49 /* Voeg commentaar toe ofzo */
50 } else {
51 add_entry(testList[i]);
53 i++;
57 if (testList == NULL) {
58 testList = g_strsplit("xu1\nci2", "\n", MAXTESTS);
59 add_entry("xu1");
60 add_entry("ci2");
63 g_strfreev(testList);
64 gtk_window_set_title(GTK_WINDOW(glade_xml_get_widget(xml, "windowWordlist")), filename);
66 setBase(g_path_get_dirname(filename));
67 setFile(g_strdup(filename));
69 treevalid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(liststore), &mainIter);
70 updateWidgets();
74 void fileSave(gchar *filename) {
75 if (treevalid == TRUE && filename != NULL) {
76 GtkTreeIter iter;
77 gboolean valid;
79 /* Get first row in list store */
80 valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(liststore), &iter);
82 if (valid) {
83 GString *contents = g_string_new("");
84 if (contents != NULL) {
85 while (valid)
87 gchar *string;
88 gtk_tree_model_get(GTK_TREE_MODEL(liststore), &iter, COL_TEXT, &string, -1);
89 contents = g_string_append(contents, string);
90 contents = g_string_append(contents, "\r\n");
92 valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(liststore), &iter);
96 g_file_set_contents(filename, contents->str, -1, NULL);
98 g_string_free(contents, true);