gnome-packagekit r513 - in trunk: data src



Author: rhughes
Date: Thu Mar 19 12:08:23 2009
New Revision: 513
URL: http://svn.gnome.org/viewvc/gnome-packagekit?rev=513&view=rev

Log:
from git

Modified:
   trunk/data/gpk-update-viewer2.glade
   trunk/src/gpk-cell-renderer-info.c
   trunk/src/gpk-common.c
   trunk/src/gpk-enum.c
   trunk/src/gpk-update-viewer2.c
   trunk/src/gpk-watch.c

Modified: trunk/data/gpk-update-viewer2.glade
==============================================================================
--- trunk/data/gpk-update-viewer2.glade	(original)
+++ trunk/data/gpk-update-viewer2.glade	Thu Mar 19 12:08:23 2009
@@ -22,9 +22,10 @@
             <property name="spacing">6</property>
             <child>
               <widget class="GtkHBox" id="hbox_header">
+                <property name="visible">True</property>
                 <property name="spacing">9</property>
                 <child>
-                  <widget class="GtkImage" id="image_info">
+                  <widget class="GtkImage" id="image_header">
                     <property name="visible">True</property>
                     <property name="pixel_size">48</property>
                     <property name="icon_name">system-software-update</property>
@@ -132,6 +133,7 @@
             </child>
             <child>
               <widget class="GtkVPaned" id="vpaned_updates">
+                <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="orientation">vertical</property>
                 <child>
@@ -179,100 +181,134 @@
               </packing>
             </child>
             <child>
-              <widget class="GtkHBox" id="hbox_info">
+              <widget class="GtkVBox" id="vbox4">
                 <property name="visible">True</property>
-                <property name="spacing">9</property>
-                <child>
-                  <widget class="GtkLabel" id="label_placeholder">
-                    <property name="height_request">32</property>
-                    <property name="visible">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkImage" id="image_progress">
-                    <property name="visible">True</property>
-                    <property name="stock">gtk-about</property>
-                    <property name="icon-size">5</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
+                <property name="orientation">vertical</property>
                 <child>
-                  <widget class="GtkVBox" id="vbox3">
+                  <widget class="GtkHBox" id="hbox_status">
                     <property name="visible">True</property>
-                    <property name="orientation">vertical</property>
+                    <property name="spacing">9</property>
+                    <child>
+                      <widget class="GtkImage" id="image_progress">
+                        <property name="visible">True</property>
+                        <property name="stock">gtk-save</property>
+                        <property name="icon-size">5</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
                     <child>
-                      <widget class="GtkHBox" id="hbox1">
+                      <widget class="GtkVBox" id="vbox5">
                         <property name="visible">True</property>
+                        <property name="orientation">vertical</property>
                         <child>
-                          <widget class="GtkProgressBar" id="progressbar_progress">
+                          <widget class="GtkHBox" id="hbox2">
                             <property name="visible">True</property>
-                            <property name="fraction">0.5</property>
+                            <child>
+                              <widget class="GtkProgressBar" id="progressbar_progress">
+                                <property name="visible">True</property>
+                                <property name="fraction">0.5</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
                           </widget>
                           <packing>
-                            <property name="expand">False</property>
                             <property name="fill">False</property>
                             <property name="position">0</property>
                           </packing>
                         </child>
                       </widget>
                       <packing>
+                        <property name="expand">False</property>
                         <property name="fill">False</property>
-                        <property name="position">0</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label_status">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Downloading:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label_package">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">data</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label_summary">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">7 updates selected (45Mb)</property>
+                        <property name="use_markup">True</property>
+                        <property name="justify">right</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="pack_type">end</property>
+                        <property name="position">4</property>
                       </packing>
                     </child>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label_status">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">&lt;b&gt;Downloading:&lt;/b&gt;</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">3</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label_package">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">data</property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">4</property>
+                    <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkLabel" id="label_summary">
+                  <widget class="GtkHBox" id="hbox_info">
                     <property name="visible">True</property>
-                    <property name="label" translatable="yes">7 updates selected (45Mb)</property>
-                    <property name="use_markup">True</property>
-                    <property name="justify">right</property>
+                    <property name="spacing">9</property>
+                    <child>
+                      <widget class="GtkImage" id="image_info">
+                        <property name="visible">True</property>
+                        <property name="stock">gtk-remove</property>
+                        <property name="icon-size">5</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label_info">
+                        <property name="visible">True</property>
+                        <property name="label">data that doesn't need the progressbar</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
-                    <property name="pack_type">end</property>
-                    <property name="position">5</property>
+                    <property name="position">1</property>
                   </packing>
                 </child>
               </widget>
               <packing>
                 <property name="expand">False</property>
+                <property name="fill">False</property>
                 <property name="position">3</property>
               </packing>
             </child>
@@ -301,6 +337,30 @@
               </packing>
             </child>
             <child>
+              <widget class="GtkButton" id="button_logout">
+                <property name="label" translatable="yes">Log out</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button_shutdown">
+                <property name="label" translatable="yes">Shut down</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
               <widget class="GtkButton" id="button_close">
                 <property name="label" translatable="yes">gtk-close</property>
                 <property name="visible">True</property>
@@ -312,7 +372,7 @@
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">1</property>
+                <property name="position">3</property>
               </packing>
             </child>
             <child>
@@ -326,12 +386,12 @@
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">2</property>
+                <property name="position">4</property>
               </packing>
             </child>
             <child>
               <widget class="GtkButton" id="button_install">
-                <property name="label" translatable="yes">_Install updates</property>
+                <property name="label">_Install update(s)</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="has_focus">True</property>
@@ -341,7 +401,7 @@
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">3</property>
+                <property name="position">5</property>
               </packing>
             </child>
           </widget>

