gnome-packagekit r317 - in trunk: . data help help/C src
- From: rhughes svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-packagekit r317 - in trunk: . data help help/C src
- Date: Wed, 1 Oct 2008 15:53:07 +0000 (UTC)
Author: rhughes
Date: Wed Oct 1 15:53:07 2008
New Revision: 317
URL: http://svn.gnome.org/viewvc/gnome-packagekit?rev=317&view=rev
Log:
from git -- lots more translations -- sorry
Modified:
trunk/NEWS
trunk/configure.ac
trunk/data/gnome-packagekit.schemas.in
trunk/help/C/gnome-packagekit.xml
trunk/help/Makefile.am
trunk/src/Makefile.am
trunk/src/gpk-client-dialog.c
trunk/src/gpk-client-dialog.h
trunk/src/gpk-client-run.c
trunk/src/gpk-client.c
trunk/src/gpk-client.h
trunk/src/gpk-dbus.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Wed Oct 1 15:53:07 2008
@@ -1,3 +1,32 @@
+Version 0.3.5
+~~~~~~~~~~~~~~
+Released: 2008-09-29
+
+* Translations
+ - Updated Polish translation (Tomasz Dominikowski)
+ - Updated Polish documentation (Tomasz Dominikowski)
+ - Updated Spanish translation (Daniel Mustieles)
+ - Updated French translation (Ivan Buresi and Robert-Andrà Mauchin)
+ - Updated Norwegian bokmÃl translation (Kjartan Maraas)
+
+* New
+ - Add an animated icon for the testing phase (Mike Langlie)
+ - Add a new GConf key to enable certain firmware files to be skipped (Richard Hughes)
+
+* Bugfix:
+ - Set the window title when we do update-system (Richard Hughes)
+ - Define a GConf key that contains a list of banned firmware that will never be
+ searched for (Richard Hughes)
+ - Don't use functions deprecated from GTK (Richard Hughes)
+ - Provide functionality to find the user_time when not set on the DBUS interface (Richard Hughes)
+ - Add the missing role and status icons, and fix the self checks that missed them (Richard Hughes)
+ - Fix setting modality from gpk-update-viewer (Richard Hughes)
+ - When we install multiple applications, make sure we search for all the applications (Richard Hughes)
+ - Set the dialog message to be blank in more places (Richard Hughes)
+ - Don't run interactive self tests when doing make distcheck (Richard Hughes)
+ - Call hardware check in gpk-update-icon (Scott Reeves)
+ - Try to handle multiple hal DeviceAdded events for single plug (Scott Reeves)
+
Version 0.3.4
~~~~~~~~~~~~~~
Released: 2008-09-22
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Wed Oct 1 15:53:07 2008
@@ -1,6 +1,6 @@
AC_PREREQ(2.52)
-AC_INIT(gnome-packagekit, 0.3.5)
+AC_INIT(gnome-packagekit, 0.3.6)
AC_CONFIG_SRCDIR(src)
AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
AM_CONFIG_HEADER(config.h)
@@ -48,7 +48,7 @@
dnl ---------------------------------------------------------------------------
dnl - Library dependencies
dnl ---------------------------------------------------------------------------
-PACKAGEKIT_REQUIRED=0.3.3
+PACKAGEKIT_REQUIRED=0.3.5
GLIB_REQUIRED=2.14.0
GTK_REQUIRED=2.12.0
DBUS_REQUIRED=1.1.2
@@ -174,6 +174,16 @@
AM_CONDITIONAL([HAVE_UNIQUE], [test $have_unique = yes])
dnl ---------------------------------------------------------------------------
+dnl - Build self tests
+dnl ---------------------------------------------------------------------------
+AC_ARG_ENABLE(tests, AS_HELP_STRING([--enable-tests],[enable unit test code]),
+ enable_tests=$enableval,enable_tests=no)
+AM_CONDITIONAL(EGG_BUILD_TESTS, test x$enable_tests = xyes)
+if test x$enable_tests = xyes; then
+ AC_DEFINE(EGG_BUILD_TESTS,1,[Build test code])
+fi
+
+dnl ---------------------------------------------------------------------------
dnl - Other tests
dnl ---------------------------------------------------------------------------
AC_ARG_ENABLE(gcov, AS_HELP_STRING([--enable-gcov],[compile with coverage profiling instrumentation (gcc only)]),
Modified: trunk/data/gnome-packagekit.schemas.in
==============================================================================
--- trunk/data/gnome-packagekit.schemas.in (original)
+++ trunk/data/gnome-packagekit.schemas.in Wed Oct 1 15:53:07 2008
@@ -2,8 +2,8 @@
<schemalist>
<schema>
- <key>/schemas/apps/gnome-packagekit/prompt_firmware</key>
- <applyto>/apps/gnome-packagekit/prompt_firmware</applyto>
+ <key>/schemas/apps/gnome-packagekit/enable_check_firmware</key>
+ <applyto>/apps/gnome-packagekit/enable_check_firmware</applyto>
<owner>gnome-packagekit</owner>
<type>bool</type>
<default>true</default>
@@ -26,8 +26,8 @@
</schema>
<schema>
- <key>/schemas/apps/gnome-packagekit/prompt_hardware</key>
- <applyto>/apps/gnome-packagekit/prompt_hardware</applyto>
+ <key>/schemas/apps/gnome-packagekit/enable_check_hardware</key>
+ <applyto>/apps/gnome-packagekit/enable_check_hardware</applyto>
<owner>gnome-packagekit</owner>
<type>bool</type>
<default>true</default>
@@ -314,8 +314,8 @@
</schema>
<schema>
- <key>/schemas/apps/gnome-packagekit/interface/enable_font_helper</key>
- <applyto>/apps/gnome-packagekit/interface/enable_font_helper</applyto>
+ <key>/schemas/apps/gnome-packagekit/enable_font_helper</key>
+ <applyto>/apps/gnome-packagekit/enable_font_helper</applyto>
<owner>gnome-packagekit</owner>
<type>bool</type>
<default>true</default>
@@ -326,8 +326,8 @@
</schema>
<schema>
- <key>/schemas/apps/gnome-packagekit/interface/enable_codec_helper</key>
- <applyto>/apps/gnome-packagekit/interface/enable_codec_helper</applyto>
+ <key>/schemas/apps/gnome-packagekit/enable_codec_helper</key>
+ <applyto>/apps/gnome-packagekit/enable_codec_helper</applyto>
<owner>gnome-packagekit</owner>
<type>bool</type>
<default>true</default>
@@ -338,8 +338,8 @@
</schema>
<schema>
- <key>/schemas/apps/gnome-packagekit/interface/enable_mime_type_helper</key>
- <applyto>/apps/gnome-packagekit/interface/enable_mime_type_helper</applyto>
+ <key>/schemas/apps/gnome-packagekit/enable_mime_type_helper</key>
+ <applyto>/apps/gnome-packagekit/enable_mime_type_helper</applyto>
<owner>gnome-packagekit</owner>
<type>bool</type>
<default>true</default>
Modified: trunk/help/C/gnome-packagekit.xml
==============================================================================
--- trunk/help/C/gnome-packagekit.xml (original)
+++ trunk/help/C/gnome-packagekit.xml Wed Oct 1 15:53:07 2008
@@ -102,7 +102,7 @@
<para>
To report a bug or make a suggestion regarding the &app; application or
this manual, follow the directions in the
- <ulink url="http://live.gnome.org/PackageKit/"
+ <ulink url="http://www.packagekit.org/"
type="http">&application; Contact Page</ulink>.
</para>
<!-- Translators may also add here feedback address for translations -->
@@ -371,7 +371,7 @@
</section>
<section id="mime-types">
- <title>File handler helper</title>
+ <title>File Handler Helper</title>
<para>
Sometimes you will not have the software on your system to open a particular
file. If the file type is not recognised, then applications that can open
@@ -606,18 +606,264 @@
</para>
</section>
+<section id="dialogs">
+ <title>Common Dialogs Explained</title>
+ <para>
+ This application tries to reuse dialogs as much as possible, so that there
+ is a repeatable and consistent user interface when managing packages.
+ In the following subsections, some of the dialogs will be explained further,
+ often with examples or Internet links.
+ </para>
+
+ <section id="dialog-installing-private-files">
+ <title>Copying Files To Another Location</title>
+ <figure>
+ <title>Example dialog</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/gpk-client-copy-local.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>
+ If a file has been downloaded to your home directory, it is usually
+ downloaded to a location similar to <literal>/home/hughsie/Downloads</literal>.
+ The PackageKit service is not run as the same user as the the normal
+ desktop user, and so the daemon would not normally be able to access this file.
+ If the download folder cannot be read by the root user then it is copied to a
+ temporary directory so it can be accessed.
+ </para>
+ </section>
+
+ <section id="dialog-install-files">
+ <title>Installing Local Files</title>
+ <para>
+ An application has asked to install local files on your system.
+ If you initiated the action, please click the install button.
+ </para>
+ </section>
+
+ <section id="dialog-install-catalogs">
+ <title>Installing Catalogs</title>
+ <para>
+ A package catalog is a simple file that indicates that other packages should
+ be installed.
+ There are no optional packages, as a catalog file is designed to be simple
+ and need no user interaction.
+ Using a catalog file allows you to install different packages quickly and easily.
+ </para>
+ <note><para>
+ To find more information about catalogs, please visit the
+ <ulink url="http://www.packagekit.org/pk-faq.html#catalogs" type="http">FAQ</ulink>.
+ </para></note>
+ </section>
+
+ <section id="dialog-catalog-none-required">
+ <title>No Packages Required</title>
+ <para>
+ The catalog that you tried to install made no changes to your system as
+ you already have the required packages installed.
+ No further actions are required.
+ </para>
+ <note><para>
+ To find more information about catalogs, please visit the
+ <ulink url="http://www.packagekit.org/pk-faq.html#catalogs" type="http">FAQ</ulink>.
+ </para></note>
+ </section>
+
+ <section id="dialog-application-confirm">
+ <title>Confirmation Required</title>
+ <figure>
+ <title>Example plugin dialog</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/gpk-client-codecs.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>
+ An application needs your permission before modifying packages on your system.
+ The program name and the icon is from the application asking for permission.
+ </para>
+ </section>
+
+ <section id="dialog-finding-requires">
+ <title>Finding Other Required Packages</title>
+ <para>
+ Other packages may depend on this package to operate correctly.
+ This application is searching for other packages that require the package
+ you are trying to remove.
+ No changes are being made, and you will be prompted later if this is required.
+ </para>
+ </section>
+
+ <section id="dialog-finding-depends">
+ <title>Finding Other Dependent Packages</title>
+ <para>
+ This package may require resources in other packages to operate correctly.
+ This application is searching for other required packages of the package
+ you are trying to install.
+ </para>
+ </section>
+
+ <section id="dialog-remove-other-packages">
+ <title>Removing Other Packages</title>
+ <figure>
+ <title>Example dialog when removing rarian</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/gpk-remove-confirm.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>
+ Other packages need to be removed if this package is to be removed.
+ If you remove these packages you may loose functionality in other
+ applications.
+ </para>
+ <caution><para>
+ If you are unsure you should not remove the package.
+ </para></caution>
+ </section>
+
+ <section id="dialog-install-other-packages">
+ <title>Installing Other Packages</title>
+ <figure>
+ <title>Example dialog when installing xfce-utils</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/gpk-added-deps.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>
+ Other packages need to be installed if this package is to be installed.
+ If you remove these packages you may loose functionality in other
+ applications.
+ Downloading and installing extra packages will increase the time it
+ takes to install this package.
+ </para>
+ </section>
+
+ <section id="dialog-finding-packages">
+ <title>Finding Packages</title>
+ <para>
+ The package database is being searched for your query.
+ This may take some time if new package lists need to be downloaded from
+ the Internet.
+ </para>
+ </section>
+
+ <section id="dialog-package-not-found">
+ <title>Package Not Found</title>
+ <para>
+ No packages could be found in any remote software source.
+ This normally means that you do not have any third party repositories
+ enabled or installed.
+ These extra repositories can often be found using search engines or forums.
+ </para>
+ <caution><para>
+ Only install packages from reputable software sources.
+ </para></caution>
+ </section>
+
+ <section id="dialog-progress">
+ <title>Progress Window</title>
+ <para>
+ If we start an action automatically, we typically do it non-interactively.
+ If this task starts doing something using the network, or that will take a
+ long time, then a new dialog will appear.
+ This gives you the opportunity to cancel the task if this is not desired.
+ </para>
+ </section>
+
+ <section id="dialog-permissions">
+ <title>No Privileges</title>
+ <figure>
+ <title>PolicyKit Permissions UI</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/gpk-repo-auth.png" format="PNG"/>
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+ <para>
+ You don't have the necessary privileges to perform this action.
+ This can happen when you fail to authenticate correctly, for instance
+ by entering your password correctly twice in a row.
+ NOTE: you also need to enter the root password on some distributions,
+ not your own password.
+ </para>
+ <note><para>
+ If you cannot authenticate, you need to speak to your systems administrator.
+ </para></note>
+ </section>
+
+ <section id="dialog-no-service">
+ <title>No PackageKit Service Running</title>
+ <para>
+ The core PackageKit service could not be started.
+ This will only happen when you have a serious system error.
+ You can get more information about the error by running (as the root user):
+ <literal>/usr/sbin/packagekitd --verbose</literal>
+ </para>
+ </section>
+
+ <section id="dialog-update-system">
+ <title>Update System</title>
+ <para>
+ All the packages that can be updated on your system are now being updated.
+ You can cancel the update if the cancel button is not insensitive.
+ </para>
+ </section>
+
+ <section id="dialog-update-packages">
+ <title>Update Packages</title>
+ <para>
+ Some packages on your system are now being upgraded.
+ You can cancel the update if the cancel button is not insensitive.
+ </para>
+ </section>
+
+ <section id="dialog-refresh">
+ <title>Refreshing Package Lists</title>
+ <para>
+ Once a week (although this can be changed in the preferences)
+ you will automatically have the latest package lists downloaded.
+ This means that when you search for a package you do not have installed,
+ you will get any new software that was added to a software source.
+ </para>
+ <para>
+ Once the package lists are downloaded, the installed and available packages
+ will be cached so client tools can auto-complete.
+ When this is completed, any new applications are scanned and added to a
+ client database.
+ </para>
+ </section>
+</section>
+
<section id="about">
<title>About</title>
<para>
&app; is maintained Richard Hughes <email>richard hughsie com</email> and developed along with
several others.
To find more information about &app;, please visit the
- <ulink url="http://live.gnome.org/PackageKit" type="http">&application; web page</ulink>.
+ <ulink url="http://www.packagekit.org/" type="http">&application; web page</ulink>.
</para>
<para>
To report a bug or make a suggestion regarding this application or
this manual, follow the directions at the
- <ulink url="http://live.gnome.org/PackageKit" type="http">
+ <ulink url="http://www.packagekit.org/" type="http">
&application; Bug Page</ulink>.
</para>
<para>This program is distributed under the terms of the GNU
Modified: trunk/help/Makefile.am
==============================================================================
--- trunk/help/Makefile.am (original)
+++ trunk/help/Makefile.am Wed Oct 1 15:53:07 2008
@@ -6,12 +6,16 @@
DOC_INCLUDES =
DOC_FIGURES = \
figures/gpk-application-groups.png \
+ figures/gpk-client-copy-local.png \
figures/gpk-eula.png \
figures/gpk-prefs.png \
figures/gpk-repo-auth.png \
figures/gpk-repo.png \
figures/gpk-signature.png \
figures/gpk-updates-overview.png \
+ figures/gpk-client-codecs.png \
+ figures/gpk-added-deps.png \
+ figures/gpk-remove-confirm.png \
figures/gpk-updates.png \
figures/gpk-updates-warning.png
Modified: trunk/src/Makefile.am
==============================================================================
--- trunk/src/Makefile.am (original)
+++ trunk/src/Makefile.am Wed Oct 1 15:53:07 2008
@@ -53,6 +53,8 @@
egg-dbus-monitor.h \
gpk-enum.c \
gpk-enum.h \
+ gpk-x11.c \
+ gpk-x11.h \
gpk-marshal.c \
gpk-marshal.h \
gpk-animated-icon.c \
Modified: trunk/src/gpk-client-dialog.c
==============================================================================
--- trunk/src/gpk-client-dialog.c (original)
+++ trunk/src/gpk-client-dialog.c Wed Oct 1 15:53:07 2008
@@ -66,6 +66,8 @@
GMainLoop *loop;
GtkResponseType response;
GtkListStore *store;
+ gchar *help_id;
+ gchar *title;
};
enum {
@@ -191,6 +193,11 @@
widget = glade_xml_get_widget (dialog->priv->glade_xml, "window_client");
gtk_window_set_modal (GTK_WINDOW (widget), FALSE);
dialog->priv->has_parent = FALSE;
+
+ /* use the saved title if it exists */
+ if (dialog->priv->title != NULL)
+ gpk_client_dialog_set_title (dialog, dialog->priv->title);
+
return FALSE;
}
@@ -258,6 +265,10 @@
if (!dialog->priv->has_parent)
gpk_client_dialog_set_window_title (dialog, title);
+ /* we save this in case we are non-modal and have to use a title */
+ g_free (dialog->priv->title);
+ dialog->priv->title = g_strdup (title);
+
title_bold = g_strdup_printf ("<b><big>%s</big></b>", title);
egg_debug ("setting title: %s", title_bold);
widget = glade_xml_get_widget (dialog->priv->glade_xml, "label_title");
@@ -507,12 +518,24 @@
}
/**
+ * gpk_client_dialog_set_help_id:
+ **/
+gboolean
+gpk_client_dialog_set_help_id (GpkClientDialog *dialog, const gchar *help_id)
+{
+ g_return_val_if_fail (GPK_IS_CLIENT_DIALOG (dialog), FALSE);
+ g_free (dialog->priv->help_id);
+ dialog->priv->help_id = g_strdup (help_id);
+ return TRUE;
+}
+
+/**
* gpk_client_dialog_button_help_cb:
**/
static void
gpk_client_dialog_button_help_cb (GtkWidget *widget_button, GpkClientDialog *dialog)
{
- gpk_gnome_help (NULL);
+ gpk_gnome_help (dialog->priv->help_id);
g_signal_emit (dialog, signals [GPK_CLIENT_DIALOG_HELP], 0);
}
@@ -691,6 +714,13 @@
0, NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
+ signals [GPK_CLIENT_DIALOG_HELP] =
+ g_signal_new ("help",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST,
+ 0, NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
}
/**
@@ -713,6 +743,8 @@
dialog->priv->pulse_timer_id = 0;
dialog->priv->show_progress_files = TRUE;
dialog->priv->has_parent = FALSE;
+ dialog->priv->help_id = NULL;
+ dialog->priv->title = NULL;
dialog->priv->store = gtk_list_store_new (GPK_CLIENT_DIALOG_STORE_LAST,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
@@ -770,6 +802,8 @@
g_object_unref (dialog->priv->store);
g_object_unref (dialog->priv->glade_xml);
g_main_loop_unref (dialog->priv->loop);
+ g_free (dialog->priv->help_id);
+ g_free (dialog->priv->title);
G_OBJECT_CLASS (gpk_client_dialog_parent_class)->finalize (object);
}
Modified: trunk/src/gpk-client-dialog.h
==============================================================================
--- trunk/src/gpk-client-dialog.h (original)
+++ trunk/src/gpk-client-dialog.h Wed Oct 1 15:53:07 2008
@@ -115,6 +115,8 @@
PkStatusEnum status);
gboolean gpk_client_dialog_set_allow_cancel (GpkClientDialog *dialog,
gboolean can_cancel);
+gboolean gpk_client_dialog_set_help_id (GpkClientDialog *dialog,
+ const gchar *help_id);
GtkWindow *gpk_client_dialog_get_window (GpkClientDialog *dialog);
GtkResponseType gpk_client_dialog_run (GpkClientDialog *dialog);
gboolean gpk_client_dialog_close (GpkClientDialog *dialog);
Modified: trunk/src/gpk-client-run.c
==============================================================================
--- trunk/src/gpk-client-run.c (original)
+++ trunk/src/gpk-client-run.c Wed Oct 1 15:53:07 2008
@@ -104,6 +104,30 @@
}
/**
+ * gpk_client_run_row_activated_cb:
+ **/
+void
+gpk_client_run_row_activated_cb (GtkTreeView *treeview, GtkTreePath *path,
+ GtkTreeViewColumn *col, gpointer user_data)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gboolean ret;
+
+ /* get selection */
+ model = gtk_tree_view_get_model (treeview);
+ ret = gtk_tree_model_get_iter (model, &iter, path);
+ if (!ret) {
+ egg_warning ("failed to get selection");
+ return;
+ }
+
+ g_free (full_path);
+ gtk_tree_model_get (model, &iter, GPK_CHOOSER_COLUMN_FULL_PATH, &full_path, -1);
+ gtk_main_quit ();
+}
+
+/**
* gpk_update_viewer_create_custom_widget:
**/
static GtkWidget *
@@ -311,6 +335,8 @@
widget = glade_xml_get_widget (glade_xml, "treeview_simple");
gtk_tree_view_set_model (GTK_TREE_VIEW (widget),
GTK_TREE_MODEL (list_store));
+ g_signal_connect (GTK_TREE_VIEW (widget), "row-activated",
+ G_CALLBACK (gpk_client_run_row_activated_cb), NULL);
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
g_signal_connect (selection, "changed",
Modified: trunk/src/gpk-client.c
==============================================================================
--- trunk/src/gpk-client.c (original)
+++ trunk/src/gpk-client.c Wed Oct 1 15:53:07 2008
@@ -64,6 +64,7 @@
#include "gpk-client-dialog.h"
#include "gpk-dialog.h"
#include "gpk-enum.h"
+#include "gpk-x11.h"
static void gpk_client_class_init (GpkClientClass *klass);
static void gpk_client_init (GpkClient *gclient);
@@ -98,7 +99,8 @@
GdkWindow *parent_window;
GPtrArray *upgrade_array;
guint timestamp;
- gchar *application;
+ gchar *parent_title;
+ gchar *parent_icon_name;
GMainLoop *loop;
};
@@ -346,6 +348,7 @@
list = pk_client_get_package_list (client);
gpk_client_dialog_set_message (gclient->priv->dialog, _("The following packages were installed:"));
gpk_client_dialog_set_package_list (gclient->priv->dialog, list);
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_FINISHED, GPK_CLIENT_DIALOG_PACKAGE_LIST, 0);
g_object_unref (list);
gclient->priv->finished_timer_id = g_timeout_add_seconds (GPK_CLIENT_FINISHED_AUTOCLOSE_DELAY,
@@ -380,6 +383,7 @@
status == PK_STATUS_ENUM_DOWNLOAD_GROUP ||
status == PK_STATUS_ENUM_DOWNLOAD_UPDATEINFO ||
status == PK_STATUS_ENUM_REFRESH_CACHE) {
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-progress");
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, 0, 0);
}
}
@@ -602,12 +606,16 @@
/* print a proper error if we have it */
if (error != NULL) {
if (error->code == PK_CLIENT_ERROR_FAILED_AUTH ||
- g_str_has_prefix (error->message, "org.freedesktop.packagekit."))
+ g_str_has_prefix (error->message, "org.freedesktop.packagekit.")) {
message = _("You don't have the necessary privileges to perform this action");
- else if (error->code == PK_CLIENT_ERROR_CANNOT_START_DAEMON)
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-permissions");
+ } else if (error->code == PK_CLIENT_ERROR_CANNOT_START_DAEMON) {
message = _("The packagekitd service could not be started");
- else
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-no-service");
+ } else {
details = error->message;
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
+ }
}
/* it's a normal UI, not a backtrace so keep in the UI */
@@ -861,6 +869,7 @@
gpk_client_dialog_set_message (gclient->priv->dialog, message);
gpk_client_dialog_set_image (gclient->priv->dialog, "dialog-warning");
gpk_client_dialog_set_action (gclient->priv->dialog, _("Copy file"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-installing-private-files");
g_free (message);
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_CONFIRM, 0, gclient->priv->timestamp);
@@ -932,6 +941,7 @@
/* show UI */
gpk_client_dialog_set_title (gclient->priv->dialog, title);
gpk_client_dialog_set_message (gclient->priv->dialog, "");
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, gclient->priv->timestamp);
gpk_client_dialog_run (gclient->priv->dialog);
gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, "files not copied");
@@ -967,6 +977,7 @@
gpk_client_dialog_set_title (gclient->priv->dialog, title);
gpk_client_dialog_set_message (gclient->priv->dialog, message);
gpk_client_dialog_set_action (gclient->priv->dialog, _("Install"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-install-files");
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_CONFIRM, 0, gclient->priv->timestamp);
button = gpk_client_dialog_run (gclient->priv->dialog);
g_free (message);
@@ -977,6 +988,7 @@
_("The files were not installed"), array->len);
gpk_client_dialog_set_title (gclient->priv->dialog, title);
gpk_client_dialog_set_message (gclient->priv->dialog, "");
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, gclient->priv->timestamp);
gpk_client_dialog_run (gclient->priv->dialog);
gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, "Aborted");
@@ -1028,6 +1040,7 @@
/* show UI */
gpk_client_dialog_set_title (gclient->priv->dialog, title);
gpk_client_dialog_set_message (gclient->priv->dialog, message);
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, gclient->priv->timestamp);
gpk_client_dialog_run (gclient->priv->dialog);
@@ -1053,33 +1066,27 @@
{
GtkResponseType button;
gchar *title_name;
- const gchar *icon = NULL;
- const gchar *application_localised = NULL;
- /* get localised name and icon if available */
- if (gclient->priv->application != NULL) {
- application_localised = pk_extra_get_summary (gclient->priv->extra, gclient->priv->application);
- if (application_localised == NULL) {
- egg_debug ("did not get localised description for %s", gclient->priv->application);
- application_localised = gclient->priv->application;
- }
- icon = pk_extra_get_icon_name (gclient->priv->extra, gclient->priv->application);
- }
-
- /* fallbacks */
- if (application_localised == NULL)
- application_localised = _("A program");
- if (icon == NULL)
- icon = "emblem-system";
+ /* make title */
+ if (gclient->priv->parent_title != NULL)
+ title_name = g_strdup_printf ("%s %s", gclient->priv->parent_title, title);
+ else {
+ /* translator comment -- string is an action, e.g. "wants to install a codec" */
+ title_name = g_strdup_printf (_("A program %s"), title);
+ }
+
+ /* set icon */
+ if (gclient->priv->parent_icon_name != NULL)
+ gpk_client_dialog_set_image (gclient->priv->dialog, gclient->priv->parent_icon_name);
+ else
+ gpk_client_dialog_set_image (gclient->priv->dialog, "emblem-system");
- title_name = g_strdup_printf ("%s %s", application_localised, title);
gpk_client_dialog_set_title (gclient->priv->dialog, title_name);
gpk_client_dialog_set_message (gclient->priv->dialog, message);
- gpk_client_dialog_set_image (gclient->priv->dialog, icon);
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-application-confirm");
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_CONFIRM, 0, gclient->priv->timestamp);
g_free (title_name);
-
button = gpk_client_dialog_run (gclient->priv->dialog);
/* close, we're going to fail the method */
@@ -1139,6 +1146,7 @@
/* set title */
gpk_client_dialog_set_title (gclient->priv->dialog, _("Install local file"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
if (gclient->priv->show_progress)
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, 0, 0);
@@ -1187,13 +1195,6 @@
g_return_val_if_fail (GPK_IS_CLIENT (gclient), FALSE);
g_return_val_if_fail (package_ids != NULL, FALSE);
- /* set title */
- gpk_client_dialog_set_title (gclient->priv->dialog, _("Remove packages"));
-
- /* setup the UI */
- if (gclient->priv->show_progress)
- gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, 0, 0);
-
/* are we dumb and can't check for depends? */
if (!pk_bitfield_contain (gclient->priv->roles, PK_ROLE_ENUM_GET_REQUIRES)) {
egg_warning ("skipping depends check");
@@ -1208,6 +1209,11 @@
/* get the packages we depend on */
gpk_client_dialog_set_title (gclient->priv->dialog, _("Finding packages we require"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-finding-requires");
+
+ /* setup the UI */
+ if (gclient->priv->show_progress)
+ gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, 0, 0);
/* reset */
ret = pk_client_reset (gclient->priv->client_resolve, &error_local);
@@ -1256,6 +1262,7 @@
gpk_client_dialog_set_title (gclient->priv->dialog, title);
gpk_client_dialog_set_message (gclient->priv->dialog, message);
gpk_client_dialog_set_action (gclient->priv->dialog, _("Remove"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-remove-other-packages");
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_CONFIRM, GPK_CLIENT_DIALOG_PACKAGE_LIST, gclient->priv->timestamp);
g_free (title);
g_free (message);
@@ -1270,6 +1277,15 @@
}
skip_checks:
+ /* set title */
+ gpk_client_dialog_set_title (gclient->priv->dialog, _("Remove packages"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
+ gpk_client_dialog_set_message (gclient->priv->dialog, "");
+
+ /* setup the UI */
+ if (gclient->priv->show_progress)
+ gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, GPK_CLIENT_DIALOG_PACKAGE_PADDING, 0);
+
/* reset */
ret = pk_client_reset (gclient->priv->client_action, &error_local);
if (!ret) {
@@ -1288,12 +1304,6 @@
goto out;
}
- /* setup the UI */
- if (gclient->priv->show_progress) {
- gpk_client_dialog_set_message (gclient->priv->dialog, "");
- gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, GPK_CLIENT_DIALOG_PACKAGE_PADDING, 0);
- }
-
/* wait for an answer */
g_main_loop_run (gclient->priv->loop);
@@ -1327,14 +1337,6 @@
g_return_val_if_fail (GPK_IS_CLIENT (gclient), FALSE);
g_return_val_if_fail (package_ids != NULL, FALSE);
- /* set title */
- gpk_client_dialog_set_title (gclient->priv->dialog, _("Installing packages"));
- gpk_client_dialog_set_message (gclient->priv->dialog, "");
-
- /* setup the UI */
- if (gclient->priv->show_progress)
- gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, GPK_CLIENT_DIALOG_PACKAGE_PADDING, 0);
-
/* are we dumb and can't check for depends? */
if (!pk_bitfield_contain (gclient->priv->roles, PK_ROLE_ENUM_GET_DEPENDS)) {
egg_warning ("skipping depends check");
@@ -1354,8 +1356,14 @@
goto skip_checks;
}
- /* get the packages we depend on */
+ /* set title */
gpk_client_dialog_set_title (gclient->priv->dialog, _("Finding packages we depend on"));
+ gpk_client_dialog_set_message (gclient->priv->dialog, "");
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-finding-depends");
+
+ /* setup the UI */
+ if (gclient->priv->show_progress)
+ gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, GPK_CLIENT_DIALOG_PACKAGE_PADDING, 0);
/* reset */
ret = pk_client_reset (gclient->priv->client_resolve, &error_local);
@@ -1397,6 +1405,7 @@
gpk_client_dialog_set_title (gclient->priv->dialog, title);
gpk_client_dialog_set_message (gclient->priv->dialog, message);
gpk_client_dialog_set_action (gclient->priv->dialog, _("Install"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-install-other-packages");
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_CONFIRM, GPK_CLIENT_DIALOG_PACKAGE_LIST, gclient->priv->timestamp);
button = gpk_client_dialog_run (gclient->priv->dialog);
@@ -1409,6 +1418,13 @@
}
skip_checks:
+ /* try to install the package_id */
+ gpk_client_dialog_set_title (gclient->priv->dialog, _("Installing packages"));
+ gpk_client_dialog_set_message (gclient->priv->dialog, "");
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
+ if (gclient->priv->show_progress)
+ gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, GPK_CLIENT_DIALOG_PACKAGE_PADDING, 0);
+
/* reset */
ret = pk_client_reset (gclient->priv->client_action, &error_local);
if (!ret) {
@@ -1418,13 +1434,6 @@
goto out;
}
- /* try to install the package_id */
- gpk_client_dialog_set_title (gclient->priv->dialog, _("Installing packages"));
- if (gclient->priv->show_progress) {
- gpk_client_dialog_set_message (gclient->priv->dialog, "");
- gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, GPK_CLIENT_DIALOG_PACKAGE_PADDING, 0);
- }
-
ret = pk_client_install_packages (gclient->priv->client_action, package_ids, &error_local);
if (!ret) {
gpk_client_error_msg (gclient, _("Failed to install package"), error_local);
@@ -1505,6 +1514,7 @@
/* set title */
gpk_client_dialog_set_title (gclient->priv->dialog, _("Searching for packages"));
gpk_client_dialog_set_image_status (gclient->priv->dialog, PK_STATUS_ENUM_WAIT);
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-finding-packages");
if (gclient->priv->show_progress)
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, 0, 0);
@@ -1536,6 +1546,7 @@
title = g_strdup_printf (_("Could not find %s"), text);
gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to find package"));
gpk_client_dialog_set_message (gclient->priv->dialog, _("The packages could not be found in any software source"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-package-not-found");
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
gpk_client_dialog_run (gclient->priv->dialog);
g_free (text);
@@ -1566,6 +1577,7 @@
title = g_strdup_printf (_("Failed to install %s"), text);
gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to install package"));
gpk_client_dialog_set_message (gclient->priv->dialog, _("The package is already installed"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
gpk_client_dialog_run (gclient->priv->dialog);
g_free (text);
@@ -1581,6 +1593,7 @@
if (gclient->priv->show_warning) {
gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to install package"));
gpk_client_dialog_set_message (gclient->priv->dialog, _("Incorrect response from search"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
gpk_client_dialog_run (gclient->priv->dialog);
}
@@ -1685,6 +1698,7 @@
if (gclient->priv->show_warning) {
gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to find package"));
gpk_client_dialog_set_message (gclient->priv->dialog, _("The file could not be found in any packages"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-package-not-found");
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
gpk_client_dialog_run (gclient->priv->dialog);
}
@@ -1711,6 +1725,7 @@
text = g_strdup_printf (_("The %s package already provides the file %s"), id->name, full_path);
gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to install file"));
gpk_client_dialog_set_message (gclient->priv->dialog, text);
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
gpk_client_dialog_run (gclient->priv->dialog);
g_free (text);
@@ -1885,6 +1900,7 @@
gpk_client_dialog_set_title (gclient->priv->dialog, _("Searching for plugins"));
gpk_client_dialog_set_image_status (gclient->priv->dialog, PK_STATUS_ENUM_WAIT);
gpk_client_dialog_set_message (gclient->priv->dialog, "");
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-finding-packages");
/* setup the UI */
if (gclient->priv->show_progress)
@@ -1905,6 +1921,7 @@
if (gclient->priv->show_warning) {
gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to search for plugin"));
gpk_client_dialog_set_message (gclient->priv->dialog, _("Could not find plugin in any configured software source"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-package-not-found");
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
gpk_client_dialog_run (gclient->priv->dialog);
}
@@ -1940,6 +1957,7 @@
gpk_client_dialog_set_message (gclient->priv->dialog, message);
gpk_client_dialog_set_image (gclient->priv->dialog, "dialog-information");
gpk_client_dialog_set_action (gclient->priv->dialog, _("Install"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_CONFIRM, GPK_CLIENT_DIALOG_PACKAGE_LIST, gclient->priv->timestamp);
button = gpk_client_dialog_run (gclient->priv->dialog);
@@ -2022,6 +2040,7 @@
/* set title */
gpk_client_dialog_set_title (gclient->priv->dialog, _("Searching for file handlers"));
gpk_client_dialog_set_image_status (gclient->priv->dialog, PK_STATUS_ENUM_WAIT);
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-finding-packages");
/* setup the UI */
if (gclient->priv->show_progress)
@@ -2053,6 +2072,7 @@
if (gclient->priv->show_warning) {
gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to find software"));
gpk_client_dialog_set_message (gclient->priv->dialog, _("No new applications can be found to handle this type of file"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-package-not-found");
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
gpk_client_dialog_run (gclient->priv->dialog);
}
@@ -2070,6 +2090,7 @@
if (gclient->priv->show_warning) {
gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to install software"));
gpk_client_dialog_set_message (gclient->priv->dialog, _("No applications were chosen to be installed"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
gpk_client_dialog_run (gclient->priv->dialog);
}
@@ -2144,6 +2165,7 @@
/* set title */
gpk_client_dialog_set_title (gclient->priv->dialog, _("Searching for fonts"));
gpk_client_dialog_set_image_status (gclient->priv->dialog, PK_STATUS_ENUM_WAIT);
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-finding-packages");
/* setup the UI */
if (gclient->priv->show_progress)
@@ -2175,6 +2197,7 @@
if (gclient->priv->show_warning) {
gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to find font"));
gpk_client_dialog_set_message (gclient->priv->dialog, _("No new fonts can be found for this document"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-package-not-found");
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
gpk_client_dialog_run (gclient->priv->dialog);
}
@@ -2194,6 +2217,7 @@
gpk_client_dialog_set_message (gclient->priv->dialog, _("Do you want to install these packages now?"));
gpk_client_dialog_set_image (gclient->priv->dialog, "dialog-information");
gpk_client_dialog_set_action (gclient->priv->dialog, _("Install"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_CONFIRM, GPK_CLIENT_DIALOG_PACKAGE_LIST, gclient->priv->timestamp);
button = gpk_client_dialog_run (gclient->priv->dialog);
@@ -2276,6 +2300,7 @@
gpk_client_dialog_set_title (gclient->priv->dialog, title);
gpk_client_dialog_set_message (gclient->priv->dialog, message);
gpk_client_dialog_set_action (gclient->priv->dialog, _("Install"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-install-catalogs");
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_CONFIRM, 0, gclient->priv->timestamp);
button = gpk_client_dialog_run (gclient->priv->dialog);
g_free (message);
@@ -2306,6 +2331,7 @@
if (gclient->priv->show_warning) {
gpk_client_dialog_set_title (gclient->priv->dialog, _("No packages need to be installed"));
gpk_client_dialog_set_message (gclient->priv->dialog, "");
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-catalog-none-required");
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, gclient->priv->timestamp);
gpk_client_dialog_run (gclient->priv->dialog);
}
@@ -2340,6 +2366,7 @@
gpk_client_dialog_set_message (gclient->priv->dialog, text);
gpk_client_dialog_set_image (gclient->priv->dialog, "dialog-question");
gpk_client_dialog_set_action (gclient->priv->dialog, _("Install"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_CONFIRM, 0, gclient->priv->timestamp);
button = gpk_client_dialog_run (gclient->priv->dialog);
@@ -2390,6 +2417,7 @@
/* set title */
gpk_client_dialog_set_title (gclient->priv->dialog, _("System update"));
gpk_client_dialog_set_message (gclient->priv->dialog, "");
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-update-system");
/* wrap update, but handle all the GPG and EULA stuff */
ret = pk_client_update_system (gclient->priv->client_action, &error_local);
@@ -2461,6 +2489,7 @@
/* set title */
gpk_client_dialog_set_title (gclient->priv->dialog, _("Refresh package lists"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-refresh");
/* wrap update, but handle all the GPG and EULA stuff */
ret = pk_client_refresh_cache (gclient->priv->client_action, TRUE, &error_local);
@@ -2518,11 +2547,10 @@
goto out;
}
- /* setup the UI */
-
/* ignore this if it's uninteresting */
if (gclient->priv->show_progress) {
gpk_client_dialog_set_title (gclient->priv->dialog, _("Getting update lists"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, 0, 0);
}
@@ -2578,6 +2606,7 @@
/* setup the UI */
gpk_client_dialog_set_title (gclient->priv->dialog, _("Getting distribution upgrade information"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-get-upgrades");
if (gclient->priv->show_progress)
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, 0, 0);
@@ -2621,6 +2650,7 @@
/* setup the UI */
gpk_client_dialog_set_title (gclient->priv->dialog, _("Getting file lists"));
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
if (gclient->priv->show_progress)
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, 0, 0);
@@ -2668,6 +2698,7 @@
/* setup the UI */
gpk_client_dialog_set_title (gclient->priv->dialog, _("Update packages"));
gpk_client_dialog_set_message (gclient->priv->dialog, "");
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, "dialog-update-packages");
if (gclient->priv->show_progress)
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, GPK_CLIENT_DIALOG_PACKAGE_PADDING, 0);
@@ -2776,6 +2807,7 @@
g_return_val_if_fail (GPK_IS_CLIENT (gclient), FALSE);
/* go back to the UI */
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, GPK_CLIENT_DIALOG_PACKAGE_PADDING, 0);
gclient->priv->using_secondary_client = FALSE;
@@ -2866,6 +2898,7 @@
text = pk_common_get_role_text (gclient->priv->client_action);
gpk_client_dialog_set_title (gclient->priv->dialog, text);
g_free (text);
+ gpk_client_dialog_set_help_id (gclient->priv->dialog, NULL);
/* coldplug */
ret = pk_client_get_status (gclient->priv->client_action, &status, NULL);
@@ -2921,11 +2954,10 @@
role == PK_ROLE_ENUM_SEARCH_DETAILS ||
role == PK_ROLE_ENUM_SEARCH_FILE ||
role == PK_ROLE_ENUM_SEARCH_NAME ||
- role == PK_ROLE_ENUM_GET_UPDATES) {
+ role == PK_ROLE_ENUM_GET_UPDATES)
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, 0, 0);
- } else {
+ else
gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, GPK_CLIENT_DIALOG_PACKAGE_PADDING, 0);
- }
/* wait for an answer */
g_main_loop_run (gclient->priv->loop);
@@ -2934,18 +2966,133 @@
}
/**
- * gpk_client_set_application:
+ * gpk_client_get_package_for_exec:
+ **/
+static gchar *
+gpk_client_get_package_for_exec (GpkClient *gclient, const gchar *exec)
+{
+ gchar *package = NULL;
+ gboolean ret;
+ GError *error = NULL;
+ guint length;
+ PkPackageList *list = NULL;
+ const PkPackageObj *obj;
+
+ /* reset client */
+ ret = pk_client_reset (gclient->priv->client_resolve, &error);
+ if (!ret) {
+ egg_warning ("failed to reset client: %s", error->message);
+ g_error_free (error);
+ goto out;
+ }
+
+ /* find the package name */
+ ret = pk_client_search_file (gclient->priv->client_resolve, pk_bitfield_value (PK_FILTER_ENUM_INSTALLED), exec, &error);
+ if (!ret) {
+ egg_warning ("failed to search file: %s", error->message);
+ g_error_free (error);
+ goto out;
+ }
+
+ /* get the list of packages */
+ list = pk_client_get_package_list (gclient->priv->client_resolve);
+ length = pk_package_list_get_size (list);
+
+ /* nothing found */
+ if (length == 0) {
+ egg_debug ("cannot find installed package that provides : %s", exec);
+ goto out;
+ }
+
+ /* check we have one */
+ if (length != 1)
+ egg_warning ("not one return, using first");
+
+ /* copy name */
+ obj = pk_package_list_get_obj (list, 0);
+ package = g_strdup (obj->id->name);
+ egg_debug ("got package %s", package);
+
+out:
+ /* use the exec name if we can't find an installed package */
+ if (list != NULL)
+ g_object_unref (list);
+ return package;
+}
+
+/**
+ * gpk_client_path_is_trusted:
+ **/
+static gboolean
+gpk_client_path_is_trusted (const gchar *exec)
+{
+ /* special case the plugin helper -- it's trusted */
+ if (egg_strequal (exec, "/usr/libexec/gst-install-plugins-helper") ||
+ egg_strequal (exec, "/usr/libexec/pk-gstreamer-install"))
+ return TRUE;
+#if 0
+ /* debugging code, should never be run... */
+ if (egg_strequal (exec, "/usr/bin/python") ||
+ egg_strequal (exec, "/home/hughsie/Code/PackageKit/contrib/gstreamer-plugin/pk-gstreamer-install"))
+ return TRUE;
+#endif
+ return FALSE;
+}
+
+/**
+ * gpk_client_set_parent_exec:
*
* This sets the package name of the application that is trying to install
* software, e.g. "totem" and is used for the PkExtra lookup to provide
* a translated name and icon.
**/
gboolean
-gpk_client_set_application (GpkClient *gclient, const gchar *application)
+gpk_client_set_parent_exec (GpkClient *gclient, const gchar *exec)
{
+ GpkX11 *x11;
+ gchar *package;
+
g_return_val_if_fail (GPK_IS_CLIENT (gclient), FALSE);
- g_free (gclient->priv->application);
- gclient->priv->application = g_strdup (application);
+
+ /* old values invalid */
+ g_free (gclient->priv->parent_title);
+ g_free (gclient->priv->parent_icon_name);
+ gclient->priv->parent_title = NULL;
+ gclient->priv->parent_icon_name = NULL;
+
+ /* is the binary trusted, i.e. can we probe it's window properties */
+ if (gpk_client_path_is_trusted (exec)) {
+ egg_debug ("using application window properties");
+ /* get from window properties */
+ x11 = gpk_x11_new ();
+ gpk_x11_set_window (x11, gclient->priv->parent_window);
+ gclient->priv->parent_title = gpk_x11_get_title (x11);
+ g_object_unref (x11);
+ goto out;
+ }
+
+ /* get from installed database */
+ package = gpk_client_get_package_for_exec (gclient, exec);
+ egg_debug ("got package %s", package);
+
+ /* try to get from PkExtra */
+ if (package != NULL) {
+ gclient->priv->parent_title = g_strdup (pk_extra_get_summary (gclient->priv->extra, package));
+ gclient->priv->parent_icon_name = g_strdup (pk_extra_get_icon_name (gclient->priv->extra, package));
+ /* fallback to package name */
+ if (gclient->priv->parent_title == NULL) {
+ egg_debug ("did not get localised description for %s", package);
+ gclient->priv->parent_title = g_strdup (package);
+ }
+ }
+
+ /* fallback to exec - eugh... */
+ if (gclient->priv->parent_title == NULL) {
+ egg_debug ("did not get package for %s, using exec basename", package);
+ gclient->priv->parent_title = g_path_get_basename (exec);
+ }
+out:
+ egg_debug ("got name=%s, icon=%s", gclient->priv->parent_title, gclient->priv->parent_icon_name);
return TRUE;
}
@@ -3021,7 +3168,8 @@
gclient->priv->files_array = NULL;
gclient->priv->parent_window = NULL;
- gclient->priv->application = NULL;
+ gclient->priv->parent_title = NULL;
+ gclient->priv->parent_icon_name = NULL;
gclient->priv->using_secondary_client = FALSE;
gclient->priv->exit = PK_EXIT_ENUM_FAILED;
gclient->priv->show_confirm = TRUE;
@@ -3113,7 +3261,8 @@
if (gclient->priv->finished_timer_id != 0)
g_source_remove (gclient->priv->finished_timer_id);
- g_free (gclient->priv->application);
+ g_free (gclient->priv->parent_title);
+ g_free (gclient->priv->parent_icon_name);
g_ptr_array_foreach (gclient->priv->upgrade_array, (GFunc) pk_distro_upgrade_obj_free, NULL);
g_ptr_array_free (gclient->priv->upgrade_array, TRUE);
g_strfreev (gclient->priv->files_array);
Modified: trunk/src/gpk-client.h
==============================================================================
--- trunk/src/gpk-client.h (original)
+++ trunk/src/gpk-client.h Wed Oct 1 15:53:07 2008
@@ -131,12 +131,12 @@
GError **error);
gboolean gpk_client_monitor_tid (GpkClient *gclient,
const gchar *tid);
-gboolean gpk_client_set_application (GpkClient *gclient,
- const gchar *application);
gboolean gpk_client_set_parent (GpkClient *gclient,
GtkWindow *window);
gboolean gpk_client_set_parent_xid (GpkClient *gclient,
guint xid);
+gboolean gpk_client_set_parent_exec (GpkClient *gclient,
+ const gchar *exec);
gboolean gpk_client_update_timestamp (GpkClient *gclient,
guint timestamp);
Modified: trunk/src/gpk-dbus.c
==============================================================================
--- trunk/src/gpk-dbus.c (original)
+++ trunk/src/gpk-dbus.c Wed Oct 1 15:53:07 2008
@@ -41,20 +41,16 @@
#include <polkit/polkit.h>
#include <polkit-dbus/polkit-dbus.h>
-#include <gdk/gdk.h>
-#include <gdk/gdkx.h>
-#include <X11/Xatom.h>
-
#include <pk-common.h>
#include <pk-package-id.h>
#include <pk-package-ids.h>
-#include <pk-client.h>
#include <pk-enum.h>
#include <pk-package-list.h>
#include "egg-debug.h"
#include "gpk-dbus.h"
+#include "gpk-x11.h"
#include "gpk-client.h"
static void gpk_dbus_class_init (GpkDbusClass *klass);
@@ -65,7 +61,6 @@
struct GpkDbusPrivate
{
- PkClient *client;
GpkClient *gclient;
};
@@ -154,145 +149,23 @@
}
/**
- * gpk_dbus_get_application_for_sender:
- **/
-static gchar *
-gpk_dbus_get_application_for_sender (GpkDbus *dbus, const gchar *sender)
-{
- gchar *exec;
- gchar *application = NULL;
- gboolean ret;
- GError *error = NULL;
- guint length;
- PkPackageList *list = NULL;
- const PkPackageObj *obj;
-
- exec = gpk_dbus_get_exec_for_sender (sender);
- if (exec == NULL) {
- egg_warning ("could not get exec name for %s", sender);
- goto out;
- }
- egg_debug ("got application path %s", exec);
-
- /* reset client */
- ret = pk_client_reset (dbus->priv->client, &error);
- if (!ret) {
- egg_warning ("failed to reset client: %s", error->message);
- g_error_free (error);
- goto out;
- }
-
- /* find the package name */
- ret = pk_client_search_file (dbus->priv->client, pk_bitfield_value (PK_FILTER_ENUM_INSTALLED), exec, &error);
- if (!ret) {
- egg_warning ("failed to search file: %s", error->message);
- g_error_free (error);
- goto out;
- }
-
- /* get the list of packages */
- list = pk_client_get_package_list (dbus->priv->client);
- length = pk_package_list_get_size (list);
-
- /* nothing found */
- if (length == 0) {
- egg_debug ("cannot find installed package that provides : %s", exec);
- goto out;
- }
-
- /* check we have one */
- if (length != 1)
- egg_warning ("not one return, using first");
-
- /* copy name */
- obj = pk_package_list_get_obj (list, 0);
- application = g_strdup (obj->id->name);
- egg_debug ("got application package %s", application);
-
-out:
- /* use the exec name if we can't find an installed package */
- if (application == NULL && exec != NULL)
- application = g_strdup (exec);
- if (list != NULL)
- g_object_unref (list);
- g_free (exec);
- return application;
-}
-
-/**
- * gpk_dbus_get_user_time_for_xid:
- **/
-static guint32
-gpk_dbus_get_user_time_for_xid (guint xid)
-{
- guint32 timestamp = 0;
- GdkWindow *window;
- GdkDisplay *display;
- Atom atom_window = None;
- Atom atom_time = None;
- guchar *data;
- Atom type_return;
- gint format_return;
- gulong nitems_return;
- gulong bytes_after_return;
- Window *win = NULL;
-
- /* check we have a foreign window */
- if (xid == 0) {
- egg_debug ("no XID, so cannot work with focus stealing prevention");
- goto out;
- }
-
- /* use gdk where possible */
- display = gdk_display_get_default ();
- window = gdk_window_foreign_new_for_display (display, xid);
-
- /* get _NET_WM_USER_TIME_WINDOW which points to a window on which you can find the _NET_WM_USER_TIME property */
- atom_window = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_USER_TIME_WINDOW");
- if (XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window), atom_window,
- 0, G_MAXLONG, False, XA_WINDOW, &type_return,
- &format_return, &nitems_return, &bytes_after_return,
- &data) == Success) {
- if ((type_return == XA_WINDOW) && (format_return == 32) && (data)) {
- win = (Window *)data;
- g_message ("got window %p", win);
- }
- }
-
- /* nothing found */
- if (win == NULL) {
- g_warning ("could not find window");
- goto out;
- }
-
- /* get _NET_WM_USER_TIME so we can get the user time */
- atom_time = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_USER_TIME");
- if (XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), *win, atom_time,
- 0, G_MAXLONG, False, XA_CARDINAL, &type_return,
- &format_return, &nitems_return, &bytes_after_return,
- &data) == Success) {
- if ((type_return == XA_CARDINAL) && (format_return == 32) && (data)) {
- timestamp = (guint32) *data;
- g_message ("got timestamp %i", timestamp);
- }
- }
-
-out:
- return timestamp;
-}
-
-/**
* gpk_dbus_set_parent_window:
**/
void
gpk_dbus_set_parent_window (GpkDbus *dbus, guint32 xid, guint32 timestamp)
{
+ GpkX11 *x11;
+
/* set the parent window */
gpk_client_set_parent_xid (dbus->priv->gclient, xid);
/* try to get the user time of the window if not provided */
- if (timestamp == 0)
- timestamp = gpk_dbus_get_user_time_for_xid (xid);
+ if (timestamp == 0 && xid != 0) {
+ x11 = gpk_x11_new ();
+ gpk_x11_set_xid (x11, xid);
+ timestamp = gpk_x11_get_user_time (x11);
+ g_object_unref (x11);
+ }
/* set the last interaction */
gpk_client_update_timestamp (dbus->priv->gclient, timestamp);
@@ -309,7 +182,7 @@
GError *error_local = NULL;
gchar *sender;
gchar **full_paths;
- gchar *application;
+ gchar *exec;
g_return_if_fail (PK_IS_DBUS (dbus));
@@ -317,17 +190,16 @@
/* check sender */
sender = dbus_g_method_get_sender (context);
- egg_debug ("sender=%s", sender);
/* just convert from char* to char** */
full_paths = g_strsplit (full_path, "|", 1);
gpk_dbus_set_parent_window (dbus, xid, timestamp);
/* get the program name and set */
- application = gpk_dbus_get_application_for_sender (dbus, sender);
- gpk_client_set_application (dbus->priv->gclient, application);
+ exec = gpk_dbus_get_exec_for_sender (sender);
+ gpk_client_set_parent_exec (dbus->priv->gclient, exec);
g_free (sender);
- g_free (application);
+ g_free (exec);
/* do the action */
ret = gpk_client_install_local_files (dbus->priv->gclient, full_paths, &error_local);
@@ -353,23 +225,21 @@
GError *error;
GError *error_local = NULL;
gchar *sender;
- gchar *application;
+ gchar *exec;
g_return_if_fail (PK_IS_DBUS (dbus));
egg_debug ("InstallProvideFile method called: %s", full_path);
- /* check sender */
- sender = dbus_g_method_get_sender (context);
- egg_debug ("sender=%s", sender);
-
+ /* set modality */
gpk_dbus_set_parent_window (dbus, xid, timestamp);
/* get the program name and set */
- application = gpk_dbus_get_application_for_sender (dbus, sender);
- gpk_client_set_application (dbus->priv->gclient, application);
+ sender = dbus_g_method_get_sender (context);
+ exec = gpk_dbus_get_exec_for_sender (sender);
+ gpk_client_set_parent_exec (dbus->priv->gclient, exec);
g_free (sender);
- g_free (application);
+ g_free (exec);
/* do the action */
ret = gpk_client_install_provide_file (dbus->priv->gclient, full_path, &error_local);
@@ -395,7 +265,7 @@
GError *error_local = NULL;
gchar *sender;
gchar **package_names;
- gchar *application;
+ gchar *exec;
g_return_if_fail (PK_IS_DBUS (dbus));
@@ -403,17 +273,16 @@
/* check sender */
sender = dbus_g_method_get_sender (context);
- egg_debug ("sender=%s", sender);
/* just convert from char* to char** */
package_names = g_strsplit (package_name, "|", 1);
gpk_dbus_set_parent_window (dbus, xid, timestamp);
/* get the program name and set */
- application = gpk_dbus_get_application_for_sender (dbus, sender);
- gpk_client_set_application (dbus->priv->gclient, application);
+ exec = gpk_dbus_get_exec_for_sender (sender);
+ gpk_client_set_parent_exec (dbus->priv->gclient, exec);
g_free (sender);
- g_free (application);
+ g_free (exec);
/* do the action */
ret = gpk_client_install_package_names (dbus->priv->gclient, package_names, &error_local);
@@ -440,23 +309,21 @@
GError *error;
GError *error_local = NULL;
gchar *sender;
- gchar *application;
+ gchar *exec;
g_return_if_fail (PK_IS_DBUS (dbus));
egg_debug ("InstallMimeType method called: %s", mime_type);
- /* check sender */
- sender = dbus_g_method_get_sender (context);
- egg_debug ("sender=%s", sender);
-
+ /* set modality */
gpk_dbus_set_parent_window (dbus, xid, timestamp);
/* get the program name and set */
- application = gpk_dbus_get_application_for_sender (dbus, sender);
- gpk_client_set_application (dbus->priv->gclient, application);
+ sender = dbus_g_method_get_sender (context);
+ exec = gpk_dbus_get_exec_for_sender (sender);
+ gpk_client_set_parent_exec (dbus->priv->gclient, exec);
g_free (sender);
- g_free (application);
+ g_free (exec);
/* do the action */
ret = gpk_client_install_mime_type (dbus->priv->gclient, mime_type, &error_local);
@@ -481,7 +348,7 @@
GError *error;
GError *error_local = NULL;
gchar *sender;
- gchar *application;
+ gchar *exec;
g_return_if_fail (PK_IS_DBUS (dbus));
@@ -496,17 +363,15 @@
egg_debug ("InstallGStreamerCodecs method called");
- /* check sender */
- sender = dbus_g_method_get_sender (context);
- egg_debug ("sender=%s", sender);
-
+ /* set modality */
gpk_dbus_set_parent_window (dbus, xid, timestamp);
/* get the program name and set */
- application = gpk_dbus_get_application_for_sender (dbus, sender);
- gpk_client_set_application (dbus->priv->gclient, application);
+ sender = dbus_g_method_get_sender (context);
+ exec = gpk_dbus_get_exec_for_sender (sender);
+ gpk_client_set_parent_exec (dbus->priv->gclient, exec);
g_free (sender);
- g_free (application);
+ g_free (exec);
/* unwrap and turn into a GPtrArray */
array = g_ptr_array_new ();
@@ -552,23 +417,21 @@
GError *error;
GError *error_local = NULL;
gchar *sender;
- gchar *application;
+ gchar *exec;
g_return_if_fail (PK_IS_DBUS (dbus));
egg_debug ("InstallFont method called: %s", font_desc);
- /* check sender */
- sender = dbus_g_method_get_sender (context);
- egg_debug ("sender=%s", sender);
-
+ /* set modality */
gpk_dbus_set_parent_window (dbus, xid, timestamp);
/* get the program name and set */
- application = gpk_dbus_get_application_for_sender (dbus, sender);
- gpk_client_set_application (dbus->priv->gclient, application);
+ sender = dbus_g_method_get_sender (context);
+ exec = gpk_dbus_get_exec_for_sender (sender);
+ gpk_client_set_parent_exec (dbus->priv->gclient, exec);
g_free (sender);
- g_free (application);
+ g_free (exec);
/* do the action */
ret = gpk_client_install_font (dbus->priv->gclient, font_desc, &error_local);
@@ -604,10 +467,6 @@
{
dbus->priv = GPK_DBUS_GET_PRIVATE (dbus);
dbus->priv->gclient = gpk_client_new ();
- dbus->priv->client = pk_client_new ();
- pk_client_set_synchronous (dbus->priv->client, TRUE, NULL);
- pk_client_set_use_buffer (dbus->priv->client, TRUE, NULL);
-
}
/**
@@ -622,7 +481,6 @@
dbus = GPK_DBUS (object);
g_return_if_fail (dbus->priv != NULL);
- g_object_unref (dbus->priv->client);
g_object_unref (dbus->priv->gclient);
G_OBJECT_CLASS (gpk_dbus_parent_class)->finalize (object);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]