gnome-packagekit r175 - in trunk: data libpackagekit-gnome



Author: rhughes
Date: Mon Apr 14 16:13:12 2008
New Revision: 175
URL: http://svn.gnome.org/viewvc/gnome-packagekit?rev=175&view=rev

Log:
from git

Added:
   trunk/data/gpk-eula.glade
Modified:
   trunk/data/Makefile.am
   trunk/libpackagekit-gnome/gpk-client.c
   trunk/libpackagekit-gnome/gpk-common.c

Modified: trunk/data/Makefile.am
==============================================================================
--- trunk/data/Makefile.am	(original)
+++ trunk/data/Makefile.am	Mon Apr 14 16:13:12 2008
@@ -27,6 +27,7 @@
 
 pkgdata_DATA =						\
 	gpk-repo.glade					\
+	gpk-eula.glade					\
 	gpk-application.glade				\
 	gpk-update-viewer.glade				\
 	gpk-progress.glade				\

Added: trunk/data/gpk-eula.glade
==============================================================================
--- (empty file)
+++ trunk/data/gpk-eula.glade	Mon Apr 14 16:13:12 2008
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
+<glade-interface>
+  <widget class="GtkWindow" id="window_eula">
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">PackageKit Error</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>
+        <property name="border_width">10</property>
+        <property name="spacing">12</property>
+        <child>
+          <widget class="GtkTable" id="table1">
+            <property name="visible">True</property>
+            <property name="n_rows">2</property>
+            <property name="n_columns">2</property>
+            <property name="column_spacing">9</property>
+            <property name="row_spacing">12</property>
+            <child>
+              <widget class="GtkScrolledWindow" id="scrolledwindow1">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                <property name="shadow_type">GTK_SHADOW_IN</property>
+                <child>
+                  <widget class="GtkTextView" id="textview_details">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="editable">False</property>
+                    <property name="wrap_mode">GTK_WRAP_WORD</property>
+                    <property name="cursor_visible">False</property>
+                    <property name="accepts_tab">False</property>
+                  </widget>
+                </child>
+              </widget>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+              </widget>
+              <packing>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkImage" id="image1">
+                <property name="visible">True</property>
+                <property name="stock">gtk-dialog-warning</property>
+                <property name="icon_size">6</property>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkVBox" id="vbox3">
+                <property name="visible">True</property>
+                <property name="spacing">12</property>
+                <child>
+                  <widget class="GtkHBox" id="hbox2">
+                    <property name="visible">True</property>
+                    <child>
+                      <widget class="GtkLabel" id="label_title">
+                        <property name="visible">True</property>
+                        <property name="label">&lt;b&gt;License required for foo-devel by Acme Corp.&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label_message">
+                    <property name="visible">True</property>
+                    <property name="label">Please read the following important information before continuing.</property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+          </packing>
+        </child>
+        <child>
+          <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_help">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="label" translatable="yes">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_cancel">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="label" translatable="yes">gtk-cancel</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">0</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button_agree">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="label">I accept the agreement</property>
+                <property name="response_id">0</property>
+              </widget>
+              <packing>
+                <property name="pack_type">GTK_PACK_END</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">GTK_PACK_END</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>

Modified: trunk/libpackagekit-gnome/gpk-client.c
==============================================================================
--- trunk/libpackagekit-gnome/gpk-client.c	(original)
+++ trunk/libpackagekit-gnome/gpk-client.c	Mon Apr 14 16:13:12 2008
@@ -28,6 +28,7 @@
 
 #include "config.h"
 
+#include <string.h>
 #include <glib/gi18n.h>
 #include <glib/gprintf.h>
 #include <gtk/gtk.h>
@@ -157,7 +158,10 @@
 	if (exit == PK_EXIT_ENUM_SUCCESS) {
 		gpk_client_set_page (gclient, GPK_CLIENT_PAGE_CONFIRM);
 		g_timeout_add_seconds (30, gpk_install_finished_timeout, gclient);
+	} else {
+		gtk_main_quit ();
 	}
+
 	/* make insensitive */
 	widget = glade_xml_get_widget (gclient->priv->glade_xml, "button_cancel");
 	gtk_widget_set_sensitive (widget, FALSE);