Modified: trunk/src/gpk-cell-renderer-info.c
==============================================================================
--- trunk/src/gpk-cell-renderer-info.c	(original)
+++ trunk/src/gpk-cell-renderer-info.c	Thu Mar 19 12:08:23 2009
@@ -73,9 +73,10 @@
 	switch (param_id) {
 	case PROP_VALUE:
 		cru->priv->value = g_value_get_uint (value);
-		if (cru->priv->value == PK_INFO_ENUM_UNKNOWN ||
-		    cru->priv->value == PK_INFO_ENUM_FINISHED) {
+		if (cru->priv->value == PK_INFO_ENUM_UNKNOWN) {
 			g_object_set (cru, "visible", FALSE, NULL);
+		} else if (cru->priv->value == PK_INFO_ENUM_FINISHED) {
+			/* ignore */
 		} else {
 			cru->priv->icon_name = gpk_info_enum_to_icon_name (cru->priv->value);
 			g_object_set (cru, "visible", TRUE, NULL);

Modified: trunk/src/gpk-common.c
==============================================================================
--- trunk/src/gpk-common.c	(original)
+++ trunk/src/gpk-common.c	Thu Mar 19 12:08:23 2009
@@ -87,6 +87,7 @@
 	do {
 		PangoAttribute *attr;
 		GtkTextTag *tag;
+		GtkTextTag *tag_para;
 		gint start, end;
 
 		pango_attr_iterator_range (paiter, &start, &end);
@@ -153,7 +154,9 @@
 			g_object_set (tag, "scale", ( (PangoAttrFloat*)attr)->value, NULL);
 
 		gtk_text_tag_table_add (gtk_text_buffer_get_tag_table (buffer), tag);
-		gtk_text_buffer_insert_with_tags (buffer, iter, text+start, end - start, tag, NULL);
+
+		tag_para = gtk_text_tag_table_lookup (gtk_text_buffer_get_tag_table (buffer), "para");
+		gtk_text_buffer_insert_with_tags (buffer, iter, text+start, end - start, tag, tag_para, NULL);
 
 		/* mark had right gravity, so it should be
 		 *	at the end of the inserted text now */

Modified: trunk/src/gpk-enum.c
==============================================================================
--- trunk/src/gpk-enum.c	(original)
+++ trunk/src/gpk-enum.c	Thu Mar 19 12:08:23 2009
@@ -205,7 +205,7 @@
 	{PK_RESTART_ENUM_UNKNOWN,		"help-browser"},	/* fall though value */
 	{PK_RESTART_ENUM_NONE,			""},
 	{PK_RESTART_ENUM_SYSTEM,		"system-shutdown"},
-	{PK_RESTART_ENUM_SESSION,		"preferences-system-session"},
+	{PK_RESTART_ENUM_SESSION,		"system-log-out"},
 	{PK_RESTART_ENUM_APPLICATION,		"emblem-symbolic-link"},
 	{0, NULL}
 };
@@ -375,16 +375,16 @@
 		text = _("Could not remove a protected system package");
 		break;
 	case PK_ERROR_ENUM_TRANSACTION_CANCELLED:
-		text = _("The task was canceled");
+		text = _("The action was canceled");
 		break;
 	case PK_ERROR_ENUM_PROCESS_KILL:
-		text = _("The task was forcibly canceled");
+		text = _("The action was forcibly canceled");
 		break;
 	case PK_ERROR_ENUM_FAILED_CONFIG_PARSING:
-		text = _("Reading the config file failed");
+		text = _("Reading the configuration file failed");
 		break;
 	case PK_ERROR_ENUM_CANNOT_CANCEL:
-		text = _("The task cannot be canceled");
+		text = _("The action cannot be canceled");
 		break;
 	case PK_ERROR_ENUM_CANNOT_INSTALL_SOURCE_PACKAGE:
 		text = _("Source packages cannot be installed");
@@ -519,7 +519,7 @@
 			 "source error.");
 		break;
 	case PK_ERROR_ENUM_DEP_RESOLUTION_FAILED:
-		text = _("A package could not be found that allows the task to complete.\n"
+		text = _("A package could not be found that allows the action to complete.\n"
 			 "More information is available in the detailed report.");
 		break;
 	case PK_ERROR_ENUM_FILTER_INVALID:
@@ -530,7 +530,7 @@
 			 "This normally indicates an internal error and should be reported.");
 		break;
 	case PK_ERROR_ENUM_TRANSACTION_ERROR:
-		text = _("An unspecified task error has occurred.\n"
+		text = _("An unspecified transaction error has occurred.\n"
 			 "More information is available in the detailed report.");
 		break;
 	case PK_ERROR_ENUM_REPO_NOT_FOUND:
@@ -541,10 +541,10 @@
 		text = _("Removing a protected system package is not allowed.");
 		break;
 	case PK_ERROR_ENUM_TRANSACTION_CANCELLED:
-		text = _("The task was canceled successfully and no packages were changed.");
+		text = _("The action was canceled successfully and no packages were changed.");
 		break;
 	case PK_ERROR_ENUM_PROCESS_KILL:
-		text = _("The task was canceled successfully and no packages were changed.\n"
+		text = _("The action was canceled successfully and no packages were changed.\n"
 			 "The backend did not exit cleanly.");
 		break;
 	case PK_ERROR_ENUM_FAILED_CONFIG_PARSING:
@@ -552,7 +552,7 @@
 			 "Please make sure configuration is valid.");
 		break;
 	case PK_ERROR_ENUM_CANNOT_CANCEL:
-		text = _("The task is not safe to be canceled at this time.");
+		text = _("The action cannot be canceled at this time.");
 		break;
 	case PK_ERROR_ENUM_CANNOT_INSTALL_SOURCE_PACKAGE:
 		text = _("Source packages are not normally installed this way.\n"
@@ -788,15 +788,15 @@
 		break;
 	case PK_STATUS_ENUM_SETUP:
 		/* TRANSLATORS: The transaction state */
-		text = _("Waiting for transaction to start");
+		text = _("Starting");
 		break;
 	case PK_STATUS_ENUM_WAIT:
 		/* TRANSLATORS: The transaction state */
-		text = _("Waiting for other tasks");
+		text = _("Waiting in queue");
 		break;
 	case PK_STATUS_ENUM_RUNNING:
 		/* TRANSLATORS: The transaction state */
-		text = _("Running task");
+		text = _("Running");
 		break;
 	case PK_STATUS_ENUM_QUERY:
 		/* TRANSLATORS: The transaction state */

Modified: trunk/src/gpk-update-viewer2.c
==============================================================================
--- trunk/src/gpk-update-viewer2.c	(original)
+++ trunk/src/gpk-update-viewer2.c	Thu Mar 19 12:08:23 2009
@@ -37,6 +37,7 @@
 #include "egg-string.h"
 #include "egg-unique.h"
 #include "egg-markdown.h"
+#include "egg-console-kit.h"
 
 #include "gpk-common.h"
 #include "gpk-gnome.h"
@@ -51,6 +52,12 @@
 #include "gpk-repo-signature-helper.h"
 #include "gpk-eula-helper.h"
 
+#define GPK_UPDATE_VIEWER_AUTO_SHUTDOWN_TIMEOUT 10 /* seconds */
+#define GNOME_SESSION_MANAGER_SERVICE		"org.gnome.SessionManager"
+#define GNOME_SESSION_MANAGER_PATH		"/org/gnome/SessionManager"
+#define GNOME_SESSION_MANAGER_INTERFACE		"org.gnome.SessionManager"
+
+static guint auto_shutdown_id = 0;
 static GMainLoop *loop = NULL;
 static GladeXML *glade_xml = NULL;
 static GtkListStore *list_store_updates = NULL;
@@ -63,6 +70,7 @@
 static GpkEulaHelper *eula_helper = NULL;
 static EggMarkdown *markdown = NULL;
 static PkPackageId *package_id_last = NULL;
+static PkRestartEnum restart_update = PK_RESTART_ENUM_NONE;
 
 enum {
 	GPK_UPDATES_COLUMN_TEXT,
@@ -83,6 +91,59 @@
 static gboolean gpk_update_viewer_get_new_update_list (void);
 
 /**
+ * gpk_update_viewer_button_logout_cb:
+ **/
+static void
+gpk_update_viewer_button_logout_cb (GtkWidget *widget, gpointer data)
+{
+	DBusGConnection *connection;
+	DBusGProxy *proxy;
+	GError *error = NULL;
+	gboolean ret;
+
+	/* get org.gnome.Session interface */
+	connection = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
+	proxy = dbus_g_proxy_new_for_name_owner (connection, GNOME_SESSION_MANAGER_SERVICE,
+						 GNOME_SESSION_MANAGER_PATH,
+						 GNOME_SESSION_MANAGER_INTERFACE, &error);
+	if (proxy == NULL) {
+		egg_warning ("cannot connect to proxy %s: %s", GNOME_SESSION_MANAGER_SERVICE, error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* log out of the session */
+	ret = dbus_g_proxy_call (proxy, "Shutdown", &error, G_TYPE_INVALID);
+	if (!ret) {
+		egg_warning ("cannot shutdown session: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	g_object_unref (proxy);
+}
+
+/**
+ * gpk_update_viewer_button_shutdown_cb:
+ **/
+static void
+gpk_update_viewer_button_shutdown_cb (GtkWidget *widget, gpointer data)
+{
+	EggConsoleKit *console;
+	GError *error = NULL;
+	gboolean ret;
+
+	/* use consolekit to restart */
+	console = egg_console_kit_new ();
+	ret = egg_console_kit_restart (console, &error);
+	if (!ret) {
+		egg_warning ("cannot restart: %s", error->message);
+		g_error_free (error);
+	}
+	g_object_unref (console);
+}
+
+/**
  * gpk_update_viewer_button_help_cb:
  **/
 static void
@@ -119,7 +180,9 @@
 	valid = gtk_tree_model_get_iter_first (model, &iter);
 	while (valid) {
 		gtk_list_store_set (list_store_updates, &iter,
-				    GPK_UPDATES_COLUMN_SENSITIVE, TRUE, -1);
+				    GPK_UPDATES_COLUMN_SENSITIVE, TRUE,
+				    GPK_UPDATES_COLUMN_CLICKABLE, TRUE,
+				    -1);
 		valid = gtk_tree_model_iter_next (model, &iter);
 	}
 }
@@ -158,6 +221,7 @@
 
 		/* set all the checkboxes insensitive */
 		gtk_list_store_set (list_store_updates, &iter,
+				    GPK_UPDATES_COLUMN_CLICKABLE, FALSE,
 				    GPK_UPDATES_COLUMN_SENSITIVE, FALSE, -1);
 
 		/* ay selected? */
@@ -384,6 +448,11 @@
 		gtk_list_store_set (list_store_updates, &iter,
 				    GPK_UPDATES_COLUMN_STATUS, obj->info, -1);
 		gtk_tree_path_free (path);
+
+		/* set package description */
+		widget = glade_xml_get_widget (glade_xml, "label_package");
+		//gtk_label_set_label (GTK_LABEL (widget), obj->summary);
+
 		goto out;
 	}
 
@@ -461,6 +530,16 @@
 }
 
 /**
+ * gpk_update_viewer_auto_shutdown:
+ **/
+static gboolean
+gpk_update_viewer_auto_shutdown (void)
+{
+	g_main_loop_quit (loop);
+	return FALSE;
+}
+
+/**
  * gpk_update_viewer_reconsider_info:
  **/
 static void
@@ -478,6 +557,7 @@
 	guint number_total = 0;
 	PkRestartEnum restart;
 	PkRestartEnum restart_worst = PK_RESTART_ENUM_NONE;
+	const gchar *title;
 	gchar *text;
 	gchar *text_size;
 
@@ -504,7 +584,19 @@
 	gtk_widget_set_sensitive (widget, any_selected);
 	main_window = glade_xml_get_widget (glade_xml, "dialog_updates");
 
-	/* have we got any updates */
+	/* sensitive */
+	widget = glade_xml_get_widget (glade_xml, "scrolledwindow_updates");
+	gtk_widget_set_sensitive (widget, TRUE);
+	widget = glade_xml_get_widget (glade_xml, "scrolledwindow_details");
+	gtk_widget_set_sensitive (widget, TRUE);
+
+	/* set the pluralisation of the button */
+	widget = glade_xml_get_widget (glade_xml, "button_install");
+	/* TRANSLATORS: this is the button text when we have updates */
+	title = ngettext ("_Install update", "_Install updates", number_total);
+	gtk_button_set_label (GTK_BUTTON (widget), title);
+
+	/* no updates */
 	len = PK_OBJ_LIST(update_list)->len;
 	if (len == 0) {
 		widget = glade_xml_get_widget (glade_xml, "vpaned_updates");
@@ -512,12 +604,18 @@
 		widget = glade_xml_get_widget (glade_xml, "dialog_updates");
 		gtk_window_set_resizable (GTK_WINDOW(widget), FALSE);
 
+		/* use correct status pane */
+		widget = glade_xml_get_widget (glade_xml, "hbox_status");
+		gtk_widget_hide (widget);
+		widget = glade_xml_get_widget (glade_xml, "hbox_info");
+		gtk_widget_show (widget);
+
 		/* set state */
-		widget = glade_xml_get_widget (glade_xml, "image_progress");
+		widget = glade_xml_get_widget (glade_xml, "image_info");
 		gtk_image_set_from_icon_name (GTK_IMAGE (widget), "dialog-information", GTK_ICON_SIZE_DIALOG);
 		gtk_widget_show (widget);
 
-		widget = glade_xml_get_widget (glade_xml, "label_summary");
+		widget = glade_xml_get_widget (glade_xml, "label_info");
 		/* TRANSLATORS: there are no updates */
 		text = g_strdup_printf ("<b>%s</b>", _("There are no updates available for your computer"));
 		gtk_label_set_label (GTK_LABEL (widget), text);
@@ -526,7 +624,6 @@
 
 		/* close button */
 		widget = glade_xml_get_widget (glade_xml, "button_close");
-		gtk_widget_show (widget);
 		gtk_window_set_focus (GTK_WINDOW(main_window), widget);
 
 		/* header */
@@ -541,6 +638,18 @@
 		gtk_widget_hide (widget);
 		widget = glade_xml_get_widget (glade_xml, "label_package");
 		gtk_widget_hide (widget);
+
+		/* do we have to show any widgets? */
+		if (restart_update == PK_RESTART_ENUM_SYSTEM) {
+			widget = glade_xml_get_widget (glade_xml, "button_shutdown");
+			gtk_widget_show (widget);
+		} else if (restart_update == PK_RESTART_ENUM_SESSION) {
+			widget = glade_xml_get_widget (glade_xml, "button_logout");
+			gtk_widget_show (widget);
+		} else {
+			/* setup a callback so we autoclose */
+			auto_shutdown_id = g_timeout_add_seconds (GPK_UPDATE_VIEWER_AUTO_SHUTDOWN_TIMEOUT, (GSourceFunc) gpk_update_viewer_auto_shutdown, NULL);
+		}
 		goto out;
 	}
 
@@ -551,24 +660,26 @@
 	gtk_window_set_resizable (GTK_WINDOW(widget), TRUE);
 	widget = glade_xml_get_widget (glade_xml, "button_install");
 	gtk_widget_show (widget);
+	gtk_window_set_focus (GTK_WINDOW(main_window), widget);
 	widget = glade_xml_get_widget (glade_xml, "button_help");
 	gtk_widget_show (widget);
-	gtk_window_set_focus (GTK_WINDOW(main_window), widget);
-	widget = glade_xml_get_widget (glade_xml, "button_close");
+
+	/* use correct status pane */
+	widget = glade_xml_get_widget (glade_xml, "hbox_status");
 	gtk_widget_hide (widget);
+	widget = glade_xml_get_widget (glade_xml, "hbox_info");
+	gtk_widget_show (widget);
 
 	/* restart */
-	widget = glade_xml_get_widget (glade_xml, "label_package");
+	widget = glade_xml_get_widget (glade_xml, "label_info");
 	if (restart_worst == PK_RESTART_ENUM_NONE) {
 		gtk_widget_hide (widget);
-		widget = glade_xml_get_widget (glade_xml, "image_progress");
+		widget = glade_xml_get_widget (glade_xml, "image_info");
 		gtk_widget_hide (widget);
-		widget = glade_xml_get_widget (glade_xml, "label_summary");
-		gtk_label_set_label (GTK_LABEL (widget), "");
 	} else {
 		gtk_label_set_label (GTK_LABEL (widget), gpk_restart_enum_to_localised_text_future (restart_worst));
 		gtk_widget_show (widget);
-		widget = glade_xml_get_widget (glade_xml, "image_progress");
+		widget = glade_xml_get_widget (glade_xml, "image_info");
 		gtk_image_set_from_icon_name (GTK_IMAGE (widget), gpk_restart_enum_to_icon_name (restart_worst), GTK_ICON_SIZE_BUTTON);
 		gtk_widget_show (widget);
 	}
@@ -616,6 +727,12 @@
 
 	egg_debug ("status %s", pk_status_enum_to_text (status));
 
+	/* use correct status pane */
+	widget = glade_xml_get_widget (glade_xml, "hbox_status");
+	gtk_widget_show (widget);
+	widget = glade_xml_get_widget (glade_xml, "hbox_info");
+	gtk_widget_hide (widget);
+
 	/* clear package */
 	if (status == PK_STATUS_ENUM_WAIT) {
 		widget = glade_xml_get_widget (glade_xml, "label_package");
@@ -630,7 +747,7 @@
 		gtk_widget_hide (widget);
 		goto out;
 	}
-	if (status == PK_STATUS_ENUM_QUERY) {
+	if (status == PK_STATUS_ENUM_QUERY || status == PK_STATUS_ENUM_SETUP) {
 		/* TRANSLATORS: querying update list */
 		text = _("Getting the list of updates");
 	} else {
@@ -746,8 +863,10 @@
 
 	/* column for text */
 	renderer = gtk_cell_renderer_text_new ();
-	g_object_set (renderer, "yalign", 0.0, NULL);
-	g_object_set (renderer, "wrap-mode", PANGO_WRAP_WORD, NULL);
+	g_object_set (renderer,
+		      "wrap-mode", PANGO_WRAP_WORD,
+		      "ellipsize", PANGO_ELLIPSIZE_END,
+		      NULL);
 	/* TRANSLATORS: a column that has name of the package that will be updated */
 	column = gtk_tree_view_column_new_with_attributes (_("Software"), renderer,
 							   "markup", GPK_UPDATES_COLUMN_TEXT, NULL);
@@ -758,6 +877,10 @@
 
 	/* column for size */
 	renderer = gpk_cell_renderer_size_new ();
+	g_object_set (renderer,
+		      "alignment", PANGO_ALIGN_RIGHT,
+		      "xalign", 1.0f,
+		      NULL);
 	/* TRANSLATORS: a column that has size of the package */
 	column = gtk_tree_view_column_new_with_attributes (_("Size"), renderer,
 							   "value", GPK_UPDATES_COLUMN_SIZE, NULL);
@@ -788,60 +911,45 @@
 }
 
 /**
- * gpk_update_viewer_add_description_item:
+ * gpk_update_viewer_add_description_link_item:
  **/
 static void
-gpk_update_viewer_add_description_item (const gchar *text)
+gpk_update_viewer_add_description_link_item (GtkTextBuffer *buffer, GtkTextIter *iter, const gchar *title, const GPtrArray *array)
 {
-	GtkTextIter start;
-	GtkTextIter iter;
-
-	gtk_text_buffer_get_bounds (text_buffer, &start, &iter);
-	gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, text, -1, "para", NULL);
-	gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
-}
+	GtkTextTag *tag;
+	const gchar *uri;
+	gint i;
 
-/**
- * gpk_update_viewer_add_markup_item:
- **/
-static void
-gpk_update_viewer_add_markup_item (const gchar *text)
-{
-	GtkTextIter start;
-	GtkTextIter iter;
-	gtk_text_buffer_get_bounds (text_buffer, &start, &iter);
-	gtk_text_buffer_insert_markup (text_buffer, &iter, text);
-	gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
-}
+	/* insert at end */
+	gtk_text_buffer_insert_with_tags_by_name (buffer, iter, title, -1, "para", NULL);
 
-/**
- * gpk_text_buffer_insert_link:
- **/
-static void
-gpk_text_buffer_insert_link (GtkTextBuffer *buffer, GtkTextIter *iter, const gchar *text, const gchar *href)
-{
-	GtkTextTag *tag;
-	tag = gtk_text_buffer_create_tag (buffer, NULL,
-					  "foreground", "blue",
-					  "underline", PANGO_UNDERLINE_SINGLE,
-					  NULL);
-	g_object_set_data (G_OBJECT (tag), "href", g_strdup (href));
-	gtk_text_buffer_insert_with_tags (buffer, iter, text, -1, tag, NULL);
+	for (i=0; i<array->len; i++) {
+		uri = g_ptr_array_index (array, i);
+		gtk_text_buffer_insert (buffer, iter, "\n", -1);
+		gtk_text_buffer_insert (buffer, iter, "â ", -1);
+		tag = gtk_text_buffer_create_tag (buffer, NULL,
+						  "foreground", "blue",
+						  "underline", PANGO_UNDERLINE_SINGLE,
+						  NULL);
+		g_object_set_data (G_OBJECT (tag), "href", g_strdup (uri));
+		gtk_text_buffer_insert_with_tags (buffer, iter, uri, -1, tag, NULL);
+		gtk_text_buffer_insert (buffer, iter, ".", -1);
+	}
+	gtk_text_buffer_insert (buffer, iter, "\n", -1);
 }
 
 /**
  * gpk_update_viewer_add_description_link_item:
  **/
-static void
-gpk_update_viewer_add_description_link_item (const gchar *title, const gchar *url_string)
+static GPtrArray *
+gpk_update_viewer_get_uris (const gchar *url_string)
 {
-	const gchar *text;
-	const gchar *uri;
+	GPtrArray *array;
 	gchar **urls;
 	guint length;
 	gint i;
-	GtkTextIter start;
-	GtkTextIter iter;
+
+	array = g_ptr_array_new ();
 
 	urls = g_strsplit (url_string, ";", 0);
 	length = g_strv_length (urls);
@@ -852,68 +960,13 @@
 		length--;
 	}
 
-	/* insert at end */
-	gtk_text_buffer_get_bounds (text_buffer, &start, &iter);
-	gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, title, -1, "para", NULL);
-
-	for (i=0; i<length; i+=2) {
-		uri = urls[i];
-		text = urls[i+1];
-		if (egg_strzero (text))
-			text = uri;
+	/* copy into array */
+	for (i=0; i<length; i+=2)
+		g_ptr_array_add (array, g_strdup (urls[i]));
 
-		if (length == 2) {
-			gpk_text_buffer_insert_link (text_buffer, &iter, text, uri);
-		} else {
-			gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
-			gtk_text_buffer_insert (text_buffer, &iter, "â ", -1);
-			gpk_text_buffer_insert_link (text_buffer, &iter, text, uri);
-//			gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
-		}
-	}
-	gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
-	g_strfreev (urls);
+	return array;
 }
 
-#if 0
-/**
- * gpk_update_viewer_get_pretty_from_composite:
- **/
-static gchar *
-gpk_update_viewer_get_pretty_from_composite (const gchar *package_ids_delimit)
-{
-	guint i;
-	guint length;
-	gchar **package_ids;
-	gchar *pretty = NULL;
-	GString *string;
-	PkPackageId *id;
-
-	/* do we have any data? */
-	if (egg_strzero (package_ids_delimit))
-		goto out;
-
-	string = g_string_new ("");
-	package_ids = pk_package_ids_from_text (package_ids_delimit);
-	length = g_strv_length (package_ids);
-	for (i=0; i<length; i++) {
-		id = pk_package_id_new_from_string (package_ids[i]);
-		pretty = gpk_package_id_name_version (id);
-		pk_package_id_free (id);
-		g_string_append (string, pretty);
-		g_string_append_c (string, ',');
-		g_free (pretty);
-	}
-
-	/* remove trailing comma */
-	g_string_set_size (string, string->len - 1);
-	pretty = g_string_free (string, FALSE);
-	g_strfreev (package_ids);
-out:
-	return pretty;
-}
-#endif
-
 /**
  * gpk_update_viewer_populate_details:
  **/
@@ -924,11 +977,14 @@
 	GtkTreeSelection *selection;
 	GtkTreeModel *model;
 	GtkTreeIter treeiter;
-//	gchar *package_pretty;
+	GPtrArray *array;
 	PkInfoEnum info;
 	gchar *line;
+	gchar *line2;
+	const gchar *title;
 	gchar *issued;
 	gchar *updated;
+	GtkTextIter iter;
 
 	/* get info  */
 	widget = glade_xml_get_widget (glade_xml, "treeview_updates");
@@ -941,26 +997,28 @@
 
 	/* blank */
 	gtk_text_buffer_set_text (text_buffer, "", -1);
+	gtk_text_buffer_get_start_iter (text_buffer, &iter);
 
 	if (info == PK_INFO_ENUM_ENHANCEMENT) {
 		/* TRANSLATORS: this is the update type, e.g. security */
-		gpk_update_viewer_add_description_item (_("This update will add new features and expand functionality."));
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, ("This update will add new features and expand functionality."), -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	} else if (info == PK_INFO_ENUM_BUGFIX) {
 		/* TRANSLATORS: this is the update type, e.g. security */
-		gpk_update_viewer_add_description_item (_("This update will fix bugs and other non-critical problems."));
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("This update will fix bugs and other non-critical problems."), -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	} else if (info == PK_INFO_ENUM_IMPORTANT) {
 		/* TRANSLATORS: this is the update type, e.g. security */
-		line = g_strdup_printf ("<b>%s</b>", _("This update is important as it may solve critical problems."));
-		gpk_update_viewer_add_markup_item (line);
-		g_free (line);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("This update is important as it may solve critical problems."), -1, "para", "important", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	} else if (info == PK_INFO_ENUM_SECURITY) {
 		/* TRANSLATORS: this is the update type, e.g. security */
-		line = g_strdup_printf ("<b>%s</b>", _("This update is needed to fix a security vulnerability with this package."));
-		gpk_update_viewer_add_markup_item (line);
-		g_free (line);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("This update is needed to fix a security vulnerability with this package."), -1, "para", "important", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	} else if (info == PK_INFO_ENUM_BLOCKED) {
 		/* TRANSLATORS: this is the update type, e.g. security */
-		gpk_update_viewer_add_description_item (_("This update is blocked."));
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("This update is blocked."), -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	}
 
 	/* issued and updated */
@@ -969,7 +1027,8 @@
 		updated = pk_iso8601_from_date (obj->updated);
 		/* TRANSLATORS: this is when the notification was issued and then updated*/
 		line = g_strdup_printf (_("This notification was issued on %s and last updated on %s."), issued, updated);
-		gpk_update_viewer_add_description_item (line);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, line, -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 		g_free (issued);
 		g_free (updated);
 		g_free (line);
@@ -977,7 +1036,8 @@
 		issued = pk_iso8601_from_date (obj->issued);
 		/* TRANSLATORS: this is when the update was issued */
 		line = g_strdup_printf (_("This notification was issued on %s."), issued);
-		gpk_update_viewer_add_description_item (line);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, line, -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 		g_free (issued);
 		g_free (line);
 	}
@@ -986,70 +1046,73 @@
 	if (!egg_strzero (obj->update_text)) {
 		/* convert the bullets */
 		line = egg_markdown_parse (markdown, obj->update_text);
-		if (!egg_strzero (line))
-			gpk_update_viewer_add_markup_item (line);
+		if (!egg_strzero (line)) {
+			gtk_text_buffer_insert_markup (text_buffer, &iter, line);
+			gtk_text_buffer_insert (text_buffer, &iter, "\n\n", -1);
+		}
 		g_free (line);
 	}
 
 	/* add all the links */
 	if (!egg_strzero (obj->vendor_url)) {
+		array = gpk_update_viewer_get_uris (obj->vendor_url);
 		/* TRANSLATORS: this is a list of vendor URLs */
-		gpk_update_viewer_add_description_link_item (_("For more information about this update please visit:"), obj->vendor_url);
+		title = ngettext ("For more information about this update please visit this website:",
+				  "For more information about this update please visit these websites:", array->len);
+		gpk_update_viewer_add_description_link_item (text_buffer, &iter, title, array);
+		g_ptr_array_foreach (array, (GFunc) g_free, NULL);
+		g_ptr_array_free (array, TRUE);
 	}
 	if (!egg_strzero (obj->bugzilla_url)) {
+		array = gpk_update_viewer_get_uris (obj->bugzilla_url);
 		/* TRANSLATORS: this is a list of bugzilla URLs */
-		gpk_update_viewer_add_description_link_item (_("For more information about bugs fixed by this this update please visit:"), obj->bugzilla_url);
+		title = ngettext ("For more information about bugs fixed by this update please visit this website:",
+				  "For more information about bugs fixed by this update please visit these websites:", array->len);
+		gpk_update_viewer_add_description_link_item (text_buffer, &iter, title, array);
+		g_ptr_array_foreach (array, (GFunc) g_free, NULL);
+		g_ptr_array_free (array, TRUE);
 	}
 	if (!egg_strzero (obj->cve_url)) {
+		array = gpk_update_viewer_get_uris (obj->cve_url);
 		/* TRANSLATORS: this is a list of CVE (security) URLs */
-		gpk_update_viewer_add_description_link_item (_("For more information about this security update please visit:"), obj->cve_url);
+		title = ngettext ("For more information about this security update please visit this website:",
+				  "For more information about this security update please visit these websites:", array->len);
+		gpk_update_viewer_add_description_link_item (text_buffer, &iter, title, array);
+		g_ptr_array_foreach (array, (GFunc) g_free, NULL);
+		g_ptr_array_free (array, TRUE);
 	}
 
 	/* reboot */
 	if (obj->restart == PK_RESTART_ENUM_SYSTEM) {
 		/* TRANSLATORS: reboot required */
-		gpk_update_viewer_add_description_item (_("The computer will have to be restarted for the changes to take effect."));
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("The computer will have to be restarted after the update for the changes to take effect."), -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	} else if (obj->restart == PK_RESTART_ENUM_SESSION) {
 		/* TRANSLATORS: log out required */
-		gpk_update_viewer_add_description_item (_("You will need to log off and back on before the changes will take effect"));
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("You will need to log off and back on after the update for the changes to take effect."), -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	}
 
 	/* state */
 	if (obj->state == PK_UPDATE_STATE_ENUM_UNSTABLE) {
 		/* TRANSLATORS: this is the stability status of the update */
-		gpk_update_viewer_add_description_item (_("This update is unstable, and should not be used on production systems."));
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("The classifaction of this update is unstable which means it is not designed for production use."), -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	} else if (obj->state == PK_UPDATE_STATE_ENUM_TESTING) {
 		/* TRANSLATORS: this is the stability status of the update */
-		gpk_update_viewer_add_description_item (_("This is a test update, and should not be used on production systems."));
-	}
-
-#if 0
-	/* split and add */
-	package_pretty = gpk_update_viewer_get_pretty_from_composite (obj->updates);
-	if (!egg_strzero (package_pretty)) {
-		/* TRANSLATORS: this is a list of packages that are updated */
-		line = g_strdup_printf (_("This update replaces %s."), package_pretty);
-		gpk_update_viewer_add_description_item (line);
-		g_free (line);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("This is a test update, and is not designed for normal use. Please report any problems or regressions you encounter."), -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	}
-	g_free (package_pretty);
-
-	/* split and add */
-	package_pretty = gpk_update_viewer_get_pretty_from_composite (obj->obsoletes);
-	if (!egg_strzero (package_pretty)) {
-		/* TRANSLATORS: this is a list of packages that are obsoleted */
-		line = g_strdup_printf (_("This update obsoletes %s."), package_pretty);
-		gpk_update_viewer_add_description_item (line);
-		g_free (line);
-	}
-	g_free (package_pretty);
-#endif
 
 	/* changelog */
 	if (!egg_strzero (obj->changelog)) {
-		/* TRANSLATORS: this is a ChangeLog */
-		line = g_strdup_printf ("%s\n%s", _("List of changes:"), obj->changelog);
-		gpk_update_viewer_add_description_item (line);
+		line = egg_markdown_parse (markdown, obj->changelog);
+		if (!egg_strzero (line)) {
+			/* TRANSLATORS: this is a ChangeLog */
+			line2 = g_strdup_printf ("\n%s\n%s\n", _("List of changes:"), line);
+			gtk_text_buffer_insert_markup (text_buffer, &iter, line2);
+			g_free (line2);
+		}
 		g_free (line);
 	}
 }
@@ -1242,6 +1305,7 @@
 	GtkTreeSelection *selection;
 	PkRoleEnum role;
 	PkPackageList *list;
+	PkRestartEnum restart;
 
 	pk_client_get_role (client, &role, NULL, NULL);
 	egg_debug ("role: %s, exit: %s", pk_role_enum_to_text (role), pk_exit_enum_to_text (exit));
@@ -1314,6 +1378,11 @@
 		gpk_update_viewer_reconsider_info (model);
 	}
 
