diff --git a/src/sview/block_info.c b/src/sview/block_info.c index dcdc256f5b1863a9eafe395996045a1764ad657a..ce8c3433489436b89ace55b463aaf568fba5f0dd 100644 --- a/src/sview/block_info.c +++ b/src/sview/block_info.c @@ -61,6 +61,7 @@ enum { SORTID_USE, SORTID_NODES, SORTID_NODELIST, + SORTID_POINTER, SORTID_UPDATED, SORTID_CNT }; @@ -78,6 +79,7 @@ static display_data_t display_data_block[] = { {G_TYPE_STRING, SORTID_USE, "Node Use", TRUE, -1, refresh_block}, {G_TYPE_STRING, SORTID_NODES, "Nodes", TRUE, -1, refresh_block}, {G_TYPE_STRING, SORTID_NODELIST, "BP List", TRUE, -1, refresh_block}, + {G_TYPE_POINTER, SORTID_POINTER, NULL, FALSE, -1, refresh_block}, {G_TYPE_INT, SORTID_UPDATED, NULL, FALSE, -1, refresh_block}, {G_TYPE_NONE, -1, NULL, FALSE, -1} }; @@ -364,6 +366,7 @@ static void _update_block_record(db2_block_info_t *block_ptr, char tmp_cnt[7]; char tmp_nodes[30]; + gtk_tree_store_set(treestore, iter, SORTID_POINTER, block_ptr, -1); gtk_tree_store_set(treestore, iter, SORTID_BLOCK, block_ptr->bg_block_name, -1); gtk_tree_store_set(treestore, iter, SORTID_PARTITION, diff --git a/src/sview/common.c b/src/sview/common.c index 7a95ab798f2ba10872ae0c53fe19f8a2648a3f68..3492e8955f81b83998fab2e01f7a295abaa5e8c3 100644 --- a/src/sview/common.c +++ b/src/sview/common.c @@ -204,6 +204,25 @@ extern int get_row_number(GtkTreeView *tree_view, GtkTreePath *path) return line; } +extern void *get_pointer(GtkTreeView *tree_view, GtkTreePath *path, int loc) +{ + GtkTreeModel *model = gtk_tree_view_get_model(tree_view); + GtkTreeIter iter; + void *ptr = NULL; + + if(!model) { + g_error("error getting the model from the tree_view"); + return ptr; + } + + if (!gtk_tree_model_get_iter(model, &iter, path)) { + g_error("error getting iter from model"); + return ptr; + } + gtk_tree_model_get(model, &iter, loc, &ptr, -1); + return ptr; +} + extern void load_header(GtkTreeView *tree_view, display_data_t *display_data) { while(display_data++) { @@ -450,10 +469,6 @@ extern void row_clicked(GtkTreeView *tree_view, GdkEventButton *event, } else if(event->button == 3) { right_button_pressed(tree_view, path, event, display_data, ROW_CLICKED); - } else if(event->type==GDK_2BUTTON_PRESS || - event->type==GDK_3BUTTON_PRESS) { - (display_data->row_clicked)(tree_view, path, - NULL, display_data->user_data); } gtk_tree_path_free(path); } @@ -694,3 +709,4 @@ extern void remove_old(GtkTreeModel *model, int updated) } gtk_tree_path_free(path); } + diff --git a/src/sview/job_info.c b/src/sview/job_info.c index bce508db1758f30f2fb891167a509bfe777b883d..4be88d31a71d146ae42804feb3872f823de53962 100644 --- a/src/sview/job_info.c +++ b/src/sview/job_info.c @@ -38,10 +38,16 @@ typedef struct { job_step_info_response_msg_t *step_info_ptr; } job_and_step_info_t; +typedef struct { + int jobid; + int stepid; +} job_step_num_t; + enum { SORTID_POS = POS_LOC, SORTID_JOBID, + SORTID_ALLOC, SORTID_PARTITION, #ifdef HAVE_BG SORTID_BLOCK, @@ -72,6 +78,7 @@ enum { static display_data_t display_data_job[] = { {G_TYPE_INT, SORTID_POS, NULL, FALSE, -1, refresh_job}, {G_TYPE_INT, SORTID_JOBID, "JobID", TRUE, -1, refresh_job}, + {G_TYPE_INT, SORTID_ALLOC, NULL, FALSE, -1, refresh_job}, {G_TYPE_STRING, SORTID_PARTITION, "Partition", TRUE, -1, refresh_job}, #ifdef HAVE_BG {G_TYPE_STRING, SORTID_BLOCK, "BG Block", TRUE, -1, refresh_job}, @@ -117,6 +124,7 @@ static display_data_t display_data_job[] = { static display_data_t options_data_job[] = { {G_TYPE_INT, SORTID_POS, NULL, FALSE, -1}, + {G_TYPE_STRING, INFO_PAGE, "Full Info", TRUE, JOB_PAGE}, {G_TYPE_STRING, PART_PAGE, "Partition", TRUE, JOB_PAGE}, #ifdef HAVE_BG {G_TYPE_STRING, BLOCK_PAGE, "Blocks", TRUE, JOB_PAGE}, @@ -189,6 +197,7 @@ static void _update_job_record(job_info_t *job_ptr, if(!changed) goto update_steps; + gtk_tree_store_set(treestore, iter, SORTID_ALLOC, 1, -1); gtk_tree_store_set(treestore, iter, SORTID_JOBID, job_ptr->job_id, -1); gtk_tree_store_set(treestore, iter, @@ -296,6 +305,7 @@ static void _update_step_record(job_step_info_t *step_ptr, return; + gtk_tree_store_set(treestore, iter, SORTID_ALLOC, 0, -1); gtk_tree_store_set(treestore, iter, SORTID_JOBID, step_ptr->step_id, -1); gtk_tree_store_set(treestore, iter, @@ -343,7 +353,7 @@ static void _append_job_record(job_info_t *job_ptr, int line) { gtk_tree_store_append(treestore, iter, NULL); - gtk_tree_store_set(treestore, iter, SORTID_POS, line, -1); + gtk_tree_store_set(treestore, iter, SORTID_POS, line, -1); _update_job_record(job_ptr, step_info_ptr, treestore, iter, 1); } @@ -573,6 +583,84 @@ static void _update_info_job(job_info_msg_t *job_info_ptr, return; } +void _display_info_job(job_info_msg_t *job_info_ptr, + job_step_info_response_msg_t *step_info_ptr, + popup_info_t *popup_win) +{ + int i; + job_info_t job; + job_step_info_t step; + specific_info_t *spec_info = popup_win->spec_info; + job_step_num_t *job_step = (job_step_num_t *)spec_info->data; + char *info = NULL; + int found = 0; + char *not_found = NULL; + GtkWidget *label = NULL; + + if(!spec_info->data) { + info = xstrdup("No pointer given!"); + goto finished; + } + + if(spec_info->display_widget) { + not_found = + xstrdup(GTK_LABEL(spec_info->display_widget)->text); + gtk_widget_destroy(spec_info->display_widget); + spec_info->display_widget = NULL; + } + + if(job_step->stepid == NO_VAL) { + for (i = 0; i < job_info_ptr->record_count; i++) { + job = job_info_ptr->job_array[i]; + if(job.job_id == job_step->jobid) { + if(!(info = slurm_sprint_job_info(&job, 0))) { + info = xmalloc(100); + snprintf(info, 100, + "Problem getting job " + "info for %d", + job.job_id); + } + found = 1; + break; + } + } + } else { + for (i = 0; i < step_info_ptr->job_step_count; i++) { + if((step_info_ptr->job_steps[i].job_id + == job_step->jobid) + && step_info_ptr->job_steps[i].step_id + == job_step->stepid) { + step = step_info_ptr->job_steps[i]; + if(!(info = slurm_sprint_job_step_info( + &step, 0))) { + info = xmalloc(100); + snprintf(info, 100, + "Problem getting job " + "info for %d.%d", + step.job_id, + step.step_id); + } + } + found = 1; + break; + } + } + + if(!found) { + info = xstrdup("JOB ALREADY FINISHED OR NOT FOUND\n"); + xstrcat(info, not_found); + } +finished: + label = gtk_label_new(info); + xfree(info); + xfree(not_found); + gtk_table_attach_defaults(popup_win->table, label, 0, 1, 0, 1); + gtk_widget_show(label); + spec_info->display_widget = gtk_widget_ref(GTK_WIDGET(label)); + + return; +} + void *_popup_thr_job(void *arg) { popup_thr(arg); @@ -597,6 +685,7 @@ extern int get_new_info_job(job_info_msg_t **info_ptr) static time_t last; if((now - last) < global_sleep_time) { + error_code = SLURM_NO_CHANGE_IN_DATA; *info_ptr = job_info_ptr; return error_code; } @@ -629,6 +718,7 @@ extern int get_new_info_job_step(job_step_info_response_msg_t **info_ptr) static time_t last; if((now - last) < global_sleep_time) { + error_code = SLURM_NO_CHANGE_IN_DATA; *info_ptr = old_step_ptr; return error_code; } @@ -800,14 +890,19 @@ get_steps: == SLURM_NO_CHANGE_IN_DATA){ if((!spec_info->display_widget || spec_info->view == ERROR_VIEW) - || (job_error_code != SLURM_NO_CHANGE_IN_DATA)) + || (job_error_code != SLURM_NO_CHANGE_IN_DATA)) { goto display_it; - _update_info_job(job_info_ptr, step_info_ptr, - GTK_TREE_VIEW(spec_info->display_widget), - NULL, 0); + } + + if(spec_info->type != INFO_PAGE) { + _update_info_job(job_info_ptr, step_info_ptr, + GTK_TREE_VIEW( + spec_info->display_widget), + NULL, 0); + } goto end_it; } - + if (step_error_code != SLURM_SUCCESS) { if(spec_info->view == ERROR_VIEW) goto end_it; @@ -828,8 +923,12 @@ display_it: gtk_widget_destroy(spec_info->display_widget); spec_info->display_widget = NULL; } - - if(!spec_info->display_widget) { + + spec_info->view = INFO_VIEW; + if(spec_info->type == INFO_PAGE) { + _display_info_job(job_info_ptr, step_info_ptr, popup_win); + goto end_it; + } else if(!spec_info->display_widget) { job_and_step_info.job_info_ptr = job_info_ptr; job_and_step_info.step_info_ptr = step_info_ptr; tree_view = create_treeview(local_display_data, @@ -846,9 +945,9 @@ display_it: create_treestore(tree_view, popup_win->display_data, SORTID_CNT); } - spec_info->view = INFO_VIEW; _update_info_job(job_info_ptr, step_info_ptr, - GTK_TREE_VIEW(spec_info->display_widget), spec_info, + GTK_TREE_VIEW(spec_info->display_widget), + spec_info, 1); end_it: popup_win->toggled = 0; @@ -875,121 +974,81 @@ extern void set_menus_job(void *arg, GtkTreePath *path, } } -extern void row_clicked_job(GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column, - gpointer user_data) -{ - job_and_step_info_t *job_and_step_info_ptr = - (job_and_step_info_t *)user_data; - job_info_msg_t *job_info_ptr = job_and_step_info_ptr->job_info_ptr; - job_step_info_response_msg_t *step_info_ptr = - job_and_step_info_ptr->step_info_ptr; - job_info_t *job_ptr = NULL; - job_step_info_t *step_ptr = NULL; - int job_id = 0, i, pos = 0; - GtkTreeModel *model = gtk_tree_view_get_model(tree_view); - GtkWidget *popup = NULL; - GtkWidget *label = NULL; - GtkTreeIter iter; - char *info = NULL; - bool found = false; - - if(!model) { - g_error("error getting the model from the tree_view"); - return; - } - - if (!gtk_tree_model_get_iter(model, &iter, path)) { - g_error("error getting iter from model"); - return; - } - gtk_tree_model_get(model, &iter, SORTID_JOBID, &job_id, -1); - gtk_tree_model_get(model, &iter, SORTID_POS, &pos, -1); - - for (i = 0; i < job_info_ptr->record_count; i++) { - if(job_info_ptr->job_array[i].job_id == job_id) { - job_ptr = &job_info_ptr->job_array[i]; - if(!(info = slurm_sprint_job_info(job_ptr, 0))) { - info = xmalloc(100); - sprintf(info, - "Problem getting job info for %d", - job_ptr->job_id); - } - found = true; - break; - } - } - if(!found && pos > 0) { - for (i = 0; i < step_info_ptr->job_step_count; i++) { - if((step_info_ptr->job_steps[i].job_id == pos) - && step_info_ptr->job_steps[i].step_id == job_id) { - step_ptr = &step_info_ptr->job_steps[i]; - if(!(info = slurm_sprint_job_step_info( - step_ptr, 0))) { - info = xmalloc(100); - sprintf(info, - "Problem getting job " - "info for %d.%d", - step_ptr->job_id, - step_ptr->step_id); - } - } - found = true; - break; - } - if(!found) { - info = xmalloc(100); - sprintf(info, "Job step %d.%d was not found!", - pos, job_id); - } - } else if(!found) { - info = xmalloc(100); - sprintf(info, "Job %d was not found!", job_id); - } - - popup = gtk_dialog_new(); - - label = gtk_label_new(info); - gtk_box_pack_end(GTK_BOX(GTK_DIALOG(popup)->vbox), - label, TRUE, TRUE, 0); - xfree(info); - gtk_widget_show(label); - - gtk_widget_show(popup); - -} - extern void popup_all_job(GtkTreeModel *model, GtkTreeIter *iter, int id) { char *name = NULL; char title[100]; ListIterator itr = NULL; popup_info_t *popup_win = NULL; - int jobid = -1; + int jobid = NO_VAL; + int stepid = NO_VAL; GError *error = NULL; + job_step_num_t *job_step = NULL; gtk_tree_model_get(model, iter, SORTID_JOBID, &jobid, -1); + gtk_tree_model_get(model, iter, SORTID_ALLOC, &stepid, -1); + if(stepid) + stepid = NO_VAL; + else { + stepid = jobid; + gtk_tree_model_get(model, iter, SORTID_POS, &jobid, -1); + } + switch(id) { case PART_PAGE: - snprintf(title, 100, "Partition with job %d", jobid); + if(stepid == NO_VAL) + snprintf(title, 100, "Partition with job %d", jobid); + else + snprintf(title, 100, "Partition with job %d.%d", + jobid, stepid); break; case NODE_PAGE: + if(stepid == NO_VAL) { +#ifdef HAVE_BG + snprintf(title, 100, + "Base partition(s) running job %d", jobid); +#else + snprintf(title, 100, "Node(s) running job %d", jobid); +#endif + } else { #ifdef HAVE_BG - snprintf(title, 100, - "Base partition(s) running job %d", jobid); + snprintf(title, 100, + "Base partition(s) running job %d.%d", + jobid, stepid); #else - snprintf(title, 100, "Node(s) running job %d", jobid); + snprintf(title, 100, "Node(s) running job %d.%d", + jobid, stepid); #endif + } break; case BLOCK_PAGE: - snprintf(title, 100, "Block with job %d", jobid); + if(stepid == NO_VAL) + snprintf(title, 100, "Block with job %d", jobid); + else + snprintf(title, 100, "Block with job %d.%d", + jobid, stepid); break; case ADMIN_PAGE: - snprintf(title, 100, "Admin Page for job %d", jobid); + if(stepid == NO_VAL) + snprintf(title, 100, "Admin Page for job %d", jobid); + else + snprintf(title, 100, "Admin Page for job %d.%d", + jobid, stepid); break; case SUBMIT_PAGE: - snprintf(title, 100, "Submit job on job %d", jobid); + if(stepid == NO_VAL) + snprintf(title, 100, "Submit job on job %d", jobid); + else + snprintf(title, 100, "Submit job on job %d.%d", + jobid, stepid); + + break; + case INFO_PAGE: + if(stepid == NO_VAL) + snprintf(title, 100, "Full info for job %d", jobid); + else + snprintf(title, 100, "Full info for job %d.%d", + jobid, stepid); break; default: g_print("jobs got id %d\n", id); @@ -1004,11 +1063,13 @@ extern void popup_all_job(GtkTreeModel *model, GtkTreeIter *iter, int id) } list_iterator_destroy(itr); - if(!popup_win) - popup_win = create_popup_info(JOB_PAGE, id, title); - - popup_win->type = id; - + if(!popup_win) { + if(id == INFO_PAGE) + popup_win = create_popup_info(id, JOB_PAGE, title); + else + popup_win = create_popup_info(JOB_PAGE, id, title); + } + switch(id) { case NODE_PAGE: gtk_tree_model_get(model, iter, SORTID_NODELIST, &name, -1); @@ -1025,11 +1086,16 @@ extern void popup_all_job(GtkTreeModel *model, GtkTreeIter *iter, int id) break; #endif case ADMIN_PAGE: - gtk_tree_model_get(model, iter, SORTID_NAME, &name, -1); break; case SUBMIT_PAGE: - gtk_tree_model_get(model, iter, SORTID_NAME, &name, -1); break; + case INFO_PAGE: + job_step = g_malloc(sizeof(job_step_num_t)); + job_step->jobid = jobid; + job_step->stepid = stepid; + popup_win->spec_info->data = job_step; + break; + default: g_print("jobs got %d\n", id); } diff --git a/src/sview/node_info.c b/src/sview/node_info.c index 7f9333225b683e798d5e390b9ae214ecc8ce54b4..9c63bf8609140b0e2528930e82d35d5178b5bedf 100644 --- a/src/sview/node_info.c +++ b/src/sview/node_info.c @@ -41,6 +41,7 @@ enum { SORTID_WEIGHT, SORTID_FEATURES, SORTID_REASON, + SORTID_POINTER, SORTID_UPDATED, SORTID_CNT }; @@ -55,6 +56,7 @@ static display_data_t display_data_node[] = { {G_TYPE_INT, SORTID_WEIGHT,"Weight", FALSE, -1, refresh_node}, {G_TYPE_STRING, SORTID_FEATURES, "Features", FALSE, -1, refresh_node}, {G_TYPE_STRING, SORTID_REASON, "Reason", FALSE, -1, refresh_node}, + {G_TYPE_POINTER, SORTID_POINTER, NULL, FALSE, -1, refresh_node}, {G_TYPE_INT, SORTID_UPDATED, NULL, FALSE, -1, refresh_node}, {G_TYPE_NONE, -1, NULL, FALSE, -1} }; @@ -78,6 +80,7 @@ static void _update_node_record(node_info_t *node_ptr, { char tmp_cnt[7]; + gtk_tree_store_set(treestore, iter, SORTID_POINTER, node_ptr, -1); gtk_tree_store_set(treestore, iter, SORTID_NAME, node_ptr->name, -1); gtk_tree_store_set(treestore, iter, SORTID_STATE, node_state_string(node_ptr->node_state), -1); diff --git a/src/sview/part_info.c b/src/sview/part_info.c index 8c437c89ecbfbb747127eda92c043ce67f332973..c1b7dcd1c52e047e4479ffcda61fe795a05001cf 100644 --- a/src/sview/part_info.c +++ b/src/sview/part_info.c @@ -46,6 +46,7 @@ enum { SORTID_DISK, SORTID_NODELIST, SORTID_STATE, + SORTID_POINTER, SORTID_UPDATED, SORTID_CNT }; @@ -70,6 +71,7 @@ static display_data_t display_data_part[] = { #else {G_TYPE_STRING, SORTID_NODELIST, "NodeList", TRUE, -1, refresh_part}, #endif + {G_TYPE_POINTER, SORTID_POINTER, NULL, FALSE, -1, refresh_part}, {G_TYPE_INT, SORTID_UPDATED, NULL, FALSE, -1, refresh_part}, {G_TYPE_NONE, -1, NULL, FALSE, -1} @@ -77,6 +79,7 @@ static display_data_t display_data_part[] = { static display_data_t options_data_part[] = { {G_TYPE_INT, SORTID_POS, NULL, FALSE, -1}, + {G_TYPE_STRING, INFO_PAGE, "Full Info", TRUE, PART_PAGE}, {G_TYPE_STRING, JOB_PAGE, "Jobs", TRUE, PART_PAGE}, #ifdef HAVE_BG {G_TYPE_STRING, BLOCK_PAGE, "Blocks", TRUE, PART_PAGE}, @@ -117,7 +120,9 @@ static void _update_part_record(partition_info_t *part_ptr, { char time_buf[20]; char tmp_cnt[7]; - + partition_info_t *ptr = xmalloc(sizeof(partition_info_t)); + memcpy(ptr, part_ptr, sizeof(partition_info_t)); + gtk_tree_store_set(treestore, iter, SORTID_POINTER, ptr, -1); gtk_tree_store_set(treestore, iter, SORTID_NAME, part_ptr->name, -1); if(part_ptr->default_part) @@ -191,7 +196,7 @@ static void _update_info_part(partition_info_msg_t *part_info_ptr, char *host = NULL, *host2 = NULL, *part_name = NULL; hostlist_t hostlist = NULL; int found = 0; - + if(spec_info) { switch(spec_info->type) { case NODE_PAGE: @@ -376,7 +381,7 @@ extern void get_info_part(GtkTable *table, display_data_t *display_data) if(display_widget) gtk_widget_destroy(display_widget); view = ERROR_VIEW; - sprintf(error_char, "slurm_load_partitions: %s", + snprintf(error_char, 100, "slurm_load_partitions: %s", slurm_strerror(slurm_get_errno())); label = gtk_label_new(error_char); display_widget = gtk_widget_ref(GTK_WIDGET(label)); @@ -446,8 +451,8 @@ extern void specific_info_part(popup_info_t *popup_win) spec_info->display_widget = NULL; } spec_info->view = ERROR_VIEW; - sprintf(error_char, "slurm_load_partitions: %s", - slurm_strerror(slurm_get_errno())); + snprintf(error_char, 100, "slurm_load_partitions: %s", + slurm_strerror(slurm_get_errno())); label = gtk_label_new(error_char); gtk_table_attach_defaults(popup_win->table, label, @@ -550,8 +555,12 @@ extern void popup_all_part(GtkTreeModel *model, GtkTreeIter *iter, int id) ListIterator itr = NULL; popup_info_t *popup_win = NULL; GError *error = NULL; - + partition_info_t *ptr = NULL; + gtk_tree_model_get(model, iter, SORTID_NAME, &name, -1); + gtk_tree_model_get(model, iter, + SORTID_POINTER, &ptr, -1); + g_print("storing partition %s\n", ptr->name); switch(id) { case JOB_PAGE: snprintf(title, 100, "Job(s) in partition %s", name); @@ -573,6 +582,9 @@ extern void popup_all_part(GtkTreeModel *model, GtkTreeIter *iter, int id) case SUBMIT_PAGE: snprintf(title, 100, "Submit job in partition %s", name); break; + case INFO_PAGE: + snprintf(title, 100, "Full info for partition %s", name); + break; default: g_print("part got %d\n", id); } @@ -586,9 +598,12 @@ extern void popup_all_part(GtkTreeModel *model, GtkTreeIter *iter, int id) } list_iterator_destroy(itr); - if(!popup_win) - popup_win = create_popup_info(PART_PAGE, id, title); - + if(!popup_win) { + if(id == INFO_PAGE) + popup_win = create_popup_info(id, PART_PAGE, title); + else + popup_win = create_popup_info(PART_PAGE, id, title); + } switch(id) { case JOB_PAGE: popup_win->spec_info->data = name; @@ -604,10 +619,11 @@ extern void popup_all_part(GtkTreeModel *model, GtkTreeIter *iter, int id) popup_win->spec_info->data = name; break; case ADMIN_PAGE: - gtk_tree_model_get(model, iter, SORTID_NAME, &name, -1); break; case SUBMIT_PAGE: - gtk_tree_model_get(model, iter, SORTID_NAME, &name, -1); + break; + case INFO_PAGE: + popup_win->spec_info->data = name; break; default: g_print("part got %d\n", id); diff --git a/src/sview/sview.c b/src/sview/sview.c index 5b7dc4f03c1dc3125dd3588a0c6ad5de0d35bd13..ca2d504ef162117a7f4e4a21d5d6b22f24059998 100644 --- a/src/sview/sview.c +++ b/src/sview/sview.c @@ -46,31 +46,37 @@ GtkWidget *main_notebook = NULL; display_data_t main_display_data[] = { {G_TYPE_NONE, JOB_PAGE, "Jobs", TRUE, -1, refresh_main, get_info_job, specific_info_job, - set_menus_job, row_clicked_job, NULL}, + set_menus_job, NULL}, + {G_TYPE_NONE, STEP_PAGE, NULL, FALSE, -1, + refresh_main, NULL, + NULL, NULL, NULL}, {G_TYPE_NONE, PART_PAGE, "Partitions", TRUE, -1, refresh_main, get_info_part, specific_info_part, - set_menus_part, row_clicked_part, NULL}, + set_menus_part, NULL}, #ifdef HAVE_BG {G_TYPE_NONE, BLOCK_PAGE, "BG Blocks", TRUE, -1, refresh_main, get_info_block, specific_info_block, - set_menus_block, row_clicked_block, NULL}, + set_menus_block, NULL}, {G_TYPE_NONE, NODE_PAGE, "Base Partitions", FALSE, -1, refresh_main, get_info_node, specific_info_node, - set_menus_node, row_clicked_node, NULL}, + set_menus_node, NULL}, #else {G_TYPE_NONE, BLOCK_PAGE, "BG Blocks", FALSE, -1, refresh_main, get_info_block, specific_info_block, - set_menus_block, row_clicked_block, NULL}, + set_menus_block, NULL}, {G_TYPE_NONE, NODE_PAGE, "Nodes", FALSE, -1, refresh_main, get_info_node, specific_info_node, - set_menus_node, row_clicked_node, NULL}, + set_menus_node, NULL}, #endif {G_TYPE_NONE, SUBMIT_PAGE, "Submit Job", TRUE, -1, - refresh_main, NULL, NULL, + refresh_main, NULL, NULL, NULL, NULL}, {G_TYPE_NONE, ADMIN_PAGE, "Admin", TRUE, -1, - refresh_main, NULL, NULL, + refresh_main, NULL, NULL, NULL, NULL}, + {G_TYPE_NONE, INFO_PAGE, NULL, FALSE, -1, + refresh_main, NULL, NULL, + NULL, NULL}, {G_TYPE_NONE, -1, NULL, FALSE, -1} }; diff --git a/src/sview/sview.h b/src/sview/sview.h index eccffd1d81725acc4eeb07427d4469443876a1ce..cd99a8af76a88adf3012f919e6f0ea40402e506e 100644 --- a/src/sview/sview.h +++ b/src/sview/sview.h @@ -74,11 +74,13 @@ #define POS_LOC 0 enum { JOB_PAGE, + STEP_PAGE, PART_PAGE, NODE_PAGE, BLOCK_PAGE, SUBMIT_PAGE, ADMIN_PAGE, + INFO_PAGE, PAGE_CNT }; enum { TAB_CLICKED, @@ -129,10 +131,6 @@ struct display_data { void (*specific) (popup_info_t *popup_win); void (*set_menu) (void *arg, GtkTreePath *path, GtkMenu *menu, int type); - void (*row_clicked) (GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column, - gpointer user_data); gpointer user_data; }; @@ -189,10 +187,6 @@ extern void get_info_part(GtkTable *table, display_data_t *display_data); extern void specific_info_part(popup_info_t *popup_win); extern void set_menus_part(void *arg, GtkTreePath *path, GtkMenu *menu, int type); -extern void row_clicked_part(GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column, - gpointer user_data); extern void popup_all_part(GtkTreeModel *model, GtkTreeIter *iter, int id); // block_info.c @@ -202,10 +196,6 @@ extern void get_info_block(GtkTable *table, display_data_t *display_data); extern void specific_info_block(popup_info_t *popup_win); extern void set_menus_block(void *arg, GtkTreePath *path, GtkMenu *menu, int type); -extern void row_clicked_block(GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column, - gpointer user_data); extern void popup_all_block(GtkTreeModel *model, GtkTreeIter *iter, int id); // job_info.c @@ -216,21 +206,12 @@ extern void get_info_job(GtkTable *table, display_data_t *display_data); extern void specific_info_job(popup_info_t *popup_win); extern void set_menus_job(void *arg, GtkTreePath *path, GtkMenu *menu, int type); -extern void row_clicked_job(GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column, - gpointer user_data); extern void popup_all_job(GtkTreeModel *model, GtkTreeIter *iter, int id); // admin_info.c extern void get_info_admin(GtkTable *table, display_data_t *display_data); extern void set_menus_admin(void *arg, GtkTreePath *path, GtkMenu *menu, int type); -extern void row_clicked_admin(GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column, - gpointer user_data); - // node_info.c extern void refresh_node(GtkAction *action, gpointer user_data); extern int get_new_info_node(node_info_msg_t **info_ptr); @@ -238,21 +219,12 @@ extern void get_info_node(GtkTable *table, display_data_t *display_data); extern void specific_info_node(popup_info_t *popup_win); extern void set_menus_node(void *arg, GtkTreePath *path, GtkMenu *menu, int type); -extern void row_clicked_node(GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column, - gpointer user_data); extern void popup_all_node(GtkTreeModel *model, GtkTreeIter *iter, int id); // submit_info.c extern void get_info_submit(GtkTable *table, display_data_t *display_data); extern void set_menus_submit(void *arg, GtkTreePath *path, GtkMenu *menu, int type); -extern void row_clicked_submit(GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column, - gpointer user_data); - // common.c extern void snprint_time(char *buf, size_t buf_size, time_t time); extern int get_row_number(GtkTreeView *tree_view, GtkTreePath *path);