/** * dialog_fill_series_tool_init: * @state: * * Create the dialog (guru). * **/ static void dialog_fill_series_tool_init (FillSeriesState *state) { GtkWidget *radio; char const *button; GnmRange const *sel; gboolean prefer_rows = FALSE; sel = selection_first_range (state->base.sv, NULL, NULL); /* Set the sensitivity of Unit day. */ radio = go_gtk_builder_get_widget (state->base.gui, "type_date"); g_signal_connect (G_OBJECT (radio), "clicked", G_CALLBACK (cb_type_button_clicked), state); state->stop_entry = go_gtk_builder_get_widget (state->base.gui, "stop_entry"); g_signal_connect_after (G_OBJECT (state->stop_entry), "changed", G_CALLBACK (cb_fill_series_update_sensitivity), state); state->step_entry = go_gtk_builder_get_widget (state->base.gui, "step_entry"); g_signal_connect_after (G_OBJECT (state->step_entry), "changed", G_CALLBACK (cb_fill_series_update_sensitivity), state); state->start_entry = go_gtk_builder_get_widget (state->base.gui, "start_entry"); g_signal_connect_after (G_OBJECT (state->start_entry), "changed", G_CALLBACK (cb_fill_series_update_sensitivity), state); state->date_steps_type = go_gtk_builder_get_widget (state->base.gui, "table-date-unit"); gtk_widget_set_sensitive (state->date_steps_type, FALSE); button = (sel == NULL || (prefer_rows = (range_width (sel) >= range_height (sel)))) ? "series_in_rows" : "series_in_cols"; radio = go_gtk_builder_get_widget (state->base.gui, button); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), TRUE); if (sel != NULL) { GnmCell *cell_start; GnmCell *cell_end; dialog_tool_preset_to_range (&state->base); cell_start = sheet_cell_get (state->base.sheet, sel->start.col, sel->start.row); if (cell_start) { char *content = gnm_cell_get_rendered_text (cell_start); if (content) { gtk_entry_set_text (GTK_ENTRY (state->start_entry), content); g_free (content); } } cell_end = prefer_rows ? sheet_cell_get (state->base.sheet, sel->end.col, sel->start.row) : sheet_cell_get (state->base.sheet, sel->start.col, sel->end.row); if (cell_end) { char *content = gnm_cell_get_rendered_text (cell_end); if (content) { gtk_entry_set_text (GTK_ENTRY (state->stop_entry), content); g_free (content); } } if (cell_start && cell_end) { float_to_entry (GTK_ENTRY(state->step_entry), (value_get_as_float(cell_end->value) - value_get_as_float(cell_start->value)) / (prefer_rows ? (sel->end.col-sel->start.col) : (sel->end.row-sel->start.row))); } } cb_fill_series_update_sensitivity (NULL, state); }
void dialog_autosave (WBCGtk *wbcg) { GtkBuilder *gui; autosave_t *state; int secs; gboolean prompt; g_return_if_fail (wbcg != NULL); if (gnm_dialog_raise_if_exists (wbcg, AUTOSAVE_KEY)) return; gui = gnm_gtk_builder_load ("autosave.ui", NULL, GO_CMD_CONTEXT (wbcg)); if (gui == NULL) return; g_object_get (wbcg, "autosave-time", &secs, "autosave-prompt", &prompt, NULL); state = g_new (autosave_t, 1); state->wbcg = wbcg; state->wb = wb_control_get_workbook (GNM_WBC (wbcg)); state->dialog = go_gtk_builder_get_widget (gui, "AutoSave"); state->minutes_entry = go_gtk_builder_get_widget (gui, "minutes"); state->prompt_cb = go_gtk_builder_get_widget (gui, "prompt_on_off"); state->autosave_on_off = go_gtk_builder_get_widget (gui, "autosave_on_off"); state->ok_button = go_gtk_builder_get_widget (gui, "button1"); state->cancel_button = go_gtk_builder_get_widget (gui, "button2"); if (!state->dialog || !state->minutes_entry || !state->prompt_cb || !state->autosave_on_off) { go_gtk_notice_dialog (wbcg_toplevel (wbcg), GTK_MESSAGE_ERROR, _("Could not create the autosave dialog.")); g_free (state); return; } float_to_entry (GTK_ENTRY (state->minutes_entry), secs / 60); gnm_editable_enters (GTK_WINDOW (state->dialog), state->minutes_entry); g_signal_connect (G_OBJECT (state->autosave_on_off), "toggled", G_CALLBACK (autosave_set_sensitivity), state); g_signal_connect (G_OBJECT (state->minutes_entry), "changed", G_CALLBACK (autosave_set_sensitivity), state); g_signal_connect (G_OBJECT (state->ok_button), "clicked", G_CALLBACK (cb_autosave_ok), state); g_signal_connect (G_OBJECT (state->cancel_button), "clicked", G_CALLBACK (cb_autosave_cancel), state); g_object_set_data_full (G_OBJECT (state->dialog), "state", state, (GDestroyNotify)g_free); gnm_init_help_button ( go_gtk_builder_get_widget (gui, "button3"), GNUMERIC_HELP_LINK_AUTOSAVE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (state->autosave_on_off), secs > 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (state->prompt_cb), prompt); autosave_set_sensitivity (NULL, state); gnm_keyed_dialog (state->wbcg, GTK_WINDOW (state->dialog), AUTOSAVE_KEY); gtk_widget_show (state->dialog); g_object_unref (gui); }