[Frugalware-git] gfpm: gfpm-messages: new function
gfpm_plist_message()
Priyank
priyank at frugalware.org
Sat Jul 28 15:27:32 CEST 2007
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=gfpm/.git;a=commitdiff;h=b61331c562303c5df8949546c7174e1648243ab7
commit b61331c562303c5df8949546c7174e1648243ab7
Author: Priyank <priyank at frugalware.org>
Date: Sat Jul 28 18:57:07 2007 +0530
gfpm-messages: new function gfpm_plist_message()
* Fixed a runtime warning in gfpm_plist_question()
* Fixed a big memory leak in gfpm_plist_question()
diff --git a/src/gfpm-messages.c b/src/gfpm-messages.c
index 0f26443..4684af1 100644
--- a/src/gfpm-messages.c
+++ b/src/gfpm-messages.c
@@ -84,15 +84,68 @@ gfpm_question (const char *message_str)
gint
gfpm_plist_question (const char *main_msg, PM_LIST *packages)
{
- GtkWidget *dialog;
- GtkListStore *store;
- GtkScrolledWindow *swindow;
- GtkCellRenderer *r;
- GtkTreeIter iter;
- GtkWidget *tvw;
- GtkWidget *lbl;
- gint ret;
- PM_LIST *l;
+ GtkWidget *dialog;
+ GtkListStore *store;
+ GtkScrolledWindow *swindow;
+ GtkCellRenderer *r;
+ GtkTreeIter iter;
+ GtkWidget *tvw;
+ GtkWidget *lbl;
+ gint ret;
+ PM_LIST *l;
+
+ dialog = gtk_message_dialog_new (GTK_WINDOW(gfpm_mw),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_QUESTION,
+ GTK_BUTTONS_YES_NO,
+ "%s",
+ main_msg);
+ swindow = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (swindow, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+ tvw = gtk_tree_view_new ();
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(tvw), FALSE);
+ gtk_container_add (GTK_CONTAINER(swindow), tvw);
+ store = gtk_list_store_new (1, G_TYPE_STRING);
+ r = gtk_cell_renderer_text_new ();
+ gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW(tvw), -1, _("Package"), r, "text", 0, NULL);
+ for (l=pacman_list_first(packages);l;l=pacman_list_next(l))
+ {
+ char *pkgname, *pkgver;
+ char *pkgstring;
+ PM_SYNCPKG *sync = pacman_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);
+ 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_show (tvw);
+ gtk_box_pack_start (GTK_DIALOG(dialog)->vbox, swindow, FALSE, FALSE, 0);
+ gtk_widget_show_all (GTK_DIALOG(dialog)->vbox);
+ gtk_window_set_resizable (GTK_WINDOW(dialog), FALSE);
+ ret = gtk_dialog_run (GTK_DIALOG(dialog));
+ gtk_widget_destroy (dialog);
+
+ return ret;
+}
+
+gint
+gfpm_plist_message (const char *main_msg, PM_LIST *packages)
+{
+ GtkWidget *dialog;
+ GtkListStore *store;
+ GtkScrolledWindow *swindow;
+ GtkCellRenderer *r;
+ GtkTreeIter iter;
+ GtkWidget *tvw;
+ GtkWidget *lbl;
+ gint ret;
+ PM_LIST *l;
dialog = gtk_message_dialog_new (GTK_WINDOW(gfpm_mw),
GTK_DIALOG_DESTROY_WITH_PARENT,
@@ -111,13 +164,16 @@ gfpm_plist_question (const char *main_msg, PM_LIST *packages)
for (l=pacman_list_first(packages);l;l=pacman_list_next(l))
{
char *pkgname, *pkgver;
+ char *pkgstring;
PM_SYNCPKG *sync = pacman_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);
gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter, 0, g_strdup_printf("%s%s", pkgname, pkgver));
+ 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);
More information about the Frugalware-git
mailing list