summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGene Z. Ragan <gzr@eazel.com>2000-06-15 23:32:08 +0000
committerGene Ragan <gzr@src.gnome.org>2000-06-15 23:32:08 +0000
commit662a6f1803555da4b962362c7d9e1b57771e124c (patch)
tree492415394b73d6d9ecee8f3380246fe83e336fcf
parent3ff9e56e827cbaefc313606c9b62fa753cd942bd (diff)
downloadgnome-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.am6
-rw-r--r--capplets/file-types/edit-window.c648
-rw-r--r--capplets/file-types/edit-window.h14
-rw-r--r--capplets/file-types/file-types-capplet-dialogs.c365
-rw-r--r--capplets/file-types/file-types-capplet-dialogs.h9
-rw-r--r--capplets/file-types/file-types-capplet.c243
-rw-r--r--capplets/file-types/file-types-capplet.h8
-rw-r--r--capplets/file-types/mime-data.c74
-rw-r--r--capplets/file-types/mime-info.c1
-rw-r--r--capplets/file-types/mime-info.h37
-rw-r--r--capplets/file-types/new-mime-window.c102
-rw-r--r--capplets/file-types/new-mime-window.h14
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
-