+	if (role == PK_ROLE_ENUM_GET_DISTRO_UPGRADES) {
+		/* set info */
+		gpk_update_viewer_reconsider_info (model);
+	}
+
 	/* we've just agreed to auth or a EULA */
 	if (role == PK_ROLE_ENUM_INSTALL_SIGNATURE ||
 	    role == PK_ROLE_ENUM_ACCEPT_EULA) {
@@ -1328,6 +1397,11 @@
 	    (role == PK_ROLE_ENUM_UPDATE_SYSTEM ||
 	     role == PK_ROLE_ENUM_UPDATE_PACKAGES)) {
 
+		/* get the worst restart case */
+		restart = pk_client_get_require_restart (client_primary);
+		if (restart > restart_update)
+			restart_update = restart;
+
 		/* check blocked */
 		list = pk_client_get_package_list (client_primary);
 		gpk_update_viewer_check_blocked_packages (list);
@@ -1788,7 +1862,8 @@
 	for (tagp = tags; tagp != NULL; tagp = tagp->next) {
 		GtkTextTag *tag = tagp->data;
 		const gchar *href = (const gchar *) (g_object_get_data (G_OBJECT (tag), "href"));
-		gpk_gnome_open (href);
+		if (href != NULL)
+			gpk_gnome_open (href);
 	}
 
 	if (tags != NULL)
@@ -1943,6 +2018,7 @@
 	GtkWidget *main_window;
 	GtkWidget *widget;
 	GtkTreeSelection *selection;
+	GtkRequisition req;
 	PkBitfield roles;
 	gboolean ret;
 	GError *error = NULL;
@@ -2057,26 +2133,23 @@
 	g_signal_connect (eula_helper, "event", G_CALLBACK (gpk_update_viewer_eula_event_cb), NULL);
 	gpk_eula_helper_set_parent (eula_helper, GTK_WINDOW (main_window));
 
-	/* make GpkClient windows modal */
-	gtk_widget_realize (main_window);
-
 	/* create list stores */
 	list_store_updates = gtk_list_store_new (GPK_UPDATES_COLUMN_LAST, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT,
 						 G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
 						 G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_POINTER, G_TYPE_POINTER);
 	text_buffer = gtk_text_buffer_new (NULL);
 	gtk_text_buffer_create_tag (text_buffer, "para",
-				    "pixels_below_lines", 3,
-				    "pixels_above_lines", 3, NULL);
+				    "pixels_above_lines", 5,
+				    "wrap-mode", GTK_WRAP_WORD,
+				    NULL);
+	gtk_text_buffer_create_tag (text_buffer, "important",
+				    "weight", PANGO_WEIGHT_BOLD,
+				    NULL);
 
 	/* no upgrades yet */
 	widget = glade_xml_get_widget (glade_xml, "viewport_upgrade");
 	gtk_widget_hide (widget);
 
