aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/menus/gal-view-instance-save-as-dialog.c
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/menus/gal-view-instance-save-as-dialog.c')
-rw-r--r--widgets/menus/gal-view-instance-save-as-dialog.c358
1 files changed, 0 insertions, 358 deletions
diff --git a/widgets/menus/gal-view-instance-save-as-dialog.c b/widgets/menus/gal-view-instance-save-as-dialog.c
deleted file mode 100644
index df1d1ca743..0000000000
--- a/widgets/menus/gal-view-instance-save-as-dialog.c
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) version 3.
- *
- * 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with the program; if not, see <http://www.gnu.org/licenses/>
- *
- *
- * Authors:
- * Chris Lahey <clahey@ximian.com>
- *
- * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib/gi18n.h>
-#include "e-util/e-util.h"
-#include "e-util/e-util-private.h"
-
-#include "gal-define-views-model.h"
-#include "gal-view-instance-save-as-dialog.h"
-#include "gal-view-new-dialog.h"
-
-G_DEFINE_TYPE (GalViewInstanceSaveAsDialog, gal_view_instance_save_as_dialog, GTK_TYPE_DIALOG)
-
-enum {
- PROP_0,
- PROP_INSTANCE
-};
-
-enum {
- COL_GALVIEW_NAME,
- COL_GALVIEW_DATA
-};
-
-/* Static functions */
-static void
-gal_view_instance_save_as_dialog_set_instance (GalViewInstanceSaveAsDialog *dialog,
- GalViewInstance *instance)
-{
- gint i;
- GtkListStore *store;
- GtkCellRenderer *renderer;
- dialog->instance = instance;
-
- store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_POINTER);
-
- for (i = 0; i < instance->collection->view_count; i++) {
- GalViewCollectionItem *item = instance->collection->view_data[i];
- GtkTreeIter iter;
- gchar *title = NULL;
-
- /* hide built in views */
- /*if (item->built_in == 1)
- continue;*/
-
- title = e_str_without_underscores (item->title);
-
- gtk_list_store_append (store, &iter);
- gtk_list_store_set (
- store, &iter,
- COL_GALVIEW_NAME, title,
- COL_GALVIEW_DATA, item,
- -1);
-
- g_free (title);
- }
-
- gtk_tree_sortable_set_sort_column_id (
- GTK_TREE_SORTABLE (store),
- COL_GALVIEW_NAME, GTK_SORT_ASCENDING);
-
- /* attaching treeview to model */
- gtk_tree_view_set_model (dialog->treeview, GTK_TREE_MODEL (store));
- gtk_tree_view_set_search_column (dialog->treeview, COL_GALVIEW_NAME);
-
- dialog->model = GTK_TREE_MODEL (store);
-
- renderer = gtk_cell_renderer_text_new ();
-
- gtk_tree_view_insert_column_with_attributes (
- dialog->treeview,
- COL_GALVIEW_NAME, _("Name"),
- renderer, "text", COL_GALVIEW_NAME,
- NULL);
-
- /* set sort column */
- gtk_tree_sortable_set_sort_column_id (
- GTK_TREE_SORTABLE (dialog->model),
- COL_GALVIEW_NAME, GTK_SORT_ASCENDING);
-}
-
-static void
-gvisad_setup_validate_button (GalViewInstanceSaveAsDialog *dialog)
-{
- if ((dialog->toggle == GAL_VIEW_INSTANCE_SAVE_AS_DIALOG_TOGGLE_CREATE
- && g_utf8_strlen (gtk_entry_get_text (GTK_ENTRY (dialog->entry_create)), -1) > 0)
- || dialog->toggle == GAL_VIEW_INSTANCE_SAVE_AS_DIALOG_TOGGLE_REPLACE) {
- gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, TRUE);
- } else {
- gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, FALSE);
- }
-}
-
-static void
-gvisad_setup_radio_buttons (GalViewInstanceSaveAsDialog *dialog)
-{
- GtkWidget *widget;
-
- widget = dialog->scrolledwindow;
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->radiobutton_replace))) {
- GtkTreeIter iter;
- GtkTreeSelection *selection;
-
- selection = gtk_tree_view_get_selection (dialog->treeview);
- if (!gtk_tree_selection_get_selected (selection, &dialog->model, &iter)) {
- if (gtk_tree_model_get_iter_first (dialog->model, &iter)) {
- gtk_tree_selection_select_iter (selection, &iter);
- }
- }
-
- gtk_widget_set_sensitive (widget, TRUE);
- dialog->toggle = GAL_VIEW_INSTANCE_SAVE_AS_DIALOG_TOGGLE_REPLACE;
- } else {
- gtk_widget_set_sensitive (widget, FALSE);
- }
-
- widget = dialog->entry_create;
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->radiobutton_create))) {
- gtk_widget_set_sensitive (widget, TRUE);
- dialog->toggle = GAL_VIEW_INSTANCE_SAVE_AS_DIALOG_TOGGLE_CREATE;
- } else {
- gtk_widget_set_sensitive (widget, FALSE);
- }
-
- gvisad_setup_validate_button (dialog);
-}
-
-static void
-gvisad_radio_toggled (GtkWidget *widget,
- GalViewInstanceSaveAsDialog *dialog)
-{
- gvisad_setup_radio_buttons (dialog);
-}
-
-static void
-gvisad_entry_changed (GtkWidget *widget,
- GalViewInstanceSaveAsDialog *dialog)
-{
- gvisad_setup_validate_button (dialog);
-}
-
-/* Method override implementations */
-static void
-gal_view_instance_save_as_dialog_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GalViewInstanceSaveAsDialog *dialog;
-
- dialog = GAL_VIEW_INSTANCE_SAVE_AS_DIALOG (object);
-
- switch (property_id) {
- case PROP_INSTANCE:
- if (g_value_get_object (value))
- gal_view_instance_save_as_dialog_set_instance (dialog, GAL_VIEW_INSTANCE (g_value_get_object (value)));
- else
- gal_view_instance_save_as_dialog_set_instance (dialog, NULL);
- break;
-
- default:
- return;
- }
-}
-
-static void
-gal_view_instance_save_as_dialog_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GalViewInstanceSaveAsDialog *dialog;
-
- dialog = GAL_VIEW_INSTANCE_SAVE_AS_DIALOG (object);
-
- switch (property_id) {
- case PROP_INSTANCE:
- g_value_set_object (value, dialog->instance);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-static void
-gal_view_instance_save_as_dialog_dispose (GObject *object)
-{
- GalViewInstanceSaveAsDialog *gal_view_instance_save_as_dialog = GAL_VIEW_INSTANCE_SAVE_AS_DIALOG (object);
-
- if (gal_view_instance_save_as_dialog->builder)
- g_object_unref (gal_view_instance_save_as_dialog->builder);
- gal_view_instance_save_as_dialog->builder = NULL;
-
- /* Chain up to parent's dispose() method. */
- G_OBJECT_CLASS (gal_view_instance_save_as_dialog_parent_class)->dispose (object);
-}
-
-/* Init functions */
-static void
-gal_view_instance_save_as_dialog_class_init (GalViewInstanceSaveAsDialogClass *class)
-{
- GObjectClass *object_class;
-
- object_class = (GObjectClass *) class;
-
- object_class->set_property = gal_view_instance_save_as_dialog_set_property;
- object_class->get_property = gal_view_instance_save_as_dialog_get_property;
- object_class->dispose = gal_view_instance_save_as_dialog_dispose;
-
- g_object_class_install_property (
- object_class,
- PROP_INSTANCE,
- g_param_spec_object (
- "instance",
- "Instance",
- NULL,
- GAL_VIEW_INSTANCE_TYPE,
- G_PARAM_READWRITE));
-}
-
-static void
-gal_view_instance_save_as_dialog_init (GalViewInstanceSaveAsDialog *dialog)
-{
- GtkWidget *content_area;
- GtkWidget *widget;
-
- dialog->instance = NULL;
- dialog->model = NULL;
- dialog->collection = NULL;
-
- dialog->builder = gtk_builder_new ();
- e_load_ui_builder_definition (
- dialog->builder, "gal-view-instance-save-as-dialog.ui");
-
- widget = e_builder_get_widget (dialog->builder, "vbox-top");
- content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
- gtk_box_pack_start (GTK_BOX (content_area), widget, TRUE, TRUE, 0);
-
- /* TODO: add position/size saving/restoring */
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_window_set_default_size (GTK_WINDOW (dialog), 300, 360);
-
- gtk_dialog_add_buttons (
- GTK_DIALOG (dialog),
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_SAVE, GTK_RESPONSE_OK,
- NULL);
-
- dialog->scrolledwindow = e_builder_get_widget (dialog->builder, "scrolledwindow2");
- dialog->treeview = GTK_TREE_VIEW (e_builder_get_widget (dialog->builder, "custom-replace"));
- dialog->entry_create = e_builder_get_widget (dialog->builder, "entry-create");
- dialog->radiobutton_replace = e_builder_get_widget (dialog->builder, "radiobutton-replace");
- dialog->radiobutton_create = e_builder_get_widget (dialog->builder, "radiobutton-create");
-
- gtk_tree_view_set_reorderable (GTK_TREE_VIEW (dialog->treeview), FALSE);
- gtk_tree_view_set_headers_visible (dialog->treeview, FALSE);
-
- g_signal_connect (
- dialog->radiobutton_replace, "toggled",
- G_CALLBACK (gvisad_radio_toggled), dialog);
- g_signal_connect (
- dialog->radiobutton_create, "toggled",
- G_CALLBACK (gvisad_radio_toggled), dialog);
- g_signal_connect (
- dialog->entry_create, "changed",
- G_CALLBACK (gvisad_entry_changed), dialog);
-
- gvisad_setup_radio_buttons (dialog);
- gvisad_setup_validate_button (dialog);
-
- gtk_window_set_title (GTK_WINDOW (dialog), _("Save Current View"));
- gtk_widget_show (GTK_WIDGET (dialog));
-}
-
-/* External methods */
-/**
- * gal_view_instance_save_as_dialog_new
- *
- * Returns a new dialog for defining views.
- *
- * Returns: The GalViewInstanceSaveAsDialog.
- */
-GtkWidget *
-gal_view_instance_save_as_dialog_new (GalViewInstance *instance)
-{
- GtkWidget *widget = g_object_new (GAL_TYPE_VIEW_INSTANCE_SAVE_AS_DIALOG, NULL);
- gal_view_instance_save_as_dialog_set_instance (GAL_VIEW_INSTANCE_SAVE_AS_DIALOG (widget), instance);
- return widget;
-}
-
-void
-gal_view_instance_save_as_dialog_save (GalViewInstanceSaveAsDialog *dialog)
-{
- GalView *view = gal_view_instance_get_current_view (dialog->instance);
- const gchar *title;
- gint n;
- const gchar *id = NULL;
- GalViewCollectionItem *item;
-
- view = gal_view_clone (view);
- switch (dialog->toggle) {
- case GAL_VIEW_INSTANCE_SAVE_AS_DIALOG_TOGGLE_REPLACE:
- if (dialog->treeview) {
- GtkTreeIter iter;
- GtkTreeSelection *selection;
-
- selection = gtk_tree_view_get_selection (dialog->treeview);
- if (gtk_tree_selection_get_selected (selection, &dialog->model, &iter)) {
- gtk_tree_model_get (dialog->model, &iter, COL_GALVIEW_DATA, &item, -1);
-
- for (n = 0; n < dialog->instance->collection->view_count; n++) {
- if (item == dialog->instance->collection->view_data[n]) {
- id = gal_view_collection_set_nth_view (dialog->instance->collection, n, view);
- gal_view_collection_save (dialog->instance->collection);
- }
- }
- }
-
- }
- break;
-
- case GAL_VIEW_INSTANCE_SAVE_AS_DIALOG_TOGGLE_CREATE:
- if (dialog->entry_create && GTK_IS_ENTRY (dialog->entry_create)) {
- title = gtk_entry_get_text (GTK_ENTRY (dialog->entry_create));
- id = gal_view_collection_append_with_title (dialog->instance->collection, title, view);
- gal_view_collection_save (dialog->instance->collection);
- }
- break;
- }
-
- if (id) {
- gal_view_instance_set_current_view_id (dialog->instance, id);
- }
-}