/** Set the default line style (dashes, dots etc) * @param style The style (number of dots and dashes) * @param dash_length The length of a dash (0.0 < dash_length < ???) * @see dia-enums.h for possible values for style. */ void attributes_set_default_line_style(LineStyle style, real dash_length) { attributes_linestyle = style; attributes_dash_length = dash_length; persistence_set_integer("line-style", style); persistence_set_real("dash-length", dash_length); }
/** * Respond to the user finishing the Open Dialog either accept or cancel/destroy */ static void file_open_response_callback(GtkWidget *fs, gint response, gpointer user_data) { char *filename; Diagram *diagram = NULL; if (response == GTK_RESPONSE_ACCEPT) { gint index = gtk_combo_box_get_active (GTK_COMBO_BOX(user_data)); if (index >= 0) /* remember it */ persistence_set_integer ("import-filter", index); filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(fs)); diagram = diagram_load(filename, ifilter_by_index (index - 1, filename)); g_free (filename); if (diagram != NULL) { diagram_update_extents(diagram); layer_dialog_set_diagram(diagram); if (diagram->displays == NULL) { /* GSList *displays = diagram->displays; GSList *displays_head = displays; diagram->displays = NULL; for (; displays != NULL; displays = g_slist_next(displays)) { DDisplay *loaded_display = (DDisplay *)displays->data; copy_display(loaded_display); g_free(loaded_display); } g_slist_free(displays_head); } else { */ new_display(diagram); } } } gtk_widget_destroy(opendlg); }
void prefs_save(void) { int i; gpointer ptr; for (i=0;i<NUM_PREFS_DATA;i++) { if ((prefs_data[i].type == PREF_NONE) || (prefs_data[i].type == PREF_END_GROUP)) continue; ptr = (char *)&prefs + prefs_data[i].offset; switch (prefs_data[i].type) { case PREF_BOOLEAN: persistence_set_boolean(prefs_data[i].name, *(gint *)ptr); break; case PREF_INT: case PREF_UINT: persistence_set_integer(prefs_data[i].name, *(gint *)ptr); break; case PREF_REAL: case PREF_UREAL: persistence_set_real(prefs_data[i].name, *(real *)ptr); break; case PREF_COLOUR: persistence_set_color(prefs_data[i].name, (Color *)ptr); break; case PREF_CHOICE: case PREF_STRING: persistence_set_string(prefs_data[i].name, *(gchar **)ptr); break; case PREF_NONE: case PREF_END_GROUP: break; } } }
/** * A button hit in the Export Dialog */ static void file_export_response_callback(GtkWidget *fs, gint response, gpointer user_data) { char *filename; Diagram *dia; DiaExportFilter *ef; struct stat statbuf; dia = g_object_get_data (G_OBJECT (fs), "user_data"); g_assert (dia); if (response == GTK_RESPONSE_ACCEPT) { gint index; diagram_update_extents(dia); filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(fs)); if (g_stat(filename, &statbuf) == 0) { GtkWidget *dialog = NULL; dialog = gtk_message_dialog_new (GTK_WINDOW(fs), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _("File already exists")); gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), _("The file '%s' already exists.\n" "Do you want to overwrite it?"), dia_message_filename(filename)); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES); if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_YES) { /* if not overwrite allow to select another filename */ gtk_widget_destroy(dialog); g_free (filename); return; } gtk_widget_destroy(dialog); } index = gtk_combo_box_get_active (GTK_COMBO_BOX(user_data)); if (index >= 0) persistence_set_integer ("export-filter", index); ef = efilter_by_index (index - 1, NULL); if (!ef) ef = filter_guess_export_filter(filename); if (ef) { DiaContext *ctx = dia_context_new (_("Export")); g_object_ref(dia->data); dia_context_set_filename (ctx, filename); ef->export_func(dia->data, ctx, filename, dia->filename, ef->user_data); g_object_unref(dia->data); dia_context_release (ctx); } else message_error(_("Could not determine which export filter\n" "to use to save '%s'"), dia_message_filename(filename)); g_free (filename); } g_object_unref (dia); /* drop our diagram reference */ gtk_widget_destroy(exportdlg); }