Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
DISCONTINUED:openSUSE:11.2:Update
gnome-packagekit
gnome-packagekit-BNC383261.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File gnome-packagekit-BNC383261.patch of Package gnome-packagekit
Index: gnome-packagekit-2.27.92/src/gpk-check-update.c =================================================================== --- gnome-packagekit-2.27.92.orig/src/gpk-check-update.c +++ gnome-packagekit-2.27.92/src/gpk-check-update.c @@ -1264,8 +1264,14 @@ gpk_check_update_error_code_cb (PkClient } /* not modal as we are a status icon */ - gpk_error_dialog (gpk_error_enum_to_localised_text (code), - gpk_error_enum_to_localised_message (code), details); + if (code == PK_ERROR_ENUM_DEP_RESOLUTION_FAILED) { + egg_debug ("DEP_RES failed - will ask if they want to try yast"); + gpk_error_dialog_modal_with_time (NULL, gpk_error_enum_to_localised_text (code), + gpk_error_enum_to_localised_message (code), details, 0, TRUE); + } + else + gpk_error_dialog (gpk_error_enum_to_localised_text (code), + gpk_error_enum_to_localised_message (code), details); out: return; } Index: gnome-packagekit-2.27.92/src/gpk-dbus-task.c =================================================================== --- gnome-packagekit-2.27.92.orig/src/gpk-dbus-task.c +++ gnome-packagekit-2.27.92/src/gpk-dbus-task.c @@ -443,7 +443,7 @@ gpk_dbus_task_error_msg (GpkDbusTask *ta /* hide the main window */ window = gpk_modal_dialog_get_window (task->priv->dialog); - gpk_error_dialog_modal_with_time (window, title, message, details, task->priv->timestamp); + gpk_error_dialog_modal_with_time (window, title, message, details, task->priv->timestamp, FALSE); } /** Index: gnome-packagekit-2.27.92/src/gpk-error.c =================================================================== --- gnome-packagekit-2.27.92.orig/src/gpk-error.c +++ gnome-packagekit-2.27.92/src/gpk-error.c @@ -34,6 +34,32 @@ #include "gpk-common.h" #include "gpk-error.h" +static gboolean +gpk_error_dialog_run_yast (gpointer unused) +{ + gboolean retval; + GError *error = NULL; + + PkControl *control = pk_control_new (); + if (!pk_control_suggest_daemon_quit(control, &error)) + egg_debug ("Failure calling pk_control_suggest_daemon_quit:%s", error->message); + g_object_unref (control); + + retval = g_spawn_command_line_async ("gnomesu -- /sbin/yast2 online_update", NULL); + if (!retval) + egg_debug ("Failure launching yast2 online_update"); + return FALSE; +} + +static void +gpk_error_dialog_yast_cb (GtkButton *button, gpointer data) +{ + egg_debug ("user wants to try YaST..."); + /* we want to make sure and finish up outstanding stuff before we launch yast so we can release the libzypp lock */ + g_timeout_add_seconds (2, gpk_error_dialog_run_yast, NULL); + gtk_main_quit (); +} + /** * gpk_error_dialog_expanded_cb: **/ @@ -62,13 +88,15 @@ gpk_error_dialog_expanded_cb (GObject *o * Shows a modal error, and blocks until the user clicks close **/ gboolean -gpk_error_dialog_modal_with_time (GtkWindow *window, const gchar *title, const gchar *message, const gchar *details, guint timestamp) +gpk_error_dialog_modal_with_time (GtkWindow *window, const gchar *title, const gchar *message, const gchar *details, guint timestamp, gboolean prompt_yast) { GtkWidget *widget; + GtkWidget *button; GtkBuilder *builder; GtkTextBuffer *buffer = NULL; guint retval; GError *error = NULL; + gchar *full_message; g_return_val_if_fail (message != NULL, FALSE); @@ -111,8 +139,22 @@ gpk_error_dialog_modal_with_time (GtkWin gtk_label_set_label (GTK_LABEL (widget), title); /* message */ + if (prompt_yast) { + egg_debug ("DEP_RES failed - will ask if they want to try yast"); + full_message = g_strconcat (message, "\n\n", _("To try and manually resolve problems use the YaST \"Online Update\" module"), NULL); + button = gtk_button_new_with_label(_("Start YaST and install updates manually")); + g_signal_connect (button, "clicked", G_CALLBACK (gpk_error_dialog_yast_cb), NULL); + /* add to box */ + widget = GTK_WIDGET (gtk_builder_get_object (builder, "dialog_error")); + widget = gtk_dialog_get_action_area (GTK_DIALOG(widget)); + gtk_box_pack_start (GTK_BOX (widget), button, TRUE, TRUE, 0); + gtk_widget_show (button); + } + else + full_message = g_strdup (message); widget = GTK_WIDGET (gtk_builder_get_object (builder, "label_message")); - gtk_label_set_markup (GTK_LABEL (widget), message); + gtk_label_set_markup (GTK_LABEL (widget), full_message); + g_free (full_message); /* show text in the expander */ if (egg_strzero (details)) { @@ -156,7 +198,7 @@ out_build: gboolean gpk_error_dialog_modal (GtkWindow *window, const gchar *title, const gchar *message, const gchar *details) { - return gpk_error_dialog_modal_with_time (window, title, message, details, 0); + return gpk_error_dialog_modal_with_time (window, title, message, details, 0, FALSE); } /** Index: gnome-packagekit-2.27.92/src/gpk-error.h =================================================================== --- gnome-packagekit-2.27.92.orig/src/gpk-error.h +++ gnome-packagekit-2.27.92/src/gpk-error.h @@ -37,7 +37,8 @@ gboolean gpk_error_dialog_modal_with_ti const gchar *title, const gchar *message, const gchar *details, - guint timestamp); + guint timestamp, + gboolean prompt_yast); G_END_DECLS Index: gnome-packagekit-2.27.92/src/gpk-update-viewer.c =================================================================== --- gnome-packagekit-2.27.92.orig/src/gpk-update-viewer.c +++ gnome-packagekit-2.27.92/src/gpk-update-viewer.c @@ -2159,7 +2159,13 @@ gpk_update_viewer_error_code_cb (PkClien } window = GTK_WINDOW (gtk_builder_get_object (builder, "dialog_updates")); - gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (code), + if (code == PK_ERROR_ENUM_DEP_RESOLUTION_FAILED) { + egg_debug ("DEP_RES failed - will ask if they want to try yast"); + gpk_error_dialog_modal_with_time (window, gpk_error_enum_to_localised_text (code), + gpk_error_enum_to_localised_message (code), details, 0, TRUE); + } + else + gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (code), gpk_error_enum_to_localised_message (code), details); }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor