[PVFS2-CVS]
commit by rbross in pvfs2/src/apps/karma: details.c karma.h status.c
CVS commit program
cvs at parl.clemson.edu
Thu Feb 12 14:24:49 EST 2004
Update of /projects/cvsroot/pvfs2/src/apps/karma
In directory parlweb:/tmp/cvs-serv10093/src/apps/karma
Modified Files:
details.c karma.h status.c
Log Message:
Nice server detail popup on double-click of status bar.
Index: details.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/apps/karma/details.c,v
diff -p -u -r1.13 -r1.14
--- details.c 12 Feb 2004 18:58:32 -0000 1.13
+++ details.c 12 Feb 2004 19:24:49 -0000 1.14
@@ -8,35 +8,23 @@
#define GUI_DETAILS_ENABLE_SORTING
-/* values used for column names; don't mess with these indescriminately */
-enum {
- GUI_DETAILS_NAME = 0,
- GUI_DETAILS_RAM_TOT,
- GUI_DETAILS_RAM_AVAIL,
- GUI_DETAILS_UPTIME,
- GUI_DETAILS_HANDLES_TOT,
- GUI_DETAILS_HANDLES_AVAIL,
- GUI_DETAILS_SPACE_TOT,
- GUI_DETAILS_SPACE_AVAIL,
- GUI_DETAILS_TYPE
-};
-
-char *column_name[] = { "Server Address (BMI)",
- "Total RAM",
- "Available RAM",
- "Uptime",
- "Total Handles",
- "Available Handles",
- "Total Space",
- "Available Space",
- "Type of Service" };
-
static int gui_details_initialized = 0;
static GtkListStore *gui_details_list = NULL;
static GtkWidget *gui_details_view = NULL;
static GtkTreeViewColumn *gui_details_col[GUI_DETAILS_TYPE + 1];
+/* THESE MUST MATCH WITH ENUM IN KARMA.H! */
+static char *gui_details_column_name[] = { "Server Address (BMI)",
+ "Total RAM",
+ "Available RAM",
+ "Uptime",
+ "Total Handles",
+ "Available Handles",
+ "Total Space",
+ "Available Space",
+ "Type of Service" };
+
#ifdef GUI_DETAILS_ENABLE_SORTING
static gint gui_details_float_string_compare(GtkTreeModel *model,
GtkTreeIter *iter_a,
@@ -109,7 +97,7 @@ GtkWidget *gui_details_view_new(GtkListS
GtkCellRenderer *renderer;
col[i] = gtk_tree_view_column_new();
- gtk_tree_view_column_set_title(col[i], column_name[i]);
+ gtk_tree_view_column_set_title(col[i], gui_details_column_name[i]);
gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), col[i]);
renderer = gtk_cell_renderer_text_new();
@@ -158,6 +146,11 @@ GtkWidget *gui_details_view_new(GtkListS
return list_view;
}
+/* gui_details_update()
+ *
+ * Now just a wrapper for gui_details_view_fill(), used for
+ * setting up the details page.
+ */
void gui_details_update(struct PVFS_mgmt_server_stat *s_stat,
int s_stat_ct)
{
@@ -232,38 +225,38 @@ void gui_details_view_fill(GtkWidget *vi
/* update column titles */
snprintf(titlebuf, sizeof(titlebuf), "%s (%s)",
- column_name[GUI_DETAILS_RAM_TOT], rt_units);
- gtk_tree_view_column_set_title(gui_details_col[GUI_DETAILS_RAM_TOT],
+ gui_details_column_name[GUI_DETAILS_RAM_TOT], rt_units);
+ gtk_tree_view_column_set_title(col[GUI_DETAILS_RAM_TOT],
titlebuf);
snprintf(titlebuf, sizeof(titlebuf), "%s (%s)",
- column_name[GUI_DETAILS_RAM_AVAIL], ra_units);
- gtk_tree_view_column_set_title(gui_details_col[GUI_DETAILS_RAM_AVAIL],
+ gui_details_column_name[GUI_DETAILS_RAM_AVAIL], ra_units);
+ gtk_tree_view_column_set_title(col[GUI_DETAILS_RAM_AVAIL],
titlebuf);
snprintf(titlebuf, sizeof(titlebuf), "%s (%s)",
- column_name[GUI_DETAILS_UPTIME], up_units);
- gtk_tree_view_column_set_title(gui_details_col[GUI_DETAILS_UPTIME],
+ gui_details_column_name[GUI_DETAILS_UPTIME], up_units);
+ gtk_tree_view_column_set_title(col[GUI_DETAILS_UPTIME],
titlebuf);
snprintf(titlebuf, sizeof(titlebuf), "%s (%s)",
- column_name[GUI_DETAILS_HANDLES_TOT], ht_units);
- gtk_tree_view_column_set_title(gui_details_col[GUI_DETAILS_HANDLES_TOT],
+ gui_details_column_name[GUI_DETAILS_HANDLES_TOT], ht_units);
+ gtk_tree_view_column_set_title(col[GUI_DETAILS_HANDLES_TOT],
titlebuf);
snprintf(titlebuf, sizeof(titlebuf), "%s (%s)",
- column_name[GUI_DETAILS_HANDLES_AVAIL], ha_units);
- gtk_tree_view_column_set_title(gui_details_col[GUI_DETAILS_HANDLES_AVAIL],
+ gui_details_column_name[GUI_DETAILS_HANDLES_AVAIL], ha_units);
+ gtk_tree_view_column_set_title(col[GUI_DETAILS_HANDLES_AVAIL],
titlebuf);
snprintf(titlebuf, sizeof(titlebuf), "%s (%s)",
- column_name[GUI_DETAILS_SPACE_TOT], bt_units);
- gtk_tree_view_column_set_title(gui_details_col[GUI_DETAILS_SPACE_TOT],
+ gui_details_column_name[GUI_DETAILS_SPACE_TOT], bt_units);
+ gtk_tree_view_column_set_title(col[GUI_DETAILS_SPACE_TOT],
titlebuf);
snprintf(titlebuf, sizeof(titlebuf), "%s (%s)",
- column_name[GUI_DETAILS_SPACE_AVAIL], ba_units);
- gtk_tree_view_column_set_title(gui_details_col[GUI_DETAILS_SPACE_AVAIL],
+ gui_details_column_name[GUI_DETAILS_SPACE_AVAIL], ba_units);
+ gtk_tree_view_column_set_title(col[GUI_DETAILS_SPACE_AVAIL],
titlebuf);
/* update table of data */
@@ -276,19 +269,38 @@ void gui_details_view_fill(GtkWidget *vi
/* just clear out the list and then refill it */
gtk_list_store_clear(list);
- for (i=0; i < s_stat_ct; i++) {
- gui_details_view_insert(list,
- &s_stat[i],
- rt_div,
- ra_div,
- up_div,
- ht_div,
- ha_div,
- bt_div,
- ba_div);
+ if (server_list == NULL) {
+ for (i=0; i < s_stat_ct; i++) {
+ gui_details_view_insert(list,
+ &s_stat[i],
+ rt_div,
+ ra_div,
+ up_div,
+ ht_div,
+ ha_div,
+ bt_div,
+ ba_div);
+ }
+ }
+ else {
+ i = 0;
+ while (server_list[i] >= 0) {
+ assert(server_list[i] < s_stat_ct);
+
+ gui_details_view_insert(list,
+ &s_stat[server_list[i]],
+ rt_div,
+ ra_div,
+ up_div,
+ ht_div,
+ ha_div,
+ bt_div,
+ ba_div);
+ i++;
+ }
}
- /* reattach model to view */
+ /* reattach model to view; remove our reference */
gtk_tree_view_set_model(GTK_TREE_VIEW(view), model);
g_object_unref(model);
}
Index: karma.h
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/apps/karma/karma.h,v
diff -p -u -r1.10 -r1.11
--- karma.h 12 Feb 2004 18:47:36 -0000 1.10
+++ karma.h 12 Feb 2004 19:24:49 -0000 1.11
@@ -1,3 +1,7 @@
+#ifndef KARMA_H
+#define KARMA_H
+
+
#include <gtk/gtk.h>
#include "pvfs2.h"
@@ -94,6 +98,19 @@ GtkWidget *gui_details_setup(void);
void gui_details_update(struct PVFS_mgmt_server_stat *s_stat,
int s_stat_ct);
+/* values used for details column names; don't mess with indescriminately */
+enum {
+ GUI_DETAILS_NAME = 0,
+ GUI_DETAILS_RAM_TOT,
+ GUI_DETAILS_RAM_AVAIL,
+ GUI_DETAILS_UPTIME,
+ GUI_DETAILS_HANDLES_TOT,
+ GUI_DETAILS_HANDLES_AVAIL,
+ GUI_DETAILS_SPACE_TOT,
+ GUI_DETAILS_SPACE_AVAIL,
+ GUI_DETAILS_TYPE
+};
+
/* details view functions (details.c) - more generic */
void gui_details_view_fill(GtkWidget *view,
GtkListStore *list,
@@ -136,3 +153,4 @@ char *gui_units_size(PVFS_size size_byte
char *gui_units_count(uint64_t count, float *divisor);
char *gui_units_ops(PVFS_size ops, float *divisor);
+#endif /* KARMA_H */
Index: status.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/apps/karma/status.c,v
diff -p -u -r1.3 -r1.4
--- status.c 12 Feb 2004 18:32:29 -0000 1.3
+++ status.c 12 Feb 2004 19:24:49 -0000 1.4
@@ -73,6 +73,7 @@ static gint gui_status_graph_button_pres
gpointer graph_state_ptr);
static void gui_status_server_popup(struct PVFS_mgmt_server_stat *svr_stat,
+ int svr_stat_ct,
int svr_index);
/* gui_status_setup()
@@ -549,16 +550,19 @@ static gint gui_status_graph_button_pres
/* if # of servers just changed, just ignore the click for now */
if (svr_stat_ct != g_state->nr_bars) return 0;
- gui_status_server_popup(svr_stat, i);
+ gui_status_server_popup(svr_stat, svr_stat_ct, i);
return 0;
}
static void gui_status_server_popup(struct PVFS_mgmt_server_stat *svr_stat,
+ int svr_stat_ct,
int svr_index)
{
- GtkWidget *dialog, *label, *frame, *table;
- char buf[64];
+ GtkWidget *dialog, *view;
+ GtkListStore *list;
+ GtkTreeViewColumn *col[GUI_DETAILS_TYPE+1];
+ int svr_list[2];
dialog = gtk_dialog_new_with_buttons("Server Details",
GTK_WINDOW(main_window),
@@ -571,36 +575,25 @@ static void gui_status_server_popup(stru
G_CALLBACK(gtk_widget_destroy),
GTK_OBJECT(dialog));
- /* format data for presentation */
- frame = gtk_frame_new(svr_stat[svr_index].bmi_address);
- gtk_frame_set_label_align(GTK_FRAME(frame), 0.0, 0.0);
-
- table = gtk_table_new(2, 5, 1);
- gtk_container_add(GTK_CONTAINER(frame), table);
+ /* create contents of popup */
+ view = gui_details_view_new(&list, col, 0);
+
+ svr_list[0] = svr_index;
+ svr_list[1] = -1;
+
+ gui_details_view_fill(view,
+ list,
+ col,
+ svr_stat,
+ svr_stat_ct,
+ svr_list);
- label = gtk_label_new("Space Available/Total:");
- gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT);
- gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
-
- label = gtk_label_new("Memory Available/Total:");
- gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT);
- gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
-
- label = gtk_label_new("Handles Available/Total:");
- gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT);
- gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 2, 3);
-
- label = gtk_label_new("Uptime:");
- gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT);
- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4,
- 0, GTK_FILL|GTK_EXPAND, 0, 0);
-
- label = gtk_label_new("Server Type:");
- gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT);
- gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 4, 5);
+ /* unref list so it will be freed when view is destroyed */
+ g_object_unref(list);
+ /* drop contents into popup; display */
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox),
- frame);
+ view);
gtk_widget_show_all(dialog);
return;
More information about the PVFS2-CVS
mailing list