static void dialog_goto_load_selection (GotoState *state) { SheetView *sv = wb_control_cur_sheet_view (WORKBOOK_CONTROL (state->wbcg)); GnmRange const *first = selection_first_range (sv, NULL, NULL); if (first != NULL) { gint rows = range_height (first); gint cols = range_width (first); GnmConventionsOut out; GString *str = g_string_new (NULL); GnmParsePos pp; GnmRangeRef rr; out.accum = str; out.pp = parse_pos_init_sheet (&pp, sv->sheet); out.convs = sheet_get_conventions (sv->sheet); gnm_cellref_init (&rr.a, NULL, first->start.col, first->start.row, TRUE); gnm_cellref_init (&rr.b, NULL, first->start.col, first->start.row, TRUE); rangeref_as_string (&out, &rr); gtk_entry_set_text (state->goto_text, str->str); gtk_editable_select_region (GTK_EDITABLE (state->goto_text), 0, -1); g_string_free (str, TRUE); cb_dialog_goto_update_sensitivity (NULL, state); gtk_spin_button_set_value (state->spin_rows, rows); gtk_spin_button_set_value (state->spin_cols, cols); } else cb_dialog_goto_update_sensitivity (NULL, state); }
static void xlsx_rangeref_as_string (GnmConventionsOut *out, GnmRangeRef const *ref) { if (ref->a.sheet) { GnmRangeRef local_ref = *ref; xlsx_add_extern_id (out, ref->a.sheet->workbook); local_ref.a.sheet = local_ref.b.sheet = NULL; g_string_append (out->accum, ref->a.sheet->name_quoted); if (ref->b.sheet != NULL && ref->a.sheet != ref->b.sheet) { g_string_append_c (out->accum, ':'); g_string_append (out->accum, ref->b.sheet->name_quoted); } g_string_append_c (out->accum, '!'); rangeref_as_string (out, &local_ref); } else rangeref_as_string (out, ref); }