@@ -285,27 +289,6 @@
 }
 
 /**
- * gpk_client_window_delete_event_cb:
- **/
-static gboolean
-gpk_client_window_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_button_close_cb:
- **/
-static void
-gpk_client_button_close_cb (GtkWidget *widget, GpkClient *gclient)
-{
-	g_return_if_fail (GPK_IS_CLIENT (gclient));
-	gtk_main_quit ();
-}
-
-/**
  * gpk_client_button_help_cb:
  **/
 static void
@@ -770,20 +753,10 @@
 }
 
 /**
- * gpk_client_sig_button_no:
+ * gpk_client_button_help:
  **/
 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)
+gpk_client_button_help (GtkWidget *widget, GpkClient *gclient)
 {
 	g_return_if_fail (GPK_IS_CLIENT (gclient));
 	/* TODO: need a whole section on this! */
@@ -791,18 +764,6 @@
 }
 
 /**
- * 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
@@ -819,20 +780,18 @@
 	g_return_if_fail (GPK_IS_CLIENT (gclient));
 
 	glade_xml = glade_xml_new (PK_DATA "/gpk-signature.glade", NULL, NULL);
+
+	/* connect up default actions */
 	widget = glade_xml_get_widget (glade_xml, "window_gpg");
-	g_signal_connect (widget, "delete_event",
-			  G_CALLBACK (gpk_client_sig_delete_event_cb), gclient);
+	g_signal_connect_swapped (widget, "delete_event", G_CALLBACK (gtk_main_quit), NULL);
+	widget = glade_xml_get_widget (glade_xml, "button_no");
+	g_signal_connect_swapped (widget, "clicked", G_CALLBACK (gtk_main_quit), NULL);
 
 	/* 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);
+	g_signal_connect (widget, "clicked", G_CALLBACK (gpk_client_sig_button_yes), gclient);
 	widget = glade_xml_get_widget (glade_xml, "button_help");
-	g_signal_connect (widget, "clicked",
-			  G_CALLBACK (gpk_client_sig_button_help), gclient);
+	g_signal_connect (widget, "clicked", G_CALLBACK (gpk_client_button_help), gclient);
 
 	/* show correct text */
 	widget = glade_xml_get_widget (glade_xml, "label_name");
@@ -853,7 +812,9 @@
 	gtk_main ();
 
 	/* hide window */
-	gtk_widget_hide (widget);
+	if (GTK_IS_WIDGET (widget)) {
+		gtk_widget_hide (widget);
+	}
 	g_object_unref (glade_xml);
 
 	/* disagreed with auth */
@@ -880,6 +841,63 @@
 }
 
 /**
+ * gpk_client_eula_required_cb:
+ **/
+static void
+gpk_client_eula_required_cb (PkClient *client, const gchar *eula_id, const gchar *package_id,
+			     const gchar *vendor_name, const gchar *license_agreement, GpkClient *gclient)
+{
+	GtkWidget *widget;
+	GladeXML *glade_xml;
+	GtkTextBuffer *buffer;
+	gchar *text;
+	PkPackageId *ident;
+
+	g_return_if_fail (GPK_IS_CLIENT (gclient));
+
+	glade_xml = glade_xml_new (PK_DATA "/gpk-eula.glade", NULL, NULL);
+
+	/* connect up default actions */
+	widget = glade_xml_get_widget (glade_xml, "window_eula");
+	g_signal_connect_swapped (widget, "delete_event", G_CALLBACK (gtk_main_quit), NULL);
+	widget = glade_xml_get_widget (glade_xml, "button_cancel");
+	g_signal_connect_swapped (widget, "clicked", G_CALLBACK (gtk_main_quit), NULL);
+
+	/* connect up buttons */
+	widget = glade_xml_get_widget (glade_xml, "button_agree");
+	g_signal_connect (widget, "clicked", G_CALLBACK (gpk_client_sig_button_yes), gclient);
+	widget = glade_xml_get_widget (glade_xml, "button_help");
+	g_signal_connect (widget, "clicked", G_CALLBACK (gpk_client_button_help), gclient);
+
+	/* title */
+	widget = glade_xml_get_widget (glade_xml, "label_title");
+	ident = pk_package_id_new_from_string (package_id);
+	text = g_strdup_printf ("<b><big>License required for %s by %s</big></b>", ident->name, vendor_name);
+	gtk_label_set_label (GTK_LABEL (widget), text);
+	pk_package_id_free (ident);
+	g_free (text);
+
+	buffer = gtk_text_buffer_new (NULL);
+	gtk_text_buffer_insert_at_cursor (buffer, license_agreement, strlen (license_agreement));
+	widget = glade_xml_get_widget (glade_xml, "textview_details");
+	gtk_text_view_set_buffer (GTK_TEXT_VIEW (widget), buffer);
+
+	/* show window */
+	widget = glade_xml_get_widget (glade_xml, "window_eula");
+	gtk_widget_show (widget);
+
+	/* wait for button press */
+	gtk_main ();
+
+	/* hide window */
+	if (GTK_IS_WIDGET (widget)) {
+		gtk_widget_hide (widget);
+	}
+	g_object_unref (glade_xml);
+	g_object_unref (buffer);
+}
+
+/**
  * gpk_client_signature_finished_cb:
  **/
 static void
