Group :: Office
RPM: dia
Main Changelog Spec Patches Sources Download Gear Bugs and FR Repocop
Patch: dia-0.94-alt.patch
Download
Download
Index: app/app_procs.c
===================================================================
RCS file: /cvs/gnome/dia/app/app_procs.c,v
retrieving revision 1.166
diff -u -r1.166 app_procs.c
--- app/app_procs.c 3 Jul 2005 17:55:49 -0000 1.166
+++ app/app_procs.c 30 Jul 2005 08:32:43 -0000
@@ -151,9 +151,8 @@
vsprintf (buf, fmt, *args2);
- fprintf(stderr,
- "%s: %s\n",
- title,buf);
+ g_error ("%s: %s\n", title,buf);
+
}
#ifdef GNOME
@@ -194,19 +193,23 @@
}
#endif
-char *
-build_output_file_name(const char *infname, const char *format)
+/** Return an filename with new extension.
+ * The value returned is newly allocated.
+ */
+gchar *
+build_filename_extension(const gchar *infname, const gchar *extension)
{
- /* FIXME: probably overly confident... */
- char *p = strrchr(infname,'.');
- char *tmp;
- if (!p) {
- return g_strconcat(infname,".",format,NULL);
- }
- tmp = g_malloc0(strlen(infname)+1+strlen(format)+1);
- memcpy(tmp,infname,p-infname);
- strcat(tmp,".");
- strcat(tmp,format);
+ gchar *tmp, *last_dot;
+ gchar *filename;
+ if (infname == NULL || infname[0] == '\0' ||
+ infname[0] == '.' || extension == NULL)
+ return NULL;
+ filename = g_strdup(infname);
+ last_dot = g_strrstr(filename, ".");
+ if (last_dot)
+ *last_dot='\0';
+ tmp = g_strconcat(filename,".",extension,NULL);
+ g_free(filename);
return tmp;
}
@@ -372,9 +375,9 @@
*/
static gboolean
do_convert(const char *infname,
- const char *outfname, DiaExportFilter *ef,
- const char *size,
- char *show_layers)
+ const gchar *outfname, DiaExportFilter *ef,
+ const gchar *size,
+ gchar *show_layers)
{
DiaImportFilter *inf;
DiagramData *diagdata = NULL;
@@ -387,7 +390,7 @@
ef = filter_guess_export_filter(outfname);
if (!ef) {
g_error(_("%s error: don't know how to export into %s\n"),
- argv0,outfname);
+ dia_message_filename(argv0), dia_message_filename(outfname));
exit(1);
}
}
@@ -396,7 +399,7 @@
if (0==strcmp(infname,outfname)) {
g_error(_("%s error: input and output file name is identical: %s"),
- argv0, infname);
+ dia_message_filename(argv0), dia_message_filename(infname));
exit(1);
}
@@ -404,7 +407,7 @@
if (!inf->import_func(infname,diagdata,inf->user_data)) {
g_error(_("%s error: need valid input file %s\n"),
- argv0, infname);
+ dia_message_filename(argv0), dia_message_filename(infname));
exit(1);
}
@@ -427,9 +430,8 @@
}
else
ef->export_func(diagdata, outfname, infname, ef->user_data);
- /* if (!quiet) */ fprintf(stdout,
- _("%s --> %s\n"),
- infname,outfname);
+ g_print(_("%s --> %s\n"),
+ dia_message_filename(infname),dia_message_filename(outfname));
g_object_unref(diagdata);
return TRUE;
}
@@ -563,7 +565,7 @@
DiaExportFilter *ef = NULL;
/* First try guessing based on extension */
- export_file_name = build_output_file_name(in_file_name,
+ export_file_name = build_filename_extension(in_file_name,
export_file_format);
/* to make the --size hack even uglier but work again for the only filter supporting it */
@@ -578,7 +580,7 @@
return FALSE;
}
g_free (export_file_name);
- export_file_name = build_output_file_name(in_file_name,
+ export_file_name = build_filename_extension(in_file_name,
ef->extensions[0]);
}
made_conversions |= do_convert(in_file_name,
@@ -748,9 +750,13 @@
argv0 = (argc > 0) ? argv[0] : "(none)";
gtk_set_locale();
+ /* Hack for correct export formats with float numbers in text */
setlocale(LC_NUMERIC, "C");
bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
+#if defined ENABLE_NLS && defined HAVE_BIND_TEXTDOMAIN_CODESET
+ bind_textdomain_codeset(GETTEXT_PACKAGE,"UTF-8");
+#endif
textdomain(GETTEXT_PACKAGE);
process_opts(argc, argv,
@@ -760,12 +766,8 @@
&files,
&export_file_name, &export_file_format, &size, &show_layers, &nosplash);
-#if defined ENABLE_NLS && defined HAVE_BIND_TEXTDOMAIN_CODESET
- bind_textdomain_codeset(GETTEXT_PACKAGE,"UTF-8");
-#endif
- textdomain(GETTEXT_PACKAGE);
- if (argv && dia_is_interactive && !version) {
+ if (argv && app_is_interactive() && !version) {
#ifdef GNOME
GnomeProgram *program =
gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE,
@@ -809,16 +811,16 @@
if (version) {
#if (defined __TIME__) && (defined __DATE__)
/* TRANSLATOR: 2nd and 3rd %s are time and date respectively. */
- printf(g_locale_from_utf8(_("Dia version %s, compiled %s %s\n"), -1, NULL, NULL, NULL), VERSION, __TIME__, __DATE__);
+ g_print(_("Dia version %s, compiled %s %s\n"), VERSION, __TIME__, __DATE__);
#else
- printf(g_locale_from_utf8(_("Dia version %s\n"), -1, NULL, NULL, NULL), VERSION);
+ g_print(_("Dia version %s\n"), VERSION);
#endif
if (verbose)
dump_dependencies();
exit(0);
}
- if (!dia_is_interactive)
+ if (!app_is_interactive())
log_to_stderr = TRUE;
else {
#ifdef G_OS_WIN32
@@ -839,7 +841,7 @@
stdprops_init();
- if (dia_is_interactive) {
+ if (app_is_interactive()) {
dia_image_init();
gdk_rgb_init();
@@ -849,13 +851,9 @@
if (!nosplash) {
app_splash_init("");
}
- }
- if (dia_is_interactive)
create_user_dirs();
-
- /* Init cursors: */
- if (dia_is_interactive) {
+ /* Init cursors: */
color_init();
default_cursor = gdk_cursor_new(GDK_LEFT_PTR);
ddisplay_set_all_cursor(default_cursor);
@@ -885,7 +883,7 @@
/** Must load prefs after persistence */
prefs_init();
- if (dia_is_interactive) {
+ if (app_is_interactive()) {
/* further initialization *before* reading files */
active_tool = create_modify_tool();
@@ -915,7 +913,7 @@
made_conversions = handle_all_diagrams(files, export_file_name,
export_file_format, size, show_layers);
- if (dia_is_interactive && files == NULL) {
+ if (app_is_interactive() && files == NULL) {
gchar *filename = g_filename_from_utf8(_("Diagram1.dia"), -1, NULL, NULL, NULL);
Diagram *diagram = new_diagram (filename);
g_free(filename);
@@ -1020,7 +1018,7 @@
}
/* save pluginrc */
- if (dia_is_interactive)
+ if (app_is_interactive())
dia_pluginrc_write();
gtk_main_quit();
@@ -1102,7 +1100,6 @@
return DIA_PLUGIN_INIT_OK;
}
-/* Note: running in locale encoding */
static void
process_opts(int argc, char **argv,
#if USE_GOPTION
@@ -1120,7 +1117,7 @@
poptSetOtherOptionHelp(poptCtx, _("[OPTION...] [FILE...]"));
while (rc >= 0) {
if((rc = poptGetNextOpt(poptCtx)) < -1) {
- fprintf(stderr,_("Error on option %s: %s.\nRun '%s --help' to see a full list of available command line options.\n"),
+ g_error(_("Error on option %s: %s.\nRun '%s --help' to see a full list of available command line options.\n"),
poptBadOption(poptCtx, 0),
poptStrerror(rc),
argv[0]);
@@ -1151,10 +1148,10 @@
g_option_context_add_group (context, gtk_get_option_group (FALSE));
# endif
if (!g_option_context_parse (context, &argc, &argv, &error)) {
- g_print (error->message);
- g_error_free (error);
+ g_print (error->message);
+ g_error_free (error);
g_option_context_free(context);
- exit(0);
+ exit(0);
}
if (argc < 2) {
g_option_context_free(context);
@@ -1218,11 +1215,17 @@
GSList *node = NULL;
gboolean made_conversions = FALSE;
+#if GLIB_CHECK_VERSION(2,5,5)
+ export_file_name = g_filename_from_utf8(export_file_name, -1, NULL, NULL, NULL);
+#endif
for (node = files; node; node = node->next) {
made_conversions |=
handle_initial_diagram(node->data, export_file_name,
export_file_format, size, show_layers);
}
+#if GLIB_CHECK_VERSION(2,5,5)
+ free(export_file_name);
+#endif
return made_conversions;
}
Index: app/app_procs.h
===================================================================
RCS file: /cvs/gnome/dia/app/app_procs.h,v
retrieving revision 1.12
diff -u -r1.12 app_procs.h
--- app/app_procs.h 5 Mar 2005 18:57:39 -0000 1.12
+++ app/app_procs.h 30 Jul 2005 08:32:43 -0000
@@ -28,7 +28,7 @@
gboolean app_exit(void);
int app_is_embedded(void);
-char *build_output_file_name(const char *infname, const char *format);
+gchar *build_filename_extension(const gchar *infname, const gchar *extension);
void app_splash_init(const gchar* name);
void app_splash_done(void);
Index: app/commands.c
===================================================================
RCS file: /cvs/gnome/dia/app/commands.c,v
retrieving revision 1.134
diff -u -r1.134 commands.c
--- app/commands.c 10 Jun 2005 15:58:24 -0000 1.134
+++ app/commands.c 30 Jul 2005 08:32:43 -0000
@@ -131,11 +131,32 @@
Diagram *dia;
DDisplay *ddisp;
static int untitled_nr = 1;
- char buffer[24];
-
- g_snprintf(buffer, 24, _("Diagram%d.dia"), untitled_nr++);
-
- dia = new_diagram(buffer);
+ char *buffer;
+ char *filename;
+ GList *list;
+ gboolean flag;
+ for(flag = TRUE; flag ; ) {
+ flag = FALSE;
+ buffer = g_strdup_printf(_("Diagram%d.dia"), untitled_nr++);
+ list = dia_open_diagrams();
+ while (list != NULL) {
+ Diagram *dia = (Diagram *)list->data;
+ gchar *name = diagram_get_name(dia);
+ if (0 == strcmp(name,buffer))
+ {
+ flag = TRUE;
+ g_free(name);
+ g_free(buffer);
+ break;
+ }
+ g_free(name);
+ list = g_list_next(list);
+ }
+ }
+ filename = g_filename_from_utf8(buffer, -1, NULL, NULL, NULL);
+ g_free(buffer);
+ dia = new_diagram(filename);
+ g_free(filename);
ddisp = new_display(dia);
diagram_tree_add(diagram_tree(), dia);
}
Index: app/diaconv.c
===================================================================
RCS file: /cvs/gnome/dia/app/diaconv.c,v
retrieving revision 1.8
diff -u -r1.8 diaconv.c
--- app/diaconv.c 19 Jan 2004 19:51:30 -0000 1.8
+++ app/diaconv.c 30 Jul 2005 08:32:43 -0000
@@ -212,7 +212,7 @@
while (in_file_name) {
g_message("in_file_name = %s",in_file_name);
- export_file_name = build_output_file_name(in_file_name,
+ export_file_name = build_file_name_extension(in_file_name,
export_file_format);
g_message("export_file_name = %s",export_file_name);
do_convert(in_file_name, export_file_name, NULL);
Index: app/diagram.c
===================================================================
RCS file: /cvs/gnome/dia/app/diagram.c,v
retrieving revision 1.101
diff -u -r1.101 diagram.c
--- app/diagram.c 19 Jul 2005 21:04:14 -0000 1.101
+++ app/diagram.c 30 Jul 2005 08:32:44 -0000
@@ -58,7 +58,7 @@
static void diagram_class_init (DiagramClass *klass);
-static gboolean diagram_init(Diagram *obj, const char *filename);
+static gboolean diagram_init(Diagram *obj, const gchar *filename);
enum {
SELECTION_CHANGED,
@@ -115,8 +115,7 @@
diagram_cleanup_autosave(dia);
- if (dia->filename)
- g_free(dia->filename);
+ g_free(dia->filename);
dia->filename = NULL;
G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -177,7 +176,7 @@
* encoding.
*/
static gboolean
-diagram_init(Diagram *dia, const char *filename)
+diagram_init(Diagram *dia, const gchar *filename)
{
gchar *newfilename = NULL;
GError *error = NULL;
@@ -243,7 +242,7 @@
int
diagram_load_into(Diagram *diagram,
- const char *filename,
+ const gchar *filename,
DiaImportFilter *ifilter)
{
if (!ifilter)
@@ -259,7 +258,7 @@
diagram->unsaved = FALSE;
diagram_set_modified(diagram, FALSE);
if (app_is_interactive())
- recent_file_history_add(filename);
+ recent_file_history_add(diagram->filename);
diagram_tree_add(diagram_tree(), diagram);
return TRUE;
} else
@@ -267,7 +266,7 @@
}
Diagram *
-diagram_load(const char *filename, DiaImportFilter *ifilter)
+diagram_load(const gchar *filename, DiaImportFilter *ifilter)
{
Diagram *diagram;
@@ -288,7 +287,7 @@
* a legal string in the current encoding, return NULL.
*/
Diagram *
-new_diagram(const char *filename) /* Note: filename is copied */
+new_diagram(const gchar *filename) /* Note: filename is copied */
{
Diagram *dia = g_object_new(DIA_TYPE_DIAGRAM, NULL);
@@ -1346,14 +1345,18 @@
}
void
-diagram_set_filename(Diagram *dia, const char *filename)
+diagram_set_filename(Diagram *dia, const gchar *filename)
{
GSList *l;
DDisplay *ddisp;
- char *title;
-
+ gchar *title;
+ gchar *newfilename;
+ /* Make the filename is absolute */
+ newfilename = dia_get_absolute_filename (filename);
g_free(dia->filename);
- dia->filename = g_filename_to_utf8(filename, -1, NULL, NULL, NULL);
+ /* Diagram has filename in UTF-8 encoding */
+ dia->filename = g_filename_to_utf8(newfilename, -1, NULL, NULL, NULL);
+ g_free(newfilename);
title = diagram_get_name(dia);
@@ -1369,11 +1372,25 @@
g_free(title);
layer_dialog_update_diagram_list();
- recent_file_history_add(filename);
+ recent_file_history_add(dia->filename);
diagram_tree_update_name(diagram_tree(), dia);
}
+/** Returns a string with filename of diagram
+ * in filesystem encoding or NULL if has not filename.
+ * The string should be freed after use.
+ */
+char *
+diagram_get_filename(Diagram *dia)
+{
+ char *tmp;
+ if (dia == NULL || dia->filename == NULL)
+ return NULL;
+ tmp = g_filename_from_utf8(dia->filename, -1, NULL, NULL, NULL);
+ return tmp;
+}
+
/** Returns a string with a 'sensible' (human-readable) name for the
* diagram. The string should be freed after use.
* This name may or may not be the same as the filename.
@@ -1381,14 +1398,13 @@
gchar *
diagram_get_name(Diagram *dia)
{
- gchar *title = strrchr(dia->filename, G_DIR_SEPARATOR);
- if (title==NULL) {
- title = dia->filename;
- } else {
- title++;
- }
-
- return g_strdup(title);
+ gchar *title;
+ if (dia->filename == NULL)
+ title = g_strdup(_("<unnamed>"));
+ else
+ title = g_path_get_basename(dia->filename);
+
+ return title;
}
int diagram_modified_exists(void)
Index: app/diagram.h
===================================================================
RCS file: /cvs/gnome/dia/app/diagram.h,v
retrieving revision 1.40
diff -u -r1.40 diagram.h
--- app/diagram.h 3 Jul 2005 17:55:49 -0000 1.40
+++ app/diagram.h 30 Jul 2005 08:32:44 -0000
@@ -43,12 +43,12 @@
struct _Diagram {
DiagramData parent_instance;
- char *filename;
+ gchar *filename; /* Filename of the diagram in UTF8 encoding */
int unsaved; /* True if diagram is created but not saved.*/
int mollified;
gboolean autosaved; /* True if the diagram is autosaved since last mod */
- char *autosavefilename; /* Holds the name of the current autosave file
- * for this diagram, or NULL. */
+ gchar *autosavefilename; /* Holds the name of the current autosave file
+ * for this diagram in filesystem enc, or NULL. */
Color pagebreak_color; /*!< just to show page breaks */
DiaGrid grid; /*!< the display grid */
@@ -79,9 +79,9 @@
GList *dia_open_diagrams(void); /* Read only! */
-Diagram *diagram_load(const char *filename, DiaImportFilter *ifilter);
-int diagram_load_into (Diagram *dest, const char *filename, DiaImportFilter *ifilter);
-Diagram *new_diagram(const char *filename); /*Note: filename is copied*/
+Diagram *diagram_load(const gchar *filename, DiaImportFilter *ifilter);
+int diagram_load_into (Diagram *dest, const gchar *filename, DiaImportFilter *ifilter);
+Diagram *new_diagram(const gchar *filename); /*Note: filename is copied*/
/** Perform updates related to getting a new current diagram */
void diagram_set_current(Diagram *diagram);
void diagram_destroy(Diagram *dia);
@@ -139,8 +139,9 @@
void diagram_unparent_selected(Diagram *dia);
void diagram_unparent_children_selected(Diagram *dia);
-void diagram_set_filename(Diagram *dia, const char *filename);
+void diagram_set_filename(Diagram *dia, const gchar *filename);
gchar *diagram_get_name(Diagram *dia);
+gchar *diagram_get_filename(Diagram *dia);
int diagram_modified_exists(void);
Index: app/diapsft2renderer.c
===================================================================
RCS file: /cvs/gnome/dia/app/diapsft2renderer.c,v
retrieving revision 1.10
diff -u -r1.10 diapsft2renderer.c
--- app/diapsft2renderer.c 26 Jun 2005 18:51:15 -0000 1.10
+++ app/diapsft2renderer.c 30 Jul 2005 08:32:44 -0000
@@ -210,12 +210,12 @@
int glyph_idx;
if (font == NULL) {
- fprintf(stderr, "No font found\n");
+ g_error("No font found\n");
continue;
}
ft_face = pango_ft2_font_get_face(font);
if (ft_face == NULL) {
- fprintf(stderr, "Failed to get face for font %s\n",
+ g_error("Failed to get face for font %s\n",
pango_font_description_to_string(pango_font_describe(font)));
continue;
}
@@ -303,7 +303,7 @@
fprintf(renderer->file, "start_ol\n");
if ((error=FT_Load_Glyph(face, glyph_index, load_flags))) {
- fprintf(stderr, "Can't load glyph: %d\n", error);
+ g_error("Can't load glyph: %d\n", error);
return;
}
FT_Get_Glyph (face->glyph, &glyph);
Index: app/display.c
===================================================================
RCS file: /cvs/gnome/dia/app/display.c,v
retrieving revision 1.97
diff -u -r1.97 display.c
--- app/display.c 3 Jul 2005 17:55:49 -0000 1.97
+++ app/display.c 30 Jul 2005 08:32:45 -0000
@@ -182,12 +182,6 @@
ddisp->display_areas = NULL;
ddisp->update_id = 0;
- filename = strrchr(dia->filename, G_DIR_SEPARATOR);
- if (filename==NULL) {
- filename = dia->filename;
- } else {
- filename++;
- }
diagram_add_ddisplay(dia, ddisp);
g_signal_connect (dia, "selection_changed", G_CALLBACK(selection_changed), ddisp);
@@ -217,8 +211,10 @@
ddisp);
ddisp->preedit_attrs = NULL;
+ filename = diagram_get_name(dia);
create_display_shell(ddisp, prefs.new_view.width, prefs.new_view.height,
filename, prefs.new_view.use_menu_bar, !embedded);
+ g_free(filename);
ddisplay_update_statusbar (ddisp);
@@ -251,7 +247,6 @@
input_methods_done = TRUE;
}
}
-
return ddisp; /* set the user data */
}
@@ -1004,7 +999,6 @@
GtkWidget *dialog, *button;
gchar *fname;
gchar *msg;
-
g_return_if_fail(ddisp != NULL);
dia = ddisp->diagram;
@@ -1015,14 +1009,12 @@
return;
}
- fname = dia->filename;
- if (!fname)
- fname = _("<unnamed>");
+ fname = diagram_get_name(dia);
msg = g_strdup_printf (
_("The diagram '%s'\n"
"has not been saved. Save changes now?"),
fname);
-
+ g_free(fname);
dialog = gtk_message_dialog_new(GTK_WINDOW (ddisp->shell),
GTK_DIALOG_MODAL,
GTK_MESSAGE_QUESTION,
Index: app/export_png.c
===================================================================
RCS file: /cvs/gnome/dia/app/export_png.c,v
retrieving revision 1.19
diff -u -r1.19 export_png.c
--- app/export_png.c 11 Jan 2004 21:06:49 -0000 1.19
+++ app/export_png.c 30 Jul 2005 08:32:45 -0000
@@ -131,7 +131,8 @@
fp = fopen(cbdata->filename, "wb");
if (fp == NULL) {
- message_error(_("Can't open output file %s: %s\n"), cbdata->filename, strerror(errno));
+ message_error(_("Can't open output file %s: %s\n"),
+ dia_message_filename(cbdata->filename), g_strerror(errno));
goto error;
}
Index: app/filedlg.c
===================================================================
RCS file: /cvs/gnome/dia/app/filedlg.c,v
retrieving revision 1.56
diff -u -r1.56 filedlg.c
--- app/filedlg.c 18 Jul 2005 16:35:13 -0000 1.56
+++ app/filedlg.c 30 Jul 2005 08:32:45 -0000
@@ -32,6 +32,7 @@
#include "intl.h"
#include "filter.h"
#include "dia_dirs.h"
+#include "app_procs.h"
#include "persistence.h"
#include "display.h"
#include "message.h"
@@ -149,7 +150,7 @@
gint response,
gpointer user_data)
{
- const char *filename;
+ char *filename;
Diagram *diagram = NULL;
DDisplay *ddisp;
@@ -158,10 +159,11 @@
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);
@@ -184,7 +186,7 @@
DDisplay *ddisp;
Diagram *dia = NULL;
GtkWindow *parent_window;
- gchar *filename = NULL;
+ gchar *filename;
/* FIXME: we should not use ddisp_active but instead get the current diagram
* from caller. Thus we could offer the option to "load into" if invoked by
@@ -207,15 +209,11 @@
NULL);
gtk_window_set_role(GTK_WINDOW(opendlg), "open_diagram");
gtk_window_set_position(GTK_WINDOW(opendlg), GTK_WIN_POS_MOUSE);
- if (dia && dia->filename)
- filename = g_filename_from_utf8(dia->filename, -1, NULL, NULL, NULL);
- if (filename != NULL) {
- char* fnabs = dia_get_absolute_filename (filename);
- if (fnabs)
- gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(opendlg), fnabs);
- g_free(fnabs);
- g_free(filename);
- }
+
+ filename = diagram_get_filename(dia);
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(opendlg), filename);
+ g_free(filename);
+
g_signal_connect(GTK_OBJECT(opendlg), "destroy",
G_CALLBACK(gtk_widget_destroyed), &opendlg);
} else {
@@ -287,26 +285,17 @@
if (stat(filename, &stat_struct) == 0) {
GtkWidget *dialog = NULL;
- char buffer[300];
- char *utf8filename = NULL;
- if (!g_utf8_validate(filename, -1, NULL)) {
- utf8filename = g_filename_to_utf8(filename, -1, NULL, NULL, NULL);
- if (utf8filename == NULL) {
- message_warning(_("Some characters in the filename are neither UTF-8\n"
- "nor your local encoding.\nSome things will break."));
- }
- }
- if (utf8filename == NULL) utf8filename = g_strdup(filename);
-
- g_snprintf(buffer, 300,
+ char *buffer;
+ buffer = g_strdup_printf(
_("The file '%s' already exists.\n"
- "Do you want to overwrite it?"), utf8filename);
- g_free(utf8filename);
+ "Do you want to overwrite it?"),
+ dia_message_filename(filename));
dialog = gtk_message_dialog_new (GTK_WINDOW(fs),
GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION,
GTK_BUTTONS_YES_NO,
buffer);
+ g_free(buffer);
gtk_window_set_title (GTK_WINDOW (dialog), _("File already exists"));
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
@@ -341,7 +330,7 @@
{
DDisplay *ddisp;
Diagram *dia;
- gchar *filename = NULL;
+ gchar *filename;
ddisp = ddisplay_active();
if (!ddisp) return;
@@ -394,20 +383,17 @@
return;
}
}
- if (dia && dia->filename)
- filename = g_filename_from_utf8(dia->filename, -1, NULL, NULL, NULL);
- if (filename != NULL) {
- char* fnabs = dia_get_absolute_filename (filename);
- if (fnabs) {
- gchar *base = g_path_get_basename(fnabs);
- gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(savedlg), fnabs);
+
+ filename = diagram_get_name(dia);
+ if (filename) {
+ gchar *base = diagram_get_name(dia);
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(savedlg), filename);
/* FileChooser api insist on exiting files for set_filename */
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(savedlg), base);
- g_free(base);
- }
- g_free(fnabs);
- g_free(filename);
+ g_free(base);
+ g_free(filename);
}
+
g_object_ref(dia);
gtk_object_set_user_data(GTK_OBJECT(savedlg), dia);
@@ -430,7 +416,7 @@
if (diagram->unsaved) {
file_save_as_callback(data, action, widget);
} else {
- gchar *filename = g_filename_from_utf8(diagram->filename, -1, NULL, NULL, NULL);
+ gchar *filename = diagram_get_filename(diagram);
diagram_update_extents(diagram);
diagram_save(diagram, filename);
g_free (filename);
@@ -462,24 +448,16 @@
{
int index = gtk_combo_box_get_active (GTK_COMBO_BOX(widget)) - 1; /* Ignore "By Extension" */
DiaExportFilter *efilter = efilter_by_index (index, NULL);
- GString *s;
- const gchar *text = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(exportdlg));
- const gchar *last_dot = text ? strrchr(text, '.') : NULL;
- gchar *basename = NULL;
-
- if (!efilter || last_dot == text || text[0] == '\0' ||
- efilter->extensions[0] == NULL)
+ gchar *s;
+ gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(exportdlg));
+ if (filename == NULL || efilter == NULL)
return;
- basename = g_path_get_basename (text);
- last_dot = strrchr(basename, '.');
- s = g_string_new(basename);
- if (last_dot)
- g_string_truncate(s, last_dot-basename);
- g_string_append(s, ".");
- g_string_append(s, efilter->extensions[0]);
- gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(exportdlg), s->str);
- g_string_free (s, TRUE);
- g_free (basename);
+ s = build_filename_extension(filename, efilter->extensions[0]);
+ g_free (filename);
+ filename = g_path_get_basename(s);
+ g_free (s);
+ gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(exportdlg), dia_message_filename(filename));
+ g_free (filename);
}
/**
@@ -534,9 +512,8 @@
if (stat(filename, &statbuf) == 0) {
GtkWidget *dialog = NULL;
- char buffer[300];
-
- g_snprintf(buffer, 300,
+ char *buffer;
+ buffer=g_strdup_printf(
_("The file '%s' already exists.\n"
"Do you want to overwrite it?"), dia_message_filename(filename));
dialog = gtk_message_dialog_new (GTK_WINDOW(fs),
@@ -544,6 +521,7 @@
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_YES_NO,
buffer);
+ g_free(buffer);
gtk_window_set_title (GTK_WINDOW (dialog), _("File already exists"));
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
@@ -562,8 +540,10 @@
if (!ef)
ef = filter_guess_export_filter(filename);
if (ef) {
+ gchar *diafilename = diagram_get_filename(dia);
g_object_ref(dia->data);
- ef->export_func(dia->data, filename, dia->filename, ef->user_data);
+ ef->export_func(dia->data, filename, diafilename, ef->user_data);
+ g_free(diafilename);
g_object_unref(dia->data);
} else
message_error(_("Could not determine which export filter\n"
@@ -571,6 +551,7 @@
}
g_object_unref (dia); /* drop our diagram reference */
gtk_widget_destroy(exportdlg);
+
}
/**
@@ -581,7 +562,7 @@
{
DDisplay *ddisp;
Diagram *dia;
- gchar *filename = NULL;
+ gchar *filename;
ddisp = ddisplay_active();
if (!ddisp) return;
@@ -647,8 +628,7 @@
gtk_object_set_user_data(GTK_OBJECT(exportdlg), dia);
gtk_widget_set_sensitive(exportdlg, TRUE);
- if (dia && dia->filename)
- filename = g_filename_from_utf8(dia->filename, -1, NULL, NULL, NULL);
+ filename = diagram_get_filename(dia);
if (filename != NULL) {
char* fnabs = dia_get_absolute_filename (filename);
if (fnabs) {
@@ -663,6 +643,7 @@
g_free(fnabs);
g_free(filename);
}
+
export_set_extension(GTK_WIDGET(g_object_get_data(G_OBJECT(exportdlg),
"export-menu")));
Index: app/layer_dialog.c
===================================================================
RCS file: /cvs/gnome/dia/app/layer_dialog.c,v
retrieving revision 1.40
diff -u -r1.40 layer_dialog.c
--- app/layer_dialog.c 20 May 2005 18:00:03 -0000 1.40
+++ app/layer_dialog.c 30 Jul 2005 08:32:46 -0000
@@ -477,7 +477,7 @@
GtkWidget *menu_item;
GList *dia_list;
Diagram *dia;
- char *filename;
+ gchar *filename;
int i;
int current_nr;
@@ -500,15 +500,10 @@
if (dia == layer_dialog->diagram) {
current_nr = i;
}
-
- filename = strrchr(dia->filename, G_DIR_SEPARATOR);
- if (filename==NULL) {
- filename = dia->filename;
- } else {
- filename++;
- }
+ filename = diagram_get_name(dia);
menu_item = gtk_menu_item_new_with_label(filename);
+ g_free(filename);
g_signal_connect (GTK_OBJECT (menu_item), "activate",
(GtkSignalFunc) layer_dialog_select_diagram_callback,
Index: app/load_save.c
===================================================================
RCS file: /cvs/gnome/dia/app/load_save.c,v
retrieving revision 1.72
diff -u -r1.72 load_save.c
--- app/load_save.c 18 Jul 2005 16:35:13 -0000 1.72
+++ app/load_save.c 30 Jul 2005 08:32:46 -0000
@@ -40,6 +40,7 @@
#include "load_save.h"
#include "group.h"
#include "diagramdata.h"
+#include "dia_dirs.h"
#include "message.h"
#include "preferences.h"
#include "diapagelayout.h"
@@ -67,16 +68,16 @@
gpointer value,
gpointer user_data);
static xmlNodePtr find_node_named (xmlNodePtr p, const char *name);
-static gboolean diagram_data_load(const char *filename, DiagramData *data,
+static gboolean diagram_data_load(const gchar *filename, DiagramData *data,
void* user_data);
static gboolean write_objects(GList *objects, xmlNodePtr objects_node,
GHashTable *objects_hash, int *obj_nr,
const char *filename);
static gboolean write_connections(GList *objects, xmlNodePtr layer_node,
GHashTable *objects_hash);
-static xmlDocPtr diagram_data_write_doc(DiagramData *data, const char *filename);
-static int diagram_data_raw_save(DiagramData *data, const char *filename);
-static int diagram_data_save(DiagramData *data, const char *filename);
+static xmlDocPtr diagram_data_write_doc(DiagramData *data, const gchar *filename);
+static int diagram_data_raw_save(DiagramData *data, const gchar *filename);
+static int diagram_data_save(DiagramData *data, const gchar *filename);
static void
@@ -332,7 +333,7 @@
}
static gboolean
-diagram_data_load(const char *filename, DiagramData *data, void* user_data)
+diagram_data_load(const gchar *filename, DiagramData *data, void* user_data)
{
GHashTable *objects_hash;
int fd;
@@ -749,7 +750,7 @@
/* Filename seems to be junk, but is passed on to objects */
static xmlDocPtr
-diagram_data_write_doc(DiagramData *data, const char *filename)
+diagram_data_write_doc(DiagramData *data, const gchar *filename)
{
xmlDocPtr doc;
xmlNodePtr tree;
@@ -868,7 +869,7 @@
* Returns >= 0 on success.
* Only for internal use. */
static int
-diagram_data_raw_save(DiagramData *data, const char *filename)
+diagram_data_raw_save(DiagramData *data, const gchar *filename)
{
xmlDocPtr doc;
int ret;
@@ -883,10 +884,10 @@
/** This saves the diagram, using a backup in case of failure */
static int
-diagram_data_save(DiagramData *data, const char *filename)
+diagram_data_save(DiagramData *data, const gchar *filename)
{
FILE *file;
- char *bakname,*tmpname,*dirname,*p;
+ gchar *bakname,*tmpname,*dirname,*p;
int mode,_umask;
int fildes;
int ret;
@@ -915,7 +916,7 @@
if (file==NULL) {
message_error(_("Can't open output file %s: %s\n"),
- dia_message_filename(tmpname), strerror(errno));
+ dia_message_filename(tmpname), g_strerror(errno));
return FALSE;
}
fclose(file);
@@ -943,7 +944,7 @@
}
int
-diagram_save(Diagram *dia, const char *filename)
+diagram_save(Diagram *dia, const gchar *filename)
{
gboolean res = diagram_data_save(dia->data, filename);
@@ -966,18 +967,18 @@
void
diagram_cleanup_autosave(Diagram *dia)
{
- gchar *savefile;
+ gchar *tmp;
+ gchar *savefile = dia->autosavefilename;
struct stat statbuf;
- savefile = dia->autosavefilename;
if (savefile == NULL) return;
- g_print("Cleaning up autosave %s for %s\n",
- savefile, dia->filename ? dia->filename : "<no name>");
-
+ g_print(_("Cleaning up autosave %s for %s\n"),
+ dia_message_filename(savefile),
+ dia_message_filename(diagram_get_filename(dia)));
if (stat(savefile, &statbuf) == 0) { /* Success */
unlink(savefile);
}
- g_free(savefile);
+ g_free(dia->autosavefilename);
dia->autosavefilename = NULL;
dia->autosaved = FALSE;
}
@@ -988,7 +989,7 @@
void
diagram_autosave(Diagram *dia)
{
- gchar *save_filename;
+ gchar *savefile;
/* Must check if the diagram is still valid, or Death Ensues! */
GList *diagrams = dia_open_diagrams();
@@ -998,12 +999,12 @@
if (diagram == dia &&
diagram_is_modified(diagram) &&
!diagram->autosaved) {
- save_filename = g_strdup_printf("%s.autosave", dia->filename);
-
- if (dia->autosavefilename != NULL)
- g_free(dia->autosavefilename);
- dia->autosavefilename = save_filename;
- diagram_data_raw_save(dia->data, save_filename);
+ gchar *tmp = diagram_get_filename(dia);
+ savefile = g_strdup_printf("%s.autosave", tmp);
+ g_free(tmp);
+ g_free(dia->autosavefilename);
+ dia->autosavefilename = savefile;
+ diagram_data_raw_save(dia->data, savefile);
dia->autosaved = TRUE;
return;
}
Index: app/paginate_psprint.c
===================================================================
RCS file: /cvs/gnome/dia/app/paginate_psprint.c,v
retrieving revision 1.45
diff -u -r1.45 paginate_psprint.c
--- app/paginate_psprint.c 3 Jul 2005 17:55:49 -0000 1.45
+++ app/paginate_psprint.c 30 Jul 2005 08:32:46 -0000
@@ -29,6 +29,7 @@
#include <errno.h>
#include "intl.h"
+#include "dia_dirs.h"
#include "message.h"
#include "diagram.h"
#include "diagramdata.h"
@@ -391,11 +392,12 @@
if (!file) {
if (is_pipe) {
- message_warning(_("Could not run command '%s': %s"), printcmd, strerror(errno));
+ message_warning(_("Could not run command '%s': %s"),
+ dia_message_filename(printcmd), g_strerror(errno));
g_free(printcmd);
} else
message_warning(_("Could not open '%s' for writing: %s"),
- gtk_entry_get_text(GTK_ENTRY(ofile)), strerror(errno));
+ gtk_entry_get_text(GTK_ENTRY(ofile)), g_strerror(errno));
gtk_widget_destroy(dialog);
return;
}
@@ -411,8 +413,8 @@
if (is_pipe) {
int exitval = pclose(file);
if (exitval != 0) {
- message_error(_("Printing error: command '%s' returned %d\n"),
- printcmd, exitval);
+ message_error("Printing error: command '%s' returned %d\n",
+ dia_message_filename(printcmd), exitval);
}
} else
fclose(file);
@@ -422,8 +424,8 @@
signal(SIGPIPE, old_action);
#endif
if (sigpipe_received)
- message_error(_("Printing error: command '%s' caused sigpipe."),
- printcmd);
+ message_error("Printing error: command '%s' caused sigpipe.",
+ dia_message_filename(printcmd));
if (is_pipe) g_free(printcmd);
}
Index: app/recent_files.c
===================================================================
RCS file: /cvs/gnome/dia/app/recent_files.c,v
retrieving revision 1.19
diff -u -r1.19 recent_files.c
--- app/recent_files.c 26 Jun 2005 18:51:15 -0000 1.19
+++ app/recent_files.c 30 Jul 2005 08:32:46 -0000
@@ -156,15 +156,11 @@
* moving them.
*/
void
-recent_file_history_add(const char *fname)
+recent_file_history_add(const gchar *filename)
{
- gchar *absname = dia_get_absolute_filename(fname);
- gchar *filename = g_filename_to_utf8(absname, -1, NULL, NULL, NULL);
+ /* filename is already in UTF-8 and has absolute path */
recent_file_history_clear_menu();
persistent_list_add("recent-files", filename);
- g_free(absname);
- g_free(filename);
-
recent_file_history_make_menu();
}
@@ -185,15 +181,12 @@
/* remove a broken file from the history and update menu accordingly
* Xing Wang, 2002.06 */
void
-recent_file_history_remove (const char *fname)
+recent_file_history_remove (const gchar *filename)
{
- gchar *absname = dia_get_absolute_filename(fname);
- gchar *filename = g_filename_to_utf8(absname, -1, NULL, NULL, NULL);
+ /* filename is already in UTF-8 and has absolute path */
recent_file_history_clear_menu();
persistent_list_remove("recent-files", filename);
- g_free(absname);
- g_free(filename);
recent_file_history_make_menu();
}
@@ -203,7 +196,8 @@
{
DiaImportFilter *ifilter = NULL;
Diagram *diagram = NULL;
- gchar *filename = g_filename_from_utf8((gchar *)data, -1, NULL, NULL, NULL);
+ gchar *utf8filename = (gchar *)data;
+ gchar *filename = g_filename_from_utf8(utf8filename, -1, NULL, NULL, NULL);
ifilter = filter_guess_import_filter(filename);
@@ -213,6 +207,6 @@
layer_dialog_set_diagram(diagram);
new_display(diagram);
} else
- recent_file_history_remove (filename);
+ recent_file_history_remove (utf8filename);
g_free(filename);
}
Index: app/render_eps.c
===================================================================
RCS file: /cvs/gnome/dia/app/render_eps.c,v
retrieving revision 1.74
diff -u -r1.74 render_eps.c
--- app/render_eps.c 18 Jul 2005 16:35:13 -0000 1.74
+++ app/render_eps.c 30 Jul 2005 08:32:46 -0000
@@ -57,6 +57,7 @@
#include "intl.h"
#include "render_eps.h"
+#include "dia_dirs.h"
#include "message.h"
#include "diagramdata.h"
#include "font.h"
@@ -101,7 +102,7 @@
outfile = fopen(filename, "w");
if (outfile == NULL) {
message_error(_("Can't open output file %s: %s\n"),
- dia_message_filename(filename), strerror(errno));
+ dia_message_filename(filename), g_strerror(errno));
g_object_unref(renderer);
return;
}
Index: app/sheets_dialog_callbacks.c
===================================================================
RCS file: /cvs/gnome/dia/app/sheets_dialog_callbacks.c,v
retrieving revision 1.23
diff -u -r1.23 sheets_dialog_callbacks.c
--- app/sheets_dialog_callbacks.c 18 Jul 2005 16:35:13 -0000 1.23
+++ app/sheets_dialog_callbacks.c 30 Jul 2005 08:32:47 -0000
@@ -806,7 +806,7 @@
if (stat(file_name, &stat_buf) == -1)
{
message_error(_("Error examining %s: %s"),
- dia_message_filename(file_name), strerror(errno));
+ dia_message_filename(file_name), g_strerror(errno));
g_free(file_name);
return;
}
@@ -1594,14 +1594,14 @@
if ((fp_src = fopen(src, "rb")) == NULL)
{
message_error(_("Couldn't open '%s': %s"),
- dia_message_filename(src), strerror(errno));
+ dia_message_filename(src), g_strerror(errno));
return FALSE;
}
if ((fp_dst = fopen(dst, "wb")) == NULL)
{
message_error(_("Couldn't open '%s': %s"),
- dia_message_filename(dst), strerror(errno));
+ dia_message_filename(dst), g_strerror(errno));
return FALSE;
}
Index: lib/widgets.c
===================================================================
RCS file: /cvs/gnome/dia/lib/widgets.c,v
retrieving revision 1.119
diff -u -r1.119 widgets.c
--- lib/widgets.c 1 Jul 2005 16:33:58 -0000 1.119
+++ lib/widgets.c 30 Jul 2005 08:32:48 -0000
@@ -1262,10 +1262,8 @@
gtk_widget_destroy(GTK_WIDGET(fs->dialog));
fs->dialog = NULL;
}
- if (fs->sys_filename) {
- g_free(fs->sys_filename);
- fs->sys_filename = NULL;
- }
+ g_free(fs->sys_filename);
+ fs->sys_filename = NULL;
(* GTK_WIDGET_CLASS (gtk_type_class(gtk_hbox_get_type ()))->unrealize) (widget);
}
@@ -1338,7 +1336,7 @@
fs->dialog = NULL;
fs->sys_filename = NULL;
fs->entry = GTK_ENTRY(gtk_entry_new());
- gtk_box_pack_start(GTK_BOX(fs), GTK_WIDGET(fs->entry), FALSE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(fs), GTK_WIDGET(fs->entry), TRUE, TRUE, 0);
gtk_widget_show(GTK_WIDGET(fs->entry));
fs->browse = GTK_BUTTON(gtk_button_new_with_label(_("Browse")));
gtk_box_pack_start(GTK_BOX(fs), GTK_WIDGET(fs->browse), FALSE, TRUE, 0);
Index: objects/standard/image.c
===================================================================
RCS file: /cvs/gnome/dia/objects/standard/image.c,v
retrieving revision 1.50
diff -u -r1.50 image.c
--- objects/standard/image.c 10 Jul 2005 15:09:34 -0000 1.50
+++ objects/standard/image.c 30 Jul 2005 08:32:49 -0000
@@ -26,6 +26,7 @@
#include "intl.h"
#include "message.h"
+#include "dia_dirs.h"
#include "object.h"
#include "element.h"
#include "connectionpoint.h"
@@ -681,13 +682,15 @@
char *tmp;
/* Found file in current dir. */
message_warning(_("The image file '%s' was not found in that directory.\n"
- "Using the file '%s' instead\n"), image->file, image_file_name);
+ "Using the file '%s' instead\n"),
+ dia_message_filename(image->file),
+ dia_message_filename(image_file_name));
tmp = image->file;
image->file = g_strdup(image_file_name);
g_free(tmp);
} else {
message_warning(_("The image file '%s' was not found.\n"),
- image_file_name);
+ dia_message_filename(image_file_name));
}
}
}
@@ -709,7 +712,7 @@
if (image->image == NULL) {
/* Didn't find file in current dir. */
message_warning(_("The image file '%s' was not found.\n"),
- image->file);
+ dia_message_filename(image->file));
}
}
}
Index: plug-ins/Makefile.am
===================================================================
RCS file: /cvs/gnome/dia/plug-ins/Makefile.am,v
retrieving revision 1.21
diff -u -r1.21 Makefile.am
--- plug-ins/Makefile.am 27 Nov 2004 21:04:30 -0000 1.21
+++ plug-ins/Makefile.am 30 Jul 2005 08:32:49 -0000
@@ -1,6 +1,10 @@
-# Remember to also add subdirs in configure.in
+if WITH_GNOMEPRINT
+gprint_subdir = gprint
+endif
+
+# Remember to also add subdirs in configure.am
SUBDIRS = cgm cairo pstricks hpgl wpg svg shape dxf python xfig \
- wmf metapost xslt pixbuf gprint
+ wmf metapost xslt pixbuf $(gprint_subdir)
EXTRA_DIST = \
makefile.msc objects.def
Index: plug-ins/cgm/cgm.c
===================================================================
RCS file: /cvs/gnome/dia/plug-ins/cgm/cgm.c,v
retrieving revision 1.27
diff -u -r1.27 cgm.c
--- plug-ins/cgm/cgm.c 18 Jul 2005 18:53:26 -0000 1.27
+++ plug-ins/cgm/cgm.c 30 Jul 2005 08:32:50 -0000
@@ -705,7 +705,7 @@
write_int16(renderer->file, 1);
break;
default:
- message_error("svg_renderer: Unsupported fill mode specified!\n");
+ message_error("cgm_renderer: Unsupported fill mode specified!\n");
}
#endif
}
Index: plug-ins/svg/render_svg.c
===================================================================
RCS file: /cvs/gnome/dia/plug-ins/svg/render_svg.c,v
retrieving revision 1.31
diff -u -r1.31 render_svg.c
--- plug-ins/svg/render_svg.c 18 Jul 2005 18:53:29 -0000 1.31
+++ plug-ins/svg/render_svg.c 30 Jul 2005 08:32:50 -0000
@@ -147,7 +147,7 @@
if (file==NULL) {
message_error(_("Can't open output file %s: %s\n"),
- dia_message_filename(filename), strerror(errno));
+ dia_message_filename(filename), g_strerror(errno));
return NULL;
}
fclose(file);