Ik heb om de editor maar een scrollwindow gezet.
[sgc.git] / file.c
bloba96600df725dfed98ec33e6cc389d36860bb4f22
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);
26 base = newbase;
29 void setFile(gchar *newfile) {
30 if (file != NULL)
31 g_free(file);
33 file = newfile;
36 void fileOpen(gchar *filename) {
37 gchar **testList = NULL;
38 gchar *contents;
39 gsize length;
41 clear();
43 if (g_file_get_contents(filename, &contents, &length, NULL) != FALSE) {
44 int i = 0;
45 gchar *processed = checkpinyin(contents);
47 testList = g_strsplit(processed, "\n", MAXTESTS);
48 while ( testList[i] != NULL) {
49 add_entry(testList[i]);
50 i++;
54 if (testList == NULL) {
55 testList = g_strsplit("xu1\nci2", "\n", MAXTESTS);
56 add_entry("xu1");
57 add_entry("ci2");
60 treevalid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(liststore), &mainIter);
61 updateWidgets();
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));
70 void fileSave(gchar *filename) {
71 if (treevalid == TRUE && filename != NULL) {
72 GtkTreeIter iter;
73 gboolean valid;
75 /* Get first row in list store */
76 valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(liststore), &iter);
78 if (valid) {
79 GString *contents = g_string_new("");
80 if (contents != NULL) {
81 while (valid)
83 gchar *string;
84 gtk_tree_model_get(GTK_TREE_MODEL(liststore), &iter, COL_TEXT, &string, -1);
85 contents = g_string_append(contents, string);
86 contents = g_string_append(contents, "\r\n");
88 valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(liststore), &iter);
92 g_file_set_contents(filename, contents->str, -1, NULL);
94 g_string_free(contents, true);