From c57476deb6d10a9d57560d9daf76e739ba800632 Mon Sep 17 00:00:00 2001
From: Danny Auble <da@llnl.gov>
Date: Wed, 30 Aug 2006 16:35:21 +0000
Subject: [PATCH] display message about what was updated

---
 src/sview/common.c    | 39 +++++++++++++++++++++++++++------------
 src/sview/node_info.c | 14 +++++++++-----
 src/sview/part_info.c | 20 +++++++++++++++++++-
 src/sview/sview.c     | 13 +++++++++----
 src/sview/sview.h     |  8 ++++++++
 5 files changed, 72 insertions(+), 22 deletions(-)

diff --git a/src/sview/common.c b/src/sview/common.c
index 93a7075760e..fd7864a4463 100644
--- a/src/sview/common.c
+++ b/src/sview/common.c
@@ -120,6 +120,17 @@ static void _editing_canceled(GtkCellRenderer *cell,
 
 }
 
+static void *_editing_thr(void *arg)
+{
+	sleep(5);
+	gdk_threads_enter();
+	gtk_statusbar_pop(GTK_STATUSBAR(main_statusbar), STATUS_ADMIN_EDIT);
+	gdk_flush();
+	gdk_threads_leave();
+	return NULL;	
+}
+
+
 static void _add_col_to_treeview(GtkTreeView *tree_view, 
 				 display_data_t *display_data)
 {
@@ -823,7 +834,6 @@ extern char *get_reason()
 		GTK_STOCK_CANCEL,
 		GTK_RESPONSE_CANCEL,
 		NULL);
-	//GError *error = NULL;
 	int response = 0;
 	char *user_name = NULL;
 	char time_buf[64], time_str[32];
@@ -856,20 +866,25 @@ extern char *get_reason()
 		slurm_make_time_str(&now, time_str, sizeof(time_str));
 		snprintf(time_buf, sizeof(time_buf), "@%s]", time_str); 
 		xstrcat(reason_str, time_buf);
-		/* maybe later we will update the status bar */
-		/* temp = g_strdup_printf("Refresh Interval set to %d seconds.", */
-/* 				       global_sleep_time); */
-/* 		gtk_statusbar_push(GTK_STATUSBAR(main_statusbar), 1, */
-/* 				   temp); */
-/* 		g_free(temp); */
-/* 		if (!g_thread_create(_refresh_thr, NULL, FALSE, &error)) */
-/* 		{ */
-/* 			g_printerr ("Failed to create refresh thread: %s\n",  */
-/* 				    error->message); */
-/* 		} */
 	}
 
 	gtk_widget_destroy(popup);	
 	
 	return reason_str;
 }
+
+extern void display_edit_note(char *edit_note)
+{
+	GError *error = NULL;
+	
+	gtk_statusbar_pop(GTK_STATUSBAR(main_statusbar), STATUS_ADMIN_EDIT);
+	gtk_statusbar_push(GTK_STATUSBAR(main_statusbar), STATUS_ADMIN_EDIT,
+			   edit_note);
+		
+	if (!g_thread_create(_editing_thr, NULL, FALSE, &error))
+	{
+		g_printerr ("Failed to create edit thread: %s\n",
+			    error->message);
+	}
+	return;
+}
diff --git a/src/sview/node_info.c b/src/sview/node_info.c
index ad85db0d2b3..e8fe99a5cae 100644
--- a/src/sview/node_info.c
+++ b/src/sview/node_info.c
@@ -343,12 +343,16 @@ extern int update_state_node(GtkTreeStore *treestore, GtkTreeIter *iter,
 	}
 	node_msg->node_state = (uint16_t)state;
 	
-	rc = slurm_update_node(node_msg);
+	if(slurm_update_node(node_msg) == SLURM_SUCCESS) {
+	       	gtk_tree_store_set(treestore, iter, text_column, new_text,
+				   num_column,	state, -1);
+		upper = g_strdup_printf("Node(s) %s state changed to %s",
+					node_msg->node_names,
+					new_text);
+		display_edit_note(upper);
+		g_free(upper);
+	}
 	xfree(node_msg->reason);
-	if(rc != SLURM_SUCCESS)
-		return rc;
-	gtk_tree_store_set(treestore, iter, text_column, new_text,
-			   num_column,	state, -1);
 	return rc;
 }
 			
diff --git a/src/sview/part_info.c b/src/sview/part_info.c
index 5f952513e9a..37f46558423 100644
--- a/src/sview/part_info.c
+++ b/src/sview/part_info.c
@@ -1034,6 +1034,7 @@ extern void admin_edit_part(GtkCellRendererText *cell,
 	update_part_msg_t part_msg;
 	
 	char *temp = NULL;
+	char *type = NULL;
 	int column = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cell), 
 						       "column"));
 	gtk_tree_model_get_iter(GTK_TREE_MODEL(treestore), &iter, path);
@@ -1054,6 +1055,7 @@ extern void admin_edit_part(GtkCellRendererText *cell,
 			part_msg.default_part = 0;
 			temp = "";
 		}