-	/* header */
-	widget = glade_xml_get_widget (glade_xml, "hbox_header");
-	gtk_widget_hide (widget);
-
 	/* description */
 	widget = glade_xml_get_widget (glade_xml, "textview_details");
 	gtk_text_view_set_buffer (GTK_TEXT_VIEW (widget), text_buffer);
@@ -2089,7 +2162,7 @@
 
 	/* updates */
 	widget = glade_xml_get_widget (glade_xml, "treeview_updates");
-	gtk_widget_set_size_request (GTK_WIDGET (widget), 800, 200);
+	gtk_widget_set_size_request (GTK_WIDGET (widget), 750, 300);
 	gtk_tree_view_columns_autosize (GTK_TREE_VIEW (widget));
 	gtk_tree_view_set_model (GTK_TREE_VIEW (widget),
 				 GTK_TREE_MODEL (list_store_updates));
@@ -2116,17 +2189,32 @@
 	g_signal_connect (widget, "clicked",
 			  G_CALLBACK (gpk_update_viewer_button_help_cb), (gpointer) "update-viewer");
 
+	/* shutdown button */
+	widget = glade_xml_get_widget (glade_xml, "button_shutdown");
+	g_signal_connect (widget, "clicked",
+			  G_CALLBACK (gpk_update_viewer_button_shutdown_cb), NULL);
+
+	/* logout button */
+	widget = glade_xml_get_widget (glade_xml, "button_logout");
+	g_signal_connect (widget, "clicked",
+			  G_CALLBACK (gpk_update_viewer_button_logout_cb), NULL);
+
 	/* set install button insensitive */
 	widget = glade_xml_get_widget (glade_xml, "button_install");
 	gtk_widget_set_sensitive (widget, FALSE);
 	g_signal_connect (widget, "clicked",
 			  G_CALLBACK (gpk_update_viewer_button_install_cb), NULL);
 
