/** Initialize a new diagram data object. * @param data A diagram data object to initialize. */ static void diagram_data_init(DiagramData *data) { Color* color = persistence_register_color ("new_diagram_bgcolour", &color_white); gboolean compress = persistence_register_boolean ("compress_save", TRUE); Layer *first_layer; data->extents.left = 0.0; data->extents.right = 10.0; data->extents.top = 0.0; data->extents.bottom = 10.0; data->bg_color = *color; get_paper_info (&data->paper, -1, NULL); first_layer = new_layer(g_strdup(_("Background")),data); data->layers = g_ptr_array_new (); g_ptr_array_add (data->layers, first_layer); data->active_layer = first_layer; data->selected_count_private = 0; data->selected = NULL; data->is_compressed = compress; /* Overridden by doc */ data->text_edits = NULL; data->active_text_edit = NULL; }
static int fig_read_paper_size(FILE *file, DiagramData *dia, DiaContext *ctx) { char buf[BUFLEN]; int paper; if (!fgets(buf, BUFLEN, file)) { dia_context_add_message_with_errno(ctx, errno, _("Error reading paper size.")); return FALSE; } buf[strlen(buf)-1] = 0; /* Remove trailing newline */ g_strstrip(buf); /* And any other whitespace */ if ((paper = find_paper(buf)) != -1) { get_paper_info(&dia->paper, paper, NULL); return TRUE; } dia_context_add_message(ctx, _("Unknown paper size `%s', using default\n"), buf); return TRUE; }
/** Initializes a diagram with standard info and sets it to be called * 'filename'. * Returns TRUE if everything went ok, FALSE otherwise. * Will return FALSE if filename is not a legal string in the current * encoding. */ static gboolean diagram_init(Diagram *dia, const char *filename) { gchar *newfilename = NULL; GError *error = NULL; dia->data = &dia->parent_instance; /* compatibility */ dia->pagebreak_color = prefs.new_diagram.pagebreak_color; get_paper_info (&dia->data->paper, -1, &prefs.new_diagram); dia->grid.width_x = prefs.grid.x; dia->grid.width_y = prefs.grid.y; dia->grid.width_w = prefs.grid.w; dia->grid.hex_size = 1.0; dia->grid.colour = prefs.new_diagram.grid_color; dia->grid.hex = prefs.grid.hex; dia->grid.visible_x = prefs.grid.vis_x; dia->grid.visible_y = prefs.grid.vis_y; dia->grid.dynamic = prefs.grid.dynamic; dia->grid.major_lines = prefs.grid.major_lines; dia->guides.nhguides = 0; dia->guides.hguides = NULL; dia->guides.nvguides = 0; dia->guides.vguides = NULL; if (dia->filename != NULL) g_free(dia->filename); /* Make sure the filename is absolute */ if (!g_path_is_absolute(filename)) { gchar *pwd = g_get_current_dir(); newfilename = g_build_filename(pwd, filename, NULL); g_free(pwd); filename = newfilename; } /* All Diagram functions assumes filename in filesystem encoding */ dia->filename = g_filename_to_utf8(filename, -1, NULL, NULL, &error); if (error != NULL) { message_error(_("Couldn't convert filename '%s' to UTF-8: %s\n"), dia_message_filename(filename), error->message); g_error_free(error); dia->filename = g_strdup(_("Error")); return FALSE; } dia->unsaved = TRUE; dia->mollified = FALSE; dia->autosavefilename = NULL; if (dia->undo) undo_destroy(dia->undo); dia->undo = new_undo_stack(dia); if (!g_list_find(open_diagrams, dia)) open_diagrams = g_list_prepend(open_diagrams, dia); if (app_is_interactive()) layer_dialog_update_diagram_list(); g_free(newfilename); g_signal_connect (G_OBJECT(dia), "object_add", G_CALLBACK(_object_add), dia); g_signal_connect (G_OBJECT(dia), "object_remove", G_CALLBACK(_object_remove), dia); return TRUE; }