diff options
author | Gene Z. Ragan <gzr@eazel.com> | 2000-06-15 23:32:08 +0000 |
---|---|---|
committer | Gene Ragan <gzr@src.gnome.org> | 2000-06-15 23:32:08 +0000 |
commit | 662a6f1803555da4b962362c7d9e1b57771e124c (patch) | |
tree | 492415394b73d6d9ecee8f3380246fe83e336fcf | |
parent | 3ff9e56e827cbaefc313606c9b62fa753cd942bd (diff) | |
download | gnome-control-center-662a6f1803555da4b962362c7d9e1b57771e124c.tar.gz |
Work in progress on the FIle Types and Programs Capplet Removed obsolete
2000-06-15 Gene Z. Ragan <gzr@eazel.com>
Work in progress on the FIle Types and Programs Capplet
* mime-type-capplet/Makefile.am:
Removed obsolete files form build.
* mime-type-capplet/edit-window.c:
* mime-type-capplet/edit-window.h:
Obsolete. Removed.
* mime-type-capplet/new-mime-window.c:
* mime-type-capplet/new-mime-window.h:
Obsolete. Removed.
* mime-type-capplet/mime-data.c: (add_mime_vals_to_clist),
(selected_row_callback):
* mime-type-capplet/nautilus-mime-type-capplet-dialogs.c:
* mime-type-capplet/nautilus-mime-type-capplet-dialogs.h:
(edit_applications_dialog_destroy), (application_is_in_list),
(application_button_toggled_callback),
(populate_default_applications_box),
(populate_default_components_box),
(initialize_edit_applications_dialog),
(show_edit_applications_dialog), (show_edit_components_dialog),
(nautilus_mime_type_capplet_show_new_mime_window),
(nautilus_mime_type_capplet_show_new_extension_window):
* mime-type-capplet/nautilus-mime-type-capplet.c:
* mime-type-capplet/nautilus-mime-type-capplet.h:
(revert_callback), (populate_extension_list),
(nautilus_mime_type_capplet_add_extension),
(add_extension_clicked), (remove_extension),
(extension_list_selected), (extension_list_deselected),
(init_mime_capplet), (nautilus_mime_type_capplet_update_info),
(add_mime_clicked), (edit_components_clicked),
(nautilus_mime_type_capplet_update_application_info),
(nautilus_mime_type_capplet_update_component_info):
-rw-r--r-- | capplets/file-types/Makefile.am | 6 | ||||
-rw-r--r-- | capplets/file-types/edit-window.c | 648 | ||||
-rw-r--r-- | capplets/file-types/edit-window.h | 14 | ||||
-rw-r--r-- | capplets/file-types/file-types-capplet-dialogs.c | 365 | ||||
-rw-r--r-- | capplets/file-types/file-types-capplet-dialogs.h | 9 | ||||
-rw-r--r-- | capplets/file-types/file-types-capplet.c | 243 | ||||
-rw-r--r-- | capplets/file-types/file-types-capplet.h | 8 | ||||
-rw-r--r-- | capplets/file-types/mime-data.c | 74 | ||||
-rw-r--r-- | capplets/file-types/mime-info.c | 1 | ||||
-rw-r--r-- | capplets/file-types/mime-info.h | 37 | ||||
-rw-r--r-- | capplets/file-types/new-mime-window.c | 102 | ||||
-rw-r--r-- | capplets/file-types/new-mime-window.h | 14 |
12 files changed, 475 insertions, 1046 deletions
diff --git a/capplets/file-types/Makefile.am b/capplets/file-types/Makefile.am index c676c5814..bab35e920 100644 --- a/capplets/file-types/Makefile.am +++ b/capplets/file-types/Makefile.am @@ -12,12 +12,8 @@ nautilus_mime_type_capplet_SOURCES =\ nautilus-mime-type-capplet-dialogs.c\ mime-data.h \ mime-data.c \ - edit-window.c \ - edit-window.h \ mime-info.c \ - mime-info.h \ - new-mime-window.h \ - new-mime-window.c + mime-info.h nautilus_mime_type_capplet_LDADD =\ $(CAPPLET_LIBDIR) \ diff --git a/capplets/file-types/edit-window.c b/capplets/file-types/edit-window.c deleted file mode 100644 index 17b93c567..000000000 --- a/capplets/file-types/edit-window.c +++ /dev/null @@ -1,648 +0,0 @@ -/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ - -/* - * - * Copyright (C) 1998, 1999, 2000 Red Hat, Inc. - * Copyright (C) 2000 Eazel, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * Authors: Jonathan Blandford <jbr@redhat.com> - * Gene Z. Ragan <gzr@eazel.com> - * - */ - -/* edit-window.c: Mime capplet editor window */ - -#include <gtk/gtk.h> -#include <libgnomevfs/gnome-vfs-mime-handlers.h> -#include <libgnomevfs/gnome-vfs-mime-info.h> - -#include "edit-window.h" -#include "capplet-widget.h" - -extern GtkWidget *capplet; - -typedef struct { - GtkWidget *window; - GtkWidget *icon_entry; - GtkWidget *mime_type; - GtkWidget *ext_scroll; - GtkWidget *ext_clist; - GtkWidget *ext_entry; - GtkWidget *ext_add_button; - GtkWidget *ext_remove_button; - GtkWidget *application_menu; - GtkWidget *component_menu; - char *mime_string; - GList *tmp_ext[2]; - GtkFileSelection *file_selector; -} edit_window; - -static edit_window *main_win = NULL; -static gboolean changing = TRUE; - -/* Local prototypes */ -static void populate_application_menu (GtkWidget *application_menu, const char *mime_string); -static void populate_component_menu (GtkWidget *application_menu, const char *mime_string); -static void application_menu_activate (GtkMenuItem *item, gpointer user_data); -static GtkFileSelection *show_file_selector (const char *title, gpointer user_data); - -static void -destruction_handler (GtkWidget *widget, gpointer data) -{ - g_free (main_win->mime_string); - g_free (main_win); - main_win = NULL; -} - -static void -entry_changed (GtkWidget *widget, gpointer data) -{ - if (changing == FALSE) - capplet_widget_state_changed (CAPPLET_WIDGET (capplet), - TRUE); -} - -static void -ext_clist_selected (GtkWidget *clist, gint row, gint column, gpointer data) -{ - gboolean deletable; - - deletable = GPOINTER_TO_INT (gtk_clist_get_row_data (GTK_CLIST (clist), row)); - if (deletable) - gtk_widget_set_sensitive (main_win->ext_remove_button, TRUE); - else - gtk_widget_set_sensitive (main_win->ext_remove_button, FALSE); -} -static void -ext_clist_deselected (GtkWidget *clist, gint row, gint column, gpointer data) -{ - if (g_list_length (GTK_CLIST (clist)->selection) == 0) - gtk_widget_set_sensitive (main_win->ext_remove_button, FALSE); -} -static void -ext_entry_changed (GtkWidget *entry, gpointer data) -{ - gchar *text; - text = gtk_entry_get_text (GTK_ENTRY (entry)); - gtk_widget_set_sensitive (main_win->ext_add_button, (strlen (text) >0)); -} - -static void -add_extension (GtkWidget *widget, gpointer data) -{ - gchar *row[1]; - gint rownumber; - - row[0] = g_strdup (gtk_entry_get_text (GTK_ENTRY (main_win->ext_entry))); - rownumber = gtk_clist_append (GTK_CLIST (main_win->ext_clist), row); - gtk_clist_set_row_data (GTK_CLIST (main_win->ext_clist), rownumber, - GINT_TO_POINTER (TRUE)); - gtk_entry_set_text (GTK_ENTRY (main_win->ext_entry), ""); - - main_win->tmp_ext[0] = g_list_prepend (main_win->tmp_ext[0], row[0]); - if (changing == FALSE) - capplet_widget_state_changed (CAPPLET_WIDGET (capplet), - TRUE); -} - -static void -remove_extension (GtkWidget *widget, gpointer data) -{ - gint row; - gchar *text; - gchar *store; - GList *tmp; - - text = (gchar *)g_malloc (sizeof (gchar) * 1024); - gtk_clist_freeze (GTK_CLIST (main_win->ext_clist)); - row = GPOINTER_TO_INT (GTK_CLIST (main_win->ext_clist)->selection->data); - gtk_clist_get_text (GTK_CLIST (main_win->ext_clist), row, 0, &text); - store = g_strdup (text); - gtk_clist_remove (GTK_CLIST (main_win->ext_clist), row); - - gtk_clist_thaw (GTK_CLIST (main_win->ext_clist)); - - 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; - } - } - - if (changing == FALSE) - capplet_widget_state_changed (CAPPLET_WIDGET (capplet), - TRUE); -} - -static void -apply_changes (const char *mime_type) -{ - if (changing == FALSE) - capplet_widget_state_changed (CAPPLET_WIDGET (capplet), - TRUE); -} - -static void -initialize_main_win () -{ - GtkWidget *align, *vbox, *hbox, *vbox2, *vbox3; - GtkWidget *frame, *table, *label; - - gchar *title[2] = {"Extensions"}; - - main_win = g_new0 (edit_window, 1); - main_win->window = gnome_dialog_new ("", - GNOME_STOCK_BUTTON_OK, - GNOME_STOCK_BUTTON_CANCEL, - NULL); - - gtk_signal_connect (GTK_OBJECT (main_win->window), - "destroy", - destruction_handler, - NULL); - vbox = GNOME_DIALOG (main_win->window)->vbox; - - align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); - - /* Main vertical box */ - gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0); - - /* Create and add mime type label */ - hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); - gtk_box_pack_start (GTK_BOX (hbox), gtk_label_new (_("Mime Type: ")), FALSE, FALSE, 0); - main_win->mime_type = gtk_label_new (""); - gtk_box_pack_start (GTK_BOX (hbox), main_win->mime_type, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - - /* Main horizontal box */ - hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); - - /* Icon Control */ - vbox2 = gtk_vbox_new (FALSE, GNOME_PAD_SMALL); - gtk_box_pack_start (GTK_BOX (vbox), vbox2, FALSE, FALSE, 0); - - main_win->icon_entry = gnome_icon_entry_new ("mime_icon_entry", _("Select an icon...")); - gtk_signal_connect (GTK_OBJECT (gnome_icon_entry_gtk_entry (GNOME_ICON_ENTRY (main_win->icon_entry))), - "changed", - entry_changed, - NULL); - gtk_box_pack_start (GTK_BOX (hbox), main_win->icon_entry, FALSE, FALSE, 0); - - /* Extension List */ - main_win->ext_clist = gtk_clist_new_with_titles (1, title); - gtk_clist_column_titles_passive (GTK_CLIST (main_win->ext_clist)); - gtk_clist_set_auto_sort (GTK_CLIST (main_win->ext_clist), TRUE); - - gtk_signal_connect (GTK_OBJECT (main_win->ext_clist), "select-row", - GTK_SIGNAL_FUNC (ext_clist_selected), NULL); - gtk_signal_connect (GTK_OBJECT (main_win->ext_clist), "unselect-row", - GTK_SIGNAL_FUNC (ext_clist_deselected), NULL); - main_win->ext_scroll = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (main_win->ext_scroll), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_container_add (GTK_CONTAINER (main_win->ext_scroll), main_win->ext_clist); - - /* Extension Buttons */ - vbox3 = gtk_vbox_new (FALSE, GNOME_PAD_SMALL); - main_win->ext_add_button = gtk_button_new_with_label (_("Add")); - gtk_signal_connect (GTK_OBJECT (main_win->ext_add_button), "clicked", - GTK_SIGNAL_FUNC (add_extension), NULL); - gtk_box_pack_start (GTK_BOX (vbox3), main_win->ext_add_button, FALSE, FALSE, 0); - gtk_widget_set_sensitive (main_win->ext_add_button, FALSE); - - main_win->ext_remove_button = gtk_button_new_with_label (_("Remove")); - gtk_signal_connect (GTK_OBJECT (main_win->ext_remove_button), "clicked", - GTK_SIGNAL_FUNC (remove_extension), NULL); - gtk_widget_set_sensitive (main_win->ext_remove_button, FALSE); - gtk_box_pack_start (GTK_BOX (vbox3), main_win->ext_remove_button, FALSE, FALSE, 0); - - gtk_box_pack_start (GTK_BOX (hbox), main_win->ext_scroll, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (hbox), vbox3, FALSE, FALSE, 0); - - gtk_box_pack_start (GTK_BOX (vbox2), hbox, TRUE, TRUE, 0); - - /* Extension entry box */ - main_win->ext_entry = gtk_entry_new (); - gtk_signal_connect (GTK_OBJECT (main_win->ext_entry), "changed", ext_entry_changed, NULL); - gtk_signal_connect (GTK_OBJECT (main_win->ext_entry), "activate", add_extension, NULL); - gtk_box_pack_start (GTK_BOX (vbox3), main_win->ext_entry, FALSE, FALSE, 0); - - /* Defaults box */ - frame = gtk_frame_new (NULL); - vbox2 = gtk_vbox_new (FALSE, GNOME_PAD_SMALL); - gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0); - table = gtk_table_new (3, 2, FALSE); - gtk_table_set_row_spacings (GTK_TABLE (table), GNOME_PAD_SMALL); - gtk_container_set_border_width (GTK_CONTAINER (table), GNOME_PAD_SMALL); - gtk_container_add (GTK_CONTAINER (frame), vbox2); - - /* Default application label and menu */ - label = gtk_label_new (_("Application:")); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1); - - main_win->application_menu = gtk_option_menu_new(); - gtk_table_attach_defaults (GTK_TABLE (table), main_win->application_menu, 1, 2, 0, 1); - - /* Default component label and menu */ - label = gtk_label_new (_("Component:")); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 1, 2); - - main_win->component_menu = gtk_option_menu_new(); - gtk_box_pack_start (GTK_BOX (vbox2), table, FALSE, FALSE, 0); - gtk_table_attach_defaults (GTK_TABLE (table), main_win->component_menu, 1, 2, 1, 2); -} - -void -initialize_main_win_vals (void) -{ - const char *mi; - gchar *title; - /*gboolean showext = FALSE;*/ - if (main_win == NULL) - return; - - mi = main_win->mime_string; - if (mi == NULL) - return; - - /* now we fill in the fields with the mi stuff. */ - changing = TRUE; - - populate_application_menu (main_win->application_menu, mi); - populate_component_menu (main_win->component_menu, mi); - - gtk_label_set_text (GTK_LABEL (main_win->mime_type), mi); - - gnome_icon_entry_set_icon (GNOME_ICON_ENTRY (main_win->icon_entry), - gnome_vfs_mime_get_value (mi, "icon-filename")); - - gtk_widget_show_all (GNOME_DIALOG (main_win->window)->vbox); - - /* we initialize everything */ - title = g_strdup_printf (_("Set actions for %s"), mi); - gtk_window_set_title (GTK_WINDOW (main_win->window), title); - g_free (title); - - /* not sure why this is necessary */ - gtk_clist_clear (GTK_CLIST (main_win->ext_clist)); - /* - if (mi->ext[0]) { - GList *tmp; - gchar *extension[1]; - gint row; - for (tmp = mi->ext[0]; tmp; tmp = tmp->next) { - extension[0] = g_strdup (tmp->data); - row = gtk_clist_append (GTK_CLIST (main_win->ext_clist), - extension); - gtk_clist_set_row_data (GTK_CLIST (main_win->ext_clist), - row, GINT_TO_POINTER (FALSE)); - } - showext = TRUE; - } - if (mi->ext[1]) { - GList *tmp; - gchar *extension[1]; - gint row; - for (tmp = mi->ext[1]; tmp; tmp = tmp->next) { - extension[0] = g_strdup (tmp->data); - row = gtk_clist_append (GTK_CLIST (main_win->ext_clist), - extension); - gtk_clist_set_row_data (GTK_CLIST (main_win->ext_clist), - row, GINT_TO_POINTER (FALSE)); - } - showext = TRUE; - } - - if (main_win->tmp_ext[0]) { - GList *tmp; - gchar *extension[1]; - gint row; - for (tmp = main_win->tmp_ext[0]; tmp; tmp = tmp->next) { - extension[0] = g_strdup (tmp->data); - row = gtk_clist_append (GTK_CLIST (main_win->ext_clist), - extension); - gtk_clist_set_row_data (GTK_CLIST (main_win->ext_clist), - row, GINT_TO_POINTER (TRUE)); - } - showext = TRUE; - } - if (main_win->tmp_ext[1]) { - GList *tmp; - gchar *extension[1]; - gint row; - for (tmp = main_win->tmp_ext[0]; tmp; tmp = tmp->next) { - extension[0] = g_strdup (tmp->data); - row = gtk_clist_append (GTK_CLIST (main_win->ext_clist), - extension); - gtk_clist_set_row_data (GTK_CLIST (main_win->ext_clist), - row, GINT_TO_POINTER (TRUE)); - } - showext = TRUE; - } - - if (!showext) { - gtk_widget_hide (main_win->ext_clist); - gtk_widget_hide (main_win->ext_entry); - gtk_widget_hide (main_win->ext_add_button); - gtk_widget_hide (main_win->ext_remove_button); - gtk_widget_hide (main_win->ext_scroll); - } - */ - - changing = FALSE; -} - -void -launch_edit_window (const char *mime_type) -{ - if (main_win == NULL) { - initialize_main_win (); - } - - g_free (main_win->mime_string); - main_win->mime_string = g_strdup (mime_type); - main_win->tmp_ext[0] = NULL; - main_win->tmp_ext[1] = NULL; - - initialize_main_win_vals (); - - switch(gnome_dialog_run (GNOME_DIALOG (main_win->window))) { - case 0: - apply_changes (mime_type); - /* Fall through */ - case 1: - main_win->mime_type = NULL; - gtk_widget_hide (main_win->window); - break; - } -} - -void -hide_edit_window (void) -{ - if (main_win && main_win->mime_string && main_win->window) - gtk_widget_hide (main_win->window); -} - -void -show_edit_window (void) -{ - if (main_win && main_win->mime_string && main_win->window) { - gtk_widget_show (main_win->window); - } -} - - -static void -populate_application_menu (GtkWidget *application_menu, const char *mime_type) -{ - GtkWidget *new_menu, *menu_item; - GList *app_list, *copy_list; - GnomeVFSMimeApplication *default_app, *application; - gboolean has_none, found_match; - char *mime_copy; - const char *name; - GList *children; - int index; - - has_none = TRUE; - found_match = FALSE; - - mime_copy = g_strdup (mime_type); - - new_menu = gtk_menu_new (); - - /* Get the default application */ - default_app = gnome_vfs_mime_get_default_application (mime_type); - - /* Get the application short list */ - app_list = gnome_vfs_mime_get_short_list_applications (mime_type); - for (copy_list = app_list; copy_list != NULL; copy_list = copy_list->next) { - has_none = FALSE; - - application = copy_list->data; - menu_item = gtk_menu_item_new_with_label (application->name); - - /* Store copy of application name in item; free when item destroyed. */ - gtk_object_set_data_full (GTK_OBJECT (menu_item), - "application", - g_strdup (application->name), - g_free); - - gtk_menu_append (GTK_MENU (new_menu), menu_item); - gtk_widget_show (menu_item); - } - - if (app_list != NULL) { - gnome_vfs_mime_application_list_free (app_list); - app_list = NULL; - } - - /* Find all appliactions or add a "None" item */ - if (has_none && default_app == NULL) { - /* Add all applications */ - app_list = gnome_vfs_mime_get_all_applications (mime_type); - for (copy_list = app_list; copy_list != NULL; copy_list = copy_list->next) { - has_none = FALSE; - - application = copy_list->data; - menu_item = gtk_menu_item_new_with_label (application->name); - - /* Store copy of application name in item; free when item destroyed. */ - gtk_object_set_data_full (GTK_OBJECT (menu_item), - "application", - g_strdup (application->name), - g_free); - - gtk_menu_append (GTK_MENU (new_menu), menu_item); - gtk_widget_show (menu_item); - } - - if (app_list != NULL) { - gnome_vfs_mime_application_list_free (app_list); - app_list = NULL; - } else { - menu_item = gtk_menu_item_new_with_label (_("None")); - gtk_menu_append (GTK_MENU (new_menu), menu_item); - gtk_widget_show (menu_item); - } - - } else { - /* Check and see if default is in the short list */ - if (default_app != NULL) { - /* Iterate */ - children = gtk_container_children (GTK_CONTAINER (new_menu)); - for (index = 0; children != NULL; children = children->next, ++index) { - name = (const char *)(gtk_object_get_data (GTK_OBJECT (children->data), "application")); - if (name != NULL) { - if (strcmp (default_app->name, name) == 0) { - found_match = TRUE; - break; - } - } - } - g_list_free (children); - - /* See if we have a match */ - if (found_match) { - /* Have menu appear with default application selected */ - gtk_menu_set_active (GTK_MENU (new_menu), index); - } else { - /* FIXME bugzilla.eazel.com 1221: - * What should we do in this case? - * */ - } - } - } - - /* Add default seperator and Add application menu item */ - menu_item = gtk_menu_item_new (); - gtk_widget_set_sensitive (menu_item, FALSE); - gtk_menu_append (GTK_MENU (new_menu), menu_item); - gtk_widget_show (menu_item); - - menu_item = gtk_menu_item_new_with_label (_("Add an application...")); - gtk_menu_append (GTK_MENU (new_menu), menu_item); - gtk_widget_show (menu_item); - - gtk_signal_connect (GTK_OBJECT (menu_item), "activate", - GTK_SIGNAL_FUNC (application_menu_activate), (gpointer) mime_copy); - - gtk_option_menu_set_menu (GTK_OPTION_MENU (application_menu), new_menu); -} - - -static void -populate_component_menu (GtkWidget *component_menu, const char *mime_string) -{ - GtkWidget *new_menu; - GtkWidget *menu_item; - GList *mime_list; - gboolean has_none; - - has_none = TRUE; - - new_menu = gtk_menu_new (); - - mime_list = gnome_vfs_mime_get_short_list_components (mime_string); - while (mime_list != NULL) { - has_none = FALSE; - menu_item = gtk_menu_item_new_with_label ("Test Menu Item"); - gtk_menu_append (GTK_MENU (new_menu), menu_item); - gtk_widget_show (menu_item); - mime_list = g_list_next (mime_list); - } - - /* Add None menu item */ - if (has_none) { - menu_item = gtk_menu_item_new_with_label (_("None")); - gtk_menu_append (GTK_MENU (new_menu), menu_item); - gtk_widget_show (menu_item); - } - - /* Add default seperator and Add component menu item */ - menu_item = gtk_menu_item_new (); - gtk_widget_set_sensitive (menu_item, FALSE); - gtk_menu_append (GTK_MENU (new_menu), menu_item); - gtk_widget_show (menu_item); - - menu_item = gtk_menu_item_new_with_label (_("Add a component...")); - gtk_menu_append (GTK_MENU (new_menu), menu_item); - gtk_widget_show (menu_item); - - gtk_option_menu_set_menu (GTK_OPTION_MENU (component_menu), new_menu); -} - -/* - * Display the GtkFileSelection dialog. The mime string is stored in the user data. - */ -static void -application_menu_activate (GtkMenuItem *item, gpointer user_data) -{ - main_win->file_selector = show_file_selector (_("Select an Application"), user_data); -} - -/* - * Add selected application to mime list. - */ - -static void -add_application (GtkWidget *widget, gpointer user_data) -{ - char *selected_application; - GnomeVFSMimeApplication *application; - - g_assert (user_data != NULL); - - selected_application = gtk_file_selection_get_filename (main_win->file_selector); - - if (selected_application != NULL) { - application = g_new0 (GnomeVFSMimeApplication, 1); - - application->name = g_malloc (strlen (selected_application)); - strcpy (application->name, selected_application); - - application->command = g_malloc (strlen (selected_application)); - strcpy (application->command, selected_application); - - application->can_open_multiple_files = FALSE; - application->can_open_uris = FALSE; - - gnome_vfs_mime_define_application (application); - gnome_vfs_mime_set_default_application ((const char *)user_data, application->id); - - /* Reload menu and set index to default item */ - populate_application_menu (main_win->application_menu, (const char *)user_data); - - gnome_vfs_mime_application_free (application); - g_free (user_data); - } -} - -static GtkFileSelection * -show_file_selector (const char *title, gpointer mime_string) -{ - GtkFileSelection *selector; - - selector = GTK_FILE_SELECTION (gtk_file_selection_new (title)); - - gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (selector)->ok_button), - "clicked", GTK_SIGNAL_FUNC (add_application), mime_string); - - /* Ensure that the dialog box is destroyed when the user clicks a button. */ - gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (selector)->ok_button), - "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), - (gpointer) selector); - - gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (selector)->cancel_button), - "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), - (gpointer) selector); - - - /* Set file selector parent to edit dialog */ - gtk_window_set_transient_for (GTK_WINDOW (selector), GTK_WINDOW (main_win->window)); - gtk_window_set_modal(GTK_WINDOW (selector), TRUE); - - gtk_widget_show (GTK_WIDGET (selector)); - - return selector; -} diff --git a/capplets/file-types/edit-window.h b/capplets/file-types/edit-window.h deleted file mode 100644 index 188d92b35..000000000 --- a/capplets/file-types/edit-window.h +++ /dev/null @@ -1,14 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ -/* Copyright (C) 1998 Redhat Software Inc. - * Authors: Jonathan Blandford <jrb@redhat.com> - */ - -#ifndef _EDIT_WINDOW_H_ -#define _EDIT_WINDOW_H_ - -void launch_edit_window (const char *mime_type); -void initialize_main_win_vals (void); -void hide_edit_window (void); -void show_edit_window (void); - -#endif diff --git a/capplets/file-types/file-types-capplet-dialogs.c b/capplets/file-types/file-types-capplet-dialogs.c index cbc641648..8404bc710 100644 --- a/capplets/file-types/file-types-capplet-dialogs.c +++ b/capplets/file-types/file-types-capplet-dialogs.c @@ -2,8 +2,6 @@ /* nautilus-mime-type-capplet-dialog.c * - * Copyright (C) 1998 Redhat Software Inc. - * Copyright (C) 2000 Free Software Foundaton * Copyright (C) 2000 Eazel, Inc. * * This program is free software; you can redistribute it and/or @@ -27,11 +25,13 @@ #include <config.h> +#include <capplet-widget.h> #include <gnome.h> #include <gtk/gtk.h> #include <libgnomevfs/gnome-vfs-mime-handlers.h> #include <libgnomevfs/gnome-vfs-mime-info.h> +#include "nautilus-mime-type-capplet.h" #include "nautilus-mime-type-capplet-dialogs.h" /* gtk_window_set_default_width (and some other functions) use a @@ -57,10 +57,10 @@ typedef struct { /* Global variables */ static edit_dialog_details *edit_application_details = NULL; static edit_dialog_details *edit_component_details = NULL; - +extern GtkWidget *capplet; static void -edit_application_dialog_destroy (GtkWidget *widget, gpointer data) +edit_applications_dialog_destroy (GtkWidget *widget, gpointer data) { g_free (edit_application_details); edit_application_details = NULL; @@ -73,88 +73,97 @@ edit_component_dialog_destroy (GtkWidget *widget, gpointer data) edit_component_details = NULL; } -static void -populate_default_applications_list (GtkWidget *list, const char *mime_type) +static gboolean +application_is_in_list (const char *search_id, GList *application_list) { - GList *app_list, *copy_list; + GList *list_element; GnomeVFSMimeApplication *application; - gboolean has_none, found_match; - char *mime_copy; - gchar *component_name[1]; - - has_none = TRUE; - found_match = FALSE; - mime_copy = g_strdup (mime_type); + if (application_list == NULL || search_id == NULL) { + return FALSE; + } - /* Get the application short list */ - app_list = gnome_vfs_mime_get_all_applications (mime_type); - for (copy_list = app_list; copy_list != NULL; copy_list = copy_list->next) { - has_none = FALSE; + /* Traverse the list looking for a match */ + for (list_element = application_list; list_element != NULL; list_element = list_element->next) { + application = list_element->data; - application = copy_list->data; - - component_name[0] = g_strdup (application->name); - gtk_clist_append (GTK_CLIST (list), component_name); - g_free (component_name[0]); + if (strcmp (search_id, application->id) == 0) { + return TRUE; + } } + + return FALSE; +} - if (app_list != NULL) { - gnome_vfs_mime_application_list_free (app_list); - app_list = NULL; + +/* + * application_button_toggled_callback + * + * Check state of button. Based on state, determine whether to add or remove + * application from short list. + */ +static void +application_button_toggled_callback (GtkToggleButton *button, gpointer user_data) +{ + const char *id; + const char *mime_type; + + id = gtk_object_get_data (GTK_OBJECT (button), "application_id"); + mime_type = gtk_object_get_data (GTK_OBJECT (button), "mime_type"); + + if (id == NULL || mime_type == NULL) { + return; } - /* Add a "None" item */ - if (has_none) { - component_name[0] = g_strdup (_("None")); - gtk_clist_append (GTK_CLIST (list), component_name); - g_free (component_name[0]); + if (gtk_toggle_button_get_active (button)) { + /* Add to preferred list */ + gnome_vfs_mime_add_application_to_short_list (mime_type, id); + + } else { + /* Remove from preferred list */ + gnome_vfs_mime_remove_application_from_short_list (mime_type, id); } } static void -populate_preferred_applications_list (GtkWidget *list, const char *mime_type) +populate_default_applications_box (GtkWidget *box, const char *mime_type) { - GList *app_list, *copy_list; - GnomeVFSMimeApplication *default_app, *application; - gboolean has_none, found_match; - char *mime_copy; - gchar *app_name[1]; - - has_none = TRUE; - found_match = FALSE; - - mime_copy = g_strdup (mime_type); - - /* Get the default application */ - default_app = gnome_vfs_mime_get_default_application (mime_type); + GList *short_list, *app_list, *list_element; + GnomeVFSMimeApplication *application; + GtkWidget *button; /* Get the application short list */ - app_list = gnome_vfs_mime_get_short_list_applications (mime_type); + short_list = gnome_vfs_mime_get_short_list_applications (mime_type); + + /* Get the list of all applications */ + app_list = gnome_vfs_mime_get_all_applications (mime_type); if (app_list != NULL) { - for (copy_list = app_list; copy_list != NULL; copy_list = copy_list->next) { - has_none = FALSE; + for (list_element = app_list; list_element != NULL; list_element = list_element->next) { + application = list_element->data; + + /* Create check button */ + button = gtk_check_button_new_with_label (application->name); + gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0); - application = copy_list->data; + /* Save ID and mime type*/ + gtk_object_set_data_full (GTK_OBJECT (button), "application_id", g_strdup (application->id), g_free); + gtk_object_set_data_full (GTK_OBJECT (button), "mime_type", g_strdup (mime_type), g_free); - /* Store copy of application name in item; free when item destroyed. */ - //gtk_object_set_data_full (GTK_OBJECT (menu_item), - // "application", - // g_strdup (application->name), - // g_free); - - app_name[0] = g_strdup (application->name); - gtk_clist_append (GTK_CLIST (list), app_name); - g_free (app_name[0]); + /* Check and see if component is in preferred list */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), + application_is_in_list (application->id, short_list)); + + /* Connect to toggled signal */ + gtk_signal_connect (GTK_OBJECT (button), "toggled", + GTK_SIGNAL_FUNC (application_button_toggled_callback), NULL); } + gnome_vfs_mime_application_list_free (app_list); + } - - /* Add a "None" item */ - if (has_none && default_app == NULL) { - app_name[0] = g_strdup (_("None")); - gtk_clist_append (GTK_CLIST (list), app_name); - g_free (app_name[0]); + + if (short_list != NULL) { + gnome_vfs_mime_application_list_free (short_list); } } @@ -237,8 +246,6 @@ populate_default_components_box (GtkWidget *box, const char *mime_type) component_name = name_from_oaf_server_info (info); button = gtk_check_button_new_with_label (component_name); gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (button), "toggled", - GTK_SIGNAL_FUNC (component_button_toggled_callback), NULL); /* Save IID and mime type*/ gtk_object_set_data_full (GTK_OBJECT (button), "component_iid", g_strdup (info->iid), g_free); @@ -248,6 +255,10 @@ populate_default_components_box (GtkWidget *box, const char *mime_type) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), component_is_in_list (component_name, short_component_list)); + /* Connect to toggled signal */ + gtk_signal_connect (GTK_OBJECT (button), "toggled", + GTK_SIGNAL_FUNC (component_button_toggled_callback), NULL); + g_free (component_name); } gnome_vfs_mime_component_list_free (all_component_list); @@ -258,45 +269,6 @@ populate_default_components_box (GtkWidget *box, const char *mime_type) } } -#if 0 -static void -populate_preferred_components_list (GtkWidget *list, const char *mime_type) -{ - GList *component_list, *copy_list; - OAF_ServerInfo *info; - gboolean has_none, found_match; - char *mime_copy; - gchar *component_name[1]; - - has_none = TRUE; - found_match = FALSE; - - mime_copy = g_strdup (mime_type); - - /* Get the component short list */ - component_list = gnome_vfs_mime_get_short_list_components (mime_type); - if (component_list != NULL) { - for (copy_list = component_list; copy_list != NULL; copy_list = copy_list->next) { - has_none = FALSE; - - info = copy_list->data; - - component_name[0] = name_from_oaf_server_info (info); - gtk_clist_append (GTK_CLIST (list), component_name); - g_free (component_name[0]); - } - gnome_vfs_mime_component_list_free (component_list); - } - - /* Add a "None" item */ - if (has_none) { - component_name[0] = g_strdup (_("None")); - gtk_clist_append (GTK_CLIST (list), component_name); - g_free (component_name[0]); - } -} -#endif - /* * initialize_edit_applications_dialog @@ -307,73 +279,56 @@ populate_preferred_components_list (GtkWidget *list, const char *mime_type) static void initialize_edit_applications_dialog (const char *mime_type) { - GtkWidget *align, *main_vbox, *hbox1, *hbox2; - GtkWidget *button_hbox; - GtkWidget *button; - GtkWidget *fixed; + GtkWidget *main_vbox, *vbox; + GtkWidget *scroller, *label; + char *label_text; - gchar *preferred_title[1] = {_("Preferred Applications")}; - gchar *default_title[1] = {_("Default Applications")}; - edit_application_details = g_new0 (edit_dialog_details, 1); + edit_application_details->window = gnome_dialog_new (_("Edit Applications List"), GNOME_STOCK_BUTTON_OK, GNOME_STOCK_BUTTON_CANCEL, NULL); + gtk_container_set_border_width (GTK_CONTAINER (edit_application_details->window), GNOME_PAD); + gtk_window_set_policy (GTK_WINDOW (edit_application_details->window), FALSE, TRUE, FALSE); + gtk_window_set_default_size (GTK_WINDOW (edit_application_details->window), + NO_DEFAULT_MAGIC_NUMBER, + PROGRAM_CHOOSER_DEFAULT_HEIGHT); + gtk_signal_connect (GTK_OBJECT (edit_application_details->window), "destroy", - edit_application_dialog_destroy, + edit_applications_dialog_destroy, NULL); /* Main vertical box */ main_vbox = GNOME_DIALOG (edit_application_details->window)->vbox; - align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); - gtk_box_pack_start (GTK_BOX (main_vbox), align, FALSE, FALSE, 0); - - hbox1 = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); - gtk_box_pack_start (GTK_BOX (main_vbox), hbox1, FALSE, FALSE, 0); - - hbox2 = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); - gtk_box_pack_start (GTK_BOX (main_vbox), hbox2, FALSE, FALSE, 0); - - /* Preferred application list */ - edit_application_details->preferred_list = gtk_clist_new_with_titles (1, preferred_title); - gtk_clist_column_titles_passive (GTK_CLIST (edit_application_details->preferred_list)); - gtk_clist_set_auto_sort (GTK_CLIST (edit_application_details->preferred_list), TRUE); - gtk_box_pack_start (GTK_BOX (hbox1), edit_application_details->preferred_list, TRUE, TRUE, 0); - gtk_widget_set_usize (edit_application_details->preferred_list, 250, 200); + /* Add label */ + label_text = g_strdup_printf (_("Select applications to appear in menu for mime type \"%s\""), mime_type); + label = gtk_label_new (label_text); + g_free (label_text); + gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); + gtk_box_pack_start (GTK_BOX (main_vbox), label, FALSE, FALSE, 0); - /* Default application list */ - edit_application_details->default_list = gtk_clist_new_with_titles (1, default_title); - gtk_clist_column_titles_passive (GTK_CLIST (edit_application_details->default_list)); - gtk_clist_set_auto_sort (GTK_CLIST (edit_application_details->default_list), TRUE); - gtk_box_pack_start (GTK_BOX (hbox1), edit_application_details->default_list, TRUE, TRUE, 0); - gtk_widget_set_usize (edit_application_details->default_list, 250, 200); - - button_hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); - gtk_box_pack_start (GTK_BOX (main_vbox), button_hbox, FALSE, FALSE, 0); - fixed = gtk_fixed_new (); - gtk_container_add (GTK_CONTAINER (button_hbox), fixed); - - button = gtk_button_new_with_label (_("Remove Application")); - gtk_fixed_put (GTK_FIXED (fixed), button, 80, 0); - - button = gtk_button_new_with_label (_("Add To Preferred")); - gtk_fixed_put (GTK_FIXED (fixed), button, 260, 0); + /* Add scrolling list of check buttons */ + scroller = gtk_scrolled_window_new (NULL, NULL); + gtk_box_pack_start_defaults (GTK_BOX (main_vbox), scroller); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroller), + GTK_POLICY_NEVER, + GTK_POLICY_AUTOMATIC); - button = gtk_button_new_with_label (_("Add New Application...")); - gtk_fixed_put (GTK_FIXED (fixed), button, 380, 0); + vbox = gtk_vbox_new (FALSE, GNOME_PAD_SMALL); + gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scroller), vbox); - /* Populate Lists */ - populate_preferred_applications_list (edit_application_details->preferred_list, mime_type); - populate_default_applications_list (edit_application_details->default_list, mime_type); + populate_default_applications_box (vbox, mime_type); gtk_widget_show_all (main_vbox); } + /* * initialize_edit_components_dialog * @@ -447,8 +402,11 @@ show_edit_applications_dialog (const char *mime_type) switch(gnome_dialog_run (GNOME_DIALOG (edit_application_details->window))) { case 0: - /* Apply changed here */ - /* Fall through */ + nautilus_mime_type_capplet_update_application_info (mime_type); + /* Delete the dialog so the lists are repopulated on next lauch */ + gtk_widget_destroy (edit_application_details->window); + break; + case 1: /* Delete the dialog so the lists are repopulated on next lauch */ gtk_widget_destroy (edit_application_details->window); @@ -472,8 +430,11 @@ show_edit_components_dialog (const char *mime_type) switch(gnome_dialog_run (GNOME_DIALOG (edit_component_details->window))) { case 0: - /* Apply changed here */ - /* Fall through */ + nautilus_mime_type_capplet_update_component_info (mime_type); + /* Delete the dialog so the lists are repopulated on next lauch */ + gtk_widget_destroy (edit_component_details->window); + break; + case 1: /* Delete the dialog so the lists are repopulated on next lauch */ gtk_widget_destroy (edit_component_details->window); @@ -565,3 +526,99 @@ name_from_oaf_server_info (OAF_ServerInfo *server) return g_strdup(view_as_name); } + +void +nautilus_mime_type_capplet_show_new_mime_window (void) +{ + GtkWidget *dialog; + GtkWidget *mime_entry; + GtkWidget *label; + GtkWidget *frame; + GtkWidget *ext_entry; + GtkWidget *hbox; + GtkWidget *vbox; + + dialog = gnome_dialog_new (_("Add Mime Type"), GNOME_STOCK_BUTTON_OK, GNOME_STOCK_BUTTON_CANCEL, NULL); + label = gtk_label_new (_("Add a new Mime Type\nFor example: image/tiff; text/x-scheme")); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); + hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 0); + label = gtk_label_new (_("Mime Type:")); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); + hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + mime_entry = gtk_entry_new (); + gtk_box_pack_start (GTK_BOX (hbox), mime_entry, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 0); + + frame = gtk_frame_new (_("Extensions")); + gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox), frame, FALSE, FALSE, 0); + vbox = gtk_vbox_new (FALSE, GNOME_PAD_SMALL); + gtk_container_set_border_width (GTK_CONTAINER (vbox), GNOME_PAD_SMALL); + label = gtk_label_new (_("Type in the extensions for this mime-type.\nFor example: .html, .htm")); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); + hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_container_add (GTK_CONTAINER (frame), vbox); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); + gtk_box_pack_start (GTK_BOX (hbox), gtk_label_new (_("Extension:")), FALSE, FALSE, 0); + ext_entry = gtk_entry_new (); + gtk_box_pack_start (GTK_BOX (hbox), ext_entry, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + + + gtk_widget_show_all (GNOME_DIALOG (dialog)->vbox); + switch (gnome_dialog_run (GNOME_DIALOG (dialog))) { + case 0: + capplet_widget_state_changed (CAPPLET_WIDGET (capplet), + TRUE); + add_new_mime_type (gtk_entry_get_text (GTK_ENTRY (mime_entry)), + gtk_entry_get_text (GTK_ENTRY (ext_entry))); + case 1: + gtk_widget_destroy (dialog); + default:; + } +} + +void +nautilus_mime_type_capplet_show_new_extension_window (void) +{ + GtkWidget *mime_entry; + GtkWidget *label; + GtkWidget *hbox; + GtkWidget *dialog; + + dialog = gnome_dialog_new (_("Add New Extension"), GNOME_STOCK_BUTTON_OK, GNOME_STOCK_BUTTON_CANCEL, NULL); + label = gtk_label_new (_("Type in the extensions for this mime-type.\nFor example: .html, .htm")); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); + hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 0); + label = gtk_label_new (_("Extension:")); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); + hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + mime_entry = gtk_entry_new (); + gtk_box_pack_start (GTK_BOX (hbox), mime_entry, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 0); + + gtk_widget_show_all (GNOME_DIALOG (dialog)->vbox); + + switch (gnome_dialog_run (GNOME_DIALOG (dialog))) { + case 0: + capplet_widget_state_changed (CAPPLET_WIDGET (capplet), + TRUE); + + nautilus_mime_type_capplet_add_extension (gtk_entry_get_text + (GTK_ENTRY (mime_entry))); + + case 1: + gtk_widget_destroy (dialog); + break; + + default: + break; + } +}
\ No newline at end of file diff --git a/capplets/file-types/file-types-capplet-dialogs.h b/capplets/file-types/file-types-capplet-dialogs.h index 37b691dfe..35142967b 100644 --- a/capplets/file-types/file-types-capplet-dialogs.h +++ b/capplets/file-types/file-types-capplet-dialogs.h @@ -25,9 +25,10 @@ #ifndef NAUTILUS_MIME_TYPE_CAPPLET_DIALOGS_H #define NAUTILUS_MIME_TYPE_CAPPLET_DIALOGS_H -void show_edit_applications_dialog (const char *mime_type); -void show_edit_components_dialog (const char *mime_type); -char *name_from_oaf_server_info (OAF_ServerInfo *server); - +void show_edit_applications_dialog (const char *mime_type); +void show_edit_components_dialog (const char *mime_type); +char *name_from_oaf_server_info (OAF_ServerInfo *server); +void nautilus_mime_type_capplet_show_new_mime_window (void); +void nautilus_mime_type_capplet_show_new_extension_window (void); #endif /* NAUTILUS_MIME_TYPE_CAPPLET_DIALOGS_H */ diff --git a/capplets/file-types/file-types-capplet.c b/capplets/file-types/file-types-capplet.c index b80fa8901..3892b75c5 100644 --- a/capplets/file-types/file-types-capplet.c +++ b/capplets/file-types/file-types-capplet.c @@ -32,16 +32,14 @@ #include <string.h> #include <sys/types.h> +#include <capplet-widget.h> +#include <gnome.h> +#include <gtk/gtk.h> #include <libgnomevfs/gnome-vfs-mime-handlers.h> #include <libgnomevfs/gnome-vfs-mime-info.h> -#include "capplet-widget.h" -#include "gnome.h" #include "mime-data.h" #include "mime-info.h" -#include "edit-window.h" -#include "new-mime-window.h" - #include "nautilus-mime-type-capplet-dialogs.h" #include "nautilus-mime-type-capplet.h" @@ -67,6 +65,9 @@ static void help_callback (void); GtkWidget *capplet = NULL; GtkWidget *delete_button = NULL; +GtkWidget *remove_button = NULL; +GtkWidget *add_button = NULL; +GtkWidget *info_frame = NULL; GtkWidget *icon_entry, *extension_list, *mime_list; GtkWidget *application_menu, *component_menu; @@ -118,6 +119,7 @@ try_callback () write_user_keys (); write_user_mime (); } + static void revert_callback () { @@ -125,14 +127,15 @@ revert_callback () write_initial_mime (); discard_key_info (); discard_mime_info (); - initialize_main_win_vals (); } + static void ok_callback () { write_user_keys (); write_user_mime (); } + static void cancel_callback () { @@ -149,16 +152,133 @@ help_callback () #endif static void +populate_extension_list (const MimeInfo *info, GtkCList *list) +{ + GList *element; + gchar *extension[1]; + gint row; + + /* Clear out old items */ + gtk_clist_clear (list); + + if (info->ext[0]) { + for (element = info->ext[0]; element; element = element->next) { + extension[0] = g_strdup (element->data); + row = gtk_clist_append (list, extension); + gtk_clist_set_row_data (list, row, GINT_TO_POINTER (FALSE)); + } + } + + if (info->ext[1]) { + for (element = info->ext[1]; element; element = element->next) { + extension[0] = g_strdup (element->data); + row = gtk_clist_append (list, extension); + gtk_clist_set_row_data (list, row, GINT_TO_POINTER (FALSE)); + } + } + + /* Select first item in extension list */ + gtk_clist_select_row (list, 0, 0); +} + +void +nautilus_mime_type_capplet_add_extension (const char *extension) +{ + gchar *title[1]; + gint rownumber; + + title[0] = g_strdup (extension); + + //add_new_mime_type (gtk_entry_get_text (GTK_ENTRY (mime_entry)), + // gtk_entry_get_text (GTK_ENTRY (ext_entry))); + + /* + gint rownumber; + + rownumber = gtk_clist_append (GTK_CLIST (main_win->ext_clist), row); + gtk_clist_set_row_data (GTK_CLIST (main_win->ext_clist), rownumber, + GINT_TO_POINTER (TRUE)); + gtk_entry_set_text (GTK_ENTRY (main_win->ext_entry), ""); + + main_win->tmp_ext[0] = g_list_prepend (main_win->tmp_ext[0], row[0]); + + capplet_widget_state_changed (CAPPLET_WIDGET (capplet), TRUE); + */ + + rownumber = gtk_clist_append (GTK_CLIST (extension_list), title); +} + +static void +add_extension_clicked (GtkWidget *widget, gpointer data) +{ + nautilus_mime_type_capplet_show_new_extension_window (); +} + +static void +remove_extension (GtkWidget *widget, gpointer data) +{ + gint row; + gchar *text; + gchar *store; + + text = (gchar *)g_malloc (sizeof (gchar) * 1024); + gtk_clist_freeze (GTK_CLIST (extension_list)); + row = GPOINTER_TO_INT (GTK_CLIST (extension_list)->selection->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; + } + } + */ + + capplet_widget_state_changed (CAPPLET_WIDGET (capplet), TRUE); +} + +static void +extension_list_selected (GtkWidget *clist, gint row, gint column, gpointer data) +{ + gboolean deletable; + + deletable = GPOINTER_TO_INT (gtk_clist_get_row_data (GTK_CLIST (clist), row)); + if (deletable) + gtk_widget_set_sensitive (remove_button, TRUE); + else + gtk_widget_set_sensitive (remove_button, FALSE); +} + +static void +extension_list_deselected (GtkWidget *clist, gint row, gint column, gpointer data) +{ + if (g_list_length (GTK_CLIST (clist)->selection) == 0) + gtk_widget_set_sensitive (remove_button, FALSE); +} + +static void init_mime_capplet (void) { GtkWidget *main_vbox; GtkWidget *vbox, *hbox; - GtkWidget *button; - GtkWidget *info_frame; + GtkWidget *button; GtkWidget *label; GtkWidget *fixed; GtkWidget *icon_entry; GtkWidget *mime_list_container; + GtkWidget *extension_scroller; GList *children, *child; gchar *title[2] = {"Extensions"}; @@ -186,7 +306,7 @@ init_mime_capplet (void) gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0); /* Set up info frame */ - info_frame = gtk_frame_new ("Info"); + info_frame = gtk_frame_new (""); gtk_box_pack_end (GTK_BOX (main_vbox), info_frame, FALSE, FALSE, 0); fixed = gtk_fixed_new (); @@ -206,7 +326,7 @@ init_mime_capplet (void) gtk_signal_connect (GTK_OBJECT (button), "clicked", edit_applications_clicked, mime_list); /* Create label, menu and edit button for default components */ - label = gtk_label_new (_("Default Component:")); + label = gtk_label_new (_("Default Viewer:")); gtk_fixed_put (GTK_FIXED (fixed), label, 10, 35); component_menu = gtk_option_menu_new(); @@ -219,32 +339,44 @@ init_mime_capplet (void) /* Add icon box */ icon_entry = gnome_icon_entry_new ("mime_icon_entry", _("Select an icon...")); - //gtk_signal_connect (GTK_OBJECT (gnome_icon_entry_gtk_entry (GNOME_ICON_ENTRY (main_win->icon_entry))), - // "changed", - // entry_changed, - // NULL); + /*gtk_signal_connect (GTK_OBJECT (gnome_icon_entry_gtk_entry (GNOME_ICON_ENTRY (icon_entry))), + "changed", icon_changed, NULL);*/ gtk_fixed_put (GTK_FIXED (fixed), icon_entry, 35, 65); /* Add extension list and buttons */ extension_list = gtk_clist_new_with_titles (1, title); gtk_clist_column_titles_passive (GTK_CLIST (extension_list)); gtk_clist_set_auto_sort (GTK_CLIST (extension_list), TRUE); + gtk_clist_set_selection_mode (GTK_CLIST (extension_list), GTK_SELECTION_BROWSE); + gtk_clist_set_auto_sort (GTK_CLIST (extension_list), TRUE); + + extension_scroller = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (extension_scroller), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_container_add (GTK_CONTAINER (extension_scroller), extension_list); + + gtk_fixed_put (GTK_FIXED (fixed), extension_scroller, 125, 65); + gtk_widget_set_usize (extension_scroller, 150, 60); + + add_button = gtk_button_new_with_label (_("Add")); + gtk_fixed_put (GTK_FIXED (fixed), add_button, 285, 70); + gtk_widget_set_usize (add_button, 60, 20); + gtk_widget_set_sensitive (add_button, TRUE); + + remove_button = gtk_button_new_with_label (_("Remove")); + gtk_fixed_put (GTK_FIXED (fixed), remove_button, 285, 95); + gtk_widget_set_usize (remove_button, 60, 20); + gtk_widget_set_sensitive (remove_button, FALSE); + + gtk_signal_connect (GTK_OBJECT (remove_button), "clicked", + GTK_SIGNAL_FUNC (remove_extension), NULL); + gtk_signal_connect (GTK_OBJECT (add_button), "clicked", + GTK_SIGNAL_FUNC (add_extension_clicked), NULL); + gtk_signal_connect (GTK_OBJECT (extension_list), "select-row", + GTK_SIGNAL_FUNC (extension_list_selected), NULL); + gtk_signal_connect (GTK_OBJECT (extension_list), "unselect-row", + GTK_SIGNAL_FUNC (extension_list_deselected), NULL); - //gtk_signal_connect (GTK_OBJECT (main_win->ext_clist), "select-row", - // GTK_SIGNAL_FUNC (ext_clist_selected), NULL); - //gtk_signal_connect (GTK_OBJECT (main_win->ext_clist), "unselect-row", - // GTK_SIGNAL_FUNC (ext_clist_deselected), NULL); - gtk_fixed_put (GTK_FIXED (fixed), extension_list, 125, 65); - gtk_widget_set_usize (extension_list, 150, 60); - - button = gtk_button_new_with_label (_("Add")); - gtk_fixed_put (GTK_FIXED (fixed), button, 285, 70); - gtk_widget_set_usize (button, 60, 20); - - button = gtk_button_new_with_label (_("Remove")); - gtk_fixed_put (GTK_FIXED (fixed), button, 285, 95); - gtk_widget_set_usize (button, 60, 20); - /* Mime list Add and Delete buttons */ button = left_aligned_button (_("Add...")); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); @@ -266,18 +398,17 @@ init_mime_capplet (void) GTK_SIGNAL_FUNC(ok_callback), NULL); gtk_signal_connect(GTK_OBJECT(capplet), "cancel", GTK_SIGNAL_FUNC(cancel_callback), NULL); - gtk_signal_connect(GTK_OBJECT(capplet), "page_hidden", +#if 0 + gtk_signal_connect(GTK_OBJECT(capplet), "page_hidden", GTK_SIGNAL_FUNC(hide_edit_window), NULL); gtk_signal_connect(GTK_OBJECT(capplet), "page_shown", GTK_SIGNAL_FUNC(show_edit_window), NULL); -#if 0 gtk_signal_connect(GTK_OBJECT(capplet), "help", GTK_SIGNAL_FUNC(help_callback), NULL); #endif - /* Force list to update menus */ + /* Select first item in list and update menus */ gtk_clist_select_row (GTK_CLIST (mime_list), 0, 0); - } @@ -288,9 +419,21 @@ init_mime_capplet (void) */ void -nautilus_mime_type_capplet_update_info (const char *mime_string) { - populate_application_menu (application_menu, mime_string); - populate_component_menu (component_menu, mime_string); +nautilus_mime_type_capplet_update_info (const MimeInfo *info) { + + /* Update frame label with mime type */ + gtk_frame_set_label (GTK_FRAME (info_frame), info->mime_type); + + /* Update menus */ + populate_application_menu (application_menu, info->mime_type); + populate_component_menu (component_menu, info->mime_type); + + /* Update extesnions list */ + populate_extension_list (info, GTK_CLIST (extension_list)); + + /* Set icon for mime type */ + gnome_icon_entry_set_icon (GNOME_ICON_ENTRY (icon_entry), + gnome_vfs_mime_get_value (info->mime_type, "icon-filename")); } static void @@ -472,7 +615,7 @@ delete_mime_clicked (GtkWidget *widget, gpointer data) static void add_mime_clicked (GtkWidget *widget, gpointer data) { - launch_new_mime_window (); + nautilus_mime_type_capplet_show_new_mime_window (); } static void @@ -535,3 +678,29 @@ edit_components_clicked (GtkWidget *widget, gpointer data) show_edit_components_dialog (mi->mime_type); } +/* + * nautilus_mime_type_capplet_update_application_info + * + * Update state of the applications menu. This function is called + * when the Edit Applications dialog is closed with an OK. + */ + +void +nautilus_mime_type_capplet_update_application_info (const char *mime_type) +{ + populate_application_menu (application_menu, mime_type); +} + +/* + * nautilus_mime_type_capplet_update_component_info + * + * Update state of the components menu. This function is called + * when the Edit Componests dialog is closed with an OK. + */ + +void +nautilus_mime_type_capplet_update_component_info (const char *mime_type) +{ + populate_component_menu (component_menu, mime_type); +} + diff --git a/capplets/file-types/file-types-capplet.h b/capplets/file-types/file-types-capplet.h index a84f21f8c..edb64eaba 100644 --- a/capplets/file-types/file-types-capplet.h +++ b/capplets/file-types/file-types-capplet.h @@ -25,6 +25,12 @@ #ifndef NAUTILUS_MIME_TYPE_CAPPLET_H #define NAUTILUS_MIME_TYPE_CAPPLET_H -void nautilus_mime_type_capplet_update_info (const char *mime_type); +#include "mime-data.h" + +void nautilus_mime_type_capplet_update_info (const MimeInfo *info); +void nautilus_mime_type_capplet_update_application_info (const char *mime_type); +void nautilus_mime_type_capplet_update_component_info (const char *mime_type); +void nautilus_mime_type_capplet_add_extension (const char *extension); + #endif /* NAUTILUS_MIME_TYPE_CAPPLET_H */ diff --git a/capplets/file-types/mime-data.c b/capplets/file-types/mime-data.c index 3b6b44d0e..e39a3fdf1 100644 --- a/capplets/file-types/mime-data.c +++ b/capplets/file-types/mime-data.c @@ -32,10 +32,8 @@ #include <dirent.h> #include <regex.h> #include <ctype.h> -#include "edit-window.h" #include "mime-data.h" #include "mime-info.h" -#include "new-mime-window.h" #include <sys/stat.h> #include <unistd.h> #include <errno.h> @@ -284,72 +282,26 @@ mime_load_from_dir (const char *mime_info_dir, gboolean system_dir) static int add_mime_vals_to_clist (gchar *mime_type, gpointer mi, gpointer cl) { - /* we also finalize the MimeInfo structure here, now that we're done - * loading it */ - static gchar *text[1]; + static gchar *text[2]; + const char *description; gint row; - /* - GList *list; - GString *extension; - extension = g_string_new (""); - for (list = ((MimeInfo *) mi)->ext[0];list; list=list->next) { - g_string_append (extension, (gchar *) list->data); - if (list->next != NULL) - g_string_append (extension, ", "); - } - - if (strcmp (extension->str, "") != 0 && ((MimeInfo *)mi)->user_ext[0]) { - g_string_append (extension, ", "); - } - - for (list = ((MimeInfo *) mi)->user_ext[0]; list; list=list->next) { - g_string_append (extension, (gchar *) list->data); - if (list->next != NULL) - g_string_append (extension, ", "); - } - - ((MimeInfo *) mi)->ext_readable[0] = extension->str; - g_string_free (extension, FALSE); - - extension = g_string_new (""); - for (list = ((MimeInfo *) mi)->ext[1];list; list=list->next) { - g_string_append (extension, (gchar *) list->data); - if (list->next) - g_string_append (extension, ", "); - } - - if (strcmp (extension->str, "") != 0 && ((MimeInfo *)mi)->user_ext[1]) { - g_string_append (extension, ", "); - } - - for (list = ((MimeInfo *) mi)->user_ext[1]; list; list=list->next) { - g_string_append (extension, (gchar *) list->data); - if (list->next != NULL) - g_string_append (extension, ", "); - } - ((MimeInfo *) mi)->ext_readable[1] = extension->str; - g_string_free (extension, FALSE); + /* Add mime type to first column */ + text[0] = ((MimeInfo *) mi)->mime_type; - if (((MimeInfo *) mi)->ext[0] || ((MimeInfo *) mi)->user_ext[0]) { - extension = g_string_new ((((MimeInfo *) mi)->ext_readable[0])); - - if (((MimeInfo *) mi)->ext[1] || ((MimeInfo *) mi)->user_ext[1]) { - g_string_append (extension, ", "); - g_string_append (extension, (((MimeInfo *) mi)->ext_readable[1])); - } - } else if (((MimeInfo *) mi)->ext[1] || ((MimeInfo *) mi)->user_ext[1]) { - extension = g_string_new ((((MimeInfo *) mi)->ext_readable[1])); + /* Add description to second column */ + description = gnome_vfs_mime_description (mime_type); + if (description != NULL && strlen (description) > 0) { + text[1] = g_strdup (description); } else { - extension = g_string_new (""); + text[1] = g_strdup (""); } - */ - text[0] = ((MimeInfo *) mi)->mime_type; - row = gtk_clist_insert (GTK_CLIST (cl), 1, text); gtk_clist_set_row_data (GTK_CLIST (cl), row, mi); - //g_string_free (extension, TRUE); + + g_free (text[1]); + return row; } @@ -364,7 +316,7 @@ selected_row_callback (GtkWidget *widget, gint row, gint column, GdkEvent *event mi = (MimeInfo *) gtk_clist_get_row_data (GTK_CLIST (widget),row); /* Update info on selection */ - nautilus_mime_type_capplet_update_info (mi->mime_type); + nautilus_mime_type_capplet_update_info (mi); if (g_hash_table_lookup (user_mime_types, mi->mime_type)) { gtk_widget_set_sensitive (delete_button, TRUE); diff --git a/capplets/file-types/mime-info.c b/capplets/file-types/mime-info.c index fe23a90de..748e59c35 100644 --- a/capplets/file-types/mime-info.c +++ b/capplets/file-types/mime-info.c @@ -296,6 +296,7 @@ load_mime_type_info_from (char *filename) fclose (mime_file); } + void set_mime_key_value (gchar *mime_type, gchar *key, gchar *value) { diff --git a/capplets/file-types/mime-info.h b/capplets/file-types/mime-info.h index 18db2326f..700d15d83 100644 --- a/capplets/file-types/mime-info.h +++ b/capplets/file-types/mime-info.h @@ -1,12 +1,36 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ -/* Copyright (C) 1998 Redhat Software Inc. - * Authors: Jonathan Blandford <jrb@redhat.com> +/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ + +/* mime-info.h + * + * Copyright (C) 1998 Redhat Software Inc. + * Copyright (C) 2000 Free Software Foundaton + * Copyright (C) 2000 Eazel, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Authors: Jonathan Blandford <jrb@redhat.com> + * Gene Z. Ragan <gzr@eazel.com> */ -#ifndef _MIME_INFO_H_ -#define _MIME_INFO_H_ + +#ifndef MIME_INFO_H +#define MIME_INFO_H + #include "gnome.h" #include <regex.h> -/* Typedefs */ + void init_mime_info (void); void discard_key_info (void); void set_mime_key_value (gchar *mime_type, gchar *key, gchar *value); @@ -14,4 +38,5 @@ const char * local_mime_get_value (const char *mime_type, char *key); void write_user_keys (void); void write_initial_keys (void); void remove_mime_info (gchar *mime_type); + #endif diff --git a/capplets/file-types/new-mime-window.c b/capplets/file-types/new-mime-window.c deleted file mode 100644 index 2c0934ab1..000000000 --- a/capplets/file-types/new-mime-window.c +++ /dev/null @@ -1,102 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ - -/* new-mime-window.c - * - * Copyright (C) 1998 Red Hat, Inc. - * Copyright (C) 2000 Eazel, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * Authors: Jonathan Blandford <jbr@redhat.com> - * Gene Z. Ragan <gzr@eazel.com> - * - */ - -#include <config.h> - -#include "new-mime-window.h" -#include "capplet-widget.h" - - -static GtkWidget *add_dialog = NULL; -extern GtkWidget *capplet; - -/*Public functions */ -void -launch_new_mime_window (void) -{ - GtkWidget *mime_entry; - GtkWidget *label; - GtkWidget *frame; - GtkWidget *ext_entry; - GtkWidget *hbox; - GtkWidget *vbox; - - add_dialog = gnome_dialog_new (_("Add Mime Type"), GNOME_STOCK_BUTTON_OK, GNOME_STOCK_BUTTON_CANCEL, NULL); - label = gtk_label_new (_("Add a new Mime Type\nFor example: image/tiff; text/x-scheme")); - gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); - hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); - gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (add_dialog)->vbox), hbox, FALSE, FALSE, 0); - label = gtk_label_new (_("Mime Type:")); - gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); - hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); - gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); - mime_entry = gtk_entry_new (); - gtk_box_pack_start (GTK_BOX (hbox), mime_entry, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (add_dialog)->vbox), hbox, FALSE, FALSE, 0); - - frame = gtk_frame_new (_("Extensions")); - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (add_dialog)->vbox), frame, FALSE, FALSE, 0); - vbox = gtk_vbox_new (FALSE, GNOME_PAD_SMALL); - gtk_container_set_border_width (GTK_CONTAINER (vbox), GNOME_PAD_SMALL); - label = gtk_label_new (_("Type in the extensions for this mime-type.\nFor example: .html, .htm")); - gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); - hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); - gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); - gtk_container_add (GTK_CONTAINER (frame), vbox); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL); - gtk_box_pack_start (GTK_BOX (hbox), gtk_label_new (_("Extension:")), FALSE, FALSE, 0); - ext_entry = gtk_entry_new (); - gtk_box_pack_start (GTK_BOX (hbox), ext_entry, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - - - gtk_widget_show_all (GNOME_DIALOG (add_dialog)->vbox); - switch (gnome_dialog_run (GNOME_DIALOG (add_dialog))) { - case 0: - capplet_widget_state_changed (CAPPLET_WIDGET (capplet), - TRUE); - add_new_mime_type (gtk_entry_get_text (GTK_ENTRY (mime_entry)), - gtk_entry_get_text (GTK_ENTRY (ext_entry))); - case 1: - gtk_widget_destroy (add_dialog); - default:; - } - add_dialog = NULL; -} -void -hide_new_mime_window (void) -{ - if (add_dialog != NULL) - gtk_widget_hide (add_dialog); -} -void -show_new_mime_window (void) -{ - if (add_dialog != NULL) - gtk_widget_show (add_dialog); -} diff --git a/capplets/file-types/new-mime-window.h b/capplets/file-types/new-mime-window.h deleted file mode 100644 index 3071ab3fd..000000000 --- a/capplets/file-types/new-mime-window.h +++ /dev/null @@ -1,14 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ -/* Copyright (C) 1998 Redhat Software Inc. - * Authors: Jonathan Blandford <jrb@redhat.com> - */ -#include "mime-data.h" -#ifndef _NEW_MIME_WINDOW_H_ -#define _NEW_MIME_WINDOW_H_ - -void launch_new_mime_window (void); -void hide_new_mime_window (void); -void show_new_mime_window (void); - -#endif - |