extern void close_tab(GtkWidget *widget, GdkEventButton *event, display_data_t *display_data) { if (event->button == 3) /* don't do anything with a right click */ return; working_sview_config.page_visible[display_data->extra] = false; toggle_tab_visiblity(NULL, display_data); //g_print("hid %d\n", display_data->extra); }
extern int configure_defaults(void) { GtkScrolledWindow *window = create_scrolled_window(); GtkWidget *popup = gtk_dialog_new_with_buttons( "Sview Defaults", GTK_WINDOW(main_window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, NULL); GtkWidget *label = gtk_dialog_add_button(GTK_DIALOG(popup), GTK_STOCK_OK, GTK_RESPONSE_OK); GtkBin *bin = NULL; GtkViewport *view = NULL; GtkTable *table = NULL; int i = 0, row = 0; char tmp_char[100]; char *tmp_char_ptr; display_data_t *display_data = display_data_defaults; sview_config_t tmp_config; int response = 0; int rc = SLURM_SUCCESS; uint32_t width = 150; uint32_t height = 700; apply_hidden_change = TRUE; memcpy(&tmp_config, &default_sview_config, sizeof(sview_config_t)); gtk_window_set_default(GTK_WINDOW(popup), label); gtk_dialog_add_button(GTK_DIALOG(popup), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); /* for(i=0;; i++) { if (main_popup_positioner[i].width == -1) break; if (strstr("Sview Defaults", main_popup_positioner[i].name)) { pos_x = main_popup_positioner[i].width; pos_y = main_popup_positioner[i].height; break; } } */ gtk_window_set_default_size(GTK_WINDOW(popup), width, height); snprintf(tmp_char, sizeof(tmp_char), "Default Settings for Sview"); label = gtk_label_new(tmp_char); gtk_scrolled_window_set_policy(window, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); bin = GTK_BIN(&window->container); view = GTK_VIEWPORT(bin->child); bin = GTK_BIN(&view->bin); table = GTK_TABLE(bin->child); gtk_table_resize(table, SORTID_CNT, 2); gtk_table_set_homogeneous(table, FALSE); for (i = 0; i < SORTID_CNT; i++) { while (display_data++) { if (display_data->id == -1) break; if (!display_data->name) continue; if (display_data->id != i) continue; _local_display_admin_edit( table, &tmp_config, &row, display_data); break; } display_data = display_data_defaults; } gtk_table_resize(table, row, 2); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(popup)->vbox), label, FALSE, FALSE, 0); if (window) gtk_box_pack_start(GTK_BOX(GTK_DIALOG(popup)->vbox), GTK_WIDGET(window), TRUE, TRUE, 0); gtk_widget_show_all(popup); response = gtk_dialog_run (GTK_DIALOG(popup)); if (response == GTK_RESPONSE_OK) { tmp_char_ptr = g_strdup_printf( "Defaults updated successfully"); if (global_edit_error) tmp_char_ptr = global_edit_error_msg; else if (!global_send_update_msg) tmp_char_ptr = g_strdup_printf( "No change detected."); else { int action = 0; gdk_window_set_cursor(main_window->window, in_process_cursor); if (tmp_config.ruled_treeview != working_sview_config.ruled_treeview) { /* get rid of each existing table */ cluster_change_block(); cluster_change_resv(); cluster_change_part(); cluster_change_job(); cluster_change_node(); cluster_change_front_end(); } else if (tmp_config.grid_topological != working_sview_config.grid_topological) { apply_hidden_change = FALSE; if (tmp_config.grid_topological) { default_sview_config.grid_topological = tmp_config.grid_topological; if (!g_switch_nodes_maps) rc = get_topo_conf(); if (rc != SLURM_SUCCESS) { /*denied*/ tmp_char_ptr = g_strdup_printf( "Valid topology not " "detected"); tmp_config.grid_topological = FALSE; goto denied_change; } } /*force fresh grid and * node state check * */ FREE_NULL_LIST(grid_button_list); slurm_free_node_info_msg(g_node_info_ptr); g_node_info_ptr = NULL; } /*apply change*/ memcpy(&default_sview_config, &tmp_config, 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, working_sview_config.admin_mode); gtk_toggle_action_set_active( default_sview_config.action_ruled, working_sview_config.ruled_treeview); gtk_toggle_action_set_active( default_sview_config.action_grid, working_sview_config.show_grid); gtk_toggle_action_set_active( default_sview_config.action_hidden, working_sview_config.show_hidden); apply_hidden_change = TRUE; gtk_toggle_action_set_active( default_sview_config.action_page_opts, working_sview_config.save_page_opts); #ifdef GTK2_USE_RADIO_SET /* Since this value isn't a simple 0->n we need to translate if we don't have the newer gtk. */ action = working_sview_config.tab_pos; #else /* If using older gtk we need to translate the tab position to that of the position in the radio list. */ action = _trans_tab_pos(working_sview_config.tab_pos); #endif sview_radio_action_set_current_value( default_sview_config.action_tab, action); for (i=0; i<PAGE_CNT; i++) { if (main_display_data[i].id == -1) break; if (!main_display_data[i].name || (i == TAB_PAGE)) continue; toggle_tab_visiblity(NULL, main_display_data+i); } get_system_stats(main_grid_table); /******************************************/ save_defaults(false); } denied_change: display_edit_note(tmp_char_ptr); g_free(tmp_char_ptr); } global_entry_changed = 0; gtk_widget_destroy(popup); if (main_window && main_window->window) gdk_window_set_cursor(main_window->window, NULL); return rc; }