static void gnm_soi_init (GObject *obj) { SheetObjectImage *soi; SheetObject *so; soi = GNM_SO_IMAGE (obj); soi->crop_top = soi->crop_bottom = soi->crop_left = soi->crop_right = 0.0; so = GNM_SO (obj); so->anchor.base.direction = GOD_ANCHOR_DIR_DOWN_RIGHT; so->anchor.mode = GNM_SO_ANCHOR_ONE_CELL; }
void dialog_so_list (WBCGtk *wbcg, GObject *so) { GnmDialogSOList *state; g_return_if_fail (wbcg != NULL); if (wbc_gtk_get_guru (wbcg) || gnm_dialog_raise_if_exists (wbcg, DIALOG_SO_LIST_KEY)) return; state = g_new0 (GnmDialogSOList, 1); if (so_list_init (state, wbcg, GNM_SO (so))) { go_gtk_notice_dialog (wbcg_toplevel (wbcg), GTK_MESSAGE_ERROR, _("Could not create the List Property dialog.")); g_free (state); } }
void dialog_so_size (WBCGtk *wbcg, GObject *so) { GtkBuilder *gui; SOSizeState *state; GtkGrid *grid; int width, height; g_return_if_fail (wbcg != NULL); if (gnm_dialog_raise_if_exists (wbcg, SO_SIZE_DIALOG_KEY)) return; gui = gnm_gtk_builder_load ("res:ui/sheetobject-size.ui", NULL, GO_CMD_CONTEXT (wbcg)); if (gui == NULL) return; state = g_new (SOSizeState, 1); state->wbcg = wbcg; state->sv = wb_control_cur_sheet_view (GNM_WBC (wbcg)); state->sheet = sv_sheet (state->sv); state->scg = wbcg_get_nth_scg (wbcg, state->sheet->index_in_wb); state->gui = gui; state->dialog = go_gtk_builder_get_widget (state->gui, "object-size"); state->so = GNM_SO (so); g_object_ref (so); state->nameentry = GTK_ENTRY (go_gtk_builder_get_widget (state->gui, "name-entry")); state->old_anchor = NULL; state->old_name = NULL; g_object_get (so, "name", &state->old_name, NULL); if (state->old_name == NULL) state->old_name = g_strdup (""); gtk_entry_set_text (state->nameentry, state->old_name); state->so_name_changed = FALSE; g_signal_connect (G_OBJECT (state->nameentry), "focus-out-event", G_CALLBACK (cb_dialog_so_size_name_changed), state); state->so_print_check_changed = FALSE; state->wpoints = GTK_WIDGET (go_gtk_builder_get_widget (state->gui, "w-pts-label")); state->wspin = GTK_SPIN_BUTTON (go_gtk_builder_get_widget (state->gui, "w-spin")); state->hpoints = GTK_WIDGET (go_gtk_builder_get_widget (state->gui, "h-pts-label")); state->hspin = GTK_SPIN_BUTTON (go_gtk_builder_get_widget (state->gui, "h-spin")); state->xpoints = GTK_WIDGET (go_gtk_builder_get_widget (state->gui, "x-pts-label")); state->xspin = GTK_SPIN_BUTTON (go_gtk_builder_get_widget (state->gui, "x-spin")); state->ypoints = GTK_WIDGET (go_gtk_builder_get_widget (state->gui, "y-pts-label")); state->yspin = GTK_SPIN_BUTTON (go_gtk_builder_get_widget (state->gui, "y-spin")); state->print_check = GTK_WIDGET (go_gtk_builder_get_widget (state->gui, "print-check")); state->modecombo = GNM_SO_ANCHOR_MODE_CHOOSER (gnm_so_anchor_mode_chooser_new (sheet_object_can_resize (state->so))); dialog_so_size_load (state); state->active_anchor = sheet_object_anchor_dup (sheet_object_get_anchor (state->so)); width = state->coords[2] - state->coords[0]; height = state->coords[3] - state->coords[1]; gtk_spin_button_set_value (state->wspin, (width < 0) ? - width : width); gtk_spin_button_set_value (state->hspin, (height < 0) ? - height : height); gtk_spin_button_set_value (state->xspin, 0.); gtk_spin_button_set_value (state->yspin, 0.); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (state->print_check), !(state->so->flags & SHEET_OBJECT_PRINT)); gnm_so_anchor_mode_chooser_set_mode (state->modecombo, state->so->anchor.mode); grid = GTK_GRID (gtk_builder_get_object (state->gui, "main-grid")); gtk_grid_insert_row (grid, 7); gtk_grid_attach (grid, GTK_WIDGET (state->modecombo), 0, 7, 2, 1); gtk_widget_set_halign (GTK_WIDGET (state->modecombo), GTK_ALIGN_START); gtk_widget_show (GTK_WIDGET (state->modecombo)); g_signal_connect (G_OBJECT (state->wspin), "value-changed", G_CALLBACK (cb_dialog_so_size_value_changed_update_points), state->wpoints); g_signal_connect (G_OBJECT (state->hspin), "value-changed", G_CALLBACK (cb_dialog_so_size_value_changed_update_points), state->hpoints); g_signal_connect (G_OBJECT (state->xspin), "value-changed", G_CALLBACK (cb_dialog_so_size_value_changed_update_points), state->xpoints); g_signal_connect (G_OBJECT (state->yspin), "value-changed", G_CALLBACK (cb_dialog_so_size_value_changed_update_points), state->ypoints); g_signal_connect (G_OBJECT (state->print_check), "toggled", G_CALLBACK (cb_dialog_so_size_print_check_toggled), state); cb_dialog_so_size_value_changed_update_points (state->wspin, GTK_LABEL (state->wpoints)); cb_dialog_so_size_value_changed_update_points (state->hspin, GTK_LABEL (state->hpoints)); cb_dialog_so_size_value_changed_update_points (state->xspin, GTK_LABEL (state->xpoints)); cb_dialog_so_size_value_changed_update_points (state->yspin, GTK_LABEL (state->ypoints)); g_signal_connect (G_OBJECT (state->wspin), "value-changed", G_CALLBACK (cb_dialog_so_size_value_changed), state); g_signal_connect (G_OBJECT (state->hspin), "value-changed", G_CALLBACK (cb_dialog_so_size_value_changed), state); g_signal_connect (G_OBJECT (state->xspin), "value-changed", G_CALLBACK (cb_dialog_so_size_value_changed), state); g_signal_connect (G_OBJECT (state->yspin), "value-changed", G_CALLBACK (cb_dialog_so_size_value_changed), state); g_signal_connect (G_OBJECT (state->modecombo), "changed", G_CALLBACK (cb_dialog_so_size_mode_changed), state); state->ok_button = go_gtk_builder_get_widget (state->gui, "ok_button"); g_signal_connect (G_OBJECT (state->ok_button), "clicked", G_CALLBACK (cb_dialog_so_size_ok_clicked), state); state->apply_button = go_gtk_builder_get_widget (state->gui, "apply_button"); g_signal_connect (G_OBJECT (state->apply_button), "clicked", G_CALLBACK (cb_dialog_so_size_apply_clicked), state); state->cancel_button = go_gtk_builder_get_widget (state->gui, "cancel_button"); g_signal_connect (G_OBJECT (state->cancel_button), "clicked", G_CALLBACK (cb_dialog_so_size_cancel_clicked), state); gnm_init_help_button ( go_gtk_builder_get_widget (state->gui, "help_button"), GNUMERIC_HELP_LINK_SO_SIZE); gnm_dialog_setup_destroy_handlers (GTK_DIALOG (state->dialog), state->wbcg, GNM_DIALOG_DESTROY_CURRENT_SHEET_REMOVED); wbc_gtk_attach_guru (state->wbcg, state->dialog); g_object_set_data_full (G_OBJECT (state->dialog), "state", state, (GDestroyNotify) cb_dialog_so_size_destroy); gnm_keyed_dialog (wbcg, GTK_WINDOW (state->dialog), SO_SIZE_DIALOG_KEY); dialog_so_size_button_sensitivity (state); gtk_widget_show (state->dialog); }
/** * Other things we could index * - The names of external refernces * - functions used * - plugins used **/ static int ssindex (char const *file, GOIOContext *ioc) { int i, res = 0; GSList *objs, *ptr; char *str = go_shell_arg_to_uri (file); IndexerState state; GsfOutput *gsf_stdout; Workbook *wb; state.wb_view = workbook_view_new_from_uri (str, NULL, ioc, ssindex_import_encoding); g_free (str); if (state.wb_view == NULL) return 1; state.sheet = NULL; gsf_stdout = gsf_output_stdio_new_FILE ("<stdout>", stdout, TRUE); state.output = gsf_xml_out_new (gsf_stdout); gsf_xml_out_start_element (state.output, "gnumeric"); state.wb = wb = wb_view_get_workbook (state.wb_view); workbook_foreach_name (wb, TRUE, (GHFunc)cb_index_name, &state); for (i = 0; i < workbook_sheet_count (wb); i++) { state.sheet = workbook_sheet_by_index (wb, i); gsf_xml_out_simple_element (state.output, "data", state.sheet->name_unquoted); /* cell content */ sheet_cell_foreach (state.sheet, (GHFunc)&cb_index_cell, &state); /* now the objects */ objs = sheet_objects_get (state.sheet, NULL, G_TYPE_NONE); for (ptr = objs ; ptr != NULL ; ptr = ptr->next) { GObject *obj = ptr->data; char *str = NULL; if (gnm_object_has_readable_prop (obj, "text", G_TYPE_STRING, &str) && str) { gsf_xml_out_simple_element (state.output, "data", str); g_free (str); } else if (GNM_IS_SO_GRAPH (obj)) ssindex_chart (&state, (GogObject *)sheet_object_graph_get_gog (GNM_SO (obj))); } g_slist_free (objs); /* Various stuff in styles. */ sheet_style_foreach (state.sheet, (GFunc)cb_index_styles, &state); /* Local names. */ gnm_sheet_foreach_name (state.sheet, (GHFunc)cb_index_name, &state); } gsf_xml_out_end_element (state.output); /* </gnumeric> */ gsf_output_close (gsf_stdout); g_object_unref (gsf_stdout); g_object_unref (wb); return res; }