2
Copyright (C) 2007 Christian Dywan <christian@twotoasts.de>
4
This library is free software; you can redistribute it and/or
5
modify it under the terms of the GNU Lesser General Public
6
License as published by the Free Software Foundation; either
7
version 2.1 of the License, or (at your option) any later version.
9
See the file COPYING for the full license text.
15
#include <katze/katze.h>
20
GList* search_engines_new(void)
25
void search_engines_free(GList* searchEngines)
27
g_list_foreach(searchEngines, (GFunc)search_engine_free, NULL);
28
g_list_free(searchEngines);
31
gboolean search_engines_from_file(GList** searchEngines, const gchar* filename
34
g_return_val_if_fail(!g_list_nth(*searchEngines, 0), FALSE);
35
GKeyFile* keyFile = g_key_file_new();
36
g_key_file_load_from_file(keyFile, filename, G_KEY_FILE_KEEP_COMMENTS, error);
37
/*g_key_file_load_from_data_dirs(keyFile, sFilename, NULL
38
, G_KEY_FILE_KEEP_COMMENTS, error);*/
39
gchar** engines = g_key_file_get_groups(keyFile, NULL);
41
for(i = 0; engines[i] != NULL; i++)
43
SearchEngine* engine = search_engine_new();
44
search_engine_set_short_name(engine, engines[i]);
45
engine->description = g_key_file_get_string(keyFile, engines[i], "description", NULL);
46
engine->url = g_key_file_get_string(keyFile, engines[i], "url", NULL);
47
engine->inputEncoding = g_key_file_get_string(keyFile, engines[i], "input-encoding", NULL);
48
engine->icon = g_key_file_get_string(keyFile, engines[i], "icon", NULL);
49
engine->keyword = g_key_file_get_string(keyFile, engines[i], "keyword", NULL);
50
*searchEngines = g_list_prepend(*searchEngines, engine);
52
*searchEngines = g_list_reverse(*searchEngines);
54
g_key_file_free(keyFile);
55
return !(error && *error);
58
static void key_file_set_string(GKeyFile* keyFile, const gchar* group
59
, const gchar* key, const gchar* string)
61
g_return_if_fail(group);
63
g_key_file_set_string(keyFile, group, key, string);
66
gboolean search_engines_to_file(GList* searchEngines, const gchar* filename
69
GKeyFile* keyFile = g_key_file_new();
70
guint n = g_list_length(searchEngines);
72
for(i = 0; i < n; i++)
74
SearchEngine* engine = (SearchEngine*)g_list_nth_data(searchEngines, i);
75
const gchar* name = search_engine_get_short_name(engine);
76
key_file_set_string(keyFile, name, "description", engine->description);
77
key_file_set_string(keyFile, name, "url", engine->url);
78
key_file_set_string(keyFile, name, "input-encoding", engine->inputEncoding);
79
key_file_set_string(keyFile, name, "icon", engine->icon);
80
key_file_set_string(keyFile, name, "keyword", engine->keyword);
82
gboolean bSaved = sokoke_key_file_save_to_file(keyFile, filename, error);
83
g_key_file_free(keyFile);
88
SearchEngine* search_engine_new()
90
SearchEngine* engine = g_new0(SearchEngine, 1);
91
engine->shortName = g_strdup("");
95
void search_engine_free(SearchEngine* engine)
97
g_return_if_fail(engine);
98
g_free(engine->shortName);
99
g_free(engine->description);
101
g_free(engine->inputEncoding);
102
g_free(engine->icon);
103
g_free(engine->keyword);
107
SearchEngine* search_engine_copy(SearchEngine* engine)
109
g_return_val_if_fail(engine, NULL);
110
SearchEngine* copy = search_engine_new();
111
search_engine_set_short_name(copy, engine->shortName);
112
search_engine_set_description(copy, engine->description);
113
search_engine_set_url(copy, engine->url);
114
search_engine_set_input_encoding(copy, engine->inputEncoding);
115
search_engine_set_icon(copy, engine->icon);
116
search_engine_set_keyword(copy, engine->keyword);
120
GType search_engine_get_type()
122
static GType type = 0;
124
type = g_pointer_type_register_static("search_engine");
128
G_CONST_RETURN gchar* search_engine_get_short_name(SearchEngine* engine)
130
g_return_val_if_fail(engine, NULL);
131
return engine->shortName;
134
G_CONST_RETURN gchar* search_engine_get_description(SearchEngine* engine)
136
g_return_val_if_fail(engine, NULL);
137
return engine->description;
140
G_CONST_RETURN gchar* search_engine_get_url(SearchEngine* engine)
142
g_return_val_if_fail(engine, NULL);
146
G_CONST_RETURN gchar* search_engine_get_input_encoding(SearchEngine* engine)
148
g_return_val_if_fail(engine, NULL);
149
return engine->inputEncoding;
152
G_CONST_RETURN gchar* search_engine_get_icon(SearchEngine* engine)
154
g_return_val_if_fail(engine, NULL);
158
G_CONST_RETURN gchar* search_engine_get_keyword(SearchEngine* engine)
160
g_return_val_if_fail(engine, NULL);
161
return engine->keyword;
164
void search_engine_set_short_name(SearchEngine* engine, const gchar* shortName)
166
g_return_if_fail(engine);
167
g_return_if_fail(shortName);
168
katze_assign(engine->shortName, g_strdup(shortName));
171
void search_engine_set_description(SearchEngine* engine, const gchar* description)
173
g_return_if_fail(engine);
174
katze_assign(engine->description, g_strdup(description));
177
void search_engine_set_url(SearchEngine* engine, const gchar* url)
179
g_return_if_fail(engine);
180
katze_assign(engine->url, g_strdup(url));
183
void search_engine_set_input_encoding(SearchEngine* engine, const gchar* inputEncoding)
185
g_return_if_fail(engine);
186
katze_assign(engine->inputEncoding, g_strdup(inputEncoding));
189
void search_engine_set_icon(SearchEngine* engine, const gchar* icon)
191
g_return_if_fail(engine);
192
katze_assign(engine->icon, g_strdup(icon));
195
void search_engine_set_keyword(SearchEngine* engine, const gchar* keyword)
197
g_return_if_fail(engine);
198
katze_assign(engine->keyword, g_strdup(keyword));