/** 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; }
void prefs_set_defaults(void) { int i; gpointer ptr; /* Since we can't call this in static initialization, we have to * do it here. */ if (default_paper_name == NULL) default_paper_name = get_paper_name(get_default_paper()); for (i=0;i<NUM_PREFS_DATA;i++) { ptr = (char *)&prefs + prefs_data[i].offset; switch (prefs_data[i].type) { case PREF_BOOLEAN: *(int *)ptr = *(int *)prefs_data[i].default_value; *(int *)ptr = persistence_register_boolean(prefs_data[i].name, *(int *)ptr); break; case PREF_INT: case PREF_UINT: *(int *)ptr = *(int *)prefs_data[i].default_value; *(int *)ptr = persistence_register_integer(prefs_data[i].name, *(int *)ptr); break; case PREF_REAL: case PREF_UREAL: *(real *)ptr = *(real *)prefs_data[i].default_value; *(real *)ptr = persistence_register_real(prefs_data[i].name, *(real *)ptr); break; case PREF_COLOUR: *(Color *)ptr = *(Color *)prefs_data[i].default_value; *(Color *)ptr = *persistence_register_color(prefs_data[i].name, (Color *)ptr); break; case PREF_CHOICE: case PREF_STRING: *(gchar **)ptr = *(gchar **)prefs_data[i].default_value; *(gchar **)ptr = persistence_register_string(prefs_data[i].name, *(gchar **)ptr); break; case PREF_NONE: case PREF_END_GROUP: break; } /* set initial preferences, but dont talk about restarting */ if (prefs_data[i].update_function) (prefs_data[i].update_function)(&prefs_data[i], ptr); } update_internal_prefs(&prefs_data[i], NULL); }
static void gtk_message_internal(const char* title, enum ShowAgainStyle showAgain, char const *fmt, va_list args, va_list args2) { static gchar *buf = NULL; static gint alloc = 0; gint len; DiaMessageInfo *msginfo; GtkTextBuffer *textbuffer; gboolean askForShowAgain = FALSE; if (showAgain != ALWAYS_SHOW) { /* We persistently stored that the user has chosen to not see the * dialog again (whether by checking or not unchecking the box) */ persistence_register_boolean((gchar *)title, FALSE); if (persistence_get_boolean((gchar *)title)) { /* If not showing again, just return at once */ return; } askForShowAgain = TRUE; } if (message_hash_table == NULL) { message_hash_table = g_hash_table_new(g_str_hash, g_str_equal); } len = g_printf_string_upper_bound (fmt, args); if (len >= alloc) { if (buf) g_free (buf); alloc = nearest_pow (MAX(len + 1, 1024)); buf = g_new (char, alloc); } vsprintf (buf, fmt, args2); msginfo = (DiaMessageInfo*)g_hash_table_lookup(message_hash_table, fmt); if (msginfo == NULL) { msginfo = g_new0(DiaMessageInfo, 1); g_hash_table_insert(message_hash_table, (char *)fmt, msginfo); } if (msginfo->dialog == NULL) message_create_dialog(title, msginfo, buf); if (msginfo->repeats != NULL) { if (g_list_length(msginfo->repeats) > 1) { char *newlabel; guint num = g_list_length(msginfo->repeats); /* See: https://live.gnome.org/TranslationProject/DevGuidelines/Plurals */ newlabel = g_strdup_printf(g_dngettext (GETTEXT_PACKAGE, "There is %d similar message.", /* not triggered */ "There are %d similar messages.", num), num); gtk_label_set_text(GTK_LABEL(msginfo->repeat_label), newlabel); } /* for repeated messages, show the last one */ g_object_set (msginfo->dialog, "text", buf, NULL); gtk_widget_show(msginfo->repeat_label); gtk_widget_show(msginfo->show_repeats); } /* Insert in scrollable view, but only the repeated ones */ if (msginfo->repeats != NULL) { textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(msginfo->repeat_view)); gtk_text_buffer_insert_at_cursor(textbuffer, buf, -1); } msginfo->repeats = g_list_prepend(msginfo->repeats, g_strdup(buf)); if (askForShowAgain) { gtk_widget_show(msginfo->no_show_again); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(msginfo->no_show_again), showAgain == SUGGEST_NO_SHOW_AGAIN); } else { gtk_widget_hide(msginfo->no_show_again); } gtk_widget_show (msginfo->dialog); }