/** * shuffle_ok_clicked_cb: * @button: * @state: * * Retrieve the information from the dialog and call the data_shuffling. * Note that we assume that the ok_button is only active if the entry fields * contain sensible data. **/ static void shuffle_ok_clicked_cb (G_GNUC_UNUSED GtkWidget *button, ShuffleState *state) { data_analysis_output_t *dao; data_shuffling_t *ds; WorkbookControl *wbc; GnmValue *input; int type; /* This is free'ed by data_shuffling_free. */ /* We later want to extend this to shuffle to other locations */ dao = dao_init (NULL, InPlaceOutput); input = gnm_expr_entry_parse_as_value ( GNM_EXPR_ENTRY (state->input_entry), state->sheet); if (dao->type == InPlaceOutput) dao_load_from_value (dao, input); type = gnm_gui_group_value (state->gui, shuffle_by); ds = data_shuffling (WORKBOOK_CONTROL (state->wbcg), dao, state->sheet, input, type); wbc = WORKBOOK_CONTROL (state->wbcg); cmd_data_shuffle (wbc, ds, state->sheet); value_release (input); gtk_widget_destroy (state->dialog); }
gboolean gnm_dao_get_data (GnmDao *gdao, data_analysis_output_t **dao) { gboolean dao_ready = FALSE; int grp_val; g_return_val_if_fail (gdao != NULL, FALSE); grp_val = gnm_gui_group_value (gdao->gui, dao_group); dao_ready = ((grp_val != 2) || gnm_expr_entry_is_cell_ref (GNM_EXPR_ENTRY (gdao->output_entry), wb_control_cur_sheet (GNM_WBC (gdao->wbcg)), TRUE)); if (dao_ready && NULL != dao) { GtkWidget *button; GnmValue *output_range = NULL; switch (grp_val) { case 0: default: *dao = dao_init_new_sheet (*dao); break; case 1: *dao = dao_init (*dao, NewWorkbookOutput); break; case 2: output_range = gnm_expr_entry_parse_as_value (GNM_EXPR_ENTRY (gdao->output_entry), wb_control_cur_sheet (GNM_WBC (gdao->wbcg))); *dao = dao_init (*dao, RangeOutput); dao_load_from_value (*dao, output_range); value_release (output_range); break; case 3: (*dao) = dao_init ((*dao), InPlaceOutput); /* It is the callers responsibility to fill the */ /* dao with the appropriate range. */ break; } button = go_gtk_builder_get_widget (gdao->gui, "autofit_button"); (*dao)->autofit_flag = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON (button)); (*dao)->clear_outputrange = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON (gdao->clear_outputrange_button)); (*dao)->retain_format = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON (gdao->retain_format_button)); (*dao)->retain_comments = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON (gdao->retain_comments_button)); (*dao)->put_formulas = (gtk_combo_box_get_active (GTK_COMBO_BOX (gdao->put_menu)) != 0); } return dao_ready; }