gnome-packagekit r166 - in trunk: data libpackagekit-gnome po src
- From: rhughes svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-packagekit r166 - in trunk: data libpackagekit-gnome po src
- Date: Sun, 13 Apr 2008 04:42:15 +0100 (BST)
Author: rhughes
Date: Sun Apr 13 04:42:14 2008
New Revision: 166
URL: http://svn.gnome.org/viewvc/gnome-packagekit?rev=166&view=rev
Log:
from git
Modified:
trunk/data/Makefile.am
trunk/data/gpk-application.glade
trunk/data/gpk-signature.glade
trunk/libpackagekit-gnome/Makefile.am
trunk/libpackagekit-gnome/gpk-client.c
trunk/libpackagekit-gnome/gpk-common.c
trunk/libpackagekit-gnome/gpk-common.h
trunk/po/POTFILES.in
trunk/src/gpk-application.c
trunk/src/gpk-consolekit.c
trunk/src/gpk-install-local-file.c
trunk/src/gpk-install-package-name.c
trunk/src/gpk-install-provide-file.c
trunk/src/gpk-repo.c
trunk/src/gpk-update-viewer.c
Modified: trunk/data/Makefile.am
==============================================================================
--- trunk/data/Makefile.am (original)
+++ trunk/data/Makefile.am Sun Apr 13 04:42:14 2008
@@ -32,6 +32,7 @@
gpk-progress.glade \
gpk-prefs.glade \
gpk-signature.glade \
+ gpk-error.glade \
gpk-log.glade \
gpk-backend-status.glade \
gpk-install-file.glade \
Modified: trunk/data/gpk-application.glade
==============================================================================
--- trunk/data/gpk-application.glade (original)
+++ trunk/data/gpk-application.glade Sun Apr 13 04:42:14 2008
@@ -332,97 +332,125 @@
</widget>
</child>
<child>
- <widget class="GtkButton" id="button_find">
+ <widget class="GtkNotebook" id="notebook_search_cancel">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="response_id">0</property>
+ <property name="show_tabs">False</property>
+ <property name="show_border">False</property>
+ <property name="tab_border">0</property>
+ <property name="tab_hborder">0</property>
+ <property name="tab_vborder">0</property>
<child>
- <widget class="GtkAlignment" id="alignment5">
+ <widget class="GtkButton" id="button_find">
<property name="visible">True</property>
- <property name="xscale">0</property>
- <property name="yscale">0</property>
+ <property name="can_focus">True</property>
+ <property name="response_id">0</property>
<child>
- <widget class="GtkHBox" id="hbox6">
+ <widget class="GtkAlignment" id="alignment5">
<property name="visible">True</property>
- <property name="spacing">2</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
<child>
- <widget class="GtkImage" id="image4">
+ <widget class="GtkHBox" id="hbox6">
<property name="visible">True</property>
- <property name="stock">gtk-find</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="stock">gtk-find</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_button_find">
+ <property name="visible">True</property>
+ <property name="label">_Find</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label_button_find">
- <property name="visible">True</property>
- <property name="label">_Find</property>
- <property name="use_underline">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
</child>
</widget>
</child>
</widget>
</child>
- </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_cancel">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="response_id">0</property>
<child>
- <widget class="GtkAlignment" id="alignment2">
+ <widget class="GtkLabel" id="label_find">
<property name="visible">True</property>
- <property name="xscale">0</property>
- <property name="yscale">0</property>
+ <property name="label">find</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button_cancel">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="response_id">0</property>
<child>
- <widget class="GtkHBox" id="hbox3">
+ <widget class="GtkAlignment" id="alignment2">
<property name="visible">True</property>
- <property name="spacing">2</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
<child>
- <widget class="GtkImage" id="image2">
+ <widget class="GtkHBox" id="hbox3">
<property name="visible">True</property>
- <property name="stock">gtk-dialog-error</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="stock">gtk-dialog-error</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_button_cancel">
+ <property name="visible">True</property>
+ <property name="label">_Cancel</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label_button_cancel">
- <property name="visible">True</property>
- <property name="label">_Cancel</property>
- <property name="use_underline">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
</child>
</widget>
</child>
</widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_cancel">
+ <property name="visible">True</property>
+ <property name="label">cancel</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
</child>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
+ <property name="position">1</property>
</packing>
</child>
</widget>
Modified: trunk/data/gpk-signature.glade
==============================================================================
--- trunk/data/gpk-signature.glade (original)
+++ trunk/data/gpk-signature.glade Sun Apr 13 04:42:14 2008
@@ -6,6 +6,10 @@
<property name="visible">True</property>
<property name="title" translatable="yes">Software signature is required</property>
<property name="resizable">False</property>
+ <property name="modal">True</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<child>
<widget class="GtkVBox" id="vbox1">
<property name="visible">True</property>
@@ -14,13 +18,11 @@
<child>
<widget class="GtkVBox" id="vbox2">
<property name="visible">True</property>
- <property name="spacing">7</property>
+ <property name="spacing">12</property>
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="label" translatable="yes">This signature is intended to ensure that software installed
-on your system is from a trusted source, and has not been tampered with.
-Before this software can be installed, you must indicate that you trust
+ <property name="label" translatable="yes">Before this software can be installed, you must indicate that you trust
the source of the packages.</property>
</widget>
<packing>
@@ -31,63 +33,56 @@
<child>
<widget class="GtkTable" id="table1">
<property name="visible">True</property>
- <property name="n_rows">5</property>
+ <property name="n_rows">4</property>
<property name="n_columns">2</property>
- <property name="column_spacing">11</property>
+ <property name="column_spacing">12</property>
<property name="row_spacing">6</property>
<child>
- <widget class="GtkLabel" id="label_name">
+ <widget class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label">Livna.org Freeworld Repo</property>
+ <property name="label" translatable="yes">Repository name:</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label_timestamp">
+ <widget class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label">2007-10-04</property>
+ <property name="label" translatable="yes">Signature URL:</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label_id">
+ <widget class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label">BB7576AC</property>
+ <property name="label" translatable="yes">Signature user identifier:</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label_user">
+ <widget class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label">Livna.org <rpm livna org></property>
+ <property name="label" translatable="yes">Signature identifier:</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -108,38 +103,14 @@
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label7">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Signature time stamp:</property>
- </widget>
- <packing>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label6">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Signature identifier:</property>
- </widget>
- <packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label5">
+ <widget class="GtkLabel" id="label_user">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Signature user identifier:</property>
+ <property name="label">Livna.org <rpm livna org></property>
</widget>
<packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
@@ -147,31 +118,35 @@
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label4">
+ <widget class="GtkLabel" id="label_id">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Signature URL:</property>
+ <property name="label">BB7576AC</property>
</widget>
<packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label3">
+ <widget class="GtkLabel" id="label_name">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Repository name:</property>
+ <property name="label">Livna.org Freeworld Repo</property>
</widget>
<packing>
- <property name="x_options">GTK_FILL</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
<packing>
+ <property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
@@ -187,19 +162,27 @@
</packing>
</child>
</widget>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
</child>
<child>
- <widget class="GtkHButtonBox" id="hbuttonbox1">
+ <widget class="GtkHButtonBox" id="hbuttonbox2">
<property name="visible">True</property>
+ <property name="spacing">6</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
- <widget class="GtkButton" id="button_no">
+ <widget class="GtkButton" id="button_help">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
- <property name="label">gtk-no</property>
+ <property name="label">gtk-help</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
</widget>
+ <packing>
+ <property name="secondary">True</property>
+ </packing>
</child>
<child>
<widget class="GtkButton" id="button_yes">
@@ -211,26 +194,28 @@
<property name="response_id">0</property>
</widget>
<packing>
- <property name="position">1</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ <property name="position">2</property>
</packing>
</child>
<child>
- <widget class="GtkButton" id="button_help">
+ <widget class="GtkButton" id="button_no">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
- <property name="label">gtk-help</property>
+ <property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
</widget>
<packing>
- <property name="position">2</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ <property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
- <property name="fill">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
<property name="position">1</property>
</packing>
</child>
Modified: trunk/libpackagekit-gnome/Makefile.am
==============================================================================
--- trunk/libpackagekit-gnome/Makefile.am (original)
+++ trunk/libpackagekit-gnome/Makefile.am Sun Apr 13 04:42:14 2008
@@ -28,6 +28,7 @@
libpackagekit_gnome_include_HEADERS = \
gpk-client.h \
gpk-common.h \
+ gpk-error.h \
$(NULL)
libpackagekit_gnome_la_SOURCES = \
@@ -37,6 +38,8 @@
gpk-client.h \
gpk-gnome.c \
gpk-gnome.h \
+ gpk-error.c \
+ gpk-error.h \
$(NULL)
libpackagekit_gnome_la_LIBADD = \
Modified: trunk/libpackagekit-gnome/gpk-client.c
==============================================================================
--- trunk/libpackagekit-gnome/gpk-client.c (original)
+++ trunk/libpackagekit-gnome/gpk-client.c Sun Apr 13 04:42:14 2008
@@ -37,9 +37,10 @@
#include <pk-package-id.h>
#include <pk-control.h>
-#include "gpk-client.h"
-#include "gpk-common.h"
-#include "gpk-gnome.h"
+#include <gpk-client.h>
+#include <gpk-common.h>
+#include <gpk-gnome.h>
+#include <gpk-error.h>
static void gpk_client_class_init (GpkClientClass *klass);
static void gpk_client_init (GpkClient *gclient);
@@ -56,10 +57,12 @@
{
PkClient *client_action;
PkClient *client_resolve;
+ PkClient *client_signature;
GladeXML *glade_xml;
gint pulse_timeout;
PkControl *control;
PkRoleEnum roles;
+ gboolean do_key_auth;
};
typedef enum {
@@ -238,6 +241,15 @@
g_return_if_fail (GPK_IS_CLIENT (gclient));
+ /* have we handled? */
+ if (code == PK_ERROR_ENUM_GPG_FAILURE) {
+ if (gclient->priv->do_key_auth) {
+ pk_debug ("ignoring GPG error as handled");
+ return;
+ }
+ pk_warning ("did not auth");
+ }
+
gpk_client_set_page (gclient, GPK_CLIENT_PAGE_ERROR);
/* set bold title */
@@ -257,10 +269,10 @@
}
/**
- * pk_client_package_cb:
+ * gpk_client_package_cb:
**/
static void
-pk_client_package_cb (PkClient *client, PkInfoEnum info, const gchar *package_id,
+gpk_client_package_cb (PkClient *client, PkInfoEnum info, const gchar *package_id,
const gchar *summary, GpkClient *gclient)
{
gchar *text;
@@ -275,10 +287,10 @@
}
/**
- * pk_client_allow_cancel_cb:
+ * gpk_client_allow_cancel_cb:
**/
static void
-pk_client_allow_cancel_cb (PkClient *client, gboolean allow_cancel, GpkClient *gclient)
+gpk_client_allow_cancel_cb (PkClient *client, gboolean allow_cancel, GpkClient *gclient)
{
GtkWidget *widget;
@@ -531,7 +543,7 @@
/* did we click no or exit the window? */
if (button != GTK_RESPONSE_OK) {
gpk_client_error_msg (gclient, _("Failed to install package"), _("Additional packages were not downloaded"));
- gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+ gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, "user did not agree to additional deps");
ret = FALSE;
goto out;
}
@@ -731,6 +743,146 @@
}
/**
+ * gpk_client_sig_button_yes:
+ **/
+static void
+gpk_client_sig_button_yes (GtkWidget *widget, GpkClient *gclient)
+{
+ g_return_if_fail (GPK_IS_CLIENT (gclient));
+ gclient->priv->do_key_auth = TRUE;
+ gtk_main_quit ();
+}
+
+/**
+ * gpk_client_sig_button_no:
+ **/
+static void
+gpk_client_sig_button_no (GtkWidget *widget, GpkClient *gclient)
+{
+ g_return_if_fail (GPK_IS_CLIENT (gclient));
+ gtk_main_quit ();
+}
+
+/**
+ * gpk_client_sig_button_help:
+ **/
+static void
+gpk_client_sig_button_help (GtkWidget *widget, GpkClient *gclient)
+{
+ g_return_if_fail (GPK_IS_CLIENT (gclient));
+ /* TODO: need a whole section on this! */
+ gpk_gnome_help (NULL);
+}
+
+/**
+ * gpk_client_sig_delete_event_cb:
+ * @event: The event type, unused.
+ **/
+static gboolean
+gpk_client_sig_delete_event_cb (GtkWidget *widget, GdkEvent *event, GpkClient *gclient)
+{
+ g_return_val_if_fail (GPK_IS_CLIENT (gclient), FALSE);
+ gtk_main_quit ();
+ return FALSE;
+}
+
+/**
+ * gpk_client_repo_signature_required_cb:
+ **/
+static void
+gpk_client_repo_signature_required_cb (PkClient *client, const gchar *package_id, const gchar *repository_name,
+ const gchar *key_url, const gchar *key_userid, const gchar *key_id,
+ const gchar *key_fingerprint, const gchar *key_timestamp,
+ PkSigTypeEnum type, GpkClient *gclient)
+{
+ gboolean ret;
+ GError *error = NULL;
+ GtkWidget *widget;
+ GladeXML *glade_xml;
+
+ g_return_if_fail (GPK_IS_CLIENT (gclient));
+
+ glade_xml = glade_xml_new (PK_DATA "/gpk-signature.glade", NULL, NULL);
+ widget = glade_xml_get_widget (glade_xml, "window_gpg");
+ g_signal_connect (widget, "delete_event",
+ G_CALLBACK (gpk_client_sig_delete_event_cb), gclient);
+
+ /* connect up buttons */
+ widget = glade_xml_get_widget (glade_xml, "button_yes");
+ g_signal_connect (widget, "clicked",
+ G_CALLBACK (gpk_client_sig_button_yes), gclient);
+ widget = glade_xml_get_widget (glade_xml, "button_no");
+ g_signal_connect (widget, "clicked",
+ G_CALLBACK (gpk_client_sig_button_no), gclient);
+ widget = glade_xml_get_widget (glade_xml, "button_help");
+ g_signal_connect (widget, "clicked",
+ G_CALLBACK (gpk_client_sig_button_help), gclient);
+
+ /* show correct text */
+ widget = glade_xml_get_widget (glade_xml, "label_name");
+ gtk_label_set_label (GTK_LABEL (widget), repository_name);
+ widget = glade_xml_get_widget (glade_xml, "label_url");
+ gtk_label_set_label (GTK_LABEL (widget), key_url);
+ widget = glade_xml_get_widget (glade_xml, "label_user");
+ gtk_label_set_label (GTK_LABEL (widget), key_userid);
+ widget = glade_xml_get_widget (glade_xml, "label_id");
+ gtk_label_set_label (GTK_LABEL (widget), key_id);
+
+ /* show window */
+ widget = glade_xml_get_widget (glade_xml, "window_gpg");
+ gtk_widget_show (widget);
+
+ /* wait for button press */
+ gclient->priv->do_key_auth = FALSE;
+ gtk_main ();
+
+ /* hide window */
+ gtk_widget_hide (widget);
+ g_object_unref (glade_xml);
+
+ /* disagreed with auth */
+ if (!gclient->priv->do_key_auth) {
+ return;
+ }
+
+ /* install signature */
+ pk_debug ("install signature %s", key_id);
+ ret = pk_client_reset (gclient->priv->client_signature, &error);
+ if (ret == FALSE) {
+ gpk_error_dialog (_("Failed to install signature"), _("The client could not be reset"), error->message);
+ g_error_free (error);
+ return;
+ }
+ /* this is asynchronous, else we get into livelock */
+ ret = pk_client_install_signature (gclient->priv->client_signature, PK_SIGTYPE_ENUM_GPG,
+ key_id, package_id, &error);
+ if (!ret) {
+ gpk_error_dialog (_("Failed to install signature"), _("The method failed"), error->message);
+ g_error_free (error);
+ gclient->priv->do_key_auth = FALSE;
+ }
+}
+
+/**
+ * gpk_client_signature_finished_cb:
+ **/
+static void
+gpk_client_signature_finished_cb (PkClient *client, PkExitEnum exit, guint runtime, GpkClient *gclient)
+{
+ gboolean ret;
+ GError *error = NULL;
+
+ g_return_if_fail (GPK_IS_CLIENT (gclient));
+
+ pk_debug ("trying to requeue install");
+ ret = pk_client_requeue (gclient->priv->client_action, &error);
+ if (!ret) {
+ gpk_error_dialog (_("Failed to install"), _("The install task could not be requeued"), error->message);
+ g_error_free (error);
+ }
+}
+
+/**
* gpk_client_class_init:
* @klass: The #GpkClientClass
**/
@@ -755,6 +907,7 @@
gclient->priv->glade_xml = NULL;
gclient->priv->pulse_timeout = 0;
+ gclient->priv->do_key_auth = FALSE;
/* add application specific icons to search path */
gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
@@ -774,9 +927,11 @@
g_signal_connect (gclient->priv->client_action, "error-code",
G_CALLBACK (gpk_client_error_code_cb), gclient);
g_signal_connect (gclient->priv->client_action, "package",
- G_CALLBACK (pk_client_package_cb), gclient);
+ G_CALLBACK (gpk_client_package_cb), gclient);
g_signal_connect (gclient->priv->client_action, "allow-cancel",
- G_CALLBACK (pk_client_allow_cancel_cb), gclient);
+ G_CALLBACK (gpk_client_allow_cancel_cb), gclient);
+ g_signal_connect (gclient->priv->client_action, "repo-signature-required",
+ G_CALLBACK (gpk_client_repo_signature_required_cb), gclient);
gclient->priv->client_resolve = pk_client_new ();
g_signal_connect (gclient->priv->client_resolve, "status-changed",
@@ -784,6 +939,11 @@
pk_client_set_use_buffer (gclient->priv->client_resolve, TRUE, NULL);
pk_client_set_synchronous (gclient->priv->client_resolve, TRUE, NULL);
+ /* this is asynchronous, else we get into livelock */
+ gclient->priv->client_signature = pk_client_new ();
+ g_signal_connect (gclient->priv->client_signature, "finished",
+ G_CALLBACK (gpk_client_signature_finished_cb), gclient);
+
gclient->priv->glade_xml = glade_xml_new (PK_DATA "/gpk-install-file.glade", NULL, NULL);
widget = glade_xml_get_widget (gclient->priv->glade_xml, "window_updates");
@@ -838,6 +998,7 @@
g_return_if_fail (gclient->priv != NULL);
g_object_unref (gclient->priv->client_action);
g_object_unref (gclient->priv->client_resolve);
+ g_object_unref (gclient->priv->client_signature);
g_object_unref (gclient->priv->control);
G_OBJECT_CLASS (gpk_client_parent_class)->finalize (object);
Modified: trunk/libpackagekit-gnome/gpk-common.c
==============================================================================
--- trunk/libpackagekit-gnome/gpk-common.c (original)
+++ trunk/libpackagekit-gnome/gpk-common.c Sun Apr 13 04:42:14 2008
@@ -310,23 +310,6 @@
}
/**
- * gpk_error_modal_dialog:
- *
- * Shows a modal error, and blocks until the user clicks close
- **/
-gboolean
-gpk_error_modal_dialog (const gchar *title, const gchar *message)
-{
- GtkWidget *dialog;
- dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, "%s", title);
- gtk_message_dialog_format_secondary_markup (GTK_MESSAGE_DIALOG (dialog), "%s", message);
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- return TRUE;
-}
-
-/**
* gpk_error_enum_to_localised_text:
**/
const gchar *
Modified: trunk/libpackagekit-gnome/gpk-common.h
==============================================================================
--- trunk/libpackagekit-gnome/gpk-common.h (original)
+++ trunk/libpackagekit-gnome/gpk-common.h Sun Apr 13 04:42:14 2008
@@ -52,8 +52,6 @@
gchar *gpk_package_id_pretty_oneline (const gchar *package_id,
const gchar *summary);
gchar *gpk_package_id_name_version (const gchar *package_id);
-gboolean gpk_error_modal_dialog (const gchar *title,
- const gchar *message);
const gchar *gpk_role_enum_to_localised_past (PkRoleEnum role)
G_GNUC_CONST;
Modified: trunk/po/POTFILES.in
==============================================================================
--- trunk/po/POTFILES.in (original)
+++ trunk/po/POTFILES.in Sun Apr 13 04:42:14 2008
@@ -18,6 +18,8 @@
data/gpk-update-icon.desktop.in
data/gpk-update-viewer.desktop.in
data/gpk-update-viewer.glade
+data/gpk-error.glade
+libpackagekit-gnome/gpk-error.c
libpackagekit-gnome/gpk-common.c
libpackagekit-gnome/gpk-client.c
src/gpk-application.c
Modified: trunk/src/gpk-application.c
==============================================================================
--- trunk/src/gpk-application.c (original)
+++ trunk/src/gpk-application.c Sun Apr 13 04:42:14 2008
@@ -149,6 +149,29 @@
}
/**
+ * gpk_application_set_find_cancel_buttons:
+ **/
+static void
+gpk_application_set_find_cancel_buttons (GpkApplication *application, gboolean find)
+{
+ GtkWidget *widget;
+ widget = glade_xml_get_widget (application->priv->glade_xml, "notebook_search_cancel");
+
+ /* if we can't do it, then just make the button insensitive */
+ if (!pk_enums_contain (application->priv->roles, PK_ROLE_ENUM_CANCEL)) {
+ widget = glade_xml_get_widget (application->priv->glade_xml, "button_cancel");
+ gtk_widget_set_sensitive (widget, FALSE);
+ }
+
+ /* which tab to enable? */
+ if (find) {
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (widget), 0);
+ } else {
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (widget), 1);
+ }
+}
+
+/**
* gpk_application_error_message:
**/
static void
@@ -695,10 +718,7 @@
role == PK_ROLE_ENUM_SEARCH_GROUP) {
/* switch round buttons */
- widget = glade_xml_get_widget (application->priv->glade_xml, "button_find");
- gtk_widget_show (widget);
- widget = glade_xml_get_widget (application->priv->glade_xml, "button_cancel");
- gtk_widget_hide (widget);
+ gpk_application_set_find_cancel_buttons (application, TRUE);
/* were there no entries found? */
if (exit == PK_EXIT_ENUM_SUCCESS && !application->priv->has_package) {
@@ -710,6 +730,10 @@
PACKAGES_COLUMN_IMAGE, "search",
-1);
}
+
+ /* focus back to the text extry */
+ widget = glade_xml_get_widget (application->priv->glade_xml, "entry_text");
+ gtk_widget_grab_focus (widget);
}
/* hide widget */
@@ -744,7 +768,6 @@
static void
gpk_application_cancel_cb (GtkWidget *button_widget, GpkApplication *application)
{
- GtkWidget *widget;
gboolean ret;
g_return_if_fail (PK_IS_APPLICATION (application));
@@ -754,10 +777,7 @@
/* switch buttons around */
if (ret) {
- widget = glade_xml_get_widget (application->priv->glade_xml, "button_find");
- gtk_widget_show (widget);
- widget = glade_xml_get_widget (application->priv->glade_xml, "button_cancel");
- gtk_widget_hide (widget);
+ gpk_application_set_find_cancel_buttons (application, TRUE);
application->priv->search_mode = PK_MODE_UNKNOWN;
}
}
@@ -828,12 +848,11 @@
gtk_widget_hide (widget);
/* switch around buttons */
- widget = glade_xml_get_widget (application->priv->glade_xml, "button_find");
- gtk_widget_hide (widget);
- if (pk_enums_contain (application->priv->roles, PK_ROLE_ENUM_CANCEL)) {
- widget = glade_xml_get_widget (application->priv->glade_xml, "button_cancel");
- gtk_widget_show (widget);
- }
+ gpk_application_set_find_cancel_buttons (application, FALSE);
+
+ widget = glade_xml_get_widget (application->priv->glade_xml, "notebook_search_cancel");
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (widget), 1);
+
return TRUE;
}
@@ -844,7 +863,6 @@
static gboolean
gpk_application_perform_search_others (GpkApplication *application)
{
- GtkWidget *widget;
gboolean ret;
GError *error = NULL;
@@ -870,15 +888,9 @@
ret = pk_client_get_packages (application->priv->client_search,
application->priv->filters_current, &error);
}
- /* ick, we failed so pretend we didn't do the action */
if (ret) {
/* switch around buttons */
- widget = glade_xml_get_widget (application->priv->glade_xml, "button_find");
- gtk_widget_hide (widget);
- if (pk_enums_contain (application->priv->roles, PK_ROLE_ENUM_CANCEL)) {
- widget = glade_xml_get_widget (application->priv->glade_xml, "button_cancel");
- gtk_widget_show (widget);
- }
+ gpk_application_set_find_cancel_buttons (application, FALSE);
} else {
gpk_application_error_message (application,
_("The group could not be queried"), error->message);
@@ -2270,7 +2282,6 @@
g_signal_connect (widget, "clicked",
G_CALLBACK (gpk_application_cancel_cb), application);
gtk_widget_set_tooltip_text (widget, _("Cancel search"));
- gtk_widget_hide (widget);
/* cancel button */
widget = glade_xml_get_widget (application->priv->glade_xml, "button_cancel2");
Modified: trunk/src/gpk-consolekit.c
==============================================================================
--- trunk/src/gpk-consolekit.c (original)
+++ trunk/src/gpk-consolekit.c Sun Apr 13 04:42:14 2008
@@ -30,6 +30,7 @@
#include <pk-debug.h>
#include <gpk-common.h>
+#include <gpk-error.h>
/**
* gpk_consolekit_try_system_restart:
@@ -172,9 +173,9 @@
polkit_action_set_action_id (action2,
"org.freedesktop.consolekit.system.restart-multiple-users");
if (polkit_action_equal (action, action2)) {
- gpk_error_modal_dialog (_("Failed to restart"),
- _("You are not allowed to restart the computer "
- "because multiple users are logged in"));
+ gpk_error_dialog (_("Failed to restart"),
+ _("You are not allowed to restart the computer "
+ "because multiple users are logged in"), NULL);
}
g_error_free (error);
Modified: trunk/src/gpk-install-local-file.c
==============================================================================
--- trunk/src/gpk-install-local-file.c (original)
+++ trunk/src/gpk-install-local-file.c Sun Apr 13 04:42:14 2008
@@ -27,9 +27,9 @@
#include <locale.h>
#include <pk-debug.h>
-
-#include "gpk-common.h"
-#include "gpk-client.h"
+#include <gpk-common.h>
+#include <gpk-client.h>
+#include <gpk-error.h>
/**
* main:
@@ -71,11 +71,13 @@
gtk_init (&argc, &argv);
if (argc < 2) {
- gpk_error_modal_dialog (_("Failed to install local file"), _("You need to specify a file to install"));
+ gpk_error_dialog (_("Failed to install local file"),
+ _("You need to specify a file to install"), NULL);
return 1;
}
if (argc > 2) {
- gpk_error_modal_dialog (_("Failed to install local files"), _("You can only specify one file to install"));
+ gpk_error_dialog (_("Failed to install local files"),
+ _("You can only specify one file to install"), NULL);
return 1;
}
Modified: trunk/src/gpk-install-package-name.c
==============================================================================
--- trunk/src/gpk-install-package-name.c (original)
+++ trunk/src/gpk-install-package-name.c Sun Apr 13 04:42:14 2008
@@ -27,9 +27,9 @@
#include <locale.h>
#include <pk-debug.h>
-
-#include "gpk-common.h"
-#include "gpk-client.h"
+#include <gpk-common.h>
+#include <gpk-client.h>
+#include <gpk-error.h>
/**
* main:
@@ -71,11 +71,13 @@
gtk_init (&argc, &argv);
if (argc < 2) {
- gpk_error_modal_dialog (_("Failed to install package from name"), _("You need to specify a package to install"));
+ gpk_error_dialog (_("Failed to install package from name"),
+ _("You need to specify a package to install"), NULL);
return 1;
}
if (argc > 2) {
- gpk_error_modal_dialog (_("Failed to install packages from name"), _("You can only specify one package name to install"));
+ gpk_error_dialog (_("Failed to install packages from name"),
+ _("You can only specify one package name to install"), NULL);
return 1;
}
Modified: trunk/src/gpk-install-provide-file.c
==============================================================================
--- trunk/src/gpk-install-provide-file.c (original)
+++ trunk/src/gpk-install-provide-file.c Sun Apr 13 04:42:14 2008
@@ -27,9 +27,9 @@
#include <locale.h>
#include <pk-debug.h>
-
-#include "gpk-common.h"
-#include "gpk-client.h"
+#include <gpk-common.h>
+#include <gpk-client.h>
+#include <gpk-error.h>
/**
* main:
@@ -71,11 +71,13 @@
gtk_init (&argc, &argv);
if (argc < 2) {
- gpk_error_modal_dialog (_("Failed to install a package to provide a file"), _("You need to specify a filename to install"));
+ gpk_error_dialog (_("Failed to install a package to provide a file"),
+ _("You need to specify a filename to install"), NULL);
return 1;
}
if (argc > 2) {
- gpk_error_modal_dialog (_("Failed to install packages to provide files"), _("You can only specify one filename to install"));
+ gpk_error_dialog (_("Failed to install packages to provide files"),
+ _("You can only specify one filename to install"), NULL);
return 1;
}
Modified: trunk/src/gpk-repo.c
==============================================================================
--- trunk/src/gpk-repo.c (original)
+++ trunk/src/gpk-repo.c Sun Apr 13 04:42:14 2008
@@ -39,6 +39,7 @@
#include <gpk-gnome.h>
#include <gpk-common.h>
+#include <gpk-error.h>
#include "gpk-statusbar.h"
@@ -238,7 +239,7 @@
static void
pk_repo_error_code_cb (PkClient *client, PkErrorCodeEnum code, const gchar *details, gpointer data)
{
- gpk_error_modal_dialog (gpk_error_enum_to_localised_text (code), details);
+ gpk_error_dialog (_("Failed to change status"), gpk_error_enum_to_localised_text (code), details);
}
/**
Modified: trunk/src/gpk-update-viewer.c
==============================================================================
--- trunk/src/gpk-update-viewer.c (original)
+++ trunk/src/gpk-update-viewer.c Sun Apr 13 04:42:14 2008
@@ -39,12 +39,12 @@
#include <pk-control.h>
#include <pk-common.h>
#include <pk-task-list.h>
-#include <pk-connection.h>
#include <pk-package-id.h>
#include <pk-package-ids.h>
#include <gpk-common.h>
#include <gpk-gnome.h>
+#include <gpk-error.h>
#include "gpk-statusbar.h"
#include "gpk-consolekit.h"
@@ -62,12 +62,12 @@
static PolKitGnomeAction *refresh_action = NULL;
static PolKitGnomeAction *update_system_action = NULL;
-static PolKitGnomeAction *update_package_action = NULL;
+static PolKitGnomeAction *update_packages_action = NULL;
static PolKitGnomeAction *restart_action = NULL;
/* for the preview throbber */
-static void pk_updates_add_preview_item (const gchar *icon, const gchar *message, gboolean clear);
-static void pk_updates_description_animation_stop (void);
+static void pk_update_viewer_add_preview_item (const gchar *icon, const gchar *message, gboolean clear);
+static void pk_update_viewer_description_animation_stop (void);
static int animation_timeout = 0;
static int frame_counter = 0;
static int n_frames = 0;
@@ -119,15 +119,14 @@
pk_button_help_cb (GtkWidget *widget, gpointer data)
{
const char *id = data;
-
gpk_gnome_help (id);
}
/**
- * pk_updates_set_page:
+ * pk_update_viewer_set_page:
**/
static void
-pk_updates_set_page (PkPageEnum page)
+pk_update_viewer_set_page (PkPageEnum page)
{
GList *list, *l;
GtkWidget *widget;
@@ -160,8 +159,11 @@
}
}
+/**
+ * pk_update_viewer_update_system_cb:
+ **/
static void
-pk_updates_update_system_cb (PolKitGnomeAction *action, gpointer data)
+pk_update_viewer_update_system_cb (PolKitGnomeAction *action, gpointer data)
{
gboolean ret;
GError *error = NULL;
@@ -173,7 +175,7 @@
gtk_widget_hide (widget);
/* set correct view */
- pk_updates_set_page (PAGE_PROGRESS);
+ pk_update_viewer_set_page (PAGE_PROGRESS);
/* reset */
ret = pk_client_reset (client_action, &error);
@@ -192,10 +194,10 @@
}
/**
- * pk_updates_apply_cb:
+ * pk_update_viewer_apply_cb:
**/
static void
-pk_updates_apply_cb (PolKitGnomeAction *action, gpointer data)
+pk_update_viewer_apply_cb (PolKitGnomeAction *action, gpointer data)
{
GtkWidget *widget;
GtkTreeModel *model;
@@ -209,7 +211,6 @@
gchar **package_ids;
gboolean ret;
GError *error = NULL;
- gchar *text;
pk_debug ("Doing the package updates");
array = g_ptr_array_new ();
@@ -244,7 +245,7 @@
/* we have no checkboxes selected */
if (!selected_any) {
- gpk_error_modal_dialog (_("No updates selected"), _("No updates are selected"));
+ gpk_error_dialog (_("No updates selected"), _("No updates are selected"), NULL);
return;
}
@@ -256,7 +257,7 @@
}
/* set correct view */
- pk_updates_set_page (PAGE_PROGRESS);
+ pk_update_viewer_set_page (PAGE_PROGRESS);
package_ids = pk_package_ids_from_array (array);
/* reset */
@@ -270,9 +271,7 @@
/* update a list */
ret = pk_client_update_packages_strv (client_action, package_ids, &error);
if (!ret) {
- text = g_markup_escape_text (error->message, -1);
- gpk_error_modal_dialog ("Individual updates failed", text);
- g_free (text);
+ gpk_error_dialog (_("Failed to update"), _("Individual updates failed"), error->message);
g_error_free (error);
}
g_strfreev (package_ids);
@@ -282,10 +281,10 @@
}
/**
- * pk_updates_animation_load_frames:
+ * pk_update_viewer_animation_load_frames:
**/
static gboolean
-pk_updates_animation_load_frames (void)
+pk_update_viewer_animation_load_frames (void)
{
GtkWidget *widget;
GdkPixbuf *pixbuf;
@@ -324,10 +323,10 @@
}
/**
- * pk_updates_animation_update:
+ * pk_update_viewer_animation_update:
**/
static gboolean
-pk_updates_animation_update (gpointer data)
+pk_update_viewer_animation_update (gpointer data)
{
GtkTreeModel *model = data;
GtkTreeIter iter;
@@ -352,10 +351,10 @@
}
/**
- * pk_updates_preview_animation_start:
+ * pk_update_viewer_preview_animation_start:
**/
static void
-pk_updates_preview_animation_start (void)
+pk_update_viewer_preview_animation_start (void)
{
GtkWidget *widget;
GtkCellRenderer *renderer;
@@ -368,11 +367,8 @@
pk_debug ("don't double start");
return;
}
- gtk_list_store_clear (list_store_details);
-
- pk_updates_animation_load_frames ();
- pk_updates_add_preview_item (NULL, _("Getting information..."), TRUE);
+ pk_update_viewer_animation_load_frames ();
widget = glade_xml_get_widget (glade_xml, "treeview_preview");
column = gtk_tree_view_get_column (GTK_TREE_VIEW (widget), 0);
@@ -389,15 +385,15 @@
g_object_set_data (G_OBJECT (model), "progress-column",
GINT_TO_POINTER (PREVIEW_COLUMN_PROGRESS));
- animation_timeout = g_timeout_add (50, pk_updates_animation_update, model);
- pk_updates_animation_update (model);
+ animation_timeout = g_timeout_add (50, pk_update_viewer_animation_update, model);
+ pk_update_viewer_animation_update (model);
}
/**
- * pk_updates_preview_animation_stop:
+ * pk_update_viewer_preview_animation_stop:
**/
static void
-pk_updates_preview_animation_stop (void)
+pk_update_viewer_preview_animation_stop (void)
{
GtkWidget *widget;
GtkCellRenderer *renderer;
@@ -421,10 +417,10 @@
}
/**
- * pk_updates_description_animation_start:
+ * pk_update_viewer_description_animation_start:
**/
static void
-pk_updates_description_animation_start (void)
+pk_update_viewer_description_animation_start (void)
{
GtkWidget *widget;
GtkTreeViewColumn *column;
@@ -441,7 +437,7 @@
gtk_list_store_clear (list_store_description);
- pk_updates_animation_load_frames ();
+ pk_update_viewer_animation_load_frames ();
widget = glade_xml_get_widget (glade_xml, "treeview_description");
column = gtk_tree_view_get_column (GTK_TREE_VIEW (widget), 0);
@@ -454,7 +450,7 @@
}
g_list_free (list);
- text = g_strdup_printf ("<b>%s</b>", _("Getting Information..."));
+ text = g_strdup_printf ("<b>%s</b>", _("Getting Description..."));
gtk_list_store_append (list_store_description, &iter);
gtk_list_store_set (list_store_description, &iter,
DESC_COLUMN_TITLE, text,
@@ -465,15 +461,15 @@
g_object_set_data (G_OBJECT (list_store_description), "progress-column",
GINT_TO_POINTER (DESC_COLUMN_PROGRESS));
- animation_timeout = g_timeout_add (50, pk_updates_animation_update, list_store_description);
- pk_updates_animation_update (list_store_description);
+ animation_timeout = g_timeout_add (50, pk_update_viewer_animation_update, list_store_description);
+ pk_update_viewer_animation_update (list_store_description);
}
/**
- * pk_updates_description_animation_stop:
+ * pk_update_viewer_description_animation_stop:
**/
static void
-pk_updates_description_animation_stop (void)
+pk_update_viewer_description_animation_stop (void)
{
GtkWidget *widget;
GtkTreeViewColumn *column;
@@ -499,15 +495,13 @@
}
/**
- * pk_updates_refresh_cb:
+ * pk_update_viewer_refresh_cb:
**/
static void
-pk_updates_refresh_cb (PolKitGnomeAction *action, gpointer data)
+pk_update_viewer_refresh_cb (PolKitGnomeAction *action, gpointer data)
{
gboolean ret;
GError *error = NULL;
- GtkWidget *widget;
- gchar *text;
/* we can't click this if we havn't finished */
ret = pk_client_reset (client_action, &error);
@@ -518,47 +512,32 @@
}
ret = pk_client_refresh_cache (client_action, TRUE, &error);
if (ret == FALSE) {
- text = g_markup_escape_text (error->message, -1);
- gpk_error_modal_dialog (_("Failed to refresh"), text);
- g_free (text);
+ gpk_error_dialog (_("Failed to refresh"), _("Method refused"), error->message);
g_error_free (error);
return;
}
-
- /* clear existing list */
- pk_updates_preview_animation_start ();
-
- /* make the refresh button non-clickable */
- polkit_gnome_action_set_sensitive (refresh_action, FALSE);
- polkit_gnome_action_set_sensitive (update_system_action, FALSE);
-
- /* make the buttons non-clickable until we get completion */
- widget = glade_xml_get_widget (glade_xml, "button_review");
- gtk_widget_set_sensitive (widget, FALSE);
- widget = glade_xml_get_widget (glade_xml, "button_history");
- gtk_widget_set_sensitive (widget, FALSE);
}
+/**
+ * pk_update_viewer_history_cb:
+ **/
static void
-pk_updates_history_cb (GtkWidget *widget, gpointer data)
+pk_update_viewer_history_cb (GtkWidget *widget, gpointer data)
{
GError *error = NULL;
- gchar *text;
/* FIXME: do this in process */
if (!g_spawn_command_line_async ("gpk-log", &error)) {
- text = g_markup_escape_text (error->message, -1);
- gpk_error_modal_dialog (_("Failed to launch gpk-log"), text);
- g_free (text);
+ gpk_error_dialog (_("Failed to launch"), _("The file was not found"), error->message);
g_error_free (error);
}
}
/**
- * pk_button_cancel_cb:
+ * pk_update_viewer_button_cancel_cb:
**/
static void
-pk_button_cancel_cb (GtkWidget *widget, gpointer data)
+pk_update_viewer_button_cancel_cb (GtkWidget *widget, gpointer data)
{
gboolean ret;
GError *error = NULL;
@@ -578,10 +557,10 @@
}
/**
- * pk_button_close_and_cancel_cb:
+ * pk_update_viewer_button_close_and_cancel_cb:
**/
static void
-pk_button_close_and_cancel_cb (GtkWidget *widget, gpointer data)
+pk_update_viewer_button_close_and_cancel_cb (GtkWidget *widget, gpointer data)
{
gboolean ret;
GError *error = NULL;
@@ -598,8 +577,11 @@
g_main_loop_quit (loop);
}
+/**
+ * pk_update_viewer_close_cb:
+ **/
static void
-pk_button_close_cb (GtkWidget *widget, gpointer data)
+pk_update_viewer_close_cb (GtkWidget *widget, gpointer data)
{
GMainLoop *loop = (GMainLoop *) data;
@@ -608,10 +590,10 @@
}
/**
- * pk_button_review_cb:
+ * pk_update_viewer_review_cb:
**/
static void
-pk_button_review_cb (GtkWidget *widget, gpointer data)
+pk_update_viewer_review_cb (GtkWidget *widget, gpointer data)
{
GtkWidget *treeview;
GtkTreeSelection *selection;
@@ -632,14 +614,112 @@
gtk_widget_set_size_request (GTK_WIDGET (widget), 500, 200);
/* set correct view */
- pk_updates_set_page (PAGE_DETAILS);
+ pk_update_viewer_set_page (PAGE_DETAILS);
+}
+
+
+/**
+ * pk_update_viewer_populate_preview:
+ **/
+static void
+pk_update_viewer_populate_preview (void)
+{
+ GtkWidget *widget;
+ guint length;
+
+ length = pk_client_package_buffer_get_size (client_query);
+ if (length == 0) {
+ pk_update_viewer_add_preview_item ("dialog-information", _("There are no updates available!"), TRUE);
+
+ /* if no updates then hide apply */
+ widget = glade_xml_get_widget (glade_xml, "button_review");
+ gtk_widget_set_sensitive (widget, FALSE);
+ polkit_gnome_action_set_sensitive (update_system_action, FALSE);
+ polkit_gnome_action_set_sensitive (update_packages_action, FALSE);
+ } else {
+
+ PkPackageItem *item;
+ guint i;
+ guint num_low = 0;
+ guint num_normal = 0;
+ guint num_important = 0;
+ guint num_security = 0;
+ guint num_bugfix = 0;
+ guint num_enhancement = 0;
+ const gchar *icon;
+ gchar *text;
+
+ for (i=0;i<length;i++) {
+ item = pk_client_package_buffer_get_item (client_query, i);
+ if (item->info == PK_INFO_ENUM_LOW) {
+ num_low++;
+ } else if (item->info == PK_INFO_ENUM_IMPORTANT) {
+ num_important++;
+ } else if (item->info == PK_INFO_ENUM_SECURITY) {
+ num_security++;
+ } else if (item->info == PK_INFO_ENUM_BUGFIX) {
+ num_bugfix++;
+ } else if (item->info == PK_INFO_ENUM_ENHANCEMENT) {
+ num_enhancement++;
+ } else {
+ num_normal++;
+ }
+ }
+
+ /* clear existing list */
+ gtk_list_store_clear (list_store_preview);
+
+ /* add to preview box in order of priority */
+ if (num_security > 0) {
+ icon = gpk_info_enum_to_icon_name (PK_INFO_ENUM_SECURITY);
+ text = gpk_update_enum_to_localised_text (PK_INFO_ENUM_SECURITY, num_security);
+ pk_update_viewer_add_preview_item (icon, text, FALSE);
+ g_free (text);
+ }
+ if (num_important > 0) {
+ icon = gpk_info_enum_to_icon_name (PK_INFO_ENUM_IMPORTANT);
+ text = gpk_update_enum_to_localised_text (PK_INFO_ENUM_IMPORTANT, num_important);
+ pk_update_viewer_add_preview_item (icon, text, FALSE);
+ g_free (text);
+ }
+ if (num_bugfix > 0) {
+ icon = gpk_info_enum_to_icon_name (PK_INFO_ENUM_BUGFIX);
+ text = gpk_update_enum_to_localised_text (PK_INFO_ENUM_BUGFIX, num_bugfix);
+ pk_update_viewer_add_preview_item (icon, text, FALSE);
+ g_free (text);
+ }
+ if (num_enhancement > 0) {
+ icon = gpk_info_enum_to_icon_name (PK_INFO_ENUM_ENHANCEMENT);
+ text = gpk_update_enum_to_localised_text (PK_INFO_ENUM_ENHANCEMENT, num_enhancement);
+ pk_update_viewer_add_preview_item (icon, text, FALSE);
+ g_free (text);
+ }
+ if (num_low > 0) {
+ icon = gpk_info_enum_to_icon_name (PK_INFO_ENUM_LOW);
+ text = gpk_update_enum_to_localised_text (PK_INFO_ENUM_LOW, num_low);
+ pk_update_viewer_add_preview_item (icon, text, FALSE);
+ g_free (text);
+ }
+ if (num_normal > 0) {
+ icon = gpk_info_enum_to_icon_name (PK_INFO_ENUM_NORMAL);
+ text = gpk_update_enum_to_localised_text (PK_INFO_ENUM_NORMAL, num_normal);
+ pk_update_viewer_add_preview_item (icon, text, FALSE);
+ g_free (text);
+ }
+
+ /* set visible and sensitive */
+ widget = glade_xml_get_widget (glade_xml, "button_review");
+ gtk_widget_set_sensitive (widget, TRUE);
+ polkit_gnome_action_set_sensitive (update_system_action, TRUE);
+ polkit_gnome_action_set_sensitive (update_packages_action, TRUE);
+ }
}
/**
- * pk_button_overview_cb:
+ * pk_update_viewer_get_new_update_list:
**/
static void
-pk_button_overview_cb (GtkWidget *widget, gpointer data)
+pk_update_viewer_get_new_update_list (void)
{
gboolean ret;
GError *error = NULL;
@@ -647,9 +727,6 @@
/* clear existing list */
gtk_list_store_clear (list_store_details);
- /* set correct view */
- pk_updates_set_page (PAGE_PREVIEW);
-
/* get the new update list */
ret = pk_client_reset (client_query, &error);
if (!ret) {
@@ -657,22 +734,34 @@
g_error_free (error);
return;
}
- /* TODO: we don't actually need to re-request the data, but we've
- * nuked the preview window with the spinner */
ret = pk_client_get_updates (client_query, PK_FILTER_ENUM_BASENAME, &error);
if (!ret) {
pk_warning ("failed to get updates: %s", error->message);
g_error_free (error);
return;
}
+ pk_update_viewer_populate_preview ();
}
/**
- * pk_updates_package_cb:
+ * pk_update_viewer_overview_cb:
**/
static void
-pk_updates_package_cb (PkClient *client, PkInfoEnum info, const gchar *package_id,
- const gchar *summary, gpointer data)
+pk_update_viewer_overview_cb (GtkWidget *widget, gpointer data)
+{
+ /* set correct view */
+ pk_update_viewer_set_page (PAGE_PREVIEW);
+
+ /* get the new update list */
+ pk_update_viewer_get_new_update_list ();
+}
+
+/**
+ * pk_update_viewer_package_cb:
+ **/
+static void
+pk_update_viewer_package_cb (PkClient *client, PkInfoEnum info, const gchar *package_id,
+ const gchar *summary, gpointer data)
{
GtkTreeIter iter;
gchar *text;
@@ -712,10 +801,10 @@
}
/**
- * pk_updates_add_description_item:
+ * pk_update_viewer_add_description_item:
**/
static void
-pk_updates_add_description_item (const gchar *title, const gchar *text, const gchar *uri)
+pk_update_viewer_add_description_item (const gchar *title, const gchar *text, const gchar *uri)
{
gchar *markup;
GtkWidget *tree_view;
@@ -742,10 +831,10 @@
}
/**
- * pk_updates_add_description_link_item:
+ * pk_update_viewer_add_description_link_item:
**/
static void
-pk_updates_add_description_link_item (const gchar *title, const gchar *url_string)
+pk_update_viewer_add_description_link_item (const gchar *title, const gchar *url_string)
{
const gchar *text;
const gchar *uri;
@@ -764,10 +853,10 @@
}
/* no suffix needed */
if (length == 2) {
- pk_updates_add_description_item (title, text, uri);
+ pk_update_viewer_add_description_item (title, text, uri);
} else {
title_num = g_strdup_printf ("%s (%i)", title, (i/2) + 1);
- pk_updates_add_description_item (title_num, text, uri);
+ pk_update_viewer_add_description_item (title_num, text, uri);
g_free (title_num);
}
}
@@ -775,14 +864,14 @@
}
/**
- * pk_updates_update_detail_cb:
+ * pk_update_viewer_update_detail_cb:
**/
static void
-pk_updates_update_detail_cb (PkClient *client, const gchar *package_id,
- const gchar *updates, const gchar *obsoletes,
- const gchar *vendor_url, const gchar *bugzilla_url,
- const gchar *cve_url, PkRestartEnum restart,
- const gchar *update_text, gpointer data)
+pk_update_viewer_update_detail_cb (PkClient *client, const gchar *package_id,
+ const gchar *updates, const gchar *obsoletes,
+ const gchar *vendor_url, const gchar *bugzilla_url,
+ const gchar *cve_url, PkRestartEnum restart,
+ const gchar *update_text, gpointer data)
{
GtkWidget *widget;
PkPackageId *ident;
@@ -796,7 +885,7 @@
PkInfoEnum info;
/* clear existing list */
- pk_updates_description_animation_stop ();
+ pk_update_viewer_description_animation_stop ();
gtk_list_store_clear (list_store_description);
/* initially we are hidden */
@@ -815,49 +904,49 @@
info_text = gpk_info_enum_to_localised_text (info);
/* translators: this is the update type, e.g. security */
- pk_updates_add_description_item (_("Type"), info_text, NULL);
+ pk_update_viewer_add_description_item (_("Type"), info_text, NULL);
package_pretty = gpk_package_id_name_version (package_id);
/* translators: this is the package version */
- pk_updates_add_description_item (_("Version"), package_pretty, NULL);
+ pk_update_viewer_add_description_item (_("Version"), package_pretty, NULL);
g_free (package_pretty);
if (!pk_strzero (updates)) {
updates_pretty = gpk_package_id_name_version (updates);
/* translators: this is a list of packages that are updated */
- pk_updates_add_description_item (_("Updates"), updates_pretty, NULL);
+ pk_update_viewer_add_description_item (_("Updates"), updates_pretty, NULL);
g_free (updates_pretty);
}
if (!pk_strzero (obsoletes)) {
obsoletes_pretty = gpk_package_id_name_version (obsoletes);
/* translators: this is a list of packages that are obsoleted */
- pk_updates_add_description_item (_("Obsoletes"), obsoletes_pretty, NULL);
+ pk_update_viewer_add_description_item (_("Obsoletes"), obsoletes_pretty, NULL);
g_free (obsoletes_pretty);
}
ident = pk_package_id_new_from_string (package_id);
/* translators: this is the repository the package has come from */
- pk_updates_add_description_item (_("Repository"), ident->data, NULL);
+ pk_update_viewer_add_description_item (_("Repository"), ident->data, NULL);
pk_package_id_free (ident);
if (!pk_strzero (update_text)) {
/* translators: this is the package description */
- pk_updates_add_description_item (_("Description"), update_text, NULL);
+ pk_update_viewer_add_description_item (_("Description"), update_text, NULL);
}
/* add all the links */
if (!pk_strzero (vendor_url)) {
/* translators: this is a list of vendor URLs */
- pk_updates_add_description_link_item (_("Vendor"), vendor_url);
+ pk_update_viewer_add_description_link_item (_("Vendor"), vendor_url);
}
if (!pk_strzero (bugzilla_url)) {
/* translators: this is a list of bugzilla URLs */
- pk_updates_add_description_link_item (_("Bugzilla"), bugzilla_url);
+ pk_update_viewer_add_description_link_item (_("Bugzilla"), bugzilla_url);
}
if (!pk_strzero (cve_url)) {
/* translators: this is a list of CVE (security) URLs */
- pk_updates_add_description_link_item (_("CVE"), cve_url);
+ pk_update_viewer_add_description_link_item (_("CVE"), cve_url);
}
/* reboot */
@@ -872,18 +961,14 @@
}
/**
- * pk_updates_status_changed_cb:
+ * pk_update_viewer_status_changed_cb:
**/
static void
-pk_updates_status_changed_cb (PkClient *client, PkStatusEnum status, gpointer data)
+pk_update_viewer_status_changed_cb (PkClient *client, PkStatusEnum status, gpointer data)
{
GtkWidget *widget;
gchar *text;
- if (status == PK_STATUS_ENUM_WAIT) {
- pk_updates_add_preview_item ("dialog-information", _("Waiting for previous tasks to complete!"), TRUE);
- }
-
widget = glade_xml_get_widget (glade_xml, "progress_part_label");
text = g_strdup_printf ("<b>%s</b>", gpk_status_enum_to_localised_text (status));
gtk_label_set_markup (GTK_LABEL (widget), text);
@@ -897,25 +982,22 @@
}
/**
- * pk_window_delete_event_cb:
+ * pk_update_viewer_window_delete_event_cb:
* @event: The event type, unused.
**/
static gboolean
-pk_window_delete_event_cb (GtkWidget *widget,
- GdkEvent *event,
- gpointer data)
+pk_update_viewer_window_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data)
{
GMainLoop *loop = (GMainLoop *) data;
-
g_main_loop_quit (loop);
return FALSE;
}
/**
- * pk_treeview_update_toggled:
+ * pk_update_viewer_treeview_update_toggled:
**/
static void
-pk_treeview_update_toggled (GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
+pk_update_viewer_treeview_update_toggled (GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
{
GtkTreeModel *model = (GtkTreeModel *) data;
GtkTreeIter iter;
@@ -942,10 +1024,10 @@
}
/**
- * pk_treeview_add_columns:
+ * pk_update_viewer_treeview_add_columns:
**/
static void
-pk_treeview_add_columns (GtkTreeView *treeview)
+pk_update_viewer_treeview_add_columns (GtkTreeView *treeview)
{
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
@@ -967,20 +1049,20 @@
}
/**
- * pk_treeview_renderer_clicked:
+ * pk_update_viewer_treeview_renderer_clicked:
**/
static void
-pk_treeview_renderer_clicked (GtkCellRendererToggle *cell, gchar *uri, gpointer data)
+pk_update_viewer_treeview_renderer_clicked (GtkCellRendererToggle *cell, gchar *uri, gpointer data)
{
pk_debug ("clicked %s", uri);
gpk_gnome_open (uri);
}
/**
- * pk_treeview_add_columns_description:
+ * pk_update_viewer_treeview_add_columns_description:
**/
static void
-pk_treeview_add_columns_description (GtkTreeView *treeview)
+pk_update_viewer_treeview_add_columns_description (GtkTreeView *treeview)
{
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
@@ -999,7 +1081,7 @@
/* column for uris */
renderer = gpk_cell_renderer_uri_new ();
- g_signal_connect (renderer, "clicked", G_CALLBACK (pk_treeview_renderer_clicked), NULL);
+ g_signal_connect (renderer, "clicked", G_CALLBACK (pk_update_viewer_treeview_renderer_clicked), NULL);
column = gtk_tree_view_column_new_with_attributes (_("Text"), renderer,
"text", DESC_COLUMN_TEXT,
"uri", DESC_COLUMN_URI, NULL);
@@ -1007,10 +1089,10 @@
}
/**
- * pk_treeview_add_columns_update:
+ * pk_update_viewer_treeview_add_columns_update:
**/
static void
-pk_treeview_add_columns_update (GtkTreeView *treeview)
+pk_update_viewer_treeview_add_columns_update (GtkTreeView *treeview)
{
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
@@ -1019,7 +1101,7 @@
/* column for select toggle */
renderer = gtk_cell_renderer_toggle_new ();
model = gtk_tree_view_get_model (treeview);
- g_signal_connect (renderer, "toggled", G_CALLBACK (pk_treeview_update_toggled), model);
+ g_signal_connect (renderer, "toggled", G_CALLBACK (pk_update_viewer_treeview_update_toggled), model);
column = gtk_tree_view_column_new_with_attributes ("Update", renderer, "active", PACKAGES_COLUMN_SELECT, NULL);
/* set this column to a fixed sizing (of 50 pixels) */
@@ -1028,7 +1110,7 @@
gtk_tree_view_append_column (treeview, column);
/* usual suspects */
- pk_treeview_add_columns (treeview);
+ pk_update_viewer_treeview_add_columns (treeview);
}
/**
@@ -1062,7 +1144,7 @@
g_free (package_id);
/* clear and display animation until new details come in */
- pk_updates_description_animation_start ();
+ pk_update_viewer_description_animation_start ();
widget = glade_xml_get_widget (glade_xml, "hbox_reboot");
gtk_widget_hide (widget);
@@ -1089,19 +1171,10 @@
}
/**
- * pk_connection_changed_cb:
+ * pk_update_viewer_add_preview_item:
**/
static void
-pk_connection_changed_cb (PkConnection *pconnection, gboolean connected, gpointer data)
-{
- pk_debug ("connected=%i", connected);
-}
-
-/**
- * pk_updates_add_preview_item:
- **/
-static void
-pk_updates_add_preview_item (const gchar *icon, const gchar *message, gboolean clear)
+pk_update_viewer_add_preview_item (const gchar *icon, const gchar *message, gboolean clear)
{
GtkWidget *tree_view;
GtkTreeSelection *selection;
@@ -1188,18 +1261,18 @@
}
static void
-pk_updates_restart_cb (GtkWidget *widget, gpointer data)
+pk_update_viewer_restart_cb (GtkWidget *widget, gpointer data)
{
gpk_restart_system ();
}
-static void populate_preview (void);
+static void pk_update_viewer_populate_preview (void);
/**
- *pk_updates_check_blocked_packages:
+ * pk_update_viewer_check_blocked_packages:
**/
static void
-pk_updates_check_blocked_packages (PkClient *client)
+pk_update_viewer_check_blocked_packages (PkClient *client)
{
guint i;
guint length;
@@ -1256,10 +1329,10 @@
}
/**
- * pk_updates_finished_cb:
+ * pk_update_viewer_finished_cb:
**/
static void
-pk_updates_finished_cb (PkClient *client, PkExitEnum exit, guint runtime, gpointer data)
+pk_update_viewer_finished_cb (PkClient *client, PkExitEnum exit, guint runtime, gpointer data)
{
GtkWidget *widget;
PkRoleEnum role;
@@ -1267,36 +1340,19 @@
pk_client_get_role (client, &role, NULL, NULL);
- /* just update the preview page */
- if (role == PK_ROLE_ENUM_REFRESH_CACHE) {
- /* update last time in the UI */
- pk_update_update_last_refreshed_time ();
- } else if (role == PK_ROLE_ENUM_UPDATE_SYSTEM ||
- role == PK_ROLE_ENUM_UPDATE_PACKAGES) {
- pk_update_update_last_updated_time ();
- }
-
/* we don't need to do anything here */
- if (role == PK_ROLE_ENUM_REFRESH_CACHE ||
- role == PK_ROLE_ENUM_GET_UPDATE_DETAIL) {
+ if (role == PK_ROLE_ENUM_GET_UPDATE_DETAIL ||
+ role == PK_ROLE_ENUM_REFRESH_CACHE) {
return;
}
/* stop the throbber */
- pk_updates_preview_animation_stop ();
-
- /* make the buttons clickable again now we have completed */
- widget = glade_xml_get_widget (glade_xml, "button_review");
- gtk_widget_set_sensitive (widget, TRUE);
- widget = glade_xml_get_widget (glade_xml, "button_history");
- gtk_widget_set_sensitive (widget, TRUE);
- polkit_gnome_action_set_sensitive (refresh_action, TRUE);
- polkit_gnome_action_set_sensitive (update_system_action, TRUE);
+ pk_update_viewer_preview_animation_stop ();
/* check if we need to display infomation about blocked packages */
if (role == PK_ROLE_ENUM_UPDATE_SYSTEM ||
role == PK_ROLE_ENUM_UPDATE_PACKAGES) {
- pk_updates_check_blocked_packages (client);
+ pk_update_viewer_check_blocked_packages (client);
}
/* hide the cancel */
@@ -1319,143 +1375,27 @@
}
/* set correct view */
- pk_updates_set_page (PAGE_CONFIRM);
+ pk_update_viewer_set_page (PAGE_CONFIRM);
}
}
- populate_preview ();
+ pk_update_viewer_populate_preview ();
}
static void
pk_button_more_installs_cb (GtkWidget *button, gpointer data)
{
- gboolean ret;
- GError *error = NULL;
-
- /* clear existing list */
- gtk_list_store_clear (list_store_details);
-
/* set correct view */
- pk_updates_set_page (PAGE_DETAILS);
-
- /* get the new update list */
- ret = pk_client_reset (client_query, &error);
- if (!ret) {
- pk_warning ("failed to reset client: %s", error->message);
- g_error_free (error);
- return;
- }
- ret = pk_client_get_updates (client_query, PK_FILTER_ENUM_BASENAME, &error);
- if (!ret) {
- pk_warning ("failed to get updates: %s", error->message);
- g_error_free (error);
- return;
- }
-
- populate_preview ();
-}
-
-static void
-populate_preview (void)
-{
- GtkWidget *widget;
- guint length;
-
- /* clear existing lists */
- gtk_list_store_clear (list_store_preview);
-
- length = pk_client_package_buffer_get_size (client_query);
- if (length == 0) {
- /* put a message in the listbox */
- pk_updates_add_preview_item ("dialog-information", _("There are no updates available!"), TRUE);
-
- /* if no updates then hide apply */
- widget = glade_xml_get_widget (glade_xml, "button_review");
- gtk_widget_hide (widget);
- polkit_gnome_action_set_visible (update_system_action, FALSE);
- } else {
-
- PkPackageItem *item;
- guint i;
- guint num_low = 0;
- guint num_normal = 0;
- guint num_important = 0;
- guint num_security = 0;
- guint num_bugfix = 0;
- guint num_enhancement = 0;
- const gchar *icon;
- gchar *text;
-
- for (i=0;i<length;i++) {
- item = pk_client_package_buffer_get_item (client_query, i);
- if (item->info == PK_INFO_ENUM_LOW) {
- num_low++;
- } else if (item->info == PK_INFO_ENUM_IMPORTANT) {
- num_important++;
- } else if (item->info == PK_INFO_ENUM_SECURITY) {
- num_security++;
- } else if (item->info == PK_INFO_ENUM_BUGFIX) {
- num_bugfix++;
- } else if (item->info == PK_INFO_ENUM_ENHANCEMENT) {
- num_enhancement++;
- } else {
- num_normal++;
- }
- }
-
- /* clear existing list */
- gtk_list_store_clear (list_store_preview);
-
- /* add to preview box in order of priority */
- if (num_security > 0) {
- icon = gpk_info_enum_to_icon_name (PK_INFO_ENUM_SECURITY);
- text = gpk_update_enum_to_localised_text (PK_INFO_ENUM_SECURITY, num_security);
- pk_updates_add_preview_item (icon, text, FALSE);
- g_free (text);
- }
- if (num_important > 0) {
- icon = gpk_info_enum_to_icon_name (PK_INFO_ENUM_IMPORTANT);
- text = gpk_update_enum_to_localised_text (PK_INFO_ENUM_IMPORTANT, num_important);
- pk_updates_add_preview_item (icon, text, FALSE);
- g_free (text);
- }
- if (num_bugfix > 0) {
- icon = gpk_info_enum_to_icon_name (PK_INFO_ENUM_BUGFIX);
- text = gpk_update_enum_to_localised_text (PK_INFO_ENUM_BUGFIX, num_bugfix);
- pk_updates_add_preview_item (icon, text, FALSE);
- g_free (text);
- }
- if (num_enhancement > 0) {
- icon = gpk_info_enum_to_icon_name (PK_INFO_ENUM_ENHANCEMENT);
- text = gpk_update_enum_to_localised_text (PK_INFO_ENUM_ENHANCEMENT, num_enhancement);
- pk_updates_add_preview_item (icon, text, FALSE);
- g_free (text);
- }
- if (num_low > 0) {
- icon = gpk_info_enum_to_icon_name (PK_INFO_ENUM_LOW);
- text = gpk_update_enum_to_localised_text (PK_INFO_ENUM_LOW, num_low);
- pk_updates_add_preview_item (icon, text, FALSE);
- g_free (text);
- }
- if (num_normal > 0) {
- icon = gpk_info_enum_to_icon_name (PK_INFO_ENUM_NORMAL);
- text = gpk_update_enum_to_localised_text (PK_INFO_ENUM_NORMAL, num_normal);
- pk_updates_add_preview_item (icon, text, FALSE);
- g_free (text);
- }
+ pk_update_viewer_set_page (PAGE_DETAILS);
- /* set visible and sensitive */
- widget = glade_xml_get_widget (glade_xml, "button_review");
- gtk_widget_show (widget);
- polkit_gnome_action_set_visible (update_system_action, TRUE);
- }
+ pk_update_viewer_get_new_update_list ();
}
/**
- * pk_updates_progress_changed_cb:
+ * pk_update_viewer_progress_changed_cb:
**/
static void
-pk_updates_progress_changed_cb (PkClient *client, guint percentage, guint subpercentage,
+pk_update_viewer_progress_changed_cb (PkClient *client, guint percentage, guint subpercentage,
guint elapsed, guint remaining, gpointer data)
{
GtkWidget *widget;
@@ -1467,10 +1407,10 @@
}
/**
- * pk_updates_allow_cancel_cb:
+ * pk_update_viewer_allow_cancel_cb:
**/
static void
-pk_updates_allow_cancel_cb (PkClient *client, gboolean allow_cancel, gpointer data)
+pk_update_viewer_allow_cancel_cb (PkClient *client, gboolean allow_cancel, gpointer data)
{
GtkWidget *widget;
widget = glade_xml_get_widget (glade_xml, "button_cancel");
@@ -1478,30 +1418,52 @@
}
/**
- * pk_updates_task_list_changed_cb:
+ * pk_update_viewer_preview_set_animation:
**/
static void
-pk_updates_task_list_changed_cb (PkTaskList *tlist, gpointer data)
+pk_update_viewer_preview_set_animation (const gchar *text)
+{
+ GtkWidget *widget;
+
+ /* put a message in the listbox */
+ pk_update_viewer_add_preview_item ("dialog-information", text, TRUE);
+
+ /* hide apply, review and refresh */
+ polkit_gnome_action_set_sensitive (update_system_action, FALSE);
+ polkit_gnome_action_set_sensitive (update_packages_action, FALSE);
+ polkit_gnome_action_set_sensitive (refresh_action, FALSE);
+ widget = glade_xml_get_widget (glade_xml, "button_review");
+ gtk_widget_set_sensitive (widget, FALSE);
+
+ /* start the spinning preview */
+ pk_update_viewer_preview_animation_start ();
+}
+
+/**
+ * pk_update_viewer_task_list_changed_cb:
+ **/
+static void
+pk_update_viewer_task_list_changed_cb (PkTaskList *tlist, gpointer data)
{
GtkWidget *widget;
/* hide buttons if we are updating */
if (pk_task_list_contains_role (tlist, PK_ROLE_ENUM_UPDATE_SYSTEM) ||
pk_task_list_contains_role (tlist, PK_ROLE_ENUM_UPDATE_PACKAGES)) {
- /* clear existing list */
- gtk_list_store_clear (list_store_preview);
+ pk_update_viewer_preview_set_animation (_("A system update is already in progress"));
- /* put a message in the listbox */
- pk_updates_add_preview_item ("dialog-information", _("There is an update already in progress!"), TRUE);
+ } else if (pk_task_list_contains_role (tlist, PK_ROLE_ENUM_GET_UPDATES)) {
+ pk_update_viewer_preview_set_animation (_("Getting updates"));
+
+ } else if (pk_task_list_contains_role (tlist, PK_ROLE_ENUM_REFRESH_CACHE)) {
+ pk_update_viewer_preview_set_animation (_("Refreshing package cache"));
- /* hide apply, review and refresh */
- polkit_gnome_action_set_sensitive (update_system_action, FALSE);
- polkit_gnome_action_set_sensitive (refresh_action, FALSE);
- widget = glade_xml_get_widget (glade_xml, "button_review");
- gtk_widget_set_sensitive (widget, FALSE);
} else {
+ pk_update_viewer_preview_animation_stop ();
+
/* show apply, review and refresh */
polkit_gnome_action_set_sensitive (update_system_action, TRUE);
+ polkit_gnome_action_set_sensitive (update_packages_action, TRUE);
polkit_gnome_action_set_sensitive (refresh_action, TRUE);
widget = glade_xml_get_widget (glade_xml, "button_review");
gtk_widget_set_sensitive (widget, TRUE);
@@ -1509,10 +1471,10 @@
}
/**
- * pk_updates_error_code_cb:
+ * pk_update_viewer_error_code_cb:
**/
static void
-pk_updates_error_code_cb (PkClient *client, PkErrorCodeEnum code, const gchar *details, gpointer data)
+pk_update_viewer_error_code_cb (PkClient *client, PkErrorCodeEnum code, const gchar *details, gpointer data)
{
GtkWidget *widget;
const gchar *title;
@@ -1520,7 +1482,7 @@
gchar *details_safe;
/* set correct view */
- pk_updates_set_page (PAGE_ERROR);
+ pk_update_viewer_set_page (PAGE_ERROR);
/* set bold title */
widget = glade_xml_get_widget (glade_xml, "label_error_title");
@@ -1539,36 +1501,19 @@
}
/**
- * pk_updates_changed_cb:
+ * pk_update_viewer_repo_list_changed_cb:
**/
static void
-pk_updates_changed_cb (PkClient *client, gpointer data)
+pk_update_viewer_repo_list_changed_cb (PkClient *client, gpointer data)
{
- gboolean ret;
- GError *error = NULL;
-
- /* get the update list */
- ret = pk_client_reset (client_query, &error);
- if (!ret) {
- pk_warning ("failed to reset client: %s", error->message);
- g_error_free (error);
- return;
- }
- ret = pk_client_get_updates (client_query, PK_FILTER_ENUM_BASENAME, &error);
- if (!ret) {
- pk_warning ("failed to get new list: %s", error->message);
- g_error_free (error);
- } else {
- /* only show this if we succeeded */
- pk_updates_preview_animation_start ();
- }
+ pk_update_viewer_get_new_update_list ();
}
/**
- * pk_updates_detail_popup_menu_select_all:
+ * pk_update_viewer_detail_popup_menu_select_all:
**/
void
-pk_updates_detail_popup_menu_select_all (GtkWidget *menuitem, gpointer userdata)
+pk_update_viewer_detail_popup_menu_select_all (GtkWidget *menuitem, gpointer userdata)
{
GtkTreeView *treeview = GTK_TREE_VIEW (userdata);
gboolean valid;
@@ -1587,10 +1532,10 @@
}
/**
- * pk_updates_detail_popup_menu_select_none:
+ * pk_update_viewer_detail_popup_menu_select_none:
**/
void
-pk_updates_detail_popup_menu_select_none (GtkWidget *menuitem, gpointer userdata)
+pk_update_viewer_detail_popup_menu_select_none (GtkWidget *menuitem, gpointer userdata)
{
GtkTreeView *treeview = GTK_TREE_VIEW (userdata);
gboolean valid;
@@ -1609,10 +1554,10 @@
}
/**
- * pk_updates_get_checked_status:
+ * pk_update_viewer_get_checked_status:
**/
void
-pk_updates_get_checked_status (gboolean *all_checked, gboolean *none_checked)
+pk_update_viewer_get_checked_status (gboolean *all_checked, gboolean *none_checked)
{
GtkTreeView *treeview;
gboolean valid;
@@ -1638,10 +1583,10 @@
}
/**
- * pk_updates_detail_popup_menu_create:
+ * pk_update_viewer_detail_popup_menu_create:
**/
void
-pk_updates_detail_popup_menu_create (GtkWidget *treeview, GdkEventButton *event, gpointer userdata)
+pk_update_viewer_detail_popup_menu_create (GtkWidget *treeview, GdkEventButton *event, gpointer userdata)
{
GtkWidget *menu;
GtkWidget *menuitem;
@@ -1651,26 +1596,26 @@
menu = gtk_menu_new();
/* we don't want to show 'Select all' if they are all checked */
- pk_updates_get_checked_status (&all_checked, &none_checked);
+ pk_update_viewer_get_checked_status (&all_checked, &none_checked);
if (!all_checked) {
menuitem = gtk_menu_item_new_with_label ("Select all");
g_signal_connect (menuitem, "activate",
- G_CALLBACK (pk_updates_detail_popup_menu_select_all), treeview);
+ G_CALLBACK (pk_update_viewer_detail_popup_menu_select_all), treeview);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
}
if (!none_checked) {
menuitem = gtk_menu_item_new_with_label ("Unselect all");
g_signal_connect (menuitem, "activate",
- G_CALLBACK (pk_updates_detail_popup_menu_select_none), treeview);
+ G_CALLBACK (pk_update_viewer_detail_popup_menu_select_none), treeview);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
}
menuitem = gtk_menu_item_new_with_label ("Ignore this package");
gtk_widget_set_sensitive (GTK_WIDGET (menuitem), FALSE);
g_signal_connect (menuitem, "activate",
- G_CALLBACK (pk_updates_detail_popup_menu_select_all), treeview);
+ G_CALLBACK (pk_update_viewer_detail_popup_menu_select_all), treeview);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
gtk_widget_show_all (menu);
@@ -1680,10 +1625,10 @@
}
/**
- * pk_updates_detail_button_pressed:
+ * pk_update_viewer_detail_button_pressed:
**/
gboolean
-pk_updates_detail_button_pressed (GtkWidget *treeview, GdkEventButton *event, gpointer userdata)
+pk_update_viewer_detail_button_pressed (GtkWidget *treeview, GdkEventButton *event, gpointer userdata)
{
GtkTreeSelection *selection;
@@ -1700,7 +1645,9 @@
if (gtk_tree_selection_count_selected_rows (selection) <= 1) {
GtkTreePath *path;
/* Get tree path for row that was clicked */
- if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (treeview), (gint) event->x, (gint) event->y, &path, NULL, NULL, NULL)) {
+ if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (treeview),
+ (gint) event->x, (gint) event->y, &path,
+ NULL, NULL, NULL)) {
gtk_tree_selection_unselect_all (selection);
gtk_tree_selection_select_path (selection, path);
gtk_tree_path_free (path);
@@ -1708,21 +1655,55 @@
}
/* create */
- pk_updates_detail_popup_menu_create (treeview, event, userdata);
+ pk_update_viewer_detail_popup_menu_create (treeview, event, userdata);
return TRUE;
}
/**
- * pk_updates_detail_popup_menu:
+ * pk_update_viewer_detail_popup_menu:
**/
gboolean
-pk_updates_detail_popup_menu (GtkWidget *treeview, gpointer userdata)
+pk_update_viewer_detail_popup_menu (GtkWidget *treeview, gpointer userdata)
{
- pk_updates_detail_popup_menu_create (treeview, NULL, userdata);
+ pk_update_viewer_detail_popup_menu_create (treeview, NULL, userdata);
return TRUE;
}
/**
+ * pk_update_viewer_task_list_finished_cb:
+ **/
+static void
+pk_update_viewer_task_list_finished_cb (PkTaskList *tlist, PkClient *client, PkExitEnum exit,
+ guint runtime, gpointer userdata)
+{
+ PkRoleEnum role;
+ gboolean ret;
+
+ /* get the role */
+ ret = pk_client_get_role (client, &role, NULL, NULL);
+ if (!ret) {
+ pk_warning ("cannot get role");
+ return;
+ }
+ pk_debug ("%s", pk_role_enum_to_text (role));
+
+ /* update last time in the UI */
+ if (role == PK_ROLE_ENUM_REFRESH_CACHE) {
+ pk_update_update_last_refreshed_time ();
+ } else if (role == PK_ROLE_ENUM_UPDATE_SYSTEM ||
+ role == PK_ROLE_ENUM_UPDATE_PACKAGES) {
+ pk_update_update_last_updated_time ();
+ }
+
+ /* do we need to repopulate the preview widget */
+ if (role == PK_ROLE_ENUM_UPDATE_SYSTEM ||
+ role == PK_ROLE_ENUM_UPDATE_PACKAGES ||
+ role == PK_ROLE_ENUM_REFRESH_CACHE) {
+ pk_update_viewer_get_new_update_list ();
+ }
+}
+
+/**
* main:
**/
int
@@ -1735,7 +1716,6 @@
GtkWidget *main_window;
GtkWidget *widget;
GtkTreeSelection *selection;
- PkConnection *pconnection;
PkRoleEnum roles;
gboolean ret;
GtkSizeGroup *size_group;
@@ -1785,48 +1765,44 @@
control = pk_control_new ();
g_signal_connect (control, "repo-list-changed",
- G_CALLBACK (pk_updates_changed_cb), NULL);
+ G_CALLBACK (pk_update_viewer_repo_list_changed_cb), NULL);
/* this is stuff we don't care about */
client_query = pk_client_new ();
pk_client_set_use_buffer (client_query, TRUE, NULL);
g_signal_connect (client_query, "package",
- G_CALLBACK (pk_updates_package_cb), NULL);
+ G_CALLBACK (pk_update_viewer_package_cb), NULL);
g_signal_connect (client_query, "finished",
- G_CALLBACK (pk_updates_finished_cb), NULL);
+ G_CALLBACK (pk_update_viewer_finished_cb), NULL);
g_signal_connect (client_query, "progress-changed",
- G_CALLBACK (pk_updates_progress_changed_cb), NULL);
+ G_CALLBACK (pk_update_viewer_progress_changed_cb), NULL);
g_signal_connect (client_query, "update-detail",
- G_CALLBACK (pk_updates_update_detail_cb), NULL);
+ G_CALLBACK (pk_update_viewer_update_detail_cb), NULL);
g_signal_connect (client_query, "status-changed",
- G_CALLBACK (pk_updates_status_changed_cb), NULL);
+ G_CALLBACK (pk_update_viewer_status_changed_cb), NULL);
g_signal_connect (client_query, "error-code",
- G_CALLBACK (pk_updates_error_code_cb), NULL);
+ G_CALLBACK (pk_update_viewer_error_code_cb), NULL);
g_signal_connect (client_query, "allow-cancel",
- G_CALLBACK (pk_updates_allow_cancel_cb), NULL);
+ G_CALLBACK (pk_update_viewer_allow_cancel_cb), NULL);
client_action = pk_client_new ();
pk_client_set_use_buffer (client_action, TRUE, NULL);
g_signal_connect (client_action, "package",
- G_CALLBACK (pk_updates_package_cb), NULL);
+ G_CALLBACK (pk_update_viewer_package_cb), NULL);
g_signal_connect (client_action, "finished",
- G_CALLBACK (pk_updates_finished_cb), NULL);
+ G_CALLBACK (pk_update_viewer_finished_cb), NULL);
g_signal_connect (client_action, "progress-changed",
- G_CALLBACK (pk_updates_progress_changed_cb), NULL);
+ G_CALLBACK (pk_update_viewer_progress_changed_cb), NULL);
g_signal_connect (client_action, "status-changed",
- G_CALLBACK (pk_updates_status_changed_cb), NULL);
+ G_CALLBACK (pk_update_viewer_status_changed_cb), NULL);
g_signal_connect (client_action, "error-code",
- G_CALLBACK (pk_updates_error_code_cb), NULL);
+ G_CALLBACK (pk_update_viewer_error_code_cb), NULL);
g_signal_connect (client_action, "allow-cancel",
- G_CALLBACK (pk_updates_allow_cancel_cb), NULL);
+ G_CALLBACK (pk_update_viewer_allow_cancel_cb), NULL);
/* get actions */
roles = pk_control_get_actions (control);
- pconnection = pk_connection_new ();
- g_signal_connect (pconnection, "connection-changed",
- G_CALLBACK (pk_connection_changed_cb), NULL);
-
/* monitor for other updates in progress */
tlist = pk_task_list_new ();
@@ -1843,10 +1819,8 @@
pk_action = polkit_action_new ();
polkit_action_set_action_id (pk_action, "org.freedesktop.consolekit.system.restart");
- restart_action = polkit_gnome_action_new_default ("restart-system",
- pk_action,
- _("_Restart computer now"),
- NULL);
+ restart_action = polkit_gnome_action_new_default ("restart-system", pk_action,
+ _("_Restart computer now"), NULL);
g_object_set (restart_action,
"no-icon-name", GTK_STOCK_REFRESH,
"auth-icon-name", GTK_STOCK_REFRESH,
@@ -1857,7 +1831,7 @@
NULL);
polkit_action_unref (pk_action);
g_signal_connect (restart_action, "activate",
- G_CALLBACK (pk_updates_restart_cb), loop);
+ G_CALLBACK (pk_update_viewer_restart_cb), loop);
button = polkit_gnome_action_create_button (restart_action);
widget = glade_xml_get_widget (glade_xml, "buttonbox_confirm");
gtk_box_pack_start (GTK_BOX (widget), button, FALSE, FALSE, 0);
@@ -1865,29 +1839,29 @@
/* Get the main window quit */
g_signal_connect (main_window, "delete_event",
- G_CALLBACK (pk_window_delete_event_cb), loop);
+ G_CALLBACK (pk_update_viewer_window_delete_event_cb), loop);
/* button_close2 and button_close3 are on the overview/review
* screens, where we want to cancel transactions when closing
*/
widget = glade_xml_get_widget (glade_xml, "button_close2");
g_signal_connect (widget, "clicked",
- G_CALLBACK (pk_button_close_and_cancel_cb), loop);
+ G_CALLBACK (pk_update_viewer_button_close_and_cancel_cb), loop);
widget = glade_xml_get_widget (glade_xml, "button_close3");
g_signal_connect (widget, "clicked",
- G_CALLBACK (pk_button_close_and_cancel_cb), loop);
+ G_CALLBACK (pk_update_viewer_button_close_and_cancel_cb), loop);
widget = glade_xml_get_widget (glade_xml, "button_close");
g_signal_connect (widget, "clicked",
- G_CALLBACK (pk_button_close_cb), loop);
+ G_CALLBACK (pk_update_viewer_close_cb), loop);
widget = glade_xml_get_widget (glade_xml, "button_close4");
g_signal_connect (widget, "clicked",
- G_CALLBACK (pk_button_close_cb), loop);
+ G_CALLBACK (pk_update_viewer_close_cb), loop);
widget = glade_xml_get_widget (glade_xml, "button_close5");
g_signal_connect (widget, "clicked",
- G_CALLBACK (pk_button_close_cb), loop);
+ G_CALLBACK (pk_update_viewer_close_cb), loop);
widget = glade_xml_get_widget (glade_xml, "button_cancel");
g_signal_connect (widget, "clicked",
- G_CALLBACK (pk_button_cancel_cb), loop);
+ G_CALLBACK (pk_update_viewer_button_cancel_cb), loop);
gtk_widget_set_sensitive (widget, FALSE);
/* can we ever do the action? */
@@ -1897,12 +1871,12 @@
widget = glade_xml_get_widget (glade_xml, "button_review");
g_signal_connect (widget, "clicked",
- G_CALLBACK (pk_button_review_cb), loop);
+ G_CALLBACK (pk_update_viewer_review_cb), loop);
gtk_widget_set_tooltip_text(widget, _("Review the update list"));
widget = glade_xml_get_widget (glade_xml, "button_overview");
g_signal_connect (widget, "clicked",
- G_CALLBACK (pk_button_overview_cb), loop);
+ G_CALLBACK (pk_update_viewer_overview_cb), loop);
gtk_widget_set_tooltip_text(widget, _("Back to overview"));
widget = glade_xml_get_widget (glade_xml, "button_overview2");
@@ -1912,20 +1886,20 @@
pk_action = polkit_action_new ();
polkit_action_set_action_id (pk_action, "org.freedesktop.packagekit.update-package");
- update_package_action = polkit_gnome_action_new_default ("update-package",
+ update_packages_action = polkit_gnome_action_new_default ("update-package",
pk_action,
_("_Apply Updates"),
_("Apply the selected updates"));
- g_object_set (update_package_action,
+ g_object_set (update_packages_action,
"no-icon-name", GTK_STOCK_APPLY,
"auth-icon-name", GTK_STOCK_APPLY,
"yes-icon-name", GTK_STOCK_APPLY,
"self-blocked-icon-name", GTK_STOCK_APPLY,
NULL);
polkit_action_unref (pk_action);
- g_signal_connect (update_package_action, "activate",
- G_CALLBACK (pk_updates_apply_cb), loop);
- button = polkit_gnome_action_create_button (update_package_action);
+ g_signal_connect (update_packages_action, "activate",
+ G_CALLBACK (pk_update_viewer_apply_cb), loop);
+ button = polkit_gnome_action_create_button (update_packages_action);
widget = glade_xml_get_widget (glade_xml, "buttonbox_review");
gtk_box_pack_start (GTK_BOX (widget), button, FALSE, FALSE, 0);
gtk_box_reorder_child (GTK_BOX (widget), button, 2);
@@ -1944,7 +1918,7 @@
NULL);
polkit_action_unref (pk_action);
g_signal_connect (update_system_action, "activate",
- G_CALLBACK (pk_updates_update_system_cb), loop);
+ G_CALLBACK (pk_update_viewer_update_system_cb), loop);
button = polkit_gnome_action_create_button (update_system_action);
widget = glade_xml_get_widget (glade_xml, "buttonbox_overview");
gtk_box_pack_start (GTK_BOX (widget), button, FALSE, FALSE, 0);
@@ -1963,7 +1937,7 @@
polkit_action_unref (pk_action);
g_signal_connect (refresh_action, "activate",
- G_CALLBACK (pk_updates_refresh_cb), NULL);
+ G_CALLBACK (pk_update_viewer_refresh_cb), NULL);
button = polkit_gnome_action_create_button (refresh_action);
gtk_container_add (GTK_CONTAINER (widget), button);
@@ -1971,7 +1945,7 @@
widget = glade_xml_get_widget (glade_xml, "button_history");
g_signal_connect (widget, "clicked",
- G_CALLBACK (pk_updates_history_cb), NULL);
+ G_CALLBACK (pk_update_viewer_history_cb), NULL);
gtk_size_group_add_widget (size_group, widget);
widget = glade_xml_get_widget (glade_xml, "button_help");
@@ -1998,7 +1972,7 @@
GTK_TREE_MODEL (list_store_preview));
/* add columns to the tree view */
- pk_treeview_add_columns (GTK_TREE_VIEW (widget));
+ pk_update_viewer_treeview_add_columns (GTK_TREE_VIEW (widget));
gtk_tree_view_columns_autosize (GTK_TREE_VIEW (widget));
/* create description tree view */
@@ -2007,7 +1981,7 @@
GTK_TREE_MODEL (list_store_description));
/* add columns to the tree view */
- pk_treeview_add_columns_description (GTK_TREE_VIEW (widget));
+ pk_update_viewer_treeview_add_columns_description (GTK_TREE_VIEW (widget));
gtk_tree_view_columns_autosize (GTK_TREE_VIEW (widget));
/* create package tree view */
@@ -2015,9 +1989,9 @@
gtk_tree_view_set_model (GTK_TREE_VIEW (widget),
GTK_TREE_MODEL (list_store_details));
g_signal_connect (widget, "popup-menu",
- G_CALLBACK (pk_updates_detail_popup_menu), NULL);
+ G_CALLBACK (pk_update_viewer_detail_popup_menu), NULL);
g_signal_connect (widget, "button-press-event",
- G_CALLBACK (pk_updates_detail_button_pressed), NULL);
+ G_CALLBACK (pk_update_viewer_detail_button_pressed), NULL);
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
@@ -2025,16 +1999,15 @@
G_CALLBACK (pk_packages_treeview_clicked_cb), NULL);
/* add columns to the tree view */
- pk_treeview_add_columns_update (GTK_TREE_VIEW (widget));
+ pk_update_viewer_treeview_add_columns_update (GTK_TREE_VIEW (widget));
gtk_tree_view_columns_autosize (GTK_TREE_VIEW (widget));
/* make the buttons non-clickable until we get completion */
polkit_gnome_action_set_sensitive (refresh_action, FALSE);
polkit_gnome_action_set_sensitive (update_system_action, FALSE);
+ polkit_gnome_action_set_sensitive (update_packages_action, FALSE);
widget = glade_xml_get_widget (glade_xml, "button_review");
gtk_widget_set_sensitive (widget, FALSE);
- widget = glade_xml_get_widget (glade_xml, "button_history");
- gtk_widget_set_sensitive (widget, FALSE);
/* set the last updated text */
pk_update_update_last_refreshed_time ();
@@ -2048,15 +2021,13 @@
/* we need to grey out all the buttons if we are in progress */
g_signal_connect (tlist, "changed",
- G_CALLBACK (pk_updates_task_list_changed_cb), NULL);
- pk_updates_task_list_changed_cb (tlist, NULL);
+ G_CALLBACK (pk_update_viewer_task_list_changed_cb), NULL);
+ pk_update_viewer_task_list_changed_cb (tlist, NULL);
+ g_signal_connect (tlist, "finished",
+ G_CALLBACK (pk_update_viewer_task_list_finished_cb), NULL);
- /* get the update list */
- ret = pk_client_get_updates (client_query, PK_FILTER_ENUM_BASENAME, NULL);
- if (ret) {
- /* only show this if we succeeded */
- pk_updates_preview_animation_start ();
- }
+ /* coldplug */
+ pk_update_viewer_get_new_update_list ();
g_main_loop_run (loop);
g_main_loop_unref (loop);
@@ -2075,7 +2046,6 @@
g_object_unref (control);
g_object_unref (client_query);
g_object_unref (client_action);
- g_object_unref (pconnection);
g_free (cached_package_id);
return 0;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]