diff --git a/src/sview/common.c b/src/sview/common.c index c11b49a4c995b4776d34fcb35972bef41e7dbe53..435d2ad0cf2acf83022db0e8ed861043939f4f8b 100644 --- a/src/sview/common.c +++ b/src/sview/common.c @@ -1184,6 +1184,79 @@ end_it: return reason_str; } +extern void display_admin_edit(GtkTable *table, void *type_msg, int *row, + GtkTreeModel *model, GtkTreeIter *iter, + display_data_t *display_data, + GCallback changed_callback, + GCallback focus_callback, + void (*set_active)( + GtkComboBox *combo, + GtkTreeModel *model, GtkTreeIter *iter, + int type)) +{ + GtkWidget *label = NULL; + GtkWidget *entry = NULL; + + if(display_data->extra == EDIT_MODEL) { + /* edittable items that can only be known + values */ + GtkCellRenderer *renderer = NULL; + GtkTreeModel *model2 = GTK_TREE_MODEL( + (display_data->create_model)(display_data->id)); + if(!model2) { + g_print("no model set up for %d(%s)\n", + display_data->id, + display_data->name); + return; + } + entry = gtk_combo_box_new_with_model(model2); + g_object_unref(model2); + +/* (callback)_set_active_combo_part(GTK_COMBO_BOX(entry), model, */ +/* iter, display_data->id); */ + (set_active)(GTK_COMBO_BOX(entry), model, + iter, display_data->id); + + g_signal_connect(entry, "changed", + changed_callback, + type_msg); + + renderer = gtk_cell_renderer_text_new(); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(entry), + renderer, TRUE); + gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(entry), + renderer, "text", 0); + } else if(display_data->extra == EDIT_TEXTBOX) { + char *temp_char = NULL; + /* other edittable items that are unknown */ + entry = create_entry(); + gtk_tree_model_get(model, iter, + display_data->id, + &temp_char, -1); + gtk_entry_set_max_length(GTK_ENTRY(entry), + (DEFAULT_ENTRY_LENGTH + + display_data->id)); + + if(temp_char) { + gtk_entry_set_text(GTK_ENTRY(entry), + temp_char); + g_free(temp_char); + } + g_signal_connect(entry, "focus-out-event", + focus_callback, + type_msg); + } else /* others can't be altered by the user */ + return; + label = gtk_label_new(display_data->name); + gtk_table_attach(table, label, 0, 1, *row, (*row)+1, + GTK_FILL | GTK_EXPAND, GTK_SHRINK, + 0, 0); + gtk_table_attach(table, entry, 1, 2, *row, (*row)+1, + GTK_FILL, GTK_SHRINK, + 0, 0); + (*row)++; +} + extern void display_edit_note(char *edit_note) { GError *error = NULL; diff --git a/src/sview/job_info.c b/src/sview/job_info.c index 210b19d6a24fb0fa448880d412e25e91d4940558..098d9a60c837663941340278f2223f358db588ac 100644 --- a/src/sview/job_info.c +++ b/src/sview/job_info.c @@ -80,6 +80,13 @@ enum { SORTID_CONNECTION, #endif SORTID_CONTIGUOUS, +/* SORTID_CORES_MAX, */ +/* SORTID_CORES_MIN, */ + SORTID_CPU_NUM, +#ifdef HAVE_BG + SORTID_CPU_MAX, +#endif + SORTID_CPU_REQ, SORTID_CPUS_PER_TASK, SORTID_DEPENDENCY, SORTID_EXIT_CODE, @@ -98,19 +105,7 @@ enum { SORTID_IMAGE_RAMDISK, #endif SORTID_JOBID, - SORTID_MAX_CORES, - SORTID_MAX_NODES, - SORTID_MAX_SOCKETS, -#ifdef HAVE_BG - SORTID_MAX_PROCS, -#endif - SORTID_MAX_THREADS, - SORTID_MIN_CORES, - SORTID_MIN_MEM, - SORTID_MIN_NODES, - SORTID_MIN_PROCS, - SORTID_MIN_SOCKETS, - SORTID_MIN_THREADS, + SORTID_MEM_MIN, SORTID_NAME, #ifdef HAVE_AIX SORTID_NETWORK, @@ -122,24 +117,28 @@ enum { SORTID_NODELIST_REQ, #endif SORTID_NODES, - SORTID_NTASKS_PER_CORE, - SORTID_NTASKS_PER_NODE, - SORTID_NTASKS_PER_SOCKET, - SORTID_NUM_PROCS, + SORTID_NODES_MAX, + SORTID_NODES_MIN, +/* SORTID_NTASKS_PER_CORE, */ +/* SORTID_NTASKS_PER_NODE, */ +/* SORTID_NTASKS_PER_SOCKET, */ SORTID_PARTITION, SORTID_PRIORITY, SORTID_QOS, SORTID_REASON, SORTID_REQUEUE, - SORTID_REQ_PROCS, SORTID_RESV_NAME, #ifdef HAVE_BG SORTID_ROTATE, #endif SORTID_SHARED, +/* SORTID_SOCKETS_MAX, */ +/* SORTID_SOCKETS_MIN, */ SORTID_STATE, SORTID_STATE_NUM, SORTID_TASKS, +/* SORTID_THREADS_MAX, */ +/* SORTID_THREADS_MIN, */ SORTID_TIME_ELIGIBLE, SORTID_TIME_END, SORTID_TIMELIMIT, @@ -183,28 +182,28 @@ static display_data_t display_data_job[] = { {G_TYPE_STRING, SORTID_CONNECTION, "Connection", FALSE, EDIT_MODEL, refresh_job, create_model_job, admin_edit_job}, #ifdef HAVE_BGL - {G_TYPE_STRING, SORTID_IMAGE_BLRTS, "Image: Blrts", + {G_TYPE_STRING, SORTID_IMAGE_BLRTS, "Image Blrts", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_IMAGE_LINUX, "Image: Linux", + {G_TYPE_STRING, SORTID_IMAGE_LINUX, "Image Linux", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_IMAGE_RAMDISK, "Image: Ramdisk", + {G_TYPE_STRING, SORTID_IMAGE_RAMDISK, "Image Ramdisk", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, #else - {G_TYPE_STRING, SORTID_IMAGE_LINUX, "Image: Cnload", + {G_TYPE_STRING, SORTID_IMAGE_LINUX, "Image Cnload", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_IMAGE_RAMDISK, "Image: Ioload", + {G_TYPE_STRING, SORTID_IMAGE_RAMDISK, "Image Ioload", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, #endif - {G_TYPE_STRING, SORTID_IMAGE_MLOADER, "Image: Mloader", + {G_TYPE_STRING, SORTID_IMAGE_MLOADER, "Image Mloader", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, #endif #ifdef HAVE_CRAY_XT {G_TYPE_STRING, SORTID_ALPS_RESV_ID, "ALPS Resv ID", TRUE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, #endif - {G_TYPE_STRING, SORTID_ID_USER, "ID: User", TRUE, EDIT_NONE, + {G_TYPE_STRING, SORTID_ID_USER, "ID User", TRUE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_ID_GROUP, "ID: Group", FALSE, EDIT_NONE, + {G_TYPE_STRING, SORTID_ID_GROUP, "ID Group", FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, {G_TYPE_STRING, SORTID_WCKEY, "WCKey", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, @@ -214,35 +213,33 @@ static display_data_t display_data_job[] = { create_model_job, admin_edit_job}, {G_TYPE_INT, SORTID_STATE_NUM, NULL, FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_TIME_RUNNING, "Time: Running", TRUE, + {G_TYPE_STRING, SORTID_TIME_RUNNING, "Time Running", TRUE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_TIME_SUBMIT, "Time: Submit", FALSE, + {G_TYPE_STRING, SORTID_TIME_SUBMIT, "Time Submit", FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_TIME_ELIGIBLE, "Time: Eligible", FALSE, + {G_TYPE_STRING, SORTID_TIME_ELIGIBLE, "Time Eligible", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_TIME_START, "Time: Start", FALSE, - EDIT_TEXTBOX, refresh_job, - create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_TIME_END, "Time: End", FALSE, + {G_TYPE_STRING, SORTID_TIME_START, "Time Start", FALSE, + EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, + {G_TYPE_STRING, SORTID_TIME_END, "Time End", FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_TIME_SUSPEND, "Time: Suspended", FALSE, - EDIT_NONE, refresh_job, - create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_TIMELIMIT, "Time: Limit", FALSE, + {G_TYPE_STRING, SORTID_TIME_SUSPEND, "Time Suspended", FALSE, + EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, + {G_TYPE_STRING, SORTID_TIMELIMIT, "Time Limit", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_NODES, "Nodes", TRUE, EDIT_NONE, refresh_job, - create_model_job, admin_edit_job}, + {G_TYPE_STRING, SORTID_NODES, "Node Count", TRUE, EDIT_NONE, + refresh_job, create_model_job, admin_edit_job}, #ifdef HAVE_BG {G_TYPE_STRING, SORTID_NODELIST, "BP List", TRUE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, {G_TYPE_STRING, SORTID_NODELIST_EXC, "BP List Excluded", - FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, + FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, {G_TYPE_STRING, SORTID_NODELIST_REQ, "BP List Requested", - FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, + FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, #else - {G_TYPE_STRING, SORTID_NODELIST, "Nodelist", TRUE, + {G_TYPE_STRING, SORTID_NODELIST, "NodeList", TRUE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, {G_TYPE_STRING, SORTID_NODELIST_EXC, "NodeList Excluded", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, @@ -259,48 +256,46 @@ static display_data_t display_data_job[] = { EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, {G_TYPE_STRING, SORTID_BATCH, "Batch Flag", FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_NUM_PROCS, "Num Processors", + {G_TYPE_STRING, SORTID_CPU_REQ, "CPUs Requested", + FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, +#ifdef HAVE_BG + {G_TYPE_STRING, SORTID_CPU_MAX, "CPUs Max", FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_TASKS, "Num Tasks", +#endif + {G_TYPE_STRING, SORTID_CPU_NUM, "CPU Count", FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, + {G_TYPE_STRING, SORTID_TASKS, "Task Count", + FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, {G_TYPE_STRING, SORTID_SHARED, "Shared", FALSE, EDIT_MODEL, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_CPUS_PER_TASK, "Cpus per Task", - FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_REQ_PROCS, "Requested Procs", + {G_TYPE_STRING, SORTID_CPUS_PER_TASK, "CPUs per Task", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, {G_TYPE_STRING, SORTID_RESV_NAME, "Reservation Name", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_MIN_NODES, "Min Nodes", - FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_MAX_NODES, "Max Nodes", - FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_MIN_PROCS, "Min Procs", - FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, -#ifdef HAVE_BG - {G_TYPE_STRING, SORTID_MAX_PROCS, "Max Procs", - FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, -#endif - {G_TYPE_STRING, SORTID_MIN_SOCKETS, "Min Sockets", - FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_MAX_SOCKETS, "Max Sockets", - FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_MIN_CORES, "Min Cores", + {G_TYPE_STRING, SORTID_NODES_MIN, "Nodes Min", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_MAX_CORES, "Max Cores", - FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_MIN_THREADS, "Min Threads", + {G_TYPE_STRING, SORTID_NODES_MAX, "Nodes Max", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_MAX_THREADS, "Max Threads", - FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_MIN_MEM, "Min Memory", +/* {G_TYPE_STRING, SORTID_SOCKETS_MIN, "Min Sockets", */ +/* FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, */ +/* {G_TYPE_STRING, SORTID_SOCKETS_MAX, "Max Sockets", */ +/* FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, */ +/* {G_TYPE_STRING, SORTID_CORES_MIN, "Min Cores", */ +/* FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, */ +/* {G_TYPE_STRING, SORTID_CORES_MAX, "Max Cores", */ +/* FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, */ +/* {G_TYPE_STRING, SORTID_THREADS_MIN, "Min Threads", */ +/* FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, */ +/* {G_TYPE_STRING, SORTID_THREADS_MAX, "Max Threads", */ +/* FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, */ + {G_TYPE_STRING, SORTID_MEM_MIN, "Min Memory", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, {G_TYPE_STRING, SORTID_TMP_DISK, "Tmp Disk", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, {G_TYPE_STRING, SORTID_NICE, "Nice", - FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, + FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, {G_TYPE_STRING, SORTID_ACCOUNT, "Account", - FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, + FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, {G_TYPE_STRING, SORTID_QOS, "QOS", FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, {G_TYPE_STRING, SORTID_REASON, "Reason Waiting", @@ -311,12 +306,12 @@ static display_data_t display_data_job[] = { FALSE, EDIT_TEXTBOX, refresh_job, create_model_job, admin_edit_job}, {G_TYPE_STRING, SORTID_ALLOC_NODE, "Alloc Node : Sid", FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_NTASKS_PER_NODE, "Num tasks per Node", - FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_NTASKS_PER_SOCKET, "Num tasks per Socket", - FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, - {G_TYPE_STRING, SORTID_NTASKS_PER_CORE, "Num tasks per Core", - FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, +/* {G_TYPE_STRING, SORTID_NTASKS_PER_NODE, "Num tasks per Node", */ +/* FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, */ +/* {G_TYPE_STRING, SORTID_NTASKS_PER_SOCKET, "Num tasks per Socket", */ +/* FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, */ +/* {G_TYPE_STRING, SORTID_NTASKS_PER_CORE, "Num tasks per Core", */ +/* FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, */ #ifdef HAVE_AIX {G_TYPE_STRING, SORTID_NETWORK, "Network", FALSE, EDIT_NONE, refresh_job, create_model_job, admin_edit_job}, @@ -634,7 +629,7 @@ static const char *_set_job_msg(job_desc_msg_t *job_msg, const char *new_text, } job_msg->nice = NICE_OFFSET + temp_int; break; - case SORTID_REQ_PROCS: + case SORTID_CPU_REQ: temp_int = strtol(new_text, (char **)NULL, 10); type = "requested procs"; @@ -642,11 +637,27 @@ static const char *_set_job_msg(job_desc_msg_t *job_msg, const char *new_text, goto return_error; job_msg->num_procs = (uint32_t)temp_int; break; + case SORTID_TASKS: + temp_int = strtol(new_text, (char **)NULL, 10); + + type = "requested tasks"; + if(temp_int <= 0) + goto return_error; + job_msg->num_tasks = (uint32_t)temp_int; + break; + case SORTID_CPUS_PER_TASK: + temp_int = strtol(new_text, (char **)NULL, 10); + + type = "cpus per task"; + if(temp_int <= 0) + goto return_error; + job_msg->cpus_per_task = (uint32_t)temp_int; + break; case SORTID_RESV_NAME: job_msg->reservation = xstrdup(new_text); type = "reservation name"; break; - case SORTID_MIN_NODES: + case SORTID_NODES_MIN: temp_int = strtol(new_text, (char **)NULL, 10); type = "min nodes"; @@ -654,7 +665,7 @@ static const char *_set_job_msg(job_desc_msg_t *job_msg, const char *new_text, goto return_error; job_msg->min_nodes = (uint32_t)temp_int; break; - case SORTID_MAX_NODES: + case SORTID_NODES_MAX: temp_int = strtol(new_text, (char **)NULL, 10); type = "max nodes"; @@ -662,15 +673,7 @@ static const char *_set_job_msg(job_desc_msg_t *job_msg, const char *new_text, goto return_error; job_msg->max_nodes = (uint32_t)temp_int; break; - case SORTID_MIN_PROCS: - temp_int = strtol(new_text, (char **)NULL, 10); - - type = "min procs"; - if(temp_int <= 0) - goto return_error; - job_msg->job_min_procs = (uint32_t)temp_int; - break; - case SORTID_MIN_MEM: + case SORTID_MEM_MIN: temp_int = strtol(new_text, (char **)NULL, 10); type = "min memory"; @@ -925,12 +928,8 @@ static GtkWidget *_admin_full_edit_job(job_desc_msg_t *job_msg, GtkBin *bin = NULL; GtkViewport *view = NULL; GtkTable *table = NULL; - GtkWidget *label = NULL; - GtkWidget *entry = NULL; - GtkTreeModel *model2 = NULL; - GtkCellRenderer *renderer = NULL; int i = 0, row = 0; - char *temp_char = NULL; + display_data_t *display_data = display_data_job; gtk_scrolled_window_set_policy(window, GTK_POLICY_NEVER, @@ -944,59 +943,22 @@ static GtkWidget *_admin_full_edit_job(job_desc_msg_t *job_msg, gtk_table_set_homogeneous(table, FALSE); for(i = 0; i < SORTID_CNT; i++) { - if(display_data_job[i].extra == EDIT_MODEL) { - /* edittable items that can only be known - values */ - model2 = GTK_TREE_MODEL( - create_model_job(display_data_job[i].id)); - if(!model2) { - g_print("no model set up for %d(%s)\n", - display_data_job[i].id, - display_data_job[i].name); + while(display_data++) { + if(display_data->id == -1) + break; + if(!display_data->name) continue; - } - entry = gtk_combo_box_new_with_model(model2); - g_object_unref(model2); - - _set_active_combo_job(GTK_COMBO_BOX(entry), model, - iter, display_data_job[i].id); - - g_signal_connect(entry, "changed", - G_CALLBACK(_admin_edit_combo_box_job), - job_msg); - - renderer = gtk_cell_renderer_text_new(); - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(entry), - renderer, TRUE); - gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(entry), - renderer, "text", 0); - } else if(display_data_job[i].extra == EDIT_TEXTBOX) { - /* other edittable items that are unknown */ - entry = create_entry(); - gtk_tree_model_get(model, iter, display_data_job[i].id, - &temp_char, -1); - gtk_entry_set_max_length(GTK_ENTRY(entry), - (DEFAULT_ENTRY_LENGTH + - display_data_job[i].id)); - - if(temp_char) { - gtk_entry_set_text(GTK_ENTRY(entry), - temp_char); - g_free(temp_char); - } - g_signal_connect(entry, "focus-out-event", - G_CALLBACK(_admin_focus_out_job), - job_msg); - } else /* others can't be altered by the user */ - continue; - label = gtk_label_new(display_data_job[i].name); - gtk_table_attach(table, label, 0, 1, row, row+1, - GTK_FILL | GTK_EXPAND, GTK_SHRINK, - 0, 0); - gtk_table_attach(table, entry, 1, 2, row, row+1, - GTK_FILL, GTK_SHRINK, - 0, 0); - row++; + if(display_data->id != i) + continue; + display_admin_edit( + table, job_msg, &row, model, iter, + display_data, + G_CALLBACK(_admin_edit_combo_box_job), + G_CALLBACK(_admin_focus_out_job), + _set_active_combo_job); + break; + } + display_data = display_data_job; } gtk_table_resize(table, row, 2); @@ -1165,6 +1127,39 @@ static void _layout_job_record(GtkTreeView *treeview, SORTID_CONTIGUOUS), tmp_char); +#ifdef HAVE_BG + convert_num_unit((float)job_ptr->num_procs, tmp_char, sizeof(tmp_char), + UNIT_NONE); +#else + snprintf(tmp_char, sizeof(tmp_char), "%u", job_ptr->num_procs); +#endif + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_job, + SORTID_CPU_NUM), + tmp_char); + +#ifdef HAVE_BG + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_job, + SORTID_CPU_MAX), + select_g_select_jobinfo_sprint( + job_ptr->select_jobinfo, + tmp_char, + sizeof(tmp_char), + SELECT_PRINT_MAX_PROCS)); +#endif + +#ifdef HAVE_BG + convert_num_unit((float)job_ptr->job_min_procs, + tmp_char, sizeof(tmp_char), UNIT_NONE); +#else + snprintf(tmp_char, sizeof(tmp_char), "%u", job_ptr->job_min_procs); +#endif + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_job, + SORTID_CPU_REQ), + tmp_char); + if(job_ptr->cpus_per_task > 0) sprintf(tmp_char, "%u", job_ptr->cpus_per_task); else @@ -1263,16 +1258,6 @@ static void _layout_job_record(GtkTreeView *treeview, find_col_name(display_data_job, SORTID_JOBID), tmp_char); -#ifdef HAVE_BG - add_display_treestore_line(update, treestore, &iter, - find_col_name(display_data_job, - SORTID_MAX_PROCS), - select_g_select_jobinfo_sprint( - job_ptr->select_jobinfo, - tmp_char, - sizeof(tmp_char), - SELECT_PRINT_MAX_PROCS)); -#endif if(job_ptr->job_min_memory > 0) sprintf(tmp_char, "%u", job_ptr->job_min_memory); @@ -1280,7 +1265,7 @@ static void _layout_job_record(GtkTreeView *treeview, sprintf(tmp_char, " "); add_display_treestore_line(update, treestore, &iter, find_col_name(display_data_job, - SORTID_MIN_MEM), + SORTID_MEM_MIN), tmp_char); add_display_treestore_line(update, treestore, &iter, @@ -1295,6 +1280,15 @@ static void _layout_job_record(GtkTreeView *treeview, job_ptr->network); #endif + if(job_ptr->job_min_memory > 0) + sprintf(tmp_char, "%u", job_ptr->nice - NICE_OFFSET); + else + sprintf(tmp_char, " "); + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_job, + SORTID_NICE), + tmp_char); + #ifndef HAVE_BG add_display_treestore_line(update, treestore, &iter, find_col_name(display_data_job, @@ -1323,16 +1317,29 @@ static void _layout_job_record(GtkTreeView *treeview, tmp_char); #ifdef HAVE_BG - convert_num_unit((float)job_ptr->num_procs, tmp_char, sizeof(tmp_char), - UNIT_NONE); + convert_num_unit((float)job_ptr->max_nodes, + tmp_char, sizeof(tmp_char), UNIT_NONE); #else - snprintf(tmp_char, sizeof(tmp_char), "%u", job_ptr->num_procs); + snprintf(tmp_char, sizeof(tmp_char), "%u", + job_ptr->max_nodes); #endif add_display_treestore_line(update, treestore, &iter, find_col_name(display_data_job, - SORTID_NUM_PROCS), - tmp_char); - + SORTID_NODES_MAX), + tmp_char); + +#ifdef HAVE_BG + convert_num_unit((float)job_ptr->num_nodes, + tmp_char, sizeof(tmp_char), UNIT_NONE); +#else + snprintf(tmp_char, sizeof(tmp_char), "%u", + job_ptr->num_nodes); +#endif + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_job, + SORTID_NODES_MIN), + tmp_char); + add_display_treestore_line(update, treestore, &iter, find_col_name(display_data_job, SORTID_PARTITION), @@ -1366,17 +1373,6 @@ static void _layout_job_record(GtkTreeView *treeview, SORTID_REQUEUE), tmp_char); -#ifdef HAVE_BG - convert_num_unit((float)job_ptr->job_min_procs, - tmp_char, sizeof(tmp_char), UNIT_NONE); -#else - snprintf(tmp_char, sizeof(tmp_char), "%u", job_ptr->job_min_procs); -#endif - add_display_treestore_line(update, treestore, &iter, - find_col_name(display_data_job, - SORTID_REQ_PROCS), - tmp_char); - add_display_treestore_line(update, treestore, &iter, find_col_name(display_data_job, SORTID_RESV_NAME), @@ -1422,8 +1418,11 @@ static void _layout_job_record(GtkTreeView *treeview, find_col_name(display_data_job, SORTID_TIME_END), tmp_char); + if (job_ptr->time_limit == NO_VAL) sprintf(tmp_char, "Partition Limit"); + else if(job_ptr->time_limit == INFINITE) + sprintf(tmp_char, "Infinite"); else secs2time_str((job_ptr->time_limit * 60), tmp_char, sizeof(tmp_char)); @@ -1533,6 +1532,8 @@ static void _update_job_record(sview_job_info_t *sview_job_info_ptr, if (job_ptr->time_limit == NO_VAL) sprintf(tmp_char, "Partition Limit"); + else if(job_ptr->time_limit == INFINITE) + sprintf(tmp_char, "Infinite"); else secs2time_str((job_ptr->time_limit * 60), tmp_char, sizeof(tmp_char)); @@ -1592,7 +1593,7 @@ static void _update_job_record(sview_job_info_t *sview_job_info_ptr, sizeof(tmp_char), SELECT_PRINT_ROTATE), -1); gtk_tree_store_set(treestore, iter, - SORTID_MAX_PROCS, + SORTID_CPU_MAX, select_g_select_jobinfo_sprint( job_ptr->select_jobinfo, tmp_char, @@ -1666,7 +1667,7 @@ static void _update_job_record(sview_job_info_t *sview_job_info_ptr, snprintf(tmp_char, sizeof(tmp_char), "%u", job_ptr->num_procs); #endif gtk_tree_store_set(treestore, iter, - SORTID_NUM_PROCS, tmp_char, -1); + SORTID_CPU_NUM, tmp_char, -1); gtk_tree_store_set(treestore, iter, SORTID_NODELIST, nodes, -1); @@ -1701,11 +1702,11 @@ static void _update_job_record(sview_job_info_t *sview_job_info_ptr, sprintf(tmp_char, "%u", job_ptr->num_nodes); gtk_tree_store_set(treestore, iter, - SORTID_MIN_NODES, tmp_char, -1); + SORTID_NODES_MIN, tmp_char, -1); if(job_ptr->max_nodes > 0) { sprintf(tmp_char, "%u", job_ptr->max_nodes); gtk_tree_store_set(treestore, iter, - SORTID_MAX_NODES, tmp_char, -1); + SORTID_NODES_MAX, tmp_char, -1); } if(job_ptr->cpus_per_task > 0) { sprintf(tmp_char, "%u", job_ptr->cpus_per_task); @@ -1714,35 +1715,35 @@ static void _update_job_record(sview_job_info_t *sview_job_info_ptr, } sprintf(tmp_char, "%u", job_ptr->job_min_procs); gtk_tree_store_set(treestore, iter, - SORTID_REQ_PROCS, tmp_char, -1); + SORTID_CPU_REQ, tmp_char, -1); gtk_tree_store_set(treestore, iter, SORTID_RESV_NAME, job_ptr->resv_name, -1); - sprintf(tmp_char, "%u", job_ptr->min_sockets); - gtk_tree_store_set(treestore, iter, - SORTID_MIN_SOCKETS, tmp_char, -1); - sprintf(tmp_char, "%u", job_ptr->max_sockets); - gtk_tree_store_set(treestore, iter, - SORTID_MAX_SOCKETS, tmp_char, -1); - - sprintf(tmp_char, "%u", job_ptr->min_cores); - gtk_tree_store_set(treestore, iter, - SORTID_MIN_CORES, tmp_char, -1); - sprintf(tmp_char, "%u", job_ptr->max_cores); - gtk_tree_store_set(treestore, iter, - SORTID_MAX_CORES, tmp_char, -1); - - sprintf(tmp_char, "%u", job_ptr->min_threads); - gtk_tree_store_set(treestore, iter, - SORTID_MIN_THREADS, tmp_char, -1); - sprintf(tmp_char, "%u", job_ptr->max_threads); - gtk_tree_store_set(treestore, iter, - SORTID_MAX_THREADS, tmp_char, -1); +/* sprintf(tmp_char, "%u", job_ptr->min_sockets); */ +/* gtk_tree_store_set(treestore, iter, */ +/* SORTID_SOCKETS_MIN, tmp_char, -1); */ +/* sprintf(tmp_char, "%u", job_ptr->max_sockets); */ +/* gtk_tree_store_set(treestore, iter, */ +/* SORTID_SOCKETS_MAX, tmp_char, -1); */ + +/* sprintf(tmp_char, "%u", job_ptr->min_cores); */ +/* gtk_tree_store_set(treestore, iter, */ +/* SORTID_CORES_MIN, tmp_char, -1); */ +/* sprintf(tmp_char, "%u", job_ptr->max_cores); */ +/* gtk_tree_store_set(treestore, iter, */ +/* SORTID_CORES_MAX, tmp_char, -1); */ + +/* sprintf(tmp_char, "%u", job_ptr->min_threads); */ +/* gtk_tree_store_set(treestore, iter, */ +/* SORTID_THREADS_MIN, tmp_char, -1); */ +/* sprintf(tmp_char, "%u", job_ptr->max_threads); */ +/* gtk_tree_store_set(treestore, iter, */ +/* SORTID_THREADS_MAX, tmp_char, -1); */ sprintf(tmp_char, "%u", job_ptr->job_min_memory); gtk_tree_store_set(treestore, iter, - SORTID_MIN_MEM, tmp_char, -1); + SORTID_MEM_MIN, tmp_char, -1); sprintf(tmp_char, "%u", job_ptr->job_min_tmp_disk); gtk_tree_store_set(treestore, iter, @@ -1782,6 +1783,9 @@ static void _update_job_record(sview_job_info_t *sview_job_info_ptr, gtk_tree_store_set(treestore, iter, SORTID_NETWORK, job_ptr->network, -1); #endif + sprintf(tmp_char, "%u", job_ptr->nice - NICE_OFFSET); + gtk_tree_store_set(treestore, iter, + SORTID_NICE, tmp_char, -1); gtk_tree_store_set(treestore, iter, SORTID_COMMAND, job_ptr->command, -1); gtk_tree_store_set(treestore, iter, @@ -1818,6 +1822,33 @@ static void _layout_step_record(GtkTreeView *treeview, if(!treestore) return; + + convert_num_unit((float)step_ptr->num_cpus, tmp_char, sizeof(tmp_char), + UNIT_NONE); + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_job, + SORTID_CPU_NUM), + tmp_char); + + uname = uid_to_string((uid_t)step_ptr->user_id); + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_job, + SORTID_ID_USER), uname); + xfree(uname); + + snprintf(tmp_char, sizeof(tmp_char), "%u.%u", + step_ptr->job_id, + step_ptr->step_id); + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_job, + SORTID_JOBID), + tmp_char); + + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_job, + SORTID_NAME), + step_ptr->name); + if(!step_ptr->nodes || !strcasecmp(step_ptr->nodes,"waiting...")) { sprintf(tmp_time,"00:00:00"); @@ -1841,45 +1872,37 @@ static void _layout_step_record(GtkTreeView *treeview, state = JOB_RUNNING; } - add_display_treestore_line(update, treestore, &iter, - find_col_name(display_data_job, - SORTID_STATE), - job_state_string(state)); - add_display_treestore_line(update, treestore, &iter, find_col_name(display_data_job, - SORTID_TIME_RUNNING), - tmp_time); - - snprintf(tmp_char, sizeof(tmp_char), "%u.%u", - step_ptr->job_id, - step_ptr->step_id); - add_display_treestore_line(update, treestore, &iter, - find_col_name(display_data_job, - SORTID_JOBID), - tmp_char); + SORTID_NODELIST), + nodes); + add_display_treestore_line(update, treestore, &iter, find_col_name(display_data_job, SORTID_PARTITION), step_ptr->partition); -/* #ifdef HAVE_BG */ -/* add_display_treestore_line(update, treestore, &iter, */ -/* find_col_name(display_data_job, SORTID_BLOCK), */ -/* select_g_select_jobinfo_sprint( */ -/* step_ptr->select_jobinfo, */ -/* tmp_char, */ -/* sizeof(tmp_char), */ -/* SELECT_PRINT_BG_ID)); */ -/* #endif */ - uname = uid_to_string((uid_t)step_ptr->user_id); + + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_job, + SORTID_STATE), + job_state_string(state)); + + if (step_ptr->time_limit == NO_VAL) + sprintf(tmp_char, "Partition Limit"); + else if(step_ptr->time_limit == INFINITE) + sprintf(tmp_char, "Infinite"); + else + secs2time_str((step_ptr->time_limit * 60), + tmp_char, sizeof(tmp_char)); add_display_treestore_line(update, treestore, &iter, find_col_name(display_data_job, - SORTID_ID_USER), uname); - xfree(uname); + SORTID_TIMELIMIT), + tmp_char); + add_display_treestore_line(update, treestore, &iter, find_col_name(display_data_job, - SORTID_NAME), - step_ptr->name); + SORTID_TIME_RUNNING), + tmp_time); convert_num_unit((float)step_ptr->num_tasks, tmp_char, sizeof(tmp_char), UNIT_NONE); @@ -1887,16 +1910,6 @@ static void _layout_step_record(GtkTreeView *treeview, find_col_name(display_data_job, SORTID_TASKS), tmp_char); - - add_display_treestore_line(update, treestore, &iter, - find_col_name(display_data_job, - SORTID_NUM_PROCS), - tmp_char); - - add_display_treestore_line(update, treestore, &iter, - find_col_name(display_data_job, - SORTID_NODELIST), - nodes); } static void _update_step_record(job_step_info_t *step_ptr, @@ -1964,8 +1977,10 @@ static void _update_step_record(job_step_info_t *step_ptr, gtk_tree_store_set(treestore, iter, SORTID_TASKS, tmp_char, -1); + convert_num_unit((float)step_ptr->num_cpus, tmp_char, sizeof(tmp_char), + UNIT_NONE); gtk_tree_store_set(treestore, iter, - SORTID_NUM_PROCS, tmp_char, -1); + SORTID_CPU_NUM, tmp_char, -1); gtk_tree_store_set(treestore, iter, SORTID_NODELIST, nodes, -1); diff --git a/src/sview/part_info.c b/src/sview/part_info.c index d018e04029b5c99ee22745a15c5a67f90c2997b3..cb4519f9bb1fce6d6a7615e58d928b5866bf588b 100644 --- a/src/sview/part_info.c +++ b/src/sview/part_info.c @@ -500,12 +500,8 @@ static GtkWidget *_admin_full_edit_part(update_part_msg_t *part_msg, GtkBin *bin = NULL; GtkViewport *view = NULL; GtkTable *table = NULL; - GtkWidget *label = NULL; - GtkWidget *entry = NULL; - GtkTreeModel *model2 = NULL; - GtkCellRenderer *renderer = NULL; int i = 0, row = 0; - char *temp_char = NULL; + display_data_t *display_data = display_data_part; gtk_scrolled_window_set_policy(window, GTK_POLICY_NEVER, @@ -519,61 +515,22 @@ static GtkWidget *_admin_full_edit_part(update_part_msg_t *part_msg, gtk_table_set_homogeneous(table, FALSE); for(i = 0; i < SORTID_CNT; i++) { - if(display_data_part[i].extra == EDIT_MODEL) { - /* edittable items that can only be known - values */ - model2 = GTK_TREE_MODEL( - create_model_part(display_data_part[i].id)); - if(!model2) { - g_print("no model set up for %d(%s)\n", - display_data_part[i].id, - display_data_part[i].name); + while(display_data++) { + if(display_data->id == -1) + break; + if(!display_data->name) continue; - } - entry = gtk_combo_box_new_with_model(model2); - g_object_unref(model2); - - _set_active_combo_part(GTK_COMBO_BOX(entry), model, - iter, display_data_part[i].id); - - g_signal_connect(entry, "changed", - G_CALLBACK( - _admin_edit_combo_box_part), - part_msg); - - renderer = gtk_cell_renderer_text_new(); - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(entry), - renderer, TRUE); - gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(entry), - renderer, "text", 0); - } else if(display_data_part[i].extra == EDIT_TEXTBOX) { - /* other edittable items that are unknown */ - entry = create_entry(); - gtk_tree_model_get(model, iter, - display_data_part[i].id, - &temp_char, -1); - gtk_entry_set_max_length(GTK_ENTRY(entry), - (DEFAULT_ENTRY_LENGTH + - display_data_part[i].id)); - - if(temp_char) { - gtk_entry_set_text(GTK_ENTRY(entry), - temp_char); - g_free(temp_char); - } - g_signal_connect(entry, "focus-out-event", - G_CALLBACK(_admin_focus_out_part), - part_msg); - } else /* others can't be altered by the user */ - continue; - label = gtk_label_new(display_data_part[i].name); - gtk_table_attach(table, label, 0, 1, row, row+1, - GTK_FILL | GTK_EXPAND, GTK_SHRINK, - 0, 0); - gtk_table_attach(table, entry, 1, 2, row, row+1, - GTK_FILL, GTK_SHRINK, - 0, 0); - row++; + if(display_data->id != i) + continue; + display_admin_edit( + table, part_msg, &row, model, iter, + display_data, + G_CALLBACK(_admin_edit_combo_box_part), + G_CALLBACK(_admin_focus_out_part), + _set_active_combo_part); + break; + } + display_data = display_data_part; } gtk_table_resize(table, row, 2); diff --git a/src/sview/resv_info.c b/src/sview/resv_info.c index c47e3eb049f54db4bb903cd04e68ed870e63269c..170329e4fdc8399dd0132ef2ce302fa7ff85ac9f 100644 --- a/src/sview/resv_info.c +++ b/src/sview/resv_info.c @@ -371,12 +371,8 @@ static GtkWidget *_admin_full_edit_resv(resv_desc_msg_t *resv_msg, GtkBin *bin = NULL; GtkViewport *view = NULL; GtkTable *table = NULL; - GtkWidget *label = NULL; - GtkWidget *entry = NULL; - GtkTreeModel *model2 = NULL; - GtkCellRenderer *renderer = NULL; int i = 0, row = 0; - char *temp_char = NULL; + display_data_t *display_data = display_data_resv; gtk_scrolled_window_set_policy(window, GTK_POLICY_NEVER, @@ -390,61 +386,22 @@ static GtkWidget *_admin_full_edit_resv(resv_desc_msg_t *resv_msg, gtk_table_set_homogeneous(table, FALSE); for(i = 0; i < SORTID_CNT; i++) { - if(display_data_resv[i].extra == EDIT_MODEL) { - /* edittable items that can only be known - values */ - model2 = GTK_TREE_MODEL( - create_model_resv(display_data_resv[i].id)); - if(!model2) { - g_print("no model set up for %d(%s)\n", - display_data_resv[i].id, - display_data_resv[i].name); + while(display_data++) { + if(display_data->id == -1) + break; + if(!display_data->name) continue; - } - entry = gtk_combo_box_new_with_model(model2); - g_object_unref(model2); - - _set_active_combo_resv(GTK_COMBO_BOX(entry), model, - iter, display_data_resv[i].id); - - g_signal_connect(entry, "changed", - G_CALLBACK( - _admin_edit_combo_box_resv), - resv_msg); - - renderer = gtk_cell_renderer_text_new(); - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(entry), - renderer, TRUE); - gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(entry), - renderer, "text", 0); - } else if(display_data_resv[i].extra == EDIT_TEXTBOX) { - /* other edittable items that are unknown */ - entry = create_entry(); - gtk_tree_model_get(model, iter, - display_data_resv[i].id, - &temp_char, -1); - gtk_entry_set_max_length(GTK_ENTRY(entry), - (DEFAULT_ENTRY_LENGTH + - display_data_resv[i].id)); - - if(temp_char) { - gtk_entry_set_text(GTK_ENTRY(entry), - temp_char); - g_free(temp_char); - } - g_signal_connect(entry, "focus-out-event", - G_CALLBACK(_admin_focus_out_resv), - resv_msg); - } else /* others can't be altered by the user */ - continue; - label = gtk_label_new(display_data_resv[i].name); - gtk_table_attach(table, label, 0, 1, row, row+1, - GTK_FILL | GTK_EXPAND, GTK_SHRINK, - 0, 0); - gtk_table_attach(table, entry, 1, 2, row, row+1, - GTK_FILL, GTK_SHRINK, - 0, 0); - row++; + if(display_data->id != i) + continue; + display_admin_edit( + table, resv_msg, &row, model, iter, + display_data, + G_CALLBACK(_admin_edit_combo_box_resv), + G_CALLBACK(_admin_focus_out_resv), + _set_active_combo_resv); + break; + } + display_data = display_data_resv; } gtk_table_resize(table, row, 2); diff --git a/src/sview/sview.h b/src/sview/sview.h index 4d6cd25bee6c344291a526b7bea1c1a09b062a66..12869867306c47b7dbdce25638e7d7295049227b 100644 --- a/src/sview/sview.h +++ b/src/sview/sview.h @@ -446,6 +446,15 @@ 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_admin_edit(GtkTable *table, void *type_msg, int *row, + GtkTreeModel *model, GtkTreeIter *iter, + display_data_t *display_data, + GCallback changed_callback, + GCallback focus_callback, + void (*set_active)( + GtkComboBox *combo, + GtkTreeModel *model, GtkTreeIter *iter, + int type)); extern void display_edit_note(char *edit_note); extern void add_display_treestore_line(int update, GtkTreeStore *treestore,