+	/* sensitive */
+	widget = glade_xml_get_widget (glade_xml, "scrolledwindow_updates");
+	gtk_widget_set_sensitive (widget, FALSE);
+	widget = glade_xml_get_widget (glade_xml, "scrolledwindow_details");
+	gtk_widget_set_sensitive (widget, FALSE);
+
 	/* close button */
 	widget = glade_xml_get_widget (glade_xml, "button_close");
 	g_signal_connect (widget, "clicked",
 			  G_CALLBACK (gpk_update_viewer_button_close_cb), NULL);
-	gtk_widget_hide (widget);
 	gtk_window_set_focus (GTK_WINDOW(main_window), widget);
 
 	/* hide cancel button */
@@ -2143,6 +2231,19 @@
 	/* show window */
 	gtk_widget_show (main_window);
 
+	/* set the paned to be in the middle */
+	widget = glade_xml_get_widget (glade_xml, "vpaned_updates");
+	gtk_widget_size_request (widget, &req);
+	egg_debug ("req.height=%i", req.height);
+	if (req.height != 0)
+		gtk_paned_set_position (GTK_PANED (widget), req.height / 2);
+
+	/* use correct status pane */
+	widget = glade_xml_get_widget (glade_xml, "label_status");
+	gtk_widget_set_size_request (widget, -1, 32);
+	widget = glade_xml_get_widget (glade_xml, "label_info");
+	gtk_widget_set_size_request (widget, -1, 32);
+
 	/* coldplug */
 	gpk_update_viewer_get_new_update_list ();
 

Modified: trunk/src/gpk-watch.c
==============================================================================
--- trunk/src/gpk-watch.c	(original)
+++ trunk/src/gpk-watch.c	Thu Mar 19 12:08:23 2009
@@ -1385,10 +1385,10 @@
 							  /* TRANSLATORS: This button restarts the computer after an update */
 							  _("_Restart computer"), NULL);
 	g_object_set (restart_action,
-		      "no-icon-name", "gnome-shutdown",
-		      "auth-icon-name", "gnome-shutdown",
-		      "yes-icon-name","gnome-shutdown",
-		      "self-blocked-icon-name", "gnome-shutdown",
+		      "no-icon-name", "system-shutdown",
+		      "auth-icon-name", "system-shutdown",
+		      "yes-icon-name","system-shutdown",
+		      "self-blocked-icon-name", "system-shutdown",
 		      NULL);
 	polkit_action_unref (pk_action);
 	g_signal_connect (restart_action, "activate",



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]