Commit 04a6e01c authored by Bruno Boaventura's avatar Bruno Boaventura Committed by Paolo Borelli

create is_recoverable_error, rename unrecoverable_error to

2006-12-12  Bruno Boaventura <brunoboaventura@gmail.com>

	* gedit/gedit-io-error-message-area.[ch]: create
	is_recoverable_error, rename unrecoverable_error to
	io_loading_error.
	* gedit/gedit-tab.c: rename recoverable_loading_error to
	conversion_loading_error. Add a "Retry" button to the message
	area when the error is recoverable. Fixes #372653.
parent 76e4ad71
2006-12-12 Bruno Boaventura <brunoboaventura@gmail.com>
* gedit/gedit-io-error-message-area.[ch]: create
is_recoverable_error, rename unrecoverable_error to
io_loading_error.
* gedit/gedit-tab.c: rename recoverable_loading_error to
conversion_loading_error. Add a "Retry" button to the message
area when the error is recoverable. Fixes #372653.
2006-12-10 Paolo Borelli <pborelli@katamail.com>
* gedit/gedit-module.c: fail gradefully if
......
......@@ -52,8 +52,30 @@
#define MAX_URI_IN_DIALOG_LENGTH 50
static gboolean
is_recoverable_error (const GError *error)
{
gboolean is_recoverable = FALSE;
if (error->domain == GEDIT_DOCUMENT_ERROR)
{
switch (error->code) {
case GNOME_VFS_ERROR_ACCESS_DENIED:
case GNOME_VFS_ERROR_TOO_MANY_OPEN_FILES:
case GNOME_VFS_ERROR_NO_MEMORY:
case GNOME_VFS_ERROR_HOST_NOT_FOUND:
case GNOME_VFS_ERROR_HOST_HAS_NO_ADDRESS:
case GNOME_VFS_ERROR_LOGIN_FAILED:
is_recoverable = TRUE;
}
}
return is_recoverable;
}
static GtkWidget *
create_unrecoverable_error_message_area (const gchar *primary_text,
create_io_loading_error_message_area (const gchar *primary_text,
const gchar *secondary_text)
{
GtkWidget *message_area;
......@@ -113,7 +135,7 @@ create_unrecoverable_error_message_area (const gchar *primary_text,
}
GtkWidget *
gedit_unrecoverable_loading_error_message_area_new (const gchar *uri,
gedit_io_loading_error_message_area_new (const gchar *uri,
const GError *error)
{
gchar *error_message = NULL;
......@@ -331,9 +353,17 @@ gedit_unrecoverable_loading_error_message_area_new (const gchar *uri,
error_message = g_strdup_printf (_("Could not open the file %s."),
uri_for_display);
message_area = create_unrecoverable_error_message_area (error_message,
message_area = create_io_loading_error_message_area (error_message,
message_details);
if (is_recoverable_error (error))
{
gedit_message_area_add_stock_button_with_text (GEDIT_MESSAGE_AREA (message_area),
_("_Retry"),
GTK_STOCK_REFRESH,
GTK_RESPONSE_OK);
}
g_free (uri_for_display);
g_free (error_message);
g_free (message_details);
......@@ -552,7 +582,7 @@ gedit_unrecoverable_reverting_error_message_area_new (const gchar *uri,
error_message = g_strdup_printf (_("Could not revert the file %s."),
uri_for_display);
message_area = create_unrecoverable_error_message_area (error_message,
message_area = create_io_loading_error_message_area (error_message,
message_details);
g_free (uri_for_display);
......@@ -1318,7 +1348,7 @@ gedit_unrecoverable_saving_error_message_area_new (const gchar *uri,
error_message = g_strdup_printf (_("Could not save the file %s."),
uri_for_display);
message_area = create_unrecoverable_error_message_area (error_message,
message_area = create_io_loading_error_message_area (error_message,
message_details);
g_free (uri_for_display);
......
......@@ -35,41 +35,32 @@
G_BEGIN_DECLS
GtkWidget *gedit_unrecoverable_loading_error_message_area_new (
const gchar *uri,
GtkWidget *gedit_io_loading_error_message_area_new (const gchar *uri,
const GError *error);
GtkWidget *gedit_unrecoverable_reverting_error_message_area_new (
const gchar *uri,
GtkWidget *gedit_unrecoverable_reverting_error_message_area_new (const gchar *uri,
const GError *error);
GtkWidget *gedit_conversion_error_while_loading_message_area_new (
const gchar *uri,
GtkWidget *gedit_conversion_error_while_loading_message_area_new (const gchar *uri,
const GeditEncoding *encoding,
const GError *error);
GtkWidget *gedit_conversion_error_while_saving_message_area_new (
const gchar *uri,
GtkWidget *gedit_conversion_error_while_saving_message_area_new (const gchar *uri,
const GeditEncoding *encoding,
const GError *error);
const GeditEncoding
*gedit_conversion_error_message_area_get_encoding (
GtkWidget *message_area);
*gedit_conversion_error_message_area_get_encoding (GtkWidget *message_area);
GtkWidget *gedit_file_already_open_warning_message_area_new (
const gchar *uri);
GtkWidget *gedit_file_already_open_warning_message_area_new (const gchar *uri);
GtkWidget *gedit_externally_modified_saving_error_message_area_new (
const gchar *uri,
GtkWidget *gedit_externally_modified_saving_error_message_area_new (const gchar *uri,
const GError *error);
GtkWidget *gedit_no_backup_saving_error_message_area_new (
const gchar *uri,
GtkWidget *gedit_no_backup_saving_error_message_area_new (const gchar *uri,
const GError *error);
GtkWidget *gedit_unrecoverable_saving_error_message_area_new (
const gchar *uri,
GtkWidget *gedit_unrecoverable_saving_error_message_area_new (const gchar *uri,
const GError *error);
G_END_DECLS
......
......@@ -461,15 +461,40 @@ remove_tab (GeditTab *tab)
}
static void
unrecoverable_loading_error_message_area_response (GeditMessageArea *message_area,
io_loading_error_message_area_response (GeditMessageArea *message_area,
gint response_id,
GeditTab *tab)
{
if (response_id == GTK_RESPONSE_OK)
{
GeditDocument *doc;
gchar *uri;
doc = gedit_tab_get_document (tab);
g_return_if_fail (GEDIT_IS_DOCUMENT (doc));
uri = gedit_document_get_uri (doc);
g_return_if_fail (uri != NULL);
set_message_area (tab, NULL);
gedit_tab_set_state (tab, GEDIT_TAB_STATE_LOADING);
g_return_if_fail (tab->priv->auto_save_timeout <= 0);
gedit_document_load (doc,
uri,
tab->priv->tmp_encoding,
tab->priv->tmp_line_pos,
FALSE);
}
else
{
remove_tab (tab);
}
}
static void
recoverable_loading_error_message_area_response (GeditMessageArea *message_area,
conversion_loading_error_message_area_response (GeditMessageArea *message_area,
gint response_id,
GeditTab *tab)
{
......@@ -508,9 +533,7 @@ recoverable_loading_error_message_area_response (GeditMessageArea *message_area,
{
_gedit_recent_remove (GEDIT_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (tab))), uri);
unrecoverable_loading_error_message_area_response (message_area,
response_id,
tab);
remove_tab (tab);
}
g_free (uri);
......@@ -924,11 +947,11 @@ document_loaded (GeditDocument *document,
if (tab->priv->state == GEDIT_TAB_STATE_LOADING_ERROR)
{
emsg = gedit_unrecoverable_loading_error_message_area_new (uri,
emsg = gedit_io_loading_error_message_area_new (uri,
error);
g_signal_connect (emsg,
"response",
G_CALLBACK (unrecoverable_loading_error_message_area_response),
G_CALLBACK (io_loading_error_message_area_response),
tab);
}
else
......@@ -963,7 +986,7 @@ document_loaded (GeditDocument *document,
g_signal_connect (emsg,
"response",
G_CALLBACK (recoverable_loading_error_message_area_response),
G_CALLBACK (conversion_loading_error_message_area_response),
tab);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment