2000-06-20  Gene Z. Ragan  <gzr@eazel.com>

	Fixed bug #1055

	* libgnomevfs/gnome-vfs-mime-handlers.c:
	* libgnomevfs/gnome-vfs-mime-handlers.h:
	(gnome_vfs_mime_add_extension):
	Renamed function to be more in accordance with other function
	in file.

	(gnome_vfs_mime_remove_extension):
	New function to remove mapped extension from mime type.

	* libgnomevfs/gnome-vfs-mime-info.c: (load_mime_list_info_from),
	(gnome_vfs_mime_get_extensions), (mime_list_sort), (get_key_name),
	(gnome_vfs_mime_commit_registered_types),
	(write_mime_data_foreach), (write_registered_mime_data):
	A couple of things done here.  One was work on the tokenizer
	so that it handled a variety of cases when reading in
	key data form .mime files.  Another was work on saving and
	deleting mapped extensions from the .mime file.

	* mime-type-capplet/nautilus-mime-type-capplet-dialogs.c:
	(nautilus_mime_type_capplet_show_new_extension_window):
	Work on saving and deleting mapped extensions from the .mime file.

	* mime-type-capplet/nautilus-mime-type-capplet.c:
	(populate_extension_list),
	(nautilus_mime_type_capplet_add_extension),
	(remove_extension_clicked):
	Work on saving and deleting mapped extensions from the .mime file.
This commit is contained in:
Gene Z. Ragan 2000-06-20 18:55:19 +00:00 committed by Gene Ragan
parent 276185af53
commit a13cbb8223
2 changed files with 38 additions and 20 deletions

View file

@ -605,7 +605,10 @@ nautilus_mime_type_capplet_show_new_extension_window (void)
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 0);
gtk_widget_show_all (GNOME_DIALOG (dialog)->vbox);
/* Set focus to text entry widget */
gtk_window_set_focus (GTK_WINDOW (dialog), mime_entry);
switch (gnome_dialog_run (GNOME_DIALOG (dialog))) {
case 0:
nautilus_mime_type_capplet_add_extension (gtk_entry_get_text

View file

@ -132,9 +132,10 @@ populate_extension_list (const char *mime_type, GtkCList *list)
for (element = extensions; element != NULL; element = element->next) {
extension[0] = (char *)element->data;
if (strcmp (extension[0], "") != 0) {
if (strlen (element->data) > 0) {
row = gtk_clist_append (list, extension);
gtk_clist_set_row_data (list, row, GINT_TO_POINTER (FALSE));
/* Set to deletable */
gtk_clist_set_row_data (list, row, GINT_TO_POINTER (TRUE));
}
}
@ -148,18 +149,40 @@ void
nautilus_mime_type_capplet_add_extension (const char *extension)
{
gchar *title[1];
gchar *token, *search_string;
gint rownumber;
const char *mime_type;
title[0] = g_strdup (extension);
/* Check for empty string */
if (strlen (extension) <= 0) {
return;
}
/* Check for starting space in string */
if (extension[0] == ' ') {
return;
}
/* Copy only contiguous part of string. No spaces allowed. */
search_string = g_strdup (extension);
token = strtok (search_string, " ");
if (token == NULL) {
title[0] = g_strdup (extension);
} else if (strlen (token) <= 0) {
return;
}else {
title[0] = g_strdup (token);
}
g_free (search_string);
rownumber = gtk_clist_append (GTK_CLIST (extension_list), title);
gtk_clist_set_row_data (GTK_CLIST (extension_list), rownumber,
GINT_TO_POINTER (FALSE));
mime_type = get_selected_item_mime_type ();
g_assert (mime_type != NULL);
gnome_vfs_mime_add_extension_to_mime_type (mime_type, extension);
gnome_vfs_mime_add_extension (mime_type, extension);
}
static void
@ -174,6 +197,7 @@ remove_extension_clicked (GtkWidget *widget, gpointer data)
gint row;
gchar *text;
gchar *store;
const char *mime_type;
text = (gchar *)g_malloc (sizeof (gchar) * 1024);
gtk_clist_freeze (GTK_CLIST (extension_list));
@ -181,24 +205,15 @@ remove_extension_clicked (GtkWidget *widget, gpointer data)
gtk_clist_get_text (GTK_CLIST (extension_list), row, 0, &text);
store = g_strdup (text);
gtk_clist_remove (GTK_CLIST (extension_list), row);
gtk_clist_thaw (GTK_CLIST (extension_list));
/*
GList *tmp;
for (tmp = main_win->tmp_ext[0]; tmp; tmp = tmp->next) {
GList *found;
if (strcmp (tmp->data, store) == 0) {
found = tmp;
main_win->tmp_ext[0] = g_list_remove_link (main_win->tmp_ext[0], found);
g_list_free_1 (found);
break;
}
mime_type = get_selected_item_mime_type ();
if (mime_type != NULL) {
gnome_vfs_mime_remove_extension (mime_type, store);
}
*/
g_free (store);
}
static void