~ubuntu-branches/ubuntu/feisty/gnumeric/feisty

« back to all changes in this revision

Viewing changes to src/dialogs/dialog-autosave.c

  • Committer: Bazaar Package Importer
  • Author(s): Gauvain Pocentek
  • Date: 2006-12-06 13:55:23 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20061206135523-6bh02cebuk0hduva
Tags: 1.7.5-1ubuntu1
* Merge with debian experimental:
  - debian/control, debian/*-gtk-*, debian/rules,
    debian/shlibs.local: Xubuntu changes for
    gtk/gnome multibuild.
  - run intltool-update in po*
  - Build Depend on intltool

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
#include "help.h"
29
29
 
30
30
#include <workbook.h>
31
 
#include <workbook-control-gui-priv.h>
32
31
#include <gui-util.h>
33
32
#include <goffice/app/go-doc.h>
34
33
#include <glib/gi18n-lib.h>
83
82
        return result == GTK_RESPONSE_YES;
84
83
}
85
84
 
86
 
/**
87
 
 * dialog_autosave:
88
 
 * @window:
89
 
 * @state:
90
 
 *
91
 
 * Destroy the dialog and associated data structures.
92
 
 *
93
 
 **/
94
 
static gboolean
95
 
dialog_autosave_destroy (GtkObject *w, autosave_t  *state)
 
85
static void
 
86
cb_dialog_autosave_destroy (autosave_t  *state)
96
87
{
97
 
        g_return_val_if_fail (w != NULL, FALSE);
98
 
        g_return_val_if_fail (state != NULL, FALSE);
99
 
 
100
 
        if (state->gui != NULL) {
 
88
        if (state->gui != NULL)
101
89
                g_object_unref (G_OBJECT (state->gui));
102
 
                state->gui = NULL;
103
 
        }
104
 
 
105
 
        state->dialog = NULL;
106
 
 
107
90
        g_free (state);
108
 
 
109
 
        return FALSE;
110
91
}
111
92
 
112
 
/**
113
 
 * cb_autosave_cancel:
114
 
 * @button:
115
 
 * @state:
116
 
 *
117
 
 * Close (destroy) the dialog
118
 
 **/
119
93
static void
120
94
cb_autosave_cancel (G_GNUC_UNUSED GtkWidget *button,
121
95
                    autosave_t *state)
122
96
{
123
97
        gtk_widget_destroy (state->dialog);
124
 
        return;
125
98
}
126
99
 
127
 
/**
128
 
 * cb_autosave_ok:
129
 
 * @button:
130
 
 * @state:
131
 
 **/
132
100
static void
133
101
cb_autosave_ok (G_GNUC_UNUSED GtkWidget *button, autosave_t *state)
134
102
{
135
103
        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (state->autosave_on_off))) {
136
 
                int minutes;
 
104
                gboolean prompt = gtk_toggle_button_get_active
 
105
                        (GTK_TOGGLE_BUTTON (state->prompt_cb));
 
106
                int minutes, secs;
137
107
                gboolean minutes_err = entry_to_int (GTK_ENTRY (state->minutes_entry),
138
108
                                                     &minutes, TRUE);
139
109
 
140
110
                g_return_if_fail (!minutes_err); /* Why is ok active? */
141
111
 
142
 
                wbcg_autosave_set (state->wbcg, minutes,
143
 
                                   gtk_toggle_button_get_active (
144
 
                                           GTK_TOGGLE_BUTTON (state->prompt_cb)));
145
 
        } else
146
 
                wbcg_autosave_set (state->wbcg, 0, FALSE);
 
112
                secs = 60 * MIN (minutes, G_MAXINT / 60);
 
113
                g_object_set (state->wbcg,
 
114
                              "autosave-time", secs,
 
115
                              "autosave-prompt", prompt,
 
116
                              NULL);
 
117
        } else {
 
118
                g_object_set (state->wbcg, "autosave-time", 0, NULL);
 
119
        }
147
120
        gtk_widget_destroy (state->dialog);
148
121
}
149
122
 
152
125
{
153
126
        GladeXML *gui;
154
127
        autosave_t *state;
 
128
        int secs;
 
129
        gboolean prompt;
155
130
 
156
131
        g_return_if_fail (wbcg != NULL);
157
132
 
162
137
        if (gui == NULL)
163
138
                return;
164
139
 
 
140
        g_object_get (wbcg,
 
141
                      "autosave-time", &secs,
 
142
                      "autosave-prompt", &prompt,
 
143
                      NULL);
165
144
 
166
145
        state = g_new (autosave_t, 1);
167
146
        state->wbcg = wbcg;
183
162
                return;
184
163
        }
185
164
 
186
 
        float_to_entry (GTK_ENTRY (state->minutes_entry), wbcg->autosave_minutes);
 
165
        float_to_entry (GTK_ENTRY (state->minutes_entry),
 
166
                        secs / 60);
187
167
 
188
168
        gnumeric_editable_enters (GTK_WINDOW (state->dialog),
189
169
                                  state->minutes_entry);
200
180
        g_signal_connect (G_OBJECT (state->cancel_button),
201
181
                "clicked",
202
182
                G_CALLBACK (cb_autosave_cancel), state);
203
 
        g_signal_connect (G_OBJECT (state->dialog),
204
 
                "destroy",
205
 
                G_CALLBACK (dialog_autosave_destroy), state);
206
183
 
 
184
        g_object_set_data_full (G_OBJECT (state->dialog),
 
185
                "state", state, (GDestroyNotify) cb_dialog_autosave_destroy);
207
186
        gnumeric_init_help_button (
208
187
                glade_xml_get_widget (state->gui, "button3"),
209
188
                GNUMERIC_HELP_LINK_AUTOSAVE);
210
189
 
211
190
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (state->autosave_on_off),
212
 
                                      wbcg->autosave);
213
 
        gtk_toggle_button_set_active ((GtkToggleButton *) state->prompt_cb,
214
 
                                      wbcg->autosave_prompt);
 
191
                                      secs > 0);
 
192
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (state->prompt_cb),
 
193
                                      prompt);
215
194
 
216
195
        autosave_set_sensitivity (NULL, state);
217
196
        gnumeric_keyed_dialog (state->wbcg, GTK_WINDOW (state->dialog),
218
197
                               AUTOSAVE_KEY);
219
198
        gtk_widget_show (state->dialog);
220
 
 
221
199
}