From b87dfb341aac4187e5361133ca330d4bf5846fe2 Mon Sep 17 00:00:00 2001 From: Danny Auble <da@llnl.gov> Date: Fri, 15 Oct 2010 00:39:30 +0000 Subject: [PATCH] fix for bad logic once again --- src/sview/common.c | 49 +++++++++++++----------- src/sview/defaults.c | 88 ++++++++++++++++++++++---------------------- src/sview/sview.c | 8 ++-- src/sview/sview.h | 14 +++---- 4 files changed, 82 insertions(+), 77 deletions(-) diff --git a/src/sview/common.c b/src/sview/common.c index e94c8767a8e..0c01b0970dc 100644 --- a/src/sview/common.c +++ b/src/sview/common.c @@ -482,11 +482,20 @@ static void _cell_data_func(GtkTreeViewColumn *col, static void _add_col_to_treeview(GtkTreeView *tree_view, display_data_t *display_data, int color_column) { - GtkTreeViewColumn *col = gtk_tree_view_column_new(); - GtkListStore *model = (display_data->create_model)(display_data->id); + GtkTreeViewColumn *col; + GtkListStore *model; GtkCellRenderer *renderer = NULL; - if(model && display_data->extra != EDIT_NONE) { + /* Since some systems have different default columns (some + * which aren't displayed on all types of clusters only add a + * column if there is a name for it. */ + if (!display_data->name && (display_data->extra != EDIT_COLOR)) + return; + + col = gtk_tree_view_column_new(); + model = (display_data->create_model)(display_data->id); + + if (model && display_data->extra != EDIT_NONE) { renderer = gtk_cell_renderer_combo_new(); g_object_set(renderer, "model", model, @@ -494,12 +503,12 @@ static void _add_col_to_treeview(GtkTreeView *tree_view, "has-entry", 1, "editable", TRUE, NULL); - } else if(display_data->extra == EDIT_TEXTBOX) { + } else if (display_data->extra == EDIT_TEXTBOX) { renderer = gtk_cell_renderer_text_new(); g_object_set(renderer, "editable", TRUE, NULL); - } else if(display_data->extra == EDIT_COLOR) { + } else if (display_data->extra == EDIT_COLOR) { GdkPixbuf *pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, false, 8, 10, 20); renderer = gtk_cell_renderer_pixbuf_new(); @@ -513,7 +522,7 @@ static void _add_col_to_treeview(GtkTreeView *tree_view, g_object_set_data(G_OBJECT(renderer), "column", GINT_TO_POINTER(display_data->id)); - if(display_data->extra == EDIT_COLOR) { + if (display_data->extra == EDIT_COLOR) { gtk_tree_view_column_set_cell_data_func( col, renderer, _cell_data_func, NULL, NULL); @@ -535,13 +544,7 @@ static void _add_col_to_treeview(GtkTreeView *tree_view, gtk_tree_view_column_set_title(col, display_data->name); } - /*consult llnl - * dpr added this "if" xtra line .. - * without this, you get 2 extra columns - * on the jobs tab ?? - * for what reason ?? */ - if (display_data->name || (display_data->extra == EDIT_COLOR)) - gtk_tree_view_append_column(tree_view, col); + gtk_tree_view_append_column(tree_view, col); } static void _toggle_state_changed(GtkCheckMenuItem *menuitem, @@ -725,8 +728,7 @@ extern int build_nodes_bitmap(char *node_names, bitstr_t **bitmap) while ( (this_node_name = hostlist_shift(host_list)) ) { node_inx = _find_node_inx(this_node_name); //topo if (node_inx != -1) { - bit_set(my_bitmap, - (bitoff_t) (node_inx)); + bit_set(my_bitmap, (bitoff_t) (node_inx)); } else { continue; } @@ -926,16 +928,19 @@ extern void make_fields_menu(popup_info_t *popup_win, GtkMenu *menu, extern void set_page_opts(int tab, display_data_t *display_data, int count, char* initial_opts) { - page_options_t *page_options; + page_opts_t *page_opts; int j= 0; xassert(tab < PAGE_CNT); - page_options = &working_sview_config.page_options[tab]; - if (!page_options->col_list) - page_options->col_list = xstrdup(initial_opts); - page_options->display_data = display_data; - page_options->count = count; + page_opts = &working_sview_config.page_opts[tab]; + if (!page_opts->col_list) { + page_opts->def_col_list = 1; + page_opts->col_list = xstrdup(initial_opts); + } + + page_opts->display_data = display_data; + page_opts->count = count; for (j=0; j<count; j++) { if (display_data->id == -1) break; @@ -943,7 +948,7 @@ extern void set_page_opts(int tab, display_data_t *display_data, display_data++; continue; } - if (strstr(page_options->col_list, display_data->name)) { + if (strstr(page_opts->col_list, display_data->name)) { display_data->show = TRUE; } display_data++; diff --git a/src/sview/defaults.c b/src/sview/defaults.c index 9ef9106540f..adae92e60f0 100644 --- a/src/sview/defaults.c +++ b/src/sview/defaults.c @@ -101,7 +101,6 @@ static display_data_t display_data_defaults[] = { extern display_data_t main_display_data[]; - static void _set_active_combo_defaults(GtkComboBox *combo, sview_config_t *sview_config, int type) @@ -503,8 +502,8 @@ static void _init_sview_conf() if(getenv("SVIEW_GRID_SPEEDUP")) default_sview_config.grid_speedup = 1; for(i=0; i<PAGE_CNT; i++) { - memset(&default_sview_config.page_options[i], - 0, sizeof(page_options_t)); + memset(&default_sview_config.page_opts[i], + 0, sizeof(page_opts_t)); if(!main_display_data[i].show) default_sview_config.page_visible[i] = FALSE; @@ -520,27 +519,27 @@ extern int load_defaults() {"AdminMode", S_P_BOOLEAN}, {"DefaultPage", S_P_STRING}, {"ExcludedPartitions", S_P_STRING}, /* Vestigial */ + {"FullInfoPopupWidth", S_P_UINT32}, + {"FullInfoPopupHeight", S_P_UINT32}, {"GridHorizontal", S_P_UINT32}, {"GridSpeedUp", S_P_BOOLEAN}, {"GridTopo", S_P_BOOLEAN}, {"GridVertical", S_P_UINT32}, {"GridXWidth", S_P_UINT32}, + {"MainHeight", S_P_UINT32}, + {"MainWidth", S_P_UINT32}, + {"PageOptsBlock", S_P_STRING}, + {"PageOptsJob", S_P_STRING}, + {"PageOptsNode", S_P_STRING}, + {"PageOptsPartition", S_P_STRING}, + {"PageOptsReservation", S_P_STRING}, {"RefreshDelay", S_P_UINT16}, {"RuledTables", S_P_BOOLEAN}, {"ShowGrid", S_P_BOOLEAN}, {"ShowHidden", S_P_BOOLEAN}, - {"SaveTabsSettings", S_P_BOOLEAN}, + {"SavePageSettings", S_P_BOOLEAN}, {"TabPosition", S_P_STRING}, {"VisiblePages", S_P_STRING}, - {"MainWidth", S_P_UINT32}, - {"MainHeight", S_P_UINT32}, - {"FullInfoPopupWidth", S_P_UINT32}, - {"FullInfoPopupHeight", S_P_UINT32}, - {"pageoptsJob", S_P_STRING}, - {"pageoptsPartition", S_P_STRING}, - {"pageoptsReservation", S_P_STRING}, - {"pageoptsBlock", S_P_STRING}, - {"pageoptsNode", S_P_STRING}, {NULL} }; char *pathname = NULL; @@ -607,7 +606,7 @@ extern int load_defaults() s_p_get_boolean(&default_sview_config.show_hidden, "ShowHidden", hashtbl); s_p_get_boolean(&default_sview_config.save_page_settings, - "SaveTabsSettings", hashtbl); + "SavePageSettings", hashtbl); s_p_get_uint32(&default_sview_config.main_width, "MainWidth", hashtbl); s_p_get_uint32(&default_sview_config.main_height, @@ -656,19 +655,18 @@ extern int load_defaults() for (i=0; i<PAGE_CNT; i++) { char *col_list = NULL; char *page_name = page_to_str(i); - page_options_t *page_options = - &default_sview_config.page_options[i]; + page_opts_t *page_opts = &default_sview_config.page_opts[i]; + if (!page_name) continue; - memset(page_options, 0, sizeof(page_options_t)); - tmp_str = xstrdup_printf("pageopts%s", page_name); + memset(page_opts, 0, sizeof(page_opts_t)); + page_opts->page_name = page_name; + tmp_str = xstrdup_printf("PageOpts%s", page_name); s_p_get_string(&col_list, tmp_str, hashtbl); xfree(tmp_str); if (col_list) { - page_options->page_name = page_name; - page_options->col_list = col_list; - page_options->def_col_list = xstrdup(col_list); - replus(page_options->col_list); + page_opts->col_list = col_list; + replus(page_opts->col_list); } } @@ -676,9 +674,11 @@ extern int load_defaults() s_p_hashtbl_destroy(hashtbl); end_it: - /* copy it all into the working struct */ - memcpy(&working_sview_config, - &default_sview_config, sizeof(sview_config_t)); + /* copy it all into the working struct (memory will work out + * in the end the col_list and def_col_list don't change) */ + memcpy(&working_sview_config, &default_sview_config, + sizeof(sview_config_t)); + xfree(pathname); return SLURM_SUCCESS; } @@ -811,7 +811,7 @@ extern int save_defaults(bool final_save) xfree(tmp_str); if(rc != SLURM_SUCCESS) goto end_it; - tmp_str = xstrdup_printf("SaveTabsSettings=%s\n", + tmp_str = xstrdup_printf("SavePageSettings=%s\n", default_sview_config.save_page_settings ? "YES" : "NO"); rc = _write_to_file(fd, tmp_str); @@ -837,18 +837,16 @@ extern int save_defaults(bool final_save) /* save all current page options */ for (i=0; i<PAGE_CNT; i++) { - page_options_t *page_options = - &working_sview_config.page_options[i]; - if (!page_options->page_name) + page_opts_t *page_opts = + &working_sview_config.page_opts[i]; + + if (!page_opts->page_name) continue; - tmp_str = xstrdup_printf("pageopts%s=", - page_options->page_name); if (working_sview_config.save_page_settings) { - tmp_str2 = xstrdup(","); - if (page_options->display_data) { - display_data = page_options->display_data; - for (j=0; j<page_options->count; j++) { + if (page_opts->display_data) { + display_data = page_opts->display_data; + for (j=0; j<page_opts->count; j++) { if (display_data->id == -1) break; if (display_data->name @@ -860,22 +858,24 @@ extern int save_defaults(bool final_save) replspace(tmp_str2); } //have a display struct ^^ //save new option set ^^ - } else { + } else if (!page_opts->def_col_list && page_opts->col_list) { //user requested no save of page options - tmp_str2 = xstrdup(page_options->def_col_list); + g_print("using default\n"); + tmp_str2 = xstrdup(page_opts->col_list); } - xfree(page_options->col_list); - xfree(page_options->def_col_list); + xfree(page_opts->col_list); if (tmp_str2) { - xstrfmtcat(tmp_str, "%s\n", tmp_str2); + tmp_str = xstrdup_printf("PageOpts%s=%s\n", + page_opts->page_name, + tmp_str2); xfree(tmp_str2); rc = _write_to_file(fd, tmp_str); + xfree(tmp_str); if (rc != SLURM_SUCCESS) goto end_it; } - xfree(tmp_str); }//spin the pages end_it: @@ -1118,6 +1118,7 @@ extern int configure_defaults() sizeof(sview_config_t)); memcpy(&working_sview_config, &tmp_config, sizeof(sview_config_t)); + /* set the current display to the default */ gtk_toggle_action_set_active( default_sview_config.action_admin, @@ -1133,7 +1134,7 @@ extern int configure_defaults() working_sview_config.show_hidden); apply_hidden_change = TRUE; gtk_toggle_action_set_active( - default_sview_config.action_stabssets, + default_sview_config.action_page_opts, working_sview_config.save_page_settings); sview_radio_action_set_current_value( default_sview_config.action_tab, @@ -1147,8 +1148,7 @@ extern int configure_defaults() || (i == TAB_PAGE)) continue; - toggle_tab_visiblity(NULL, - main_display_data+i); + toggle_tab_visiblity(NULL, main_display_data+i); } get_system_stats(main_grid_table); /******************************************/ diff --git a/src/sview/sview.c b/src/sview/sview.c index 3b3c3777c2c..88ef17e0e88 100644 --- a/src/sview/sview.c +++ b/src/sview/sview.c @@ -625,7 +625,7 @@ static char *_get_ui_description() " <menu action='options'>" " <menuitem action='grid'/>" " <menuitem action='hidden'/>" - " <menuitem action='stabssets'/>" + " <menuitem action='page_opts'/>" #ifdef WANT_TOPO_ON_MAIN_OPTIONS " <menuitem action='topoorder'/>" #endif @@ -780,7 +780,7 @@ static GtkWidget *_get_menubar_menu(GtkWidget *window, GtkWidget *notebook) {"hidden", GTK_STOCK_SELECT_COLOR, "Show _Hidden", "<control>h", "Display Hidden Partitions/Jobs", G_CALLBACK(_set_hidden), working_sview_config.show_hidden}, - {"stabssets", GTK_STOCK_SELECT_COLOR, "Save Page _Settings", + {"page_opts", GTK_STOCK_SELECT_COLOR, "Save Page _Settings", "<control>w", "Save Page _Settings", G_CALLBACK(_set_stabbsets), working_sview_config.save_page_settings}, @@ -878,9 +878,9 @@ static GtkWidget *_get_menubar_menu(GtkWidget *window, GtkWidget *notebook) default_sview_config.action_hidden = (GtkToggleAction *)gtk_action_group_get_action( menu_action_group, "hidden"); - default_sview_config.action_stabssets = + default_sview_config.action_page_opts = (GtkToggleAction *)gtk_action_group_get_action( - menu_action_group, "stabssets"); + menu_action_group, "page_opts"); // default_sview_config.action_gridtopo = // (GtkToggleAction *)gtk_action_group_get_action( // menu_action_group, "topoorder"); diff --git a/src/sview/sview.h b/src/sview/sview.h index f7bf29ee8aa..a68dbf228d4 100644 --- a/src/sview/sview.h +++ b/src/sview/sview.h @@ -142,7 +142,7 @@ enum { EDIT_NONE, EDIT_COLOR }; -//typedef struct pages_options page_options_t; +//typedef struct pages_options page_opts_t; typedef struct display_data display_data_t; typedef struct specific_info specific_info_t; typedef struct popup_info popup_info_t; @@ -175,19 +175,19 @@ typedef struct { } switch_record_bitmaps_t; typedef struct { - char *page_name; char *col_list; - char *def_col_list; - display_data_t *display_data; int count; -} page_options_t; + bool def_col_list; + display_data_t *display_data; + char *page_name; +} page_opts_t; /* Input parameters */ typedef struct { GtkToggleAction *action_admin; GtkToggleAction *action_grid; GtkToggleAction *action_hidden; - GtkToggleAction *action_stabssets; + GtkToggleAction *action_page_opts; GtkToggleAction *action_gridtopo; GtkToggleAction *action_ruled; GtkRadioAction *action_tab; @@ -203,7 +203,7 @@ typedef struct { uint32_t main_width; uint32_t main_height; GtkWidget *page_check_widget[PAGE_CNT]; - page_options_t page_options[PAGE_CNT]; + page_opts_t page_opts[PAGE_CNT]; bool page_visible[PAGE_CNT]; uint16_t refresh_delay; bool ruled_treeview; -- GitLab