summaryrefslogtreecommitdiff
path: root/capplets/file-types/file-types-capplet.c
diff options
context:
space:
mode:
Diffstat (limited to 'capplets/file-types/file-types-capplet.c')
-rw-r--r--capplets/file-types/file-types-capplet.c323
1 files changed, 0 insertions, 323 deletions
diff --git a/capplets/file-types/file-types-capplet.c b/capplets/file-types/file-types-capplet.c
deleted file mode 100644
index d58936154..000000000
--- a/capplets/file-types/file-types-capplet.c
+++ /dev/null
@@ -1,323 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-
-/* file-types-capplet.h
- *
- * Copyright (C) 1998 Redhat Software Inc.
- * Copyright (C) 2000 Free Software Foundaton
- * Copyright (C) 2000 Eazel, Inc.
- * Copyright (C) 2002 Ximian, 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>,
- * Bradford Hovinen <hovinen@ximian.com>
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <gnome.h>
-#include <glade/glade.h>
-#include <gconf/gconf-client.h>
-
-#include "capplet-util.h"
-#include "mime-types-model.h"
-#include "mime-edit-dialog.h"
-#include "mime-category-edit-dialog.h"
-#include "mime-type-info.h"
-#include "service-edit-dialog.h"
-#include "service-info.h"
-
-static void
-add_mime_cb (GtkButton *button, GladeXML *dialog)
-{
- GtkTreeView *treeview;
- GtkTreeModel *model;
- GObject *add_dialog;
-
- treeview = GTK_TREE_VIEW (WID ("mime_types_tree"));
- model = gtk_tree_view_get_model (treeview);
-
- add_dialog = mime_add_dialog_new (model,
- GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (button))),
- NULL);
-}
-
-static void
-add_service_cb (GtkButton *button, GladeXML *dialog)
-{
- GtkTreeView *treeview;
- GtkTreeModel *model;
-
- treeview = GTK_TREE_VIEW (WID ("mime_types_tree"));
- model = gtk_tree_view_get_model (treeview);
-
- service_add_dialog_new (model);
-}
-
-static GObject *
-launch_edit_dialog (GtkTreeModel *model, GtkTreeIter *iter)
-{
- ModelEntry *entry;
-
- entry = MODEL_ENTRY_FROM_ITER (iter);
-
- switch (entry->type) {
- case MODEL_ENTRY_MIME_TYPE:
- return mime_edit_dialog_new (model, MIME_TYPE_INFO (entry));
-
- case MODEL_ENTRY_SERVICE:
- return service_edit_dialog_new (model, SERVICE_INFO (entry));
-
-#if 0
- case MODEL_ENTRY_CATEGORY:
- return mime_category_edit_dialog_new (model, MIME_CATEGORY_INFO (entry));
-#endif
-
- default:
- return NULL;
- }
-}
-
-static void
-edit_cb (GtkButton *button, GladeXML *dialog)
-{
- GtkTreeView *treeview;
- GtkTreeModel *model;
- GtkTreeSelection *selection;
- GtkTreeIter iter;
-
- treeview = GTK_TREE_VIEW (WID ("mime_types_tree"));
- selection = gtk_tree_view_get_selection (treeview);
- gtk_tree_selection_get_selected (selection, &model, &iter);
-
- launch_edit_dialog (model, &iter);
-}
-
-static void
-row_activated_cb (GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn *column, GladeXML *dialog)
-{
- GtkTreeModel *model;
- GtkTreeIter iter;
-
- model = gtk_tree_view_get_model (view);
- gtk_tree_model_get_iter (model, &iter, path);
- launch_edit_dialog (model, &iter);
-}
-
-static void
-selection_count_cb (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gint *count)
-{
- if (MODEL_ENTRY_FROM_ITER (iter)->type != MODEL_ENTRY_SERVICES_CATEGORY &&
- MODEL_ENTRY_FROM_ITER (iter)->type != MODEL_ENTRY_CATEGORY)
- (*count)++;
-}
-
-static void
-selection_changed_cb (GtkTreeSelection *selection, GladeXML *dialog)
-{
- gint count = 0;
-
- gtk_tree_selection_selected_foreach (selection, (GtkTreeSelectionForeachFunc) selection_count_cb, &count);
-
- gtk_widget_set_sensitive (WID ("edit_button"), count != 0);
- gtk_widget_set_sensitive (WID ("remove_button"), count != 0);
-}
-
-static void
-remove_cb (GtkButton *button, GladeXML *dialog)
-{
- GtkTreeView *treeview;
- GtkTreeModel *model;
- GtkTreeSelection *selection;
- GtkTreeIter iter;
- ModelEntry *entry;
- GtkWidget *warning_dialog;
- gint response;
-
- warning_dialog = gtk_message_dialog_new (
- GTK_WINDOW (WID("main_dialog")),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_WARNING,
- GTK_BUTTONS_OK_CANCEL,
- _("Are you sure you want to permanently delete this entry?"));
-
- gtk_dialog_set_default_response (GTK_DIALOG (warning_dialog), GTK_RESPONSE_CANCEL);
- gtk_window_set_resizable (GTK_WINDOW (warning_dialog), FALSE);
- response = gtk_dialog_run (GTK_DIALOG (warning_dialog));
-
- if (response == GTK_RESPONSE_OK) {
- treeview = GTK_TREE_VIEW (WID ("mime_types_tree"));
- selection = gtk_tree_view_get_selection (treeview);
- gtk_tree_selection_get_selected (selection, &model, &iter);
- entry = MODEL_ENTRY_FROM_ITER (&iter);
-
- model_entry_remove_child (entry->parent, entry, model);
- model_entry_delete (entry);
- selection_changed_cb (selection, dialog);
- }
- gtk_widget_destroy (warning_dialog);
-}
-
-static void
-cb_file_type_dialog_response (GtkDialog *dialog, gint response_id)
-{
- if (response_id == GTK_RESPONSE_HELP)
- capplet_help (GTK_WINDOW (dialog),
- "user-guide.xml",
- "goscustdoc-7");
- else
- gtk_main_quit ();
-}
-
-static GladeXML *
-create_dialog (void)
-{
- GladeXML *dialog;
-
- GtkTreeModel *model;
-
- GtkWidget *treeview;
- GtkCellRenderer *renderer;
- GtkTreeViewColumn *column;
- GtkTreeSelection *selection;
-
- dialog = glade_xml_new (GNOMECC_DATA_DIR "/interfaces/file-types-properties.glade", "main_dialog", NULL);
-
- model = GTK_TREE_MODEL (mime_types_model_new (FALSE));
- treeview = WID ("mime_types_tree");
-
- gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), model);
-
- /* Icon/description column */
- column = gtk_tree_view_column_new ();
- gtk_tree_view_column_set_resizable (column, TRUE);
- gtk_tree_view_column_set_title (column, _("Description"));
-
- renderer = gtk_cell_renderer_pixbuf_new ();
- gtk_tree_view_column_pack_start (column, renderer, FALSE);
- gtk_tree_view_column_set_attributes
- (column, renderer, "pixbuf", MODEL_COLUMN_ICON, NULL);
-
- /* Description column */
- renderer = gtk_cell_renderer_text_new ();
- gtk_tree_view_column_pack_start (column, renderer, FALSE);
- gtk_tree_view_column_set_attributes
- (column, renderer, "text", MODEL_COLUMN_DESCRIPTION, NULL);
- g_object_set (G_OBJECT (treeview),
- "search_column", MODEL_COLUMN_DESCRIPTION,
- NULL);
-
- gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
- gtk_tree_view_set_expander_column (GTK_TREE_VIEW (treeview), column);
-
- /* Extensions column */
- column = gtk_tree_view_column_new ();
- gtk_tree_view_column_set_resizable (column, TRUE);
- gtk_tree_view_column_set_title (column, _("Extensions"));
-
- renderer = gtk_cell_renderer_text_new ();
- gtk_tree_view_column_pack_start (column, renderer, TRUE);
- gtk_tree_view_column_set_attributes
- (column, renderer, "text", MODEL_COLUMN_FILE_EXT, NULL);
-
- gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
-
- gtk_widget_set_sensitive (WID ("edit_button"), FALSE);
- gtk_widget_set_sensitive (WID ("remove_button"), FALSE);
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
- gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
-
- g_signal_connect (G_OBJECT (WID ("add_mime_button")), "clicked", (GCallback) add_mime_cb, dialog);
- g_signal_connect (G_OBJECT (WID ("add_service_button")), "clicked", (GCallback) add_service_cb, dialog);
- g_signal_connect (G_OBJECT (WID ("edit_button")), "clicked", (GCallback) edit_cb, dialog);
- g_signal_connect (G_OBJECT (WID ("remove_button")), "clicked", (GCallback) remove_cb, dialog);
- g_signal_connect (G_OBJECT (selection), "changed", (GCallback) selection_changed_cb, dialog);
-
- g_signal_connect (G_OBJECT (WID ("mime_types_tree")), "row-activated", (GCallback) row_activated_cb, dialog);
-
- g_signal_connect (G_OBJECT (WID ("main_dialog")),
- "response",
- G_CALLBACK (cb_file_type_dialog_response), NULL);
-
- return dialog;
-}
-
-static void
-dialog_done_cb (MimeEditDialog *dialog, gboolean done, MimeTypeInfo *info)
-{
- gtk_main_quit ();
-}
-
-
-int
-main (int argc, char **argv)
-{
- char const *mime_type = NULL;
- char const *file_name = NULL;
- GtkTreeModel *model;
- GnomeProgram *program;
- poptContext popt_ctxt = 0;
-
- bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- textdomain (GETTEXT_PACKAGE);
-
- program = gnome_program_init ("gnome-file-types-properties",
- VERSION, LIBGNOMEUI_MODULE,
- argc, argv,
- NULL);
- g_object_get (G_OBJECT (program),
- GNOME_PARAM_POPT_CONTEXT, &popt_ctxt,
- NULL);
-
- if (popt_ctxt) {
- const gchar **startup_files = poptGetArgs (popt_ctxt);
- if (startup_files != NULL) {
- mime_type = startup_files [0];
- if (mime_type != NULL)
- file_name = startup_files [1];
- }
- }
-
- if (mime_type == NULL) {
- GladeXML *dialog = create_dialog ();
- GtkWidget *mime_dialog = WID ("main_dialog");
- gtk_dialog_set_default_response (GTK_DIALOG (mime_dialog),
- GTK_RESPONSE_CLOSE);
- capplet_set_icon (mime_dialog, "gnome-ccmime.png");
- gtk_widget_show_all (mime_dialog);
- } else {
- MimeTypeInfo *info = NULL;
- GObject *mime_dialog;
-
- model = GTK_TREE_MODEL (mime_types_model_new (FALSE));
- if (strcmp (GNOME_VFS_MIME_TYPE_UNKNOWN, mime_type)) {
- info = mime_type_info_new (mime_type, model);
- mime_dialog = mime_edit_dialog_new (model, info);
- } else
- mime_dialog = mime_add_dialog_new (model, NULL, file_name);
- g_signal_connect (mime_dialog,
- "done", (GCallback) dialog_done_cb, info);
- }
-
- gtk_main ();
-
- return 0;
-}