87
87
static void create_schema_entry (xmlNodePtr list_node, xmlChar* key_path,
88
xmlChar* type, xmlChar* value,
89
xmlChar* short_desc, xmlChar* long_desc,
88
char* type, const char* value,
89
char* short_desc, char* long_desc,
90
90
gboolean is_l10n_value)
92
92
xmlNodePtr schema_node = NULL;
93
93
xmlNodePtr locale_node = NULL;
94
94
xmlChar* content = NULL;
95
xmlNodePtr* value_root_node = NULL;
95
xmlNodePtr value_root_node = NULL;
97
97
//--> Menu item entries : label
98
schema_node = xmlNewChild (list_node, NULL, NA_GCONF_XML_SCHEMA_ENTRY, NULL);
99
content = g_build_path ("/", ACTIONS_SCHEMA_PREFIX, key_path, NULL);
100
xmlNewChild (schema_node, NULL, NA_GCONF_XML_SCHEMA_KEY, content);
98
schema_node = xmlNewChild (list_node, NULL, BAD_CAST NA_GCONF_XML_SCHEMA_ENTRY, NULL);
99
content = BAD_CAST g_build_path ("/", ACTIONS_SCHEMA_PREFIX, key_path, NULL);
100
xmlNewChild (schema_node, NULL, BAD_CAST NA_GCONF_XML_SCHEMA_KEY, content);
101
101
xmlFree (content);
102
xmlNewChild (schema_node, NULL, NA_GCONF_XML_SCHEMA_APPLYTO, key_path);
103
xmlNewChild (schema_node, NULL, NA_GCONF_XML_SCHEMA_OWNER, ACTIONS_SCHEMA_OWNER);
104
xmlNewChild (schema_node, NULL, NA_GCONF_XML_SCHEMA_TYPE, type);
102
xmlNewChild (schema_node, NULL, BAD_CAST NA_GCONF_XML_SCHEMA_APPLYTO, key_path);
103
xmlNewChild (schema_node, NULL, BAD_CAST NA_GCONF_XML_SCHEMA_OWNER, BAD_CAST ACTIONS_SCHEMA_OWNER);
104
xmlNewChild (schema_node, NULL, BAD_CAST NA_GCONF_XML_SCHEMA_TYPE, BAD_CAST type);
105
105
if (g_ascii_strncasecmp (type, "list", strlen ("list")) == 0)
107
xmlNewChild (schema_node, NULL, NA_GCONF_XML_SCHEMA_LIST_TYPE, "string");
107
xmlNewChild (schema_node, NULL, BAD_CAST NA_GCONF_XML_SCHEMA_LIST_TYPE, BAD_CAST "string");
109
locale_node = xmlNewChild (schema_node, NULL, NA_GCONF_XML_SCHEMA_LOCALE, NULL);
110
xmlNewProp (locale_node, "name", "C");
109
locale_node = xmlNewChild (schema_node, NULL, BAD_CAST NA_GCONF_XML_SCHEMA_LOCALE, NULL);
110
xmlNewProp (locale_node, BAD_CAST "name", BAD_CAST "C");
111
111
value_root_node = schema_node;
112
112
if (is_l10n_value)
114
114
// if the default value must be localized, put it in the <locale> element
115
115
value_root_node = locale_node;
117
xmlNewChild (value_root_node, NULL, NA_GCONF_XML_SCHEMA_DFT, value);
117
xmlNewChild (value_root_node, NULL, BAD_CAST NA_GCONF_XML_SCHEMA_DFT, BAD_CAST value);
119
xmlNewChild (locale_node, NULL, NA_GCONF_XML_SCHEMA_SHORT, short_desc);
120
xmlNewChild (locale_node, NULL, NA_GCONF_XML_SCHEMA_LONG, long_desc);
119
xmlNewChild (locale_node, NULL, BAD_CAST NA_GCONF_XML_SCHEMA_SHORT, BAD_CAST short_desc);
120
xmlNewChild (locale_node, NULL, BAD_CAST NA_GCONF_XML_SCHEMA_LONG, BAD_CAST long_desc);
123
123
static gchar* gslist_to_schema_string (GSList* list)
174
174
action->version = g_strdup (NAUTILUS_ACTIONS_CONFIG_VERSION);
176
176
// Create the GConf schema XML file and write it in the save_path folder
177
doc = xmlNewDoc ("1.0");
178
root_node = xmlNewNode (NULL, NA_GCONF_XML_ROOT);
177
doc = xmlNewDoc (BAD_CAST "1.0");
178
root_node = xmlNewNode (NULL, BAD_CAST NA_GCONF_XML_ROOT);
179
179
xmlDocSetRootElement (doc, root_node);
180
list_node = xmlNewChild (root_node, NULL, NA_GCONF_XML_SCHEMA_LIST, NULL);
180
list_node = xmlNewChild (root_node, NULL, BAD_CAST NA_GCONF_XML_SCHEMA_LIST, NULL);
182
182
//--> Menu item entries : label
183
content = g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_LABEL_ENTRY, NULL);
183
content = BAD_CAST g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_LABEL_ENTRY, NULL);
184
184
create_schema_entry (list_node, content, "string", action->label, ACTION_LABEL_DESC_SHORT, ACTION_LABEL_DESC_LONG, TRUE);
185
185
xmlFree (content);
187
187
//--> Menu item entries : tooltip
188
content = g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_TOOLTIP_ENTRY, NULL);
188
content = BAD_CAST g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_TOOLTIP_ENTRY, NULL);
189
189
create_schema_entry (list_node, content, "string", action->tooltip, ACTION_TOOLTIP_DESC_SHORT, ACTION_TOOLTIP_DESC_LONG, TRUE);
190
190
xmlFree (content);
192
192
//--> Menu item entries : icon
193
content = g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_ICON_ENTRY, NULL);
193
content = BAD_CAST g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_ICON_ENTRY, NULL);
194
194
create_schema_entry (list_node, content, "string", action->icon, ACTION_ICON_DESC_SHORT, ACTION_ICON_DESC_LONG, FALSE);
195
195
xmlFree (content);
197
197
//--> Command entries : path
198
content = g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_PATH_ENTRY, NULL);
198
content = BAD_CAST g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_PATH_ENTRY, NULL);
199
199
create_schema_entry (list_node, content, "string", action->path, ACTION_PATH_DESC_SHORT, ACTION_PATH_DESC_LONG, FALSE);
200
200
xmlFree (content);
202
202
//--> Command entries : parameters
203
content = g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_PARAMS_ENTRY, NULL);
203
content = BAD_CAST g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_PARAMS_ENTRY, NULL);
204
204
create_schema_entry (list_node, content, "string", action->parameters, ACTION_PARAMS_DESC_SHORT, ACTION_PARAMS_DESC_LONG, FALSE);
205
205
xmlFree (content);
207
207
//--> Test entries : basenames
208
content = g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_BASENAMES_ENTRY, NULL);
209
str_list = gslist_to_schema_string (action->basenames);
210
create_schema_entry (list_node, content, "list", str_list, ACTION_BASENAMES_DESC_SHORT, ACTION_BASENAMES_DESC_LONG, FALSE);
208
content = BAD_CAST g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_BASENAMES_ENTRY, NULL);
209
str_list = BAD_CAST gslist_to_schema_string (action->basenames);
210
create_schema_entry (list_node, content, "list", (char*)str_list, ACTION_BASENAMES_DESC_SHORT, ACTION_BASENAMES_DESC_LONG, FALSE);
214
//--> test entries : match_case
215
content = BAD_CAST g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_MATCHCASE_ENTRY, NULL);
216
create_schema_entry (list_node, content, "bool", bool_to_schema_string (action->match_case), ACTION_MATCHCASE_DESC_SHORT, ACTION_MATCHCASE_DESC_LONG, FALSE);
219
//--> Test entries : mimetypes
220
content = BAD_CAST g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_MIMETYPES_ENTRY, NULL);
221
str_list = BAD_CAST gslist_to_schema_string (action->mimetypes);
222
create_schema_entry (list_node, content, "list", (char*)str_list, ACTION_MIMETYPES_DESC_SHORT, ACTION_MIMETYPES_DESC_LONG, FALSE);
214
226
//--> test entries : is_file
215
content = g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_ISFILE_ENTRY, NULL);
227
content = BAD_CAST g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_ISFILE_ENTRY, NULL);
216
228
create_schema_entry (list_node, content, "bool", bool_to_schema_string (action->is_file), ACTION_ISFILE_DESC_SHORT, _(ACTION_ISFILE_DESC_LONG), FALSE);
217
229
xmlFree (content);
219
231
//--> test entries : is_dir
220
content = g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_ISDIR_ENTRY, NULL);
232
content = BAD_CAST g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_ISDIR_ENTRY, NULL);
221
233
create_schema_entry (list_node, content, "bool", bool_to_schema_string (action->is_dir), ACTION_ISDIR_DESC_SHORT, _(ACTION_ISDIR_DESC_LONG), FALSE);
222
234
xmlFree (content);
224
236
//--> test entries : accept-multiple-files
225
content = g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_MULTIPLE_ENTRY, NULL);
237
content = BAD_CAST g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_MULTIPLE_ENTRY, NULL);
226
238
create_schema_entry (list_node, content, "bool", bool_to_schema_string (action->accept_multiple_files), ACTION_MULTIPLE_DESC_SHORT, ACTION_MULTIPLE_DESC_LONG, FALSE);
227
239
xmlFree (content);
229
241
//--> test entries : schemes
230
content = g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_SCHEMES_ENTRY, NULL);
231
str_list = gslist_to_schema_string (action->schemes);
232
create_schema_entry (list_node, content, "list", str_list, ACTION_SCHEMES_DESC_SHORT, ACTION_SCHEMES_DESC_LONG, FALSE);
242
content = BAD_CAST g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_SCHEMES_ENTRY, NULL);
243
str_list = BAD_CAST gslist_to_schema_string (action->schemes);
244
create_schema_entry (list_node, content, "list", (char*)str_list, ACTION_SCHEMES_DESC_SHORT, ACTION_SCHEMES_DESC_LONG, FALSE);
233
245
xmlFree (str_list);
234
246
xmlFree (content);
236
248
//--> general entry : version
237
content = g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_VERSION_ENTRY, NULL);
249
content = BAD_CAST g_build_path ("/", ACTIONS_CONFIG_DIR, action->uuid, ACTION_VERSION_ENTRY, NULL);
238
250
create_schema_entry (list_node, content, "string", action->version, ACTION_VERSION_DESC_SHORT, ACTION_VERSION_DESC_LONG, FALSE);
239
251
xmlFree (content);