Revision: 930 http://svn.sourceforge.net/geany/?rev=930&view=rev Author: eht16 Date: 2006-10-25 07:38:48 -0700 (Wed, 25 Oct 2006)
Log Message: ----------- Added warning message dialog, united dialogs_show_info() and dialogs_show_error() to dialogs_show_msgbox(). Added warning message when opening files that cannot be handled correctly and set them to read-only mode.
Modified Paths: -------------- trunk/ChangeLog trunk/src/build.c trunk/src/dialogs.c trunk/src/dialogs.h trunk/src/document.c trunk/src/prefs.c trunk/src/win32.c
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2006-10-24 23:50:50 UTC (rev 929) +++ trunk/ChangeLog 2006-10-25 14:38:48 UTC (rev 930) @@ -1,3 +1,13 @@ +2006-10-25 Enrico Tröger enrico.troeger@uvena.de + + * src/dialogs.c, src/dialogs.h, src/build.c, src/prefs.c, src/win32.c + src/document.c: + Added warning message dialog, united dialogs_show_info() and + dialogs_show_error() to dialogs_show_msgbox(). + * src/document.c: Added warning message when opening files that cannot + be handled correctly and set them to read-only mode. + + 2006-10-24 Enrico Tröger enrico.troeger@uvena.de
* src/build.c, src/socket.c: Fixed compiler warnings under Windows.
Modified: trunk/src/build.c =================================================================== --- trunk/src/build.c 2006-10-24 23:50:50 UTC (rev 929) +++ trunk/src/build.c 2006-10-25 14:38:48 UTC (rev 930) @@ -258,7 +258,8 @@ } else { - dialogs_show_error("Something very strange is occured, could not stat %s (%s)", + dialogs_show_msgbox(GTK_MESSAGE_ERROR, + _("Something very strange is occured, could not stat %s (%s)"), doc_list[idx].file_name, strerror(errno)); } }
Modified: trunk/src/dialogs.c =================================================================== --- trunk/src/dialogs.c 2006-10-24 23:50:50 UTC (rev 929) +++ trunk/src/dialogs.c 2006-10-25 14:38:48 UTC (rev 930) @@ -120,7 +120,6 @@ gtk_combo_box_append_text(GTK_COMBO_BOX(encoding_combo), encoding_string); g_free(encoding_string); } - //gtk_combo_box_append_text(GTK_COMBO_BOX(encoding_combo), _("Do not any conversion")); gtk_combo_box_append_text(GTK_COMBO_BOX(encoding_combo), _("Detect from file")); gtk_combo_box_set_active(GTK_COMBO_BOX(encoding_combo), GEANY_ENCODINGS_MAX);
@@ -305,7 +304,7 @@ }
-void dialogs_show_info(const gchar *text, ...) +void dialogs_show_msgbox(gint type, const gchar *text, ...) { #ifndef G_OS_WIN32 GtkWidget *dialog; @@ -318,11 +317,10 @@ va_end(args);
#ifdef G_OS_WIN32 - win32_message_dialog(GTK_MESSAGE_INFO, string); + win32_message_dialog(type, string); #else - dialog = gtk_message_dialog_new(GTK_WINDOW(app->window), GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "%s", string); + type, GTK_BUTTONS_OK, "%s", string); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); #endif @@ -330,30 +328,6 @@ }
-void dialogs_show_error(const gchar *text, ...) -{ -#ifndef G_OS_WIN32 - GtkWidget *dialog; -#endif - gchar *string = g_malloc(512); - va_list args; - - va_start(args, text); - g_vsnprintf(string, 511, text, args); - va_end(args); - -#ifdef G_OS_WIN32 - win32_message_dialog(GTK_MESSAGE_ERROR, string); -#else - dialog = gtk_message_dialog_new(GTK_WINDOW(app->window), GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s", string); - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); -#endif - g_free(string); -} - - gboolean dialogs_show_unsaved_file(gint idx) { #ifndef G_OS_WIN32 @@ -860,8 +834,8 @@
if (idx == -1 || ! doc_list[idx].is_valid || doc_list[idx].file_name == NULL) { - dialogs_show_error( - _("An error occurred or file information could not be retrieved (e.g. from a new file).")); + dialogs_show_msgbox(GTK_MESSAGE_ERROR, + _("An error occurred or file information could not be retrieved (e.g. from a new file).")); return; }
Modified: trunk/src/dialogs.h =================================================================== --- trunk/src/dialogs.h 2006-10-24 23:50:50 UTC (rev 929) +++ trunk/src/dialogs.h 2006-10-25 14:38:48 UTC (rev 930) @@ -30,10 +30,6 @@ /* This shows the file selection dialog to save a file. */ void dialogs_show_save_as();
-void dialogs_show_info(const gchar *text, ...) G_GNUC_PRINTF (1, 2); - -void dialogs_show_error(const gchar *text, ...) G_GNUC_PRINTF (1, 2); - gboolean dialogs_show_unsaved_file(gint idx);
/* This shows the font selection dialog to choose a font. */ @@ -62,4 +58,6 @@
void dialogs_show_keyboard_shortcuts();
+void dialogs_show_msgbox(gint type, const gchar *text, ...); + #endif
Modified: trunk/src/document.c =================================================================== --- trunk/src/document.c 2006-10-24 23:50:50 UTC (rev 929) +++ trunk/src/document.c 2006-10-25 14:38:48 UTC (rev 930) @@ -617,9 +617,9 @@ }
#ifdef G_OS_WIN32 - if (! g_file_get_contents(utf8_filename, &data, &size, &err)) + if (! g_file_get_contents(utf8_filename, &data, NULL, &err)) #else - if (! g_file_get_contents(locale_filename, &data, &size, &err)) + if (! g_file_get_contents(locale_filename, &data, NULL, &err)) #endif { msgwin_status_add(err->message); @@ -629,6 +629,23 @@ return -1; }
+ /* check whether the size of the loaded data is equal to the size of the file in the filesystem */ + //size = strlen(data); + size = strlen(data); + if (size != st.st_size) + { + gchar *warn_msg = _("The file "%s" could not opened properly and probably was truncated. " + "Be aware that saving it can cause data lost.\nThe file was set to read-only."); + + if (app->main_window_realized) + dialogs_show_msgbox(GTK_MESSAGE_WARNING, warn_msg, utf8_filename); + + msgwin_status_add(warn_msg, utf8_filename); + + // set the file to read-only mode because saving it is probably dangerous + readonly = TRUE; + } + /* Determine character encoding and convert to UTF-8 */ if (forced_enc != NULL) { @@ -810,7 +827,7 @@
if (conv_error != NULL) { - dialogs_show_error( + dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("An error occurred while converting the file from UTF-8 in "%s". The file remains unsaved." "\nError message: %s\n"), doc_list[idx].encoding, conv_error->message); @@ -1444,7 +1461,7 @@ rc = system(cmdline); if (rc != 0) { - dialogs_show_error(_("Printing of "%s" failed (return code: %d)."), + dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Printing of "%s" failed (return code: %d)."), doc_list[idx].file_name, rc); } else
Modified: trunk/src/prefs.c =================================================================== --- trunk/src/prefs.c 2006-10-24 23:50:50 UTC (rev 929) +++ trunk/src/prefs.c 2006-10-25 14:38:48 UTC (rev 930) @@ -873,7 +873,7 @@ if (keys[i]->key == key && keys[i]->mods == mods && ! (keys[i]->key == keys[idx]->key && keys[i]->mods == keys[idx]->mods)) { - dialogs_show_error( + dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("The combination '%s' is already used for "%s". Please choose another one."), action, keys[i]->label); return TRUE;
Modified: trunk/src/win32.c =================================================================== --- trunk/src/win32.c 2006-10-24 23:50:50 UTC (rev 929) +++ trunk/src/win32.c 2006-10-25 14:38:48 UTC (rev 930) @@ -337,6 +337,12 @@ title = _("Question"); break; } + case GTK_MESSAGE_WARNING: + { + t = MB_OK | MB_ICONWARNING; + title = _("Warning"); + break; + } default: { t = MB_OK | MB_ICONINFORMATION;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.