dia r4155 - in trunk: . app lib
- From: hans svn gnome org
- To: svn-commits-list gnome org
- Subject: dia r4155 - in trunk: . app lib
- Date: Sun, 14 Dec 2008 18:57:44 +0000 (UTC)
Author: hans
Date: Sun Dec 14 18:57:44 2008
New Revision: 4155
URL: http://svn.gnome.org/viewvc/dia?rev=4155&view=rev
Log:
2008-12-14 Hans Breuer <hans breuer org>
* app/preferences.[ch] lib/filter.[ch] lib/libdia.def : allow to select
a preferred export filter used when selecting exporter by extension
* lib/persistence.c : don't use g_ascii_strncasecmp as GCompareFunc,
fixing crashes introduced by patch from bug #559671
Modified:
trunk/ChangeLog
trunk/app/preferences.c
trunk/app/preferences.h
trunk/lib/filter.c
trunk/lib/filter.h
trunk/lib/libdia.def
trunk/lib/persistence.c
Modified: trunk/app/preferences.c
==============================================================================
--- trunk/app/preferences.c (original)
+++ trunk/app/preferences.c Sun Dec 14 18:57:44 2008
@@ -70,14 +70,15 @@
char *label_text;
GtkWidget *widget;
gboolean hidden;
- GList *(*choice_list_function)();
+ GList *(*choice_list_function)(struct _DiaPrefData *pref);
/** A function to call after a preference item has been updated. */
- void (*update_function)(struct _DiaPrefData *pref, char *ptr);
+ void (*update_function)(struct _DiaPrefData *pref, gpointer ptr);
+ const char *key;
} DiaPrefData;
-static void update_floating_toolbox(DiaPrefData *pref, char *ptr);
-static void update_internal_prefs(DiaPrefData *pref, char *ptr);
-static void update_ui_type_prefs(DiaPrefData *pref, char *ptr);
+static void update_floating_toolbox(DiaPrefData *pref, gpointer ptr);
+static void update_internal_prefs(DiaPrefData *pref, gpointer ptr);
+static void update_ui_type_prefs(DiaPrefData *pref, gpointer ptr);
static int default_true = 1;
static int default_false = 0;
@@ -96,23 +97,62 @@
static const gchar *default_length_unit = "cm";
static const gchar *default_fontsize_unit = "point";
+static const char *default_favored_filter = N_("any");
+
struct DiaPrefsTab {
char *title;
GtkTable *table;
int row;
};
+typedef enum {
+ UI_TAB,
+ DIA_TAB,
+ VIEW_TAB,
+ FAVOR_TAB,
+ GRID_TAB,
+ TREE_TAB
+} TabIndex;
+
struct DiaPrefsTab prefs_tabs[] =
{
{N_("User Interface"), NULL, 0},
{N_("Diagram Defaults"), NULL, 0},
{N_("View Defaults"), NULL, 0},
+ {N_("Favorites"), NULL, 0},
{N_("Grid Lines"), NULL, 0},
{N_("Diagram Tree"), NULL, 0},
};
#define NUM_PREFS_TABS (sizeof(prefs_tabs)/sizeof(struct DiaPrefsTab))
+static GList *
+_get_units_name_list(DiaPrefData *pref)
+{
+ g_return_val_if_fail(pref->key == NULL, NULL);
+ return get_units_name_list();
+}
+static GList *
+_get_paper_name_list(DiaPrefData *pref)
+{
+ g_return_val_if_fail(pref->key == NULL, NULL);
+ return get_paper_name_list();
+}
+static GList *
+get_exporter_names (DiaPrefData *pref)
+{
+ GList *list = filter_get_unique_export_names(pref->key);
+ list = g_list_prepend (list, N_("any"));
+ return list;
+}
+
+static void
+set_favored_exporter (DiaPrefData *pref, gpointer ptr)
+{
+ char *val = *((gchar **)ptr);
+ filter_set_favored_export(pref->key, val);
+}
+
/* retrive a structure offset */
#ifdef offsetof
#define PREF_OFFSET(field) ((int) offsetof (struct DiaPreferences, field))
@@ -123,75 +163,88 @@
DiaPrefData prefs_data[] =
{
{ "reset_tools_after_create", PREF_BOOLEAN, PREF_OFFSET(reset_tools_after_create),
- &default_true, 0, N_("Reset tools after create") },
+ &default_true, UI_TAB, N_("Reset tools after create") },
{ "undo_depth", PREF_UINT, PREF_OFFSET(undo_depth),
- &default_undo_depth, 0, N_("Number of undo levels:") },
+ &default_undo_depth, UI_TAB, N_("Number of undo levels:") },
{ "reverse_rubberbanding_intersects", PREF_BOOLEAN, PREF_OFFSET(reverse_rubberbanding_intersects),
- &default_true, 0, N_("Reverse dragging selects\nintersecting objects") },
+ &default_true, UI_TAB, N_("Reverse dragging selects\nintersecting objects") },
{ "recent_documents_list_size", PREF_UINT, PREF_OFFSET(recent_documents_list_size),
&default_recent_documents, 0, N_("Recent documents list size:") },
{ "use_menu_bar", PREF_BOOLEAN, PREF_OFFSET(new_view.use_menu_bar),
- &default_true, 0, N_("Use menu bar") },
+ &default_true, UI_TAB, N_("Use menu bar") },
{ "toolbox_on_top", PREF_BOOLEAN, PREF_OFFSET(toolbox_on_top),
- &default_false, 0, N_("Keep tool box on top of diagram windows"),
+ &default_false, UI_TAB, N_("Keep tool box on top of diagram windows"),
NULL, FALSE, NULL, update_floating_toolbox},
{ "length_unit", PREF_CHOICE, PREF_OFFSET(length_unit),
- &default_length_unit, 0, N_("Length unit:"), NULL, FALSE,
- get_units_name_list, update_internal_prefs },
+ &(char*)default_length_unit, UI_TAB, N_("Length unit:"), NULL, FALSE,
+ _get_units_name_list, update_internal_prefs },
{ "fontsize_unit", PREF_CHOICE, PREF_OFFSET(fontsize_unit),
- &default_fontsize_unit, 0, N_("Font-size unit:"), NULL, FALSE,
- get_units_name_list, update_internal_prefs },
+ &(char*)default_fontsize_unit, UI_TAB, N_("Font-size unit:"), NULL, FALSE,
+ _get_units_name_list, update_internal_prefs },
{ "use_integrated_ui", PREF_BOOLEAN, PREF_OFFSET(use_integrated_ui),
- &default_false, 0, N_("Integrated UI"), NULL, FALSE, NULL, update_ui_type_prefs },
+ &default_false, UI_TAB, N_("Integrated UI"), NULL, FALSE, NULL, update_ui_type_prefs },
- { NULL, PREF_NONE, 0, NULL, 1, N_("New diagram:") },
- { "is_portrait", PREF_BOOLEAN, PREF_OFFSET(new_diagram.is_portrait), &default_true, 1, N_("Portrait") },
+ { NULL, PREF_NONE, 0, NULL, DIA_TAB, N_("New diagram:") },
+ { "is_portrait", PREF_BOOLEAN, PREF_OFFSET(new_diagram.is_portrait), &default_true, DIA_TAB, N_("Portrait") },
{ "new_diagram_papertype", PREF_CHOICE, PREF_OFFSET(new_diagram.papertype),
- &default_paper_name, 1, N_("Paper type:"), NULL, FALSE, get_paper_name_list },
+ &(char*)default_paper_name, DIA_TAB, N_("Paper type:"), NULL, FALSE, _get_paper_name_list },
{ "new_diagram_bgcolour", PREF_COLOUR, PREF_OFFSET(new_diagram.bg_color),
- &color_white, 1, N_("Background Color:") },
+ &color_white, DIA_TAB, N_("Background Color:") },
{ "compress_save", PREF_BOOLEAN, PREF_OFFSET(new_diagram.compress_save),
- &default_true, 1, N_("Compress saved files") },
- { NULL, PREF_END_GROUP, 0, NULL, 1, NULL },
-
- { NULL, PREF_NONE, 0, NULL, 1, N_("New window:") },
- { "new_view_width", PREF_UINT, PREF_OFFSET(new_view.width), &default_int_w, 1, N_("Width:") },
- { "new_view_height", PREF_UINT, PREF_OFFSET(new_view.height), &default_int_h, 1, N_("Height:") },
- { "new_view_zoom", PREF_UREAL, PREF_OFFSET(new_view.zoom), &default_real_zoom, 1, N_("Magnify:") },
- { NULL, PREF_END_GROUP, 0, NULL, 1, NULL },
+ &default_true, DIA_TAB, N_("Compress saved files") },
+ { NULL, PREF_END_GROUP, 0, NULL, DIA_TAB, NULL },
- { NULL, PREF_NONE, 0, NULL, 1, N_("Connection Points:") },
- { "show_cx_pts", PREF_BOOLEAN, PREF_OFFSET(show_cx_pts), &default_true, 1, N_("Visible") },
+ { NULL, PREF_NONE, 0, NULL, DIA_TAB, N_("New window:") },
+ { "new_view_width", PREF_UINT, PREF_OFFSET(new_view.width), &default_int_w, DIA_TAB, N_("Width:") },
+ { "new_view_height", PREF_UINT, PREF_OFFSET(new_view.height), &default_int_h, DIA_TAB, N_("Height:") },
+ { "new_view_zoom", PREF_UREAL, PREF_OFFSET(new_view.zoom), &default_real_zoom, DIA_TAB, N_("Magnify:") },
{ NULL, PREF_END_GROUP, 0, NULL, 1, NULL },
- { NULL, PREF_NONE, 0, NULL, 2, N_("Page breaks:") },
- { "pagebreak_visible", PREF_BOOLEAN, PREF_OFFSET(pagebreak.visible), &default_true, 2, N_("Visible") },
- { "pagebreak_colour", PREF_COLOUR, PREF_OFFSET(new_diagram.pagebreak_color), &pbreak_colour, 2, N_("Color:") },
- { "pagebreak_solid", PREF_BOOLEAN, PREF_OFFSET(pagebreak.solid), &default_true, 2, N_("Solid lines") },
- { NULL, PREF_END_GROUP, 0, NULL, 2, NULL },
+ { NULL, PREF_NONE, 0, NULL, DIA_TAB, N_("Connection Points:") },
+ { "show_cx_pts", PREF_BOOLEAN, PREF_OFFSET(show_cx_pts), &default_true, DIA_TAB, N_("Visible") },
+ { NULL, PREF_END_GROUP, 0, NULL, DIA_TAB, NULL },
+
+ { NULL, PREF_NONE, 0, NULL, VIEW_TAB, N_("Page breaks:") },
+ { "pagebreak_visible", PREF_BOOLEAN, PREF_OFFSET(pagebreak.visible), &default_true, VIEW_TAB, N_("Visible") },
+ { "pagebreak_colour", PREF_COLOUR, PREF_OFFSET(new_diagram.pagebreak_color), &pbreak_colour, VIEW_TAB, N_("Color:") },
+ { "pagebreak_solid", PREF_BOOLEAN, PREF_OFFSET(pagebreak.solid), &default_true, VIEW_TAB, N_("Solid lines") },
+ { NULL, PREF_END_GROUP, 0, NULL, VIEW_TAB, NULL },
- { NULL, PREF_NONE, 0, NULL, 2, N_("Antialias:") },
- { "view_antialised", PREF_BOOLEAN, PREF_OFFSET(view_antialised), &default_false, 2, N_("view antialised") },
- { NULL, PREF_END_GROUP, 0, NULL, 2, NULL },
+ { NULL, PREF_NONE, 0, NULL, VIEW_TAB, N_("Antialias:") },
+ { "view_antialised", PREF_BOOLEAN, PREF_OFFSET(view_antialised), &default_false, VIEW_TAB, N_("view antialised") },
+ { NULL, PREF_END_GROUP, 0, NULL, VIEW_TAB, NULL },
+
+ /* Favored Filer */
+ { NULL, PREF_NONE, 0, NULL, FAVOR_TAB, N_("Export") },
+ { "favored_png_export", PREF_CHOICE, PREF_OFFSET(favored_filter.png), &(char*)default_favored_filter,
+ FAVOR_TAB, N_("Portable Network Graphics"), NULL, FALSE, get_exporter_names, set_favored_exporter, "PNG" },
+ { "favored_svg_export", PREF_CHOICE, PREF_OFFSET(favored_filter.svg), &(char*)default_favored_filter,
+ FAVOR_TAB, N_("Scalable Vector Graphics"), NULL, FALSE, get_exporter_names, set_favored_exporter, "SVG" },
+ { "favored_ps_export", PREF_CHOICE, PREF_OFFSET(favored_filter.ps), &(char*)default_favored_filter,
+ FAVOR_TAB, N_("PostScript"), NULL, FALSE, get_exporter_names, set_favored_exporter, "PS" },
+ { "favored_wmf_export", PREF_CHOICE, PREF_OFFSET(favored_filter.wmf), &(char*)default_favored_filter,
+ FAVOR_TAB, N_("Windows MetaFile"), NULL, FALSE, get_exporter_names, set_favored_exporter, "WMF" },
+ { "favored_emf_export", PREF_CHOICE, PREF_OFFSET(favored_filter.emf), &(char*)default_favored_filter,
+ FAVOR_TAB, N_("Enhanced MetaFile"), NULL, FALSE, get_exporter_names, set_favored_exporter, "EMF" },
+ { NULL, PREF_END_GROUP, 0, NULL, FAVOR_TAB, NULL },
/*{ NULL, PREF_NONE, 0, NULL, 3, N_("Grid:") }, */
- { "grid_visible", PREF_BOOLEAN, PREF_OFFSET(grid.visible), &default_true, 3, N_("Visible") },
- { "grid_snap", PREF_BOOLEAN, PREF_OFFSET(grid.snap), &default_false, 3, N_("Snap to") },
- { "grid_dynamic", PREF_BOOLEAN, PREF_OFFSET(grid.dynamic), &default_true, 3, N_("Dynamic grid resizing") },
- { "grid_x", PREF_UREAL, PREF_OFFSET(grid.x), &default_real_one, 3, N_("X Size:") },
- { "grid_y", PREF_UREAL, PREF_OFFSET(grid.y), &default_real_one, 3, N_("Y Size:") },
- { "grid_colour", PREF_COLOUR, PREF_OFFSET(new_diagram.grid_color), &default_colour, 3, N_("Color:") },
- { "grid_major", PREF_UINT, PREF_OFFSET(grid.major_lines), &default_major_lines, 3, N_("Lines per major line") },
- { "grid_hex", PREF_BOOLEAN, PREF_OFFSET(grid.hex), &default_false, 3, N_("Hex grid") },
- { "grid_w", PREF_UREAL, PREF_OFFSET(grid.w), &default_real_one, 3, N_("Hex Size:")
- },
+ { "grid_visible", PREF_BOOLEAN, PREF_OFFSET(grid.visible), &default_true, GRID_TAB, N_("Visible") },
+ { "grid_snap", PREF_BOOLEAN, PREF_OFFSET(grid.snap), &default_false, GRID_TAB, N_("Snap to") },
+ { "grid_dynamic", PREF_BOOLEAN, PREF_OFFSET(grid.dynamic), &default_true, GRID_TAB, N_("Dynamic grid resizing") },
+ { "grid_x", PREF_UREAL, PREF_OFFSET(grid.x), &default_real_one, GRID_TAB, N_("X Size:") },
+ { "grid_y", PREF_UREAL, PREF_OFFSET(grid.y), &default_real_one, GRID_TAB, N_("Y Size:") },
+ { "grid_colour", PREF_COLOUR, PREF_OFFSET(new_diagram.grid_color), &default_colour, GRID_TAB, N_("Color:") },
+ { "grid_major", PREF_UINT, PREF_OFFSET(grid.major_lines), &default_major_lines, GRID_TAB, N_("Lines per major line") },
+ { "grid_hex", PREF_BOOLEAN, PREF_OFFSET(grid.hex), &default_false, GRID_TAB, N_("Hex grid") },
+ { "grid_w", PREF_UREAL, PREF_OFFSET(grid.w), &default_real_one, GRID_TAB, N_("Hex Size:") },
/* { "grid_solid", PREF_BOOLEAN, PREF_OFFSET(grid.solid), &default_true, 3, N_("Solid lines:") }, */
{ "render_bounding_boxes", PREF_BOOLEAN,PREF_OFFSET(render_bounding_boxes),
@@ -206,21 +259,21 @@
{ "prefer_psprint", PREF_BOOLEAN,PREF_OFFSET(prefer_psprint),
&default_false,0,"prefer psprint", NULL, TRUE},
- { NULL, PREF_NONE, 0, NULL, 4, N_("Diagram tree window:") },
+ { NULL, PREF_NONE, 0, NULL, TREE_TAB, N_("Diagram tree window:") },
{ "diagram_tree_save_hidden", PREF_BOOLEAN, PREF_OFFSET(dia_tree.save_hidden),
- &default_false, 4, N_("Save hidden object types")},
+ &default_false, TREE_TAB, N_("Save hidden object types")},
{ "diagram_tree_dia_sort", PREF_UINT, PREF_OFFSET(dia_tree.dia_sort),
- &default_dtree_dia_sort, 4, "default diagram sort order", NULL, TRUE},
+ &default_dtree_dia_sort, TREE_TAB, "default diagram sort order", NULL, TRUE},
{ "diagram_tree_obj_sort", PREF_UINT, PREF_OFFSET(dia_tree.obj_sort),
- &default_dtree_obj_sort, 4, "default object sort order", NULL, TRUE},
- { NULL, PREF_END_GROUP, 0, NULL, 4, NULL },
+ &default_dtree_obj_sort, TREE_TAB, "default object sort order", NULL, TRUE},
+ { NULL, PREF_END_GROUP, 0, NULL, TREE_TAB, NULL },
};
#define NUM_PREFS_DATA (sizeof(prefs_data)/sizeof(DiaPrefData))
static void prefs_create_dialog(void);
-static void prefs_set_value_in_widget(GtkWidget * widget, DiaPrefData *data, char *ptr);
-static void prefs_get_value_from_widget(GtkWidget * widget, DiaPrefData *data, char *ptr);
+static void prefs_set_value_in_widget(GtkWidget * widget, DiaPrefData *data, gpointer ptr);
+static void prefs_get_value_from_widget(GtkWidget * widget, DiaPrefData *data, gpointer ptr);
static void prefs_update_dialog_from_prefs(void);
static void prefs_update_prefs_from_dialog(void);
/* static gint prefs_apply(GtkWidget *widget, gpointer data); */
@@ -241,7 +294,7 @@
prefs_set_defaults(void)
{
int i;
- char *ptr;
+ gpointer ptr;
/* Since we can't call this in static initialization, we have to
* do it here.
@@ -280,15 +333,17 @@
case PREF_END_GROUP:
break;
}
+ if (prefs_data[i].update_function)
+ (prefs_data[i].update_function)(&prefs_data[i], ptr);
}
- update_internal_prefs(NULL, NULL);
+ update_internal_prefs(&prefs_data[i], NULL);
}
void
prefs_save(void)
{
int i;
- char *ptr;
+ 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;
@@ -354,10 +409,11 @@
dia_color_selector_set_color(widget, (Color *)ptr);
break;
case PREF_CHOICE: {
- GList *names = (data->choice_list_function)();
+ GList *names = (data->choice_list_function)(data);
int index;
+ char *val = *((gchar**)ptr);
for (index = 0; names != NULL; names = g_list_next(names), index++) {
- if (!strcmp(*((gchar**)ptr), (gchar *)names->data))
+ if (!strcmp(val, (gchar *)names->data))
break;
}
if (names == NULL) return;
@@ -395,7 +451,7 @@
break;
case PREF_CHOICE: {
int index = gtk_combo_box_get_active (GTK_COMBO_BOX (widget));
- GList *names = (data->choice_list_function)();
+ GList *names = (data->choice_list_function)(data);
*((gchar **)ptr) = g_strdup((gchar *)g_list_nth_data(names, index));
break;
}
@@ -472,7 +528,7 @@
GList *names;
GSList *group = NULL;
widget = gtk_combo_box_new_text ();
- for (names = (data->choice_list_function)();
+ for (names = (data->choice_list_function)(data);
names != NULL;
names = g_list_next(names)) {
gtk_combo_box_append_text (GTK_COMBO_BOX (widget), (gchar *)names->data);
@@ -581,6 +637,7 @@
#endif /* SCROLLED_PAGES */
}
+ gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_LEFT);
tab_idx = -1;
for (i=0;i<NUM_PREFS_DATA;i++) {
@@ -677,8 +734,13 @@
* are currently unused and may be null.
*/
static void
-update_internal_prefs(DiaPrefData *pref, char *ptr)
+update_internal_prefs(DiaPrefData *pref, gpointer ptr)
{
+ char *val = NULL;
+
+ if (!ptr)
+ return;
+ val = *(char **)ptr;
if (prefs.length_unit)
prefs_set_length_unit(prefs.length_unit);
if (prefs.fontsize_unit)
@@ -686,8 +748,9 @@
}
static void
-update_floating_toolbox(DiaPrefData *pref, char *ptr)
+update_floating_toolbox(DiaPrefData *pref, gpointer ptr)
{
+ g_return_if_fail (pref->key == NULL);
if (prefs.toolbox_on_top) {
/* Go through all diagrams and set toolbox transient for all displays */
GList *diagrams;
@@ -709,7 +772,8 @@
}
static void
-update_ui_type_prefs(DiaPrefData *pref, char *ptr)
+update_ui_type_prefs(DiaPrefData *pref, gpointer ptr)
{
+ g_return_if_fail (pref->key == NULL);
message_notice(_("User Interface type settings change will take after restart"));
}
Modified: trunk/app/preferences.h
==============================================================================
--- trunk/app/preferences.h (original)
+++ trunk/app/preferences.h Sun Dec 14 18:57:44 2008
@@ -72,6 +72,16 @@
DiagramTreeConfig dia_tree;
int use_integrated_ui;
+
+ /* a dedicated filter name or NULL */
+ struct {
+ char *png;
+ char *svg;
+ char *ps;
+ char *wmf;
+ char *emf;
+ char *print;
+ } favored_filter;
};
extern struct DiaPreferences prefs;
Modified: trunk/lib/filter.c
==============================================================================
--- trunk/lib/filter.c (original)
+++ trunk/lib/filter.c Sun Dec 14 18:57:44 2008
@@ -84,6 +84,37 @@
return ret;
}
+/* Get the list of unique names for the given extension */
+GList *
+filter_get_unique_export_names(const char *ext)
+{
+ GList *tmp, *res = NULL;
+
+ for (tmp = export_filters; tmp != NULL; tmp = tmp->next) {
+ DiaExportFilter *ef = tmp->data;
+ gint i;
+
+ for (i = 0; ef->extensions[i] != NULL; i++) {
+ if (!g_strcasecmp(ef->extensions[i], ext) && ef->unique_name)
+ res = g_list_append (res, (char *)ef->unique_name);
+ }
+ }
+ return res;
+}
+
+static GHashTable *_favored_hash = NULL;
+
+/* Set the favorit 'guess' */
+void
+filter_set_favored_export(const char *ext, const char *name)
+{
+ g_print("Favored '%s' is '%s'", ext, name);
+ if (!_favored_hash)
+ _favored_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+
+ g_hash_table_insert(_favored_hash, g_ascii_strdown(ext, -1), g_strdup(name));
+}
+
/* Guess the filter for a given filename.
* Returns the first filter found that matches the extension on the filename,
* or NULL if none such are found.
@@ -97,12 +128,21 @@
gchar *ext;
gint no_guess = 0;
DiaExportFilter *dont_guess = NULL;
+ const gchar *unique_name;
ext = strrchr(filename, '.');
if (ext)
ext++;
else
ext = "";
+
+ /* maybe ther is no need to guess? */
+ unique_name = _favored_hash ? g_hash_table_lookup(_favored_hash, ext) : NULL;
+ if (unique_name) {
+ DiaExportFilter *ef = filter_get_by_name(unique_name);
+ if (ef)
+ return ef;
+ }
for (tmp = export_filters; tmp != NULL; tmp = tmp->next) {
DiaExportFilter *ef = tmp->data;
Modified: trunk/lib/filter.h
==============================================================================
--- trunk/lib/filter.h (original)
+++ trunk/lib/filter.h Sun Dec 14 18:57:44 2008
@@ -104,6 +104,10 @@
DiaExportFilter *filter_guess_export_filter(const gchar *filename);
/* Get the filter for the unique filename. */
DiaExportFilter *filter_get_by_name(const gchar *name);
+/* Get the list of unique names for the given extension */
+GList *filter_get_unique_export_names(const char *extension);
+/* Set the favorit 'guess' */
+void filter_set_favored_export(const char *extension, const char *name);
void filter_register_import(DiaImportFilter *ifilter);
void filter_unregister_import(DiaImportFilter *ifilter);
Modified: trunk/lib/libdia.def
==============================================================================
--- trunk/lib/libdia.def (original)
+++ trunk/lib/libdia.def Sun Dec 14 18:57:44 2008
@@ -374,6 +374,8 @@
filter_get_callbacks
filter_get_export_filter_label
filter_get_export_filters
+ filter_set_favored_export
+ filter_get_unique_export_names
filter_get_import_filter_label
filter_get_import_filters
filter_guess_export_filter
Modified: trunk/lib/persistence.c
==============================================================================
--- trunk/lib/persistence.c (original)
+++ trunk/lib/persistence.c Sun Dec 14 18:57:44 2008
@@ -861,7 +861,7 @@
} else {
gboolean existed = FALSE;
GList *tmplist = plist->glist;
- GList *old_elem = g_list_find_custom(tmplist, item, (GCompareFunc)g_ascii_strncasecmp);
+ GList *old_elem = g_list_find_custom(tmplist, item, (GCompareFunc)g_ascii_strcasecmp);
while (old_elem != NULL) {
tmplist = g_list_remove_link(tmplist, old_elem);
/* Don't free this, as it makes recent_files go boom after
@@ -870,7 +870,7 @@
*/
/*g_free(old_elem->data);*/
g_list_free_1(old_elem);
- old_elem = g_list_find_custom(tmplist, item, (GCompareFunc)g_ascii_strncasecmp);
+ old_elem = g_list_find_custom(tmplist, item, (GCompareFunc)g_ascii_strcasecmp);
existed = TRUE;
}
tmplist = g_list_prepend(tmplist, g_strdup(item));
@@ -898,7 +898,7 @@
{
PersistentList *plist = persistent_list_get(role);
/* Leaking data? See not in persistent_list_add */
- GList *entry = g_list_find_custom(plist->glist, item, (GCompareFunc)g_ascii_strncasecmp);
+ GList *entry = g_list_find_custom(plist->glist, item, (GCompareFunc)g_ascii_strcasecmp);
if (entry != NULL) {
plist->glist = g_list_remove_link(plist->glist, entry);
g_free(entry->data);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]