@@ -951,6 +969,8 @@
 			  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);
+	g_signal_connect (gclient->priv->client_action, "eula-required",
+			  G_CALLBACK (gpk_client_eula_required_cb), gclient);
 
 	gclient->priv->client_resolve = pk_client_new ();
 	g_signal_connect (gclient->priv->client_resolve, "status-changed",
@@ -964,21 +984,18 @@
 			  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");
 
 	/* Get the main window quit */
-	g_signal_connect (widget, "delete_event",
-			  G_CALLBACK (gpk_client_window_delete_event_cb), gclient);
+	widget = glade_xml_get_widget (gclient->priv->glade_xml, "window_updates");
+	g_signal_connect_swapped (widget, "delete_event", G_CALLBACK (gtk_main_quit), NULL);
 
+	/* just close */
 	widget = glade_xml_get_widget (gclient->priv->glade_xml, "button_close");
-	g_signal_connect (widget, "clicked",
-			  G_CALLBACK (gpk_client_button_close_cb), gclient);
+	g_signal_connect_swapped (widget, "clicked", G_CALLBACK (gtk_main_quit), NULL);
 	widget = glade_xml_get_widget (gclient->priv->glade_xml, "button_close2");
-	g_signal_connect (widget, "clicked",
-			  G_CALLBACK (gpk_client_button_close_cb), gclient);
+	g_signal_connect_swapped (widget, "clicked", G_CALLBACK (gtk_main_quit), NULL);
 	widget = glade_xml_get_widget (gclient->priv->glade_xml, "button_close3");
-	g_signal_connect (widget, "clicked",
-			  G_CALLBACK (gpk_client_button_close_cb), gclient);
+	g_signal_connect_swapped (widget, "clicked", G_CALLBACK (gtk_main_quit), NULL);
 
 	widget = glade_xml_get_widget (gclient->priv->glade_xml, "button_cancel");
 	g_signal_connect (widget, "clicked",

Modified: trunk/libpackagekit-gnome/gpk-common.c
==============================================================================
--- trunk/libpackagekit-gnome/gpk-common.c	(original)
+++ trunk/libpackagekit-gnome/gpk-common.c	Mon Apr 14 16:13:12 2008
@@ -391,6 +391,9 @@
 	case PK_ERROR_ENUM_CANNOT_INSTALL_SOURCE_PACKAGE:
 		text = _("Source packages cannot be installed");
 		break;
+	case PK_ERROR_ENUM_NO_LICENSE_AGREEMENT:
+		text = _("The license agreement failed");
+		break;
 	default:
 		text = _("Unknown error");
 	}
@@ -489,6 +492,10 @@
 		text = _("Source packages are not normally installed this way.\n"
 			 "Check the extension of the file you are trying to install.");
 		break;
+	case PK_ERROR_ENUM_NO_LICENSE_AGREEMENT:
+		text = _("The license agreement was not agreed to.\n"
+			 "To use this software you have to accept the license.");
+		break;
 	default:
 		text = _("Unknown error, please report a bug.\n"
 			 "More information is available in the detailed report.");



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