Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=gfpm.git;a=commitdiff;h=35cd4522f476316ea79899522f4bf4c846ae41f9
commit 35cd4522f476316ea79899522f4bf4c846ae41f9 Author: Priyank <priy...@frugalware.org> Date: Wed Feb 4 14:15:13 2009 +0530 Simplified (un)compressed size columns hide/show logic * documented functions in gfpm-interface.h diff --git a/src/gfpm-interface.c b/src/gfpm-interface.c index 4c177cd..ecf0059 100644 --- a/src/gfpm-interface.c +++ b/src/gfpm-interface.c @@ -69,6 +69,16 @@ GtkWidget *gfpm_pkgs_tvw = NULL; /* indicates that the repos were initied atleast once */ gboolean init = FALSE; +enum gfpm_cols { + COL_PKG_STATUS, + COL_PKG_ICON, + COL_PKG_NAME, + COL_PKG_VER_INSTALLED, + COL_PKG_VER_LATEST, + COL_PKG_SIZE_COMPRESSED, + COL_PKG_SIZE_UNCOMPRESSED +}; + static GtkWidget *gfpm_statusbar = NULL; static GtkWidget *gfpm_groups_tvw = NULL; static GtkWidget *gfpm_info_tvw = NULL; @@ -86,6 +96,8 @@ static GtkWidget *gfpm_apply_inst_dwocheck; static GtkWidget *gfpm_apply_rem_depcheck; static GtkWidget *gfpm_search_combo; static GtkWidget *gfpm_repos_combo; +static GtkWidget *gfpm_compressed_size_col; +static GtkWidget *gfpm_uncompressed_size_col; static guint gfpm_populate_repos_combobox (GtkComboBox *combo); static void cb_gfpm_repos_combo_changed (GtkComboBox *combo, gpointer data); @@ -187,28 +199,23 @@ gfpm_get_widget (const char *wname) void gfpm_setup_pkgs_tvw (void) { - guint cols = 5; + guint cols = 7; gboolean show_compressed = FALSE; gboolean show_uncompressed = FALSE; GtkListStore *store = NULL; GtkTreeViewColumn *column = NULL; GtkCellRenderer *renderer = NULL; - gboolean flag = FALSE; GList *columns = NULL; if (gfpm_config_get_value_bool("show_compressed_size")) { show_compressed = TRUE; - cols++; } if (gfpm_config_get_value_bool("show_uncompressed_size")) { show_uncompressed = TRUE; - cols++; } - if (show_compressed && show_uncompressed) - { - store = gtk_list_store_new (cols, + store = gtk_list_store_new (cols, G_TYPE_BOOLEAN, /* Install status */ GDK_TYPE_PIXBUF, /* Status icon */ G_TYPE_STRING, /* Package name */ @@ -216,49 +223,13 @@ gfpm_setup_pkgs_tvw (void) G_TYPE_STRING, /* Latest version */ G_TYPE_STRING, /* Compressed size */ G_TYPE_STRING); /* Uncompressed size */ - flag = TRUE; - } - else - if (show_compressed || show_uncompressed) - { - if (!flag) - { - store = gtk_list_store_new (cols, - G_TYPE_BOOLEAN, /* Install status */ - GDK_TYPE_PIXBUF, /* Status icon */ - G_TYPE_STRING, /* Package name */ - G_TYPE_STRING, /* Installed version */ - G_TYPE_STRING, /* Latest version */ - G_TYPE_STRING); /* (Un)Compressed size */ - } - } - else - { - store = gtk_list_store_new (cols, - G_TYPE_BOOLEAN, /* Install status */ - GDK_TYPE_PIXBUF, /* Status icon */ - G_TYPE_STRING, /* Package name */ - G_TYPE_STRING, /* Installed version */ - G_TYPE_STRING); /* Latest version */ - } - - /* reset previous columns */ - /* TODO: Fix a memleak here */ - gtk_list_store_clear (GTK_LIST_STORE(gtk_tree_view_get_model(gfpm_pkgs_tvw))); - columns = gtk_tree_view_get_columns (GTK_TREE_VIEW(gfpm_pkgs_tvw)); - while (columns != NULL) - { - column = columns->data; - gtk_tree_view_remove_column (GTK_TREE_VIEW(gfpm_pkgs_tvw), GTK_TREE_VIEW_COLUMN(column)); - columns = g_list_next (columns); - } renderer = gtk_cell_renderer_toggle_new (); g_object_set (G_OBJECT(renderer), "activatable", TRUE, NULL); g_signal_connect (renderer, "toggled", G_CALLBACK(cb_gfpm_pkg_selection_toggled), store); column = gtk_tree_view_column_new_with_attributes (_("S"), renderer, - "active", 0, + "active", COL_PKG_STATUS, NULL); gtk_tree_view_column_set_resizable (column, FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW(gfpm_pkgs_tvw), column); @@ -266,7 +237,7 @@ gfpm_setup_pkgs_tvw (void) renderer = gtk_cell_renderer_pixbuf_new (); column = gtk_tree_view_column_new_with_attributes (_("Status"), renderer, - "pixbuf", 1, + "pixbuf", COL_PKG_ICON, NULL); gtk_tree_view_column_set_resizable (column, FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW(gfpm_pkgs_tvw), column); @@ -274,18 +245,18 @@ gfpm_setup_pkgs_tvw (void) renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (_("Package Name"), renderer, - "text", 2, + "text", COL_PKG_NAME, NULL); gtk_tree_view_column_set_resizable (column, FALSE); gtk_tree_view_column_set_expand (column, TRUE); gtk_tree_view_column_set_min_width (column, 140); gtk_tree_view_append_column (GTK_TREE_VIEW(gfpm_pkgs_tvw), column); - gtk_tree_view_column_set_sort_column_id (column, 2); + gtk_tree_view_column_set_sort_column_id (column, COL_PKG_NAME); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (_("Installed Version"), renderer, - "text", 3, + "text", COL_PKG_VER_INSTALLED, NULL); gtk_tree_view_column_set_resizable (column, FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW(gfpm_pkgs_tvw), column); @@ -293,33 +264,32 @@ gfpm_setup_pkgs_tvw (void) renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (_("Latest Version"), renderer, - "text", 4, + "text", COL_PKG_VER_LATEST, + NULL); + gtk_tree_view_column_set_resizable (column, FALSE); + gtk_tree_view_append_column (GTK_TREE_VIEW(gfpm_pkgs_tvw), column); + + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes (_("Compressed Size"), + renderer, + "text", COL_PKG_SIZE_COMPRESSED, NULL); gtk_tree_view_column_set_resizable (column, FALSE); + gtk_tree_view_column_set_sort_column_id (column, COL_PKG_SIZE_COMPRESSED); gtk_tree_view_append_column (GTK_TREE_VIEW(gfpm_pkgs_tvw), column); + gfpm_compressed_size_col = column; + gfpm_pkgs_show_compressed_size (show_compressed); - if (show_compressed) - { - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes (_("Compressed Size"), - renderer, - "text", 5, - NULL); - gtk_tree_view_column_set_resizable (column, FALSE); - gtk_tree_view_column_set_sort_column_id (column, 5); - gtk_tree_view_append_column (GTK_TREE_VIEW(gfpm_pkgs_tvw), column); - } - if (show_uncompressed) - { - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes (_("Uncompressed Size"), - renderer, - "text", (show_compressed)?6:5, - NULL); - gtk_tree_view_column_set_resizable (column, FALSE); - gtk_tree_view_column_set_sort_column_id (column, (show_compressed)?6:5); - gtk_tree_view_append_column (GTK_TREE_VIEW(gfpm_pkgs_tvw), column); - } + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes (_("Uncompressed Size"), + renderer, + "text", COL_PKG_SIZE_UNCOMPRESSED, + NULL); + gtk_tree_view_column_set_resizable (column, FALSE); +// gtk_tree_view_column_set_sort_column_id (column, (show_compressed)?6:5); + gtk_tree_view_append_column (GTK_TREE_VIEW(gfpm_pkgs_tvw), column); + gfpm_uncompressed_size_col = column; + gfpm_pkgs_show_uncompressed_size (show_uncompressed); gtk_tree_view_set_model (GTK_TREE_VIEW(gfpm_pkgs_tvw), GTK_TREE_MODEL(store)); @@ -800,24 +770,21 @@ gfpm_load_pkgs_tvw (const char *group_name) -1); } pm_pkg = pacman_db_readpkg (sync_db, g_strstrip((char*)pacman_list_getdata(i))); - if (show_compressed) - { - size = (float)((long)pacman_pkg_getinfo (pm_pkg, PM_PKG_SIZE)/1024)/1024; - asprintf (&tmp, "%0.2f MB", size); - gtk_list_store_set (GTK_LIST_STORE(model), &iter, - 5, tmp, - -1); - g_free (tmp); - } - if (show_uncompressed) - { - size = (float)((long)pacman_pkg_getinfo (pm_pkg, PM_PKG_USIZE)/1024)/1024, - asprintf (&tmp, "%0.2f MB", size); - gtk_list_store_set (GTK_LIST_STORE(model), &iter, - (show_compressed)?6:5, tmp, + + size = (float)((long)pacman_pkg_getinfo (pm_pkg, PM_PKG_SIZE)/1024)/1024; + asprintf (&tmp, "%0.2f MB", size); + gtk_list_store_set (GTK_LIST_STORE(model), &iter, + COL_PKG_SIZE_COMPRESSED, tmp, -1); - g_free (tmp); - } + g_free (tmp); + + size = (float)((long)pacman_pkg_getinfo (pm_pkg, PM_PKG_USIZE)/1024)/1024, + asprintf (&tmp, "%0.2f MB", size); + gtk_list_store_set (GTK_LIST_STORE(model), &iter, + COL_PKG_SIZE_UNCOMPRESSED, tmp, + -1); + g_free (tmp); + pacman_pkg_free (pm_pkg); pacman_pkg_free (pm_lpkg); while (gtk_events_pending()) gtk_main_iteration (); @@ -1334,6 +1301,20 @@ gfpm_trans_commit (PM_LIST **list) } } +void +gfpm_pkgs_show_compressed_size (gboolean check) +{ + gtk_tree_view_column_set_visible (GTK_TREE_VIEW_COLUMN(gfpm_compressed_size_col), + check); +} + +void +gfpm_pkgs_show_uncompressed_size (gboolean check) +{ + gtk_tree_view_column_set_visible (GTK_TREE_VIEW_COLUMN(gfpm_uncompressed_size_col), + check); +} + /* CALLBACKS */ static void diff --git a/src/gfpm-interface.h b/src/gfpm-interface.h index b9c485b..f5dbd5f 100644 --- a/src/gfpm-interface.h +++ b/src/gfpm-interface.h @@ -10,16 +10,43 @@ #include <gtk/gtk.h> #include "gfpm.h" +/* a wrapper for glade_xml_get_widget(xml,"foo") */ GtkWidget * gfpm_get_widget (const char *); + +/* Initialize gfpm interface. Call this function before any other interface functions */ +void gfpm_interface_init (void); + +/* update status */ void gfpm_update_status (const char *); + +/* setup repository combobox */ +void gfpm_interface_setup_repo_combos (void); + +/* setup gfpm's package treeview */ void gfpm_setup_pkgs_tvw (void); + +/* populate gfpm's group treeview for a specified repo */ void gfpm_load_groups_tvw (const char *); + +/* populate gfpm's package treeview for a specified group */ void gfpm_load_pkgs_tvw (const char *); + +/* populate gfpm's info treeview for a specified package */ void gfpm_load_info_tvw (const char *); + +/* populate files textview for a specied package */ void gfpm_load_files_txtvw (const char *, gboolean); + +/* populate changelog textview for a specied package */ void gfpm_load_changelog_txtvw (const char *, gboolean); -void gfpm_interface_init (void); -void gfpm_interface_setup_repo_combos (void); + +/* apply button callback. this is public because it's been shared by other components */ void cb_gfpm_apply_btn_clicked (GtkButton *, gpointer); +/* show/hide 'compressed size' column in package treeview */ +void gfpm_pkgs_show_compressed_size (gboolean check); + +/* show/hide 'uncompressed size' column in package treeview */ +void gfpm_pkgs_show_uncompressed_size (gboolean check); + #endif diff --git a/src/gfpm-prefs.c b/src/gfpm-prefs.c index b53400f..eb09e14 100644 --- a/src/gfpm-prefs.c +++ b/src/gfpm-prefs.c @@ -551,10 +551,7 @@ cb_gfpm_prefs_compressed_size_toggled (GtkToggleButton *button, gpointer data) /* write settings to config file */ gfpm_config_set_value_bool ("show_compressed_size", check); gfpm_config_save (); - - /* re-set package view */ - gfpm_setup_pkgs_tvw (); - gfpm_load_pkgs_tvw (current_group); + gfpm_pkgs_show_compressed_size (check); return; } @@ -569,10 +566,7 @@ cb_gfpm_prefs_uncompressed_size_toggled (GtkToggleButton *button, gpointer data) /* write settings to config file */ gfpm_config_set_value_bool ("show_uncompressed_size", check); gfpm_config_save (); - - /* re-set package view */ - gfpm_setup_pkgs_tvw (); - gfpm_load_pkgs_tvw (current_group); + gfpm_pkgs_show_uncompressed_size (check); return; } _______________________________________________ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git