+		type = "default";
 		break;
 	case SORTID_HIDDEN:
 		if (!strcasecmp(new_text, "yes")) {
@@ -1063,6 +1065,7 @@ extern void admin_edit_part(GtkCellRendererText *cell,
 			part_msg.hidden = 0;
 			temp = "";
 		}
+		type = "hidden";
 		break;
 	case SORTID_MIN_NODES:
 		if (!strcasecmp(new_text, "infinite")) {
@@ -1071,6 +1074,7 @@ extern void admin_edit_part(GtkCellRendererText *cell,
 			part_msg.min_nodes = 
 				(uint32_t)strtol(new_text, (char **)NULL, 10);
 		}
+		type = "min_nodes";
 		break;
 	case SORTID_MAX_NODES:
 		if (!strcasecmp(new_text, "infinite")) {
@@ -1079,6 +1083,7 @@ extern void admin_edit_part(GtkCellRendererText *cell,
 			part_msg.max_nodes = 
 				(uint32_t)strtol(new_text, (char **)NULL, 10);
 		}
+		type = "max_nodes";
 		break;
 	case SORTID_ROOT:
 		if (!strcasecmp(new_text, "yes")) {
@@ -1087,6 +1092,7 @@ extern void admin_edit_part(GtkCellRendererText *cell,
 			part_msg.default_part = 0;
 		}
 		temp = (char *)new_text;
+		type = "root";
 		break;
 	case SORTID_SHARE:
 		if (!strcasecmp(new_text, "yes")) {
@@ -1096,10 +1102,13 @@ extern void admin_edit_part(GtkCellRendererText *cell,
 		} else {
 			part_msg.default_part = SHARED_FORCE;
 		}
+		type = "share";
 		break;
 	case SORTID_GROUPS:
+		type = "groups";
 		break;
 	case SORTID_NODELIST:
+		type = "nodelist";
 		break;
 	case SORTID_AVAIL:
 		slurm_init_part_desc_msg(&part_msg);
@@ -1111,6 +1120,7 @@ extern void admin_edit_part(GtkCellRendererText *cell,
 		else
 			part_msg.state_up = 0;
 		temp = (char *)new_text;
+		type = "availability";
 		break;
 	case SORTID_STATE:
 		gtk_tree_model_get(GTK_TREE_MODEL(treestore), &iter, 
@@ -1124,8 +1134,16 @@ extern void admin_edit_part(GtkCellRendererText *cell,
 	}
 
 	if(column != SORTID_STATE) {
-		if(slurm_update_partition(&part_msg) == SLURM_SUCCESS)
+		if(slurm_update_partition(&part_msg) == SLURM_SUCCESS) {
 			gtk_tree_store_set(treestore, &iter, column, temp, -1);
+			temp = g_strdup_printf("Partition %s %s changed to %s",
+					       part_msg.name,
+					       type,
+					       new_text);
+			display_edit_note(temp);
+			g_free(temp);
+		}
+		g_free(part_msg.name);
 		
 	}
 
diff --git a/src/sview/sview.c b/src/sview/sview.c
index 5191076187a..009ceb1409c 100644
--- a/src/sview/sview.c
+++ b/src/sview/sview.c
@@ -114,7 +114,7 @@ void *_refresh_thr(void *arg)
 {
 	sleep(5);
 	gdk_threads_enter();
-	gtk_statusbar_pop(GTK_STATUSBAR(main_statusbar), 1);
+	gtk_statusbar_pop(GTK_STATUSBAR(main_statusbar), STATUS_REFRESH);
 	gdk_flush();
 	gdk_threads_leave();
 	return NULL;	
@@ -185,10 +185,12 @@ static void _set_admin_mode(GtkToggleAction *action)
 {
 	if(admin_mode) {
 		admin_mode = FALSE;
-		gtk_statusbar_pop(GTK_STATUSBAR(main_statusbar), 0);
+		gtk_statusbar_pop(GTK_STATUSBAR(main_statusbar), 
+				  STATUS_ADMIN_MODE);
 	} else {
 		admin_mode = TRUE;
-		gtk_statusbar_push(GTK_STATUSBAR(main_statusbar), 0,
+		gtk_statusbar_push(GTK_STATUSBAR(main_statusbar), 
+				   STATUS_ADMIN_MODE,
 				   "Admin mode activated! "
 				   "Think before you alter anything.");
 	}
@@ -234,7 +236,10 @@ static void _change_refresh(GtkToggleAction *action, gpointer user_data)
 			gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin_button));
 		temp = g_strdup_printf("Refresh Interval set to %d seconds.",
 				       global_sleep_time);
-		gtk_statusbar_push(GTK_STATUSBAR(main_statusbar), 1,
+		gtk_statusbar_pop(GTK_STATUSBAR(main_statusbar), 
+				  STATUS_REFRESH);
+		gtk_statusbar_push(GTK_STATUSBAR(main_statusbar), 
+				   STATUS_REFRESH,
 				   temp);
 		g_free(temp);
 		if (!g_thread_create(_refresh_thr, NULL, FALSE, &error))
diff --git a/src/sview/sview.h b/src/sview/sview.h
index be2e5ee5898..e38e42bd986 100644
--- a/src/sview/sview.h
+++ b/src/sview/sview.h
@@ -91,6 +91,11 @@ enum { ERROR_VIEW,
        INFO_VIEW
 };
 
+enum { STATUS_ADMIN_MODE,
+       STATUS_REFRESH,
+       STATUS_ADMIN_EDIT
+};
+
 /* Input parameters */
 typedef struct {
 	bool all_flag;
@@ -176,6 +181,7 @@ extern bool force_refresh;
 extern List popup_list;
 extern int global_sleep_time;
 extern bool admin_mode;
+extern GtkWidget *main_statusbar;
 extern GtkWidget *main_window;
 extern GStaticMutex sview_mutex;	
 
@@ -294,4 +300,6 @@ extern GtkWidget *create_pulldown_combo(display_data_t *display_data,
 					int count);
 extern char *str_tolower(char *upper_str);
 extern char *get_reason();
+extern void display_edit_note(char *edit_note);
+
 #endif
-- 
GitLab