|
Packit Service |
de44cd |
/*
|
|
Packit Service |
de44cd |
* This program is free software; you can redistribute it and/or modify it
|
|
Packit Service |
de44cd |
* under the terms of the GNU Lesser General Public License as published by
|
|
Packit Service |
de44cd |
* the Free Software Foundation.
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
* This program is distributed in the hope that it will be useful, but
|
|
Packit Service |
de44cd |
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
Packit Service |
de44cd |
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
Packit Service |
de44cd |
* for more details.
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
* You should have received a copy of the GNU Lesser General Public License
|
|
Packit Service |
de44cd |
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
* Authors:
|
|
Packit Service |
de44cd |
* Chris Lahey <clahey@ximian.com>
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
*/
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
#include "evolution-config.h"
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
#include <glib/gi18n.h>
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
#include "e-misc-utils.h"
|
|
Packit Service |
de44cd |
#include "e-util-private.h"
|
|
Packit Service |
de44cd |
#include "gal-view-etable.h"
|
|
Packit Service |
de44cd |
#include "gal-view-instance-save-as-dialog.h"
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
G_DEFINE_TYPE (GalViewInstanceSaveAsDialog, gal_view_instance_save_as_dialog, GTK_TYPE_DIALOG)
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
enum {
|
|
Packit Service |
de44cd |
PROP_0,
|
|
Packit Service |
de44cd |
PROP_INSTANCE
|
|
Packit Service |
de44cd |
};
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
enum {
|
|
Packit Service |
de44cd |
COL_GALVIEW_NAME,
|
|
Packit Service |
de44cd |
COL_GALVIEW_DATA
|
|
Packit Service |
de44cd |
};
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
/* Static functions */
|
|
Packit Service |
de44cd |
static void
|
|
Packit Service |
de44cd |
gal_view_instance_save_as_dialog_set_instance (GalViewInstanceSaveAsDialog *dialog,
|
|
Packit Service |
de44cd |
GalViewInstance *instance)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
GtkListStore *store;
|
|
Packit Service |
de44cd |
GtkCellRenderer *renderer;
|
|
Packit Service |
de44cd |
gint ii, view_count;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
dialog->instance = instance;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_POINTER);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
view_count = gal_view_collection_get_count (instance->collection);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
for (ii = 0; ii < view_count; ii++) {
|
|
Packit Service |
de44cd |
GalViewCollectionItem *item;
|
|
Packit Service |
de44cd |
GtkTreeIter iter;
|
|
Packit Service |
de44cd |
gchar *title = NULL;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
item = gal_view_collection_get_view_item (
|
|
Packit Service |
de44cd |
instance->collection, ii);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
title = e_str_without_underscores (item->title);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
gtk_list_store_append (store, &iter);
|
|
Packit Service |
de44cd |
gtk_list_store_set (
|
|
Packit Service |
de44cd |
store, &iter,
|
|
Packit Service |
de44cd |
COL_GALVIEW_NAME, title,
|
|
Packit Service |
de44cd |
COL_GALVIEW_DATA, item,
|
|
Packit Service |
de44cd |
-1);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
g_free (title);
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
gtk_tree_sortable_set_sort_column_id (
|
|
Packit Service |
de44cd |
GTK_TREE_SORTABLE (store),
|
|
Packit Service |
de44cd |
COL_GALVIEW_NAME, GTK_SORT_ASCENDING);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
/* attaching treeview to model */
|
|
Packit Service |
de44cd |
gtk_tree_view_set_model (dialog->treeview, GTK_TREE_MODEL (store));
|
|
Packit Service |
de44cd |
gtk_tree_view_set_search_column (dialog->treeview, COL_GALVIEW_NAME);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
dialog->model = GTK_TREE_MODEL (store);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
renderer = gtk_cell_renderer_text_new ();
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
gtk_tree_view_insert_column_with_attributes (
|
|
Packit Service |
de44cd |
dialog->treeview,
|
|
Packit Service |
de44cd |
COL_GALVIEW_NAME, _("Name"),
|
|
Packit Service |
de44cd |
renderer, "text", COL_GALVIEW_NAME,
|
|
Packit Service |
de44cd |
NULL);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
/* set sort column */
|
|
Packit Service |
de44cd |
gtk_tree_sortable_set_sort_column_id (
|
|
Packit Service |
de44cd |
GTK_TREE_SORTABLE (dialog->model),
|
|
Packit Service |
de44cd |
COL_GALVIEW_NAME, GTK_SORT_ASCENDING);
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
static void
|
|
Packit Service |
de44cd |
gvisad_setup_validate_button (GalViewInstanceSaveAsDialog *dialog)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
if ((dialog->toggle == GAL_VIEW_INSTANCE_SAVE_AS_DIALOG_TOGGLE_CREATE
|
|
Packit Service |
de44cd |
&& g_utf8_strlen (gtk_entry_get_text (GTK_ENTRY (dialog->entry_create)), -1) > 0)
|
|
Packit Service |
de44cd |
|| dialog->toggle == GAL_VIEW_INSTANCE_SAVE_AS_DIALOG_TOGGLE_REPLACE) {
|
|
Packit Service |
de44cd |
gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, TRUE);
|
|
Packit Service |
de44cd |
} else {
|
|
Packit Service |
de44cd |
gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, FALSE);
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
static void
|
|
Packit Service |
de44cd |
gvisad_setup_radio_buttons (GalViewInstanceSaveAsDialog *dialog)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
GtkWidget *widget;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
widget = dialog->scrolledwindow;
|
|
Packit Service |
de44cd |
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->radiobutton_replace))) {
|
|
Packit Service |
de44cd |
GtkTreeIter iter;
|
|
Packit Service |
de44cd |
GtkTreeSelection *selection;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
selection = gtk_tree_view_get_selection (dialog->treeview);
|
|
Packit Service |
de44cd |
if (!gtk_tree_selection_get_selected (selection, &dialog->model, &iter)) {
|
|
Packit Service |
de44cd |
if (gtk_tree_model_get_iter_first (dialog->model, &iter)) {
|
|
Packit Service |
de44cd |
gtk_tree_selection_select_iter (selection, &iter);
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
gtk_widget_set_sensitive (widget, TRUE);
|
|
Packit Service |
de44cd |
dialog->toggle = GAL_VIEW_INSTANCE_SAVE_AS_DIALOG_TOGGLE_REPLACE;
|
|
Packit Service |
de44cd |
} else {
|
|
Packit Service |
de44cd |
gtk_widget_set_sensitive (widget, FALSE);
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
widget = dialog->entry_create;
|
|
Packit Service |
de44cd |
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->radiobutton_create))) {
|
|
Packit Service |
de44cd |
gtk_widget_set_sensitive (widget, TRUE);
|
|
Packit Service |
de44cd |
dialog->toggle = GAL_VIEW_INSTANCE_SAVE_AS_DIALOG_TOGGLE_CREATE;
|
|
Packit Service |
de44cd |
} else {
|
|
Packit Service |
de44cd |
gtk_widget_set_sensitive (widget, FALSE);
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
gvisad_setup_validate_button (dialog);
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
static void
|
|
Packit Service |
de44cd |
gvisad_radio_toggled (GtkWidget *widget,
|
|
Packit Service |
de44cd |
GalViewInstanceSaveAsDialog *dialog)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
gvisad_setup_radio_buttons (dialog);
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
static void
|
|
Packit Service |
de44cd |
gvisad_entry_changed (GtkWidget *widget,
|
|
Packit Service |
de44cd |
GalViewInstanceSaveAsDialog *dialog)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
gvisad_setup_validate_button (dialog);
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
/* Method override implementations */
|
|
Packit Service |
de44cd |
static void
|
|
Packit Service |
de44cd |
gal_view_instance_save_as_dialog_set_property (GObject *object,
|
|
Packit Service |
de44cd |
guint property_id,
|
|
Packit Service |
de44cd |
const GValue *value,
|
|
Packit Service |
de44cd |
GParamSpec *pspec)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
GalViewInstanceSaveAsDialog *dialog;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
dialog = GAL_VIEW_INSTANCE_SAVE_AS_DIALOG (object);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
switch (property_id) {
|
|
Packit Service |
de44cd |
case PROP_INSTANCE:
|
|
Packit Service |
de44cd |
if (g_value_get_object (value))
|
|
Packit Service |
de44cd |
gal_view_instance_save_as_dialog_set_instance (dialog, GAL_VIEW_INSTANCE (g_value_get_object (value)));
|
|
Packit Service |
de44cd |
else
|
|
Packit Service |
de44cd |
gal_view_instance_save_as_dialog_set_instance (dialog, NULL);
|
|
Packit Service |
de44cd |
break;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
default:
|
|
Packit Service |
de44cd |
return;
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
static void
|
|
Packit Service |
de44cd |
gal_view_instance_save_as_dialog_get_property (GObject *object,
|
|
Packit Service |
de44cd |
guint property_id,
|
|
Packit Service |
de44cd |
GValue *value,
|
|
Packit Service |
de44cd |
GParamSpec *pspec)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
GalViewInstanceSaveAsDialog *dialog;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
dialog = GAL_VIEW_INSTANCE_SAVE_AS_DIALOG (object);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
switch (property_id) {
|
|
Packit Service |
de44cd |
case PROP_INSTANCE:
|
|
Packit Service |
de44cd |
g_value_set_object (value, dialog->instance);
|
|
Packit Service |
de44cd |
break;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
default:
|
|
Packit Service |
de44cd |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
|
Packit Service |
de44cd |
break;
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
static void
|
|
Packit Service |
de44cd |
gal_view_instance_save_as_dialog_dispose (GObject *object)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
GalViewInstanceSaveAsDialog *gal_view_instance_save_as_dialog = GAL_VIEW_INSTANCE_SAVE_AS_DIALOG (object);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
if (gal_view_instance_save_as_dialog->builder)
|
|
Packit Service |
de44cd |
g_object_unref (gal_view_instance_save_as_dialog->builder);
|
|
Packit Service |
de44cd |
gal_view_instance_save_as_dialog->builder = NULL;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
/* Chain up to parent's dispose() method. */
|
|
Packit Service |
de44cd |
G_OBJECT_CLASS (gal_view_instance_save_as_dialog_parent_class)->dispose (object);
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
/* Init functions */
|
|
Packit Service |
de44cd |
static void
|
|
Packit Service |
de44cd |
gal_view_instance_save_as_dialog_class_init (GalViewInstanceSaveAsDialogClass *class)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
GObjectClass *object_class;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
object_class = (GObjectClass *) class;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
object_class->set_property = gal_view_instance_save_as_dialog_set_property;
|
|
Packit Service |
de44cd |
object_class->get_property = gal_view_instance_save_as_dialog_get_property;
|
|
Packit Service |
de44cd |
object_class->dispose = gal_view_instance_save_as_dialog_dispose;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
g_object_class_install_property (
|
|
Packit Service |
de44cd |
object_class,
|
|
Packit Service |
de44cd |
PROP_INSTANCE,
|
|
Packit Service |
de44cd |
g_param_spec_object (
|
|
Packit Service |
de44cd |
"instance",
|
|
Packit Service |
de44cd |
"Instance",
|
|
Packit Service |
de44cd |
NULL,
|
|
Packit Service |
de44cd |
GAL_TYPE_VIEW_INSTANCE,
|
|
Packit Service |
de44cd |
G_PARAM_READWRITE));
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
static void
|
|
Packit Service |
de44cd |
gal_view_instance_save_as_dialog_init (GalViewInstanceSaveAsDialog *dialog)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
GtkWidget *content_area;
|
|
Packit Service |
de44cd |
GtkWidget *widget;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
dialog->instance = NULL;
|
|
Packit Service |
de44cd |
dialog->model = NULL;
|
|
Packit Service |
de44cd |
dialog->collection = NULL;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
dialog->builder = gtk_builder_new ();
|
|
Packit Service |
de44cd |
e_load_ui_builder_definition (
|
|
Packit Service |
de44cd |
dialog->builder, "gal-view-instance-save-as-dialog.ui");
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
widget = e_builder_get_widget (dialog->builder, "vbox-top");
|
|
Packit Service |
de44cd |
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
|
|
Packit Service |
de44cd |
gtk_box_pack_start (GTK_BOX (content_area), widget, TRUE, TRUE, 0);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
/* TODO: add position/size saving/restoring */
|
|
Packit Service |
de44cd |
gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
|
|
Packit Service |
de44cd |
gtk_window_set_default_size (GTK_WINDOW (dialog), 300, 360);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
gtk_dialog_add_buttons (
|
|
Packit Service |
de44cd |
GTK_DIALOG (dialog),
|
|
Packit Service |
de44cd |
_("_Cancel"), GTK_RESPONSE_CANCEL,
|
|
Packit Service |
de44cd |
_("_Save"), GTK_RESPONSE_OK,
|
|
Packit Service |
de44cd |
NULL);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
dialog->scrolledwindow = e_builder_get_widget (dialog->builder, "scrolledwindow2");
|
|
Packit Service |
de44cd |
dialog->treeview = GTK_TREE_VIEW (e_builder_get_widget (dialog->builder, "custom-replace"));
|
|
Packit Service |
de44cd |
dialog->entry_create = e_builder_get_widget (dialog->builder, "entry-create");
|
|
Packit Service |
de44cd |
dialog->radiobutton_replace = e_builder_get_widget (dialog->builder, "radiobutton-replace");
|
|
Packit Service |
de44cd |
dialog->radiobutton_create = e_builder_get_widget (dialog->builder, "radiobutton-create");
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
gtk_tree_view_set_reorderable (GTK_TREE_VIEW (dialog->treeview), FALSE);
|
|
Packit Service |
de44cd |
gtk_tree_view_set_headers_visible (dialog->treeview, FALSE);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
g_signal_connect (
|
|
Packit Service |
de44cd |
dialog->radiobutton_replace, "toggled",
|
|
Packit Service |
de44cd |
G_CALLBACK (gvisad_radio_toggled), dialog);
|
|
Packit Service |
de44cd |
g_signal_connect (
|
|
Packit Service |
de44cd |
dialog->radiobutton_create, "toggled",
|
|
Packit Service |
de44cd |
G_CALLBACK (gvisad_radio_toggled), dialog);
|
|
Packit Service |
de44cd |
g_signal_connect (
|
|
Packit Service |
de44cd |
dialog->entry_create, "changed",
|
|
Packit Service |
de44cd |
G_CALLBACK (gvisad_entry_changed), dialog);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
gvisad_setup_radio_buttons (dialog);
|
|
Packit Service |
de44cd |
gvisad_setup_validate_button (dialog);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
gtk_window_set_title (GTK_WINDOW (dialog), _("Save Current View"));
|
|
Packit Service |
de44cd |
gtk_widget_show (GTK_WIDGET (dialog));
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
/* External methods */
|
|
Packit Service |
de44cd |
/**
|
|
Packit Service |
de44cd |
* gal_view_instance_save_as_dialog_new
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
* Returns a new dialog for defining views.
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
* Returns: The GalViewInstanceSaveAsDialog.
|
|
Packit Service |
de44cd |
*/
|
|
Packit Service |
de44cd |
GtkWidget *
|
|
Packit Service |
de44cd |
gal_view_instance_save_as_dialog_new (GalViewInstance *instance)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
GtkWidget *widget = g_object_new (GAL_TYPE_VIEW_INSTANCE_SAVE_AS_DIALOG, NULL);
|
|
Packit Service |
de44cd |
gal_view_instance_save_as_dialog_set_instance (GAL_VIEW_INSTANCE_SAVE_AS_DIALOG (widget), instance);
|
|
Packit Service |
de44cd |
return widget;
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
void
|
|
Packit Service |
de44cd |
gal_view_instance_save_as_dialog_save (GalViewInstanceSaveAsDialog *dialog)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
GalView *view = gal_view_instance_get_current_view (dialog->instance);
|
|
Packit Service |
de44cd |
const gchar *title;
|
|
Packit Service |
de44cd |
const gchar *id = NULL;
|
|
Packit Service |
de44cd |
GalViewCollection *collection;
|
|
Packit Service |
de44cd |
GalViewCollectionItem *item;
|
|
Packit Service |
de44cd |
gint ii, view_count;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
collection = dialog->instance->collection;
|
|
Packit Service |
de44cd |
view_count = gal_view_collection_get_count (collection);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
view = gal_view_clone (view);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
switch (dialog->toggle) {
|
|
Packit Service |
de44cd |
case GAL_VIEW_INSTANCE_SAVE_AS_DIALOG_TOGGLE_REPLACE:
|
|
Packit Service |
de44cd |
if (dialog->treeview) {
|
|
Packit Service |
de44cd |
GtkTreeIter iter;
|
|
Packit Service |
de44cd |
GtkTreeSelection *selection;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
selection = gtk_tree_view_get_selection (dialog->treeview);
|
|
Packit Service |
de44cd |
if (gtk_tree_selection_get_selected (selection, &dialog->model, &iter)) {
|
|
Packit Service |
de44cd |
gtk_tree_model_get (dialog->model, &iter, COL_GALVIEW_DATA, &item, -1);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
for (ii = 0; ii < view_count; ii++) {
|
|
Packit Service |
de44cd |
GalViewCollectionItem *candidate;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
candidate = gal_view_collection_get_view_item (collection, ii);
|
|
Packit Service |
de44cd |
if (item == candidate) {
|
|
Packit Service |
de44cd |
id = gal_view_collection_set_nth_view (collection, ii, view);
|
|
Packit Service |
de44cd |
gal_view_collection_save (collection);
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
break;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
case GAL_VIEW_INSTANCE_SAVE_AS_DIALOG_TOGGLE_CREATE:
|
|
Packit Service |
de44cd |
if (dialog->entry_create && GTK_IS_ENTRY (dialog->entry_create)) {
|
|
Packit Service |
de44cd |
title = gtk_entry_get_text (GTK_ENTRY (dialog->entry_create));
|
|
Packit Service |
de44cd |
id = gal_view_collection_append_with_title (collection, title, view);
|
|
Packit Service |
de44cd |
gal_view_collection_save (collection);
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
break;
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
/* The view stored in the collection should not be left attached, but detach it
|
|
Packit Service |
de44cd |
only after it's saved, to have data to save. */
|
|
Packit Service |
de44cd |
if (GAL_IS_VIEW_ETABLE (view))
|
|
Packit Service |
de44cd |
gal_view_etable_detach (GAL_VIEW_ETABLE (view));
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
if (id) {
|
|
Packit Service |
de44cd |
gal_view_instance_set_current_view_id (dialog->instance, id);
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
g_clear_object (&view);
|
|
Packit Service |
de44cd |
}
|