| /****************************************************************************\ |
| * sview.h - definitions used for sview data functions |
| ***************************************************************************** |
| * Copyright (C) 2004 The Regents of the University of California. |
| * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). |
| * Written by Danny Auble <da@llnl.gov> |
| * CODE-OCEC-09-009. All rights reserved. |
| * |
| * This file is part of Slurm, a resource management program. |
| * For details, see <https://slurm.schedmd.com/>. |
| * Please also read the included file: DISCLAIMER. |
| * |
| * Slurm is free software; you can redistribute it and/or modify it under |
| * the terms of the GNU General Public License as published by the Free |
| * Software Foundation; either version 2 of the License, or (at your option) |
| * any later version. |
| * |
| * Slurm is distributed in the hope that it will be useful, but WITHOUT ANY |
| * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
| * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
| * details. |
| * |
| * You should have received a copy of the GNU General Public License along |
| * with Slurm; if not, write to the Free Software Foundation, Inc., |
| * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
| \****************************************************************************/ |
| |
| #ifndef _SVIEW_H |
| #define _SVIEW_H |
| |
| #include "config.h" |
| |
| #define _GNU_SOURCE |
| |
| #include <ctype.h> |
| #include <inttypes.h> |
| #include <getopt.h> |
| #include <pwd.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <sys/stat.h> |
| #include <sys/types.h> |
| #include <unistd.h> |
| |
| #include "slurm/slurmdb.h" |
| |
| #include "src/common/assoc_mgr.h" |
| #include "src/common/bitstring.h" |
| #include "src/common/hostlist.h" |
| #include "src/common/list.h" |
| #include "src/common/macros.h" |
| #include "src/common/parse_time.h" |
| #include "src/interfaces/select.h" |
| #include "src/common/slurmdb_defs.h" |
| #include "src/common/slurm_protocol_api.h" |
| #include "src/common/slurm_protocol_defs.h" |
| #include "src/common/strlcpy.h" |
| #include "src/common/uid.h" |
| #include "src/common/xstring.h" |
| |
| #include "gthread_helper.h" |
| |
| /* getopt_long options, integers but not characters */ |
| #define OPT_LONG_HELP 0x100 |
| #define OPT_LONG_USAGE 0x101 |
| #define OPT_LONG_HIDE 0x102 |
| |
| #define POS_LOC 0 |
| #define DEFAULT_ENTRY_LENGTH 500 |
| |
| #define MAKE_TOPO_1 -6 |
| #define MAKE_TOPO_2 -5 |
| #define MAKE_INIT -4 |
| #define MAKE_DOWN -3 |
| #define MAKE_BLACK -2 |
| #define MAKE_WHITE -1 |
| |
| #define EXTRA_BASE 0x0000ffff |
| #define EXTRA_FLAGS 0xffff0000 |
| #define EXTRA_NODES 0x00010000 |
| |
| enum { JOB_PAGE, |
| PART_PAGE, |
| RESV_PAGE, |
| BB_PAGE, |
| NODE_PAGE, |
| SUBMIT_PAGE, |
| ADMIN_PAGE, |
| INFO_PAGE, |
| TAB_PAGE, |
| PAGE_CNT |
| }; |
| enum { TAB_CLICKED, |
| ROW_LEFT_CLICKED, |
| ROW_CLICKED, |
| FULL_CLICKED, |
| POPUP_CLICKED |
| }; |
| |
| enum { ERROR_VIEW, |
| INFO_VIEW |
| }; |
| |
| enum { STATUS_ADMIN_MODE, |
| STATUS_REFRESH, |
| STATUS_ADMIN_EDIT |
| }; |
| |
| enum { DISPLAY_NAME, |
| DISPLAY_VALUE, |
| DISPLAY_FONT |
| }; |
| |
| enum { EDIT_NONE, |
| EDIT_ARRAY, |
| EDIT_MODEL, |
| EDIT_TEXTBOX, |
| EDIT_COLOR |
| }; |
| |
| //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; |
| typedef struct popup_positioner popup_positioner_t; |
| |
| typedef enum { |
| CREATE_PARTITION = 1, |
| CREATE_RESERVATION, |
| SEARCH_JOB_ID = 10, |
| SEARCH_JOB_USER, |
| SEARCH_JOB_STATE, |
| SEARCH_PARTITION_NAME, |
| SEARCH_PARTITION_STATE, |
| SEARCH_NODE_NAME, |
| SEARCH_NODE_STATE, |
| SEARCH_RESERVATION_NAME, |
| } sview_search_type_t; |
| |
| typedef struct { |
| uint32_t x; |
| uint32_t y; |
| int cntr; |
| int slider; |
| } popup_pos_t; |
| |
| typedef struct { |
| char *nodes; |
| bitstr_t *node_bitmap; |
| } switch_record_bitmaps_t; |
| |
| typedef struct { |
| list_t *col_list; |
| 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_page_opts; |
| GtkToggleAction *action_gridtopo; |
| GtkToggleAction *action_ruled; |
| GtkRadioAction *action_tab; |
| uint16_t button_size; |
| uint16_t gap_size; |
| bool admin_mode; |
| uint16_t default_page; |
| uint32_t fi_popup_width; |
| uint32_t fi_popup_height; |
| uint32_t grid_hori; |
| bool grid_topological; |
| uint32_t grid_vert; |
| uint32_t grid_x_width; |
| uint32_t main_width; |
| uint32_t main_height; |
| GtkWidget *page_check_widget[PAGE_CNT]; |
| page_opts_t page_opts[PAGE_CNT]; |
| bool page_visible[PAGE_CNT]; |
| uint16_t refresh_delay; |
| bool ruled_treeview; |
| bool show_grid; |
| bool show_hidden; |
| bool save_page_opts; |
| uint16_t tab_pos; |
| uint32_t convert_flags; |
| } sview_config_t; |
| |
| struct display_data { |
| GType type; |
| int id; |
| char *name; |
| bool show; |
| uint32_t extra; |
| void (*refresh) (GtkAction *action, gpointer user_data); |
| GtkListStore *(*create_model)(int type); |
| void (*admin_edit) (GtkCellRendererText *cell, |
| const char *path_string, |
| const char *new_text, |
| gpointer data); |
| void (*get_info) (GtkTable *table, display_data_t *display_data); |
| void (*specific) (popup_info_t *popup_win); |
| void (*set_menu) (void *arg, void *arg2, |
| GtkTreePath *path, int type); |
| gpointer user_data; |
| gpointer button_list; |
| }; |
| |
| struct popup_positioner { |
| int id; |
| char *name; |
| uint32_t width; |
| uint32_t height; |
| }; |
| |
| typedef struct { |
| sview_search_type_t search_type; |
| gchar *cluster_name; |
| gchar *gchar_data; |
| int int_data; |
| int int_data2; |
| } sview_search_info_t; |
| |
| struct specific_info { |
| int type; /* calling window type */ |
| int view; |
| sview_search_info_t *search_info; |
| char *title; |
| GtkWidget *display_widget; |
| }; |
| |
| struct popup_info { |
| display_data_t *display_data; |
| GtkWidget *event_box; |
| int force_refresh; |
| int full_grid; |
| list_t *grid_button_list; |
| list_t *multi_button_list; |
| GtkTable *grid_table; |
| GtkTreeIter iter; |
| GtkTreeModel *model; |
| int *node_inx; |
| int node_inx_id; |
| bool not_found; |
| GtkWidget *popup; |
| int *running; |
| int show_grid; |
| specific_info_t *spec_info; |
| GtkTable *table; |
| int toggled; |
| int type; /* window type */ |
| }; |
| |
| typedef struct { |
| GtkWidget *button; |
| list_t *button_list; /*list this grid_button exists in does not |
| * need to be freed, should only be a |
| * pointer to an existing list */ |
| char *color; |
| int color_inx; |
| int inx; |
| GtkStateType last_state; |
| char *node_name; |
| uint32_t state; |
| GtkTable *table; |
| int table_x; |
| int table_y; |
| #ifndef GTK2_USE_TOOLTIP |
| GtkTooltips *tip; |
| #endif |
| bool used; |
| } grid_button_t; |
| |
| typedef struct { |
| char *boot_time; |
| char *color; |
| GtkTreeIter iter_ptr; |
| bool iter_set; |
| char *node_name; |
| node_info_t *node_ptr; |
| int pos; |
| char *reason; |
| char *rack_mp; |
| char *slurmd_start_time; |
| } sview_node_info_t; |
| |
| typedef struct { |
| display_data_t *display_data; |
| list_t **button_list; |
| } signal_params_t; |
| |
| extern sview_config_t default_sview_config; |
| extern sview_config_t working_sview_config; |
| |
| extern int fini; |
| extern bool toggled; |
| extern bool force_refresh; |
| extern bool apply_hidden_change; |
| extern bool apply_partition_check; |
| extern list_t *popup_list; |
| extern list_t *grid_button_list; |
| extern list_t *multi_button_list; |
| extern list_t *signal_params_list; |
| extern bool global_entry_changed; |
| extern bool global_send_update_msg; |
| extern bool global_edit_error; |
| extern bool global_multi_error; |
| extern int global_error_code; |
| extern gchar *global_edit_error_msg; |
| extern GtkWidget *main_notebook; |
| extern GtkWidget *main_statusbar; |
| extern GtkWidget *main_window; |
| extern GtkTable *main_grid_table; |
| extern GMutex *sview_mutex; |
| extern int global_row_count; |
| extern gint last_event_x; |
| extern gint last_event_y; |
| extern GdkCursor* in_process_cursor; |
| extern char *sview_colors[]; |
| extern int sview_colors_cnt; |
| extern uint32_t cluster_flags; |
| extern list_t *cluster_list; |
| extern job_info_msg_t *g_job_info_ptr; |
| extern node_info_msg_t *g_node_info_ptr; |
| extern partition_info_msg_t *g_part_info_ptr; |
| extern reserve_info_msg_t *g_resv_info_ptr; |
| extern burst_buffer_info_msg_t *g_bb_info_ptr; |
| extern slurm_ctl_conf_info_msg_t *g_ctl_info_ptr; |
| extern job_step_info_response_msg_t *g_step_info_ptr; |
| extern topo_info_response_msg_t *g_topo_info_msg_ptr; |
| extern switch_record_bitmaps_t *g_switch_nodes_maps; |
| extern int g_switch_nodes_maps_count; |
| extern popup_positioner_t main_popup_positioner[]; |
| extern popup_pos_t popup_pos; |
| extern char *federation_name; |
| |
| extern void init_grid(node_info_msg_t *node_info_ptr); |
| extern int set_grid(int start, int end, int count); |
| extern int set_grid_bg(int *start, int *end, int count, int set); |
| extern void print_grid(int dir); |
| |
| //sview.c |
| extern void refresh_main(GtkAction *action, gpointer user_data); |
| extern void toggle_tab_visiblity(GtkToggleButton *toggle_button, |
| display_data_t *display_data); |
| extern gboolean tab_pressed(GtkWidget *widget, GdkEventButton *event, |
| display_data_t *display_data); |
| extern void close_tab(GtkWidget *widget, GdkEventButton *event, |
| display_data_t *display_data); |
| |
| //popups.c |
| extern void create_config_popup(GtkAction *action, gpointer user_data); |
| extern void create_create_popup(GtkAction *action, gpointer user_data); |
| extern void create_dbconfig_popup(GtkAction *action, gpointer user_data); |
| extern void create_search_popup(GtkAction *action, gpointer user_data); |
| extern void change_refresh_popup(GtkAction *action, gpointer user_data); |
| extern void change_grid_popup(GtkAction *action, gpointer user_data); |
| extern void about_popup(GtkAction *action, gpointer user_data); |
| extern void usage_popup(GtkAction *action, gpointer user_data); |
| extern void display_fed_disabled_popup(const char *title); |
| |
| //grid.c |
| extern void destroy_grid_button(void *arg); |
| extern grid_button_t *create_grid_button_from_another( |
| grid_button_t *grid_button, char *name, int color_inx); |
| /* do not free the char * from this function it is static */ |
| extern void change_grid_color(list_t *button_list, int start, int end, |
| int color_inx, bool change_unused, |
| enum node_states state_override); |
| extern void change_grid_color_array(list_t *button_list, int array_len, |
| int *color_inx, bool *color_set_flag, |
| bool only_change_unused, |
| enum node_states state_override); |
| extern void highlight_grid(GtkTreeView *tree_view, int node_inx_id, |
| int color_inx_id, list_t *button_list); |
| extern void highlight_grid_range(int start, int end, list_t *button_list); |
| extern void set_grid_used(list_t *button_list, int start, int end, |
| bool used, bool reset_highlight); |
| extern void get_button_list_from_main(list_t **button_list, int start, int end, |
| int color_inx); |
| extern list_t *copy_main_button_list(int initial_color); |
| extern void put_buttons_in_table(GtkTable *table, list_t *button_list); |
| extern int get_system_stats(GtkTable *table); |
| extern int setup_grid_table(GtkTable *table, list_t *button_list, |
| list_t *node_list); |
| extern void sview_init_grid(bool reset_highlight); |
| extern void sview_clear_unused_grid(list_t *button_list, int color_inx); |
| extern void setup_popup_grid_list(popup_info_t *popup_win); |
| extern void post_setup_popup_grid_list(popup_info_t *popup_win); |
| |
| // part_info.c |
| extern GtkWidget *create_part_entry(update_part_msg_t *part_msg, |
| GtkTreeModel *model, GtkTreeIter *iter); |
| extern bool check_part_includes_node(int node_dx); |
| extern void refresh_part(GtkAction *action, gpointer user_data); |
| extern GtkListStore *create_model_part(int type); |
| extern void admin_edit_part(GtkCellRendererText *cell, |
| const char *path_string, |
| const char *new_text, |
| gpointer data); |
| extern int get_new_info_part(partition_info_msg_t **part_ptr, int force); |
| 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, void *arg2, GtkTreePath *path, int type); |
| extern void popup_all_part(GtkTreeModel *model, GtkTreeIter *iter, int id); |
| extern void select_admin_partitions(GtkTreeModel *model, GtkTreeIter *iter, |
| display_data_t *display_data, |
| GtkTreeView *treeview); |
| extern void admin_part(GtkTreeModel *model, GtkTreeIter *iter, char *type); |
| extern void cluster_change_part(void); |
| |
| // accnt_info.c |
| extern void refresh_accnt(GtkAction *action, gpointer user_data); |
| extern GtkListStore *create_model_accnt(int type); |
| extern void admin_edit_accnt(GtkCellRendererText *cell, |
| const char *path_string, |
| const char *new_text, |
| gpointer data); |
| extern void specific_info_accnt(popup_info_t *popup_win); |
| |
| // job_info.c |
| extern void refresh_job(GtkAction *action, gpointer user_data); |
| extern GtkListStore *create_model_job(int type); |
| extern void admin_edit_job(GtkCellRendererText *cell, |
| const char *path_string, |
| const char *new_text, |
| gpointer data); |
| extern int get_new_info_job(job_info_msg_t **info_ptr, int force); |
| extern int get_new_info_job_step(job_step_info_response_msg_t **info_ptr, |
| int force); |
| 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, void *arg2, GtkTreePath *path, int type); |
| extern void popup_all_job(GtkTreeModel *model, GtkTreeIter *iter, int id); |
| extern void admin_job(GtkTreeModel *model, GtkTreeIter *iter, char *type, |
| GtkTreeView *treeview); |
| extern void cluster_change_job(void); |
| |
| // node_info.c |
| extern void refresh_node(GtkAction *action, gpointer user_data); |
| /* don't destroy the list from this function */ |
| extern list_t *create_node_info_list(node_info_msg_t *node_info_ptr, |
| bool by_partition); |
| extern int update_active_features_node(GtkDialog *dialog, const char *nodelist, |
| const char *old_features); |
| extern int update_avail_features_node(GtkDialog *dialog, const char *nodelist, |
| const char *old_features); |
| extern int update_state_node(GtkDialog *dialog, |
| const char *nodelist, const char *type); |
| extern GtkListStore *create_model_node(int type); |
| extern void select_admin_nodes(GtkTreeModel *model, GtkTreeIter *iter, |
| display_data_t *display_data, uint32_t node_col, |
| GtkTreeView *treeview); |
| extern void admin_edit_node(GtkCellRendererText *cell, |
| const char *path_string, |
| const char *new_text, |
| gpointer data); |
| extern int get_new_info_node(node_info_msg_t **info_ptr, int force); |
| 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, void *arg2, GtkTreePath *path, int type); |
| extern void popup_all_node(GtkTreeModel *model, GtkTreeIter *iter, int id); |
| extern void popup_all_node_name(char *name, int id, char *cluster_name); |
| extern void admin_menu_node_name(char *name, GdkEventButton *event); |
| extern void admin_node(GtkTreeModel *model, GtkTreeIter *iter, char *type); |
| extern void admin_node_name(char *name, char *old_value, char *type); |
| extern void cluster_change_node(void); |
| |
| // resv_info.c |
| extern GtkWidget *create_resv_entry(resv_desc_msg_t *resv_msg, |
| GtkTreeModel *model, GtkTreeIter *iter); |
| extern void refresh_resv(GtkAction *action, gpointer user_data); |
| extern GtkListStore *create_model_resv(int type); |
| extern void admin_edit_resv(GtkCellRendererText *cell, |
| const char *path_string, |
| const char *new_text, |
| gpointer data); |
| extern int get_new_info_resv(reserve_info_msg_t **info_ptr, int force); |
| extern void get_info_resv(GtkTable *table, display_data_t *display_data); |
| extern void specific_info_resv(popup_info_t *popup_win); |
| extern void set_menus_resv(void *arg, void *arg2, GtkTreePath *path, int type); |
| extern void popup_all_resv(GtkTreeModel *model, GtkTreeIter *iter, int id); |
| extern void select_admin_resv(GtkTreeModel *model, GtkTreeIter *iter, |
| display_data_t *display_data, |
| GtkTreeView *treeview); |
| extern void cluster_change_resv(void); |
| |
| |
| // submit_info.c |
| extern void get_info_submit(GtkTable *table, display_data_t *display_data); |
| extern void set_menus_submit(void *arg, void *arg2, |
| GtkTreePath *path, int type); |
| |
| // config_info.c |
| extern int get_new_info_config(slurm_ctl_conf_info_msg_t **info_ptr); |
| |
| // common.c |
| extern char * replspace (char *str); |
| extern char * replus (char *str); |
| extern void set_page_opts(int tab, display_data_t *display_data, |
| int count, char* initial_opts); |
| extern void free_switch_nodes_maps(switch_record_bitmaps_t |
| *g_switch_nodes_maps); |
| extern int get_topo_conf(void); |
| extern int get_row_number(GtkTreeView *tree_view, GtkTreePath *path); |
| extern int find_col(display_data_t *display_data, int type); |
| extern const char *find_col_name(display_data_t *display_data, int type); |
| extern void load_header(GtkTreeView *tree_view, display_data_t *display_data); |
| extern void make_fields_menu(popup_info_t *popup_win, GtkMenu *menu, |
| display_data_t *display_data, int count); |
| extern void make_options_menu(GtkTreeView *tree_view, GtkTreePath *path, |
| GtkMenu *menu, display_data_t *display_data); |
| extern GtkScrolledWindow *create_scrolled_window(void); |
| extern GtkWidget *create_entry(void); |
| extern void create_page(GtkNotebook *notebook, display_data_t *display_data); |
| extern GtkTreeView *create_treeview(display_data_t *local, |
| list_t **button_list); |
| extern GtkTreeView *create_treeview_2cols_attach_to_table(GtkTable *table); |
| extern void create_treestore(GtkTreeView *tree_view, |
| display_data_t *display_data, int count, |
| int sort_column, int color_column); |
| |
| extern gboolean right_button_pressed(GtkTreeView *tree_view, GtkTreePath *path, |
| GdkEventButton *event, |
| const signal_params_t *signal_params, |
| int type); |
| extern gboolean left_button_pressed(GtkTreeView *tree_view, |
| GtkTreePath *path, |
| const signal_params_t *signal_params, |
| GdkEventButton *event); |
| extern gboolean row_activated(GtkTreeView *tree_view, GtkTreePath *path, |
| GtkTreeViewColumn *column, |
| const signal_params_t *signal_params); |
| extern gboolean row_expander(GtkTreeView *tree_view, |
| gboolean arg1, gboolean arg2, |
| const signal_params_t *signal_params); |
| extern gboolean row_expand(GtkTreeView *tree_view, GtkTreeIter *iter, |
| GtkTreePath *path, |
| const signal_params_t *signal_params); |
| extern gboolean row_clicked(GtkTreeView *tree_view, GdkEventButton *event, |
| const signal_params_t *signal_params); |
| extern gboolean key_pressed(GtkTreeView *tree_view, GdkEventKey *event, |
| const signal_params_t *signal_params); |
| extern gboolean focus_in(GtkTreeView *tree_view, GdkEventButton *event, |
| const signal_params_t *signal_params); |
| extern gboolean key_released(GtkTreeView *tree_view, GdkEventKey *event, |
| const signal_params_t *signal_params); |
| extern popup_info_t *create_popup_info(int type, int dest_type, char *title); |
| extern void setup_popup_info(popup_info_t *popup_win, |
| display_data_t *display_data, |
| int cnt); |
| extern void redo_popup(GtkWidget *widget, GdkEventButton *event, |
| popup_info_t *popup_win); |
| |
| extern void destroy_search_info(void *arg); |
| extern void destroy_specific_info(void *arg); |
| extern void destroy_popup_info(void *arg); |
| extern void destroy_signal_params(void *arg); |
| |
| extern gboolean delete_popup(GtkWidget *widget, GtkWidget *event, char *title); |
| extern gboolean delete_popups(void); |
| extern void *popup_thr(popup_info_t *popup_win); |
| extern void set_for_update(GtkTreeModel *model, int updated); |
| extern void remove_old(GtkTreeModel *model, int updated); |
| extern GtkWidget *create_pulldown_combo(display_data_t *display_data); |
| extern char *str_tolower(char *upper_str); |
| extern char *get_reason(void); |
| 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, |
| GtkTreeIter *iter, |
| const char *name, |
| const char *value); |
| extern void add_display_treestore_line_with_font( |
| int update, |
| GtkTreeStore *treestore, |
| GtkTreeIter *iter, |
| const char *name, char *value, |
| char *font); |
| extern void sview_widget_modify_bg(GtkWidget *widget, GtkStateType state, |
| const GdkColor color); |
| extern void sview_radio_action_set_current_value(GtkRadioAction *action, |
| gint current_value); |
| extern char *page_to_str(int page); |
| extern char *tab_pos_to_str(int tab_pos); |
| extern char *visible_to_str(sview_config_t *sview_config); |
| extern gboolean entry_changed(GtkWidget *widget, void *msg); |
| extern void select_admin_common(GtkTreeModel *model, GtkTreeIter *iter, |
| display_data_t *display_data, |
| GtkTreeView *treeview, |
| uint32_t node_col, |
| void (*process_each)(GtkTreeModel *model, |
| GtkTreePath *path, |
| GtkTreeIter *iter, |
| gpointer userdata)); |
| extern void set_column_width_fixed(GtkTreeView *tree_view, |
| int sortid, |
| int width); |
| |
| // defaults.c |
| extern int load_defaults(void); |
| extern int save_defaults(bool final_save); |
| extern GtkListStore *create_model_defaults(int type); |
| extern int configure_defaults(void); |
| |
| //bb_info.c |
| extern void refresh_bb(GtkAction *action, gpointer user_data); |
| extern GtkListStore *create_model_bb(int type); |
| extern void admin_edit_bb(GtkCellRendererText *cell, |
| const char *path_string, |
| const char *new_text, |
| gpointer data); |
| extern void get_info_bb(GtkTable *table, display_data_t *display_data); |
| extern void specific_info_bb(popup_info_t *popup_win); |
| extern void set_menus_bb(void *arg, void *arg2, GtkTreePath *path, int type); |
| extern void cluster_change_bb(void); |
| extern void popup_all_bb(GtkTreeModel *model, GtkTreeIter *iter, int id); |
| extern void select_admin_bb(GtkTreeModel *model, GtkTreeIter *iter, |
| display_data_t *display_data, |
| GtkTreeView *treeview); |
| |
| #endif |