Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=gfpm/.git;a=commitdiff;h=5702264ade5f55759cb78ea81ffe5bbbdd192966

commit 5702264ade5f55759cb78ea81ffe5bbbdd192966
Author: Priyank <[EMAIL PROTECTED]>
Date:   Sat Jul 28 20:59:43 2007 +0530

gfpm-interface: display missing dependencies (if any) when installing from file
* major bugfixes in gfpm_plist_message()

diff --git a/src/gfpm-interface.c b/src/gfpm-interface.c
index 2e52cea..7a00e61 100644
--- a/src/gfpm-interface.c
+++ b/src/gfpm-interface.c
@@ -1102,9 +1102,45 @@ cb_gfpm_install_file_clicked (GtkButton *button, 
gpointer data)
pacman_trans_addtarget (fpm);
if (pacman_trans_prepare(&data) == -1)
{
+               PM_LIST *i;
+               GList   *pkgs = NULL;
+
str = g_strdup_printf (_("Failed to prepare transaction (%s)\n"), 
pacman_strerror (pm_errno));
gfpm_error (str);
g_free (str);
+               switch ((long)pm_errno)
+               {
+                       case PM_ERR_UNSATISFIED_DEPS:
+                               for 
(i=pacman_list_first(data);i;i=pacman_list_next(i))
+                               {
+                                       GString *depstring = g_string_new ("");
+                                       PM_DEPMISS *m = pacman_list_getdata (i);
+                                       depstring = g_string_append (depstring, 
(char*)pacman_dep_getinfo(m,PM_DEP_NAME));
+                                       switch ((long)pacman_dep_getinfo(m, 
PM_DEP_MOD))
+                                       {
+                                               gchar *val = NULL;
+                                               case PM_DEP_MOD_EQ:
+                                                       val = g_strdup_printf 
("=%s", (char*)pacman_dep_getinfo(m,PM_DEP_VERSION));
+                                                       depstring = 
g_string_append (depstring, val);
+                                                       break;
+                                               case PM_DEP_MOD_GE:
+                                                       val = g_strdup_printf 
(">=%s", (char*)pacman_dep_getinfo(m,PM_DEP_VERSION));
+                                                       depstring = 
g_string_append (depstring, val);
+                                                       break;
+                                               case PM_DEP_MOD_LE:
+                                                       val = g_strdup_printf 
("<=%s", (char*)pacman_dep_getinfo(m,PM_DEP_VERSION));
+                                                       depstring = 
g_string_append (depstring, val);
+                                                       break;
+                                               default: break;
+                                       }
+                                       pkgs = g_list_append (pkgs, 
(char*)g_strdup(depstring->str));
+                                       g_string_free (depstring, FALSE);
+                               }
+                               pacman_list_free (data);
+                               gfpm_plist_message (_("Following dependencies 
were not met. Please install these packages first."), GTK_MESSAGE_WARNING, 
pkgs);
+                               break;
+               }
+
goto cleanup;
}
if (pacman_trans_commit(&data) == -1)
diff --git a/src/gfpm-messages.c b/src/gfpm-messages.c
index d1ccd40..4f9b225 100644
--- a/src/gfpm-messages.c
+++ b/src/gfpm-messages.c
@@ -134,7 +134,7 @@ gfpm_plist_question (const char *main_msg, GList *packages)
return ret;
}

-gint
+void
gfpm_plist_message (const char *main_msg, GtkMessageType type, GList *packages)
{
GtkWidget               *dialog;
@@ -144,8 +144,10 @@ gfpm_plist_message (const char *main_msg, GtkMessageType 
type, GList *packages)
GtkTreeIter             iter;
GtkWidget               *tvw;
GtkWidget               *lbl;
-       PM_LIST                 *l;
-
+       GList                   *l;
+
+       if (packages == NULL)
+               return;
dialog = gtk_message_dialog_new (GTK_WINDOW(gfpm_mw),
GTK_DIALOG_DESTROY_WITH_PARENT,
type,
@@ -162,20 +164,13 @@ gfpm_plist_message (const char *main_msg, GtkMessageType 
type, GList *packages)
gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW(tvw), -1, 
_("Package"), r, "text", 0, NULL);
for (l=g_list_first(packages);l;l=g_list_next(l))
{
-               char *pkgname, *pkgver;
-               char *pkgstring;
-               PM_SYNCPKG *sync = g_list_getdata (l);
-               PM_PKG *pkg = pacman_sync_getinfo (sync, PM_SYNC_PKG);
-
-               pkgname = pacman_pkg_getinfo (pkg, PM_PKG_NAME);
-               pkgver = pacman_pkg_getinfo (pkg, PM_PKG_VERSION);
+               char *pkgstring = (char*)l->data;
gtk_list_store_append (store, &iter);
-               pkgstring = g_strdup_printf("%s%s", pkgname, pkgver);
gtk_list_store_set (store, &iter, 0, pkgstring, -1);
g_free (pkgstring);
}
gtk_tree_view_set_model (GTK_TREE_VIEW(tvw), GTK_TREE_MODEL(store));
-       gtk_widget_set_size_request (tvw, 230, 120);
+       gtk_widget_set_size_request (tvw, 230, 80);
gtk_widget_show (tvw);
gtk_box_pack_start (GTK_DIALOG(dialog)->vbox, swindow, FALSE, FALSE, 0);
gtk_widget_show_all (GTK_DIALOG(dialog)->vbox);
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to