gkrellm/src/gkrellm-private.h

518 lines
14 KiB
C

/* GKrellM
| Copyright (C) 1999-2014 Bill Wilson
|
| Author: Bill Wilson billw@gkrellm.net
| Latest versions might be found at: http://gkrellm.net
|
|
| GKrellM 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 3 of the License, or
| (at your option) any later version.
|
| GKrellM 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 this program. If not, see http://www.gnu.org/licenses/
|
|
| Additional permission under GNU GPL version 3 section 7
|
| If you modify this program, or any covered work, by linking or
| combining it with the OpenSSL project's OpenSSL library (or a
| modified version of that library), containing parts covered by
| the terms of the OpenSSL or SSLeay licenses, you are granted
| additional permission to convey the resulting work.
| Corresponding Source for a non-source form of such a combination
| shall include the source code for the parts of OpenSSL used as well
| as that of the covered work.
*/
#include "configure.h"
/* Debugs for debug_level */
#define DEBUG_SYSDEP 0x1
#define DEBUG_MAIL 0x10
#define DEBUG_NET 0x20
#define DEBUG_TIMER 0x40
#define DEBUG_SENSORS 0x80
#define DEBUG_INET 0x800
#define DEBUG_CLIENT 0x1000
#define DEBUG_GUI 0x2000
#define DEBUG_POSITION 0x4000
#define DEBUG_BATTERY 0x8000
#define DEBUG_CHART_TEXT 0x10000
#define DEBUG_PLUGIN 0x20000
#define GKRELLM_FLOAT_FACTOR 1000.0
enum GkrellmConnectResult
{
GOOD_CONNECT,
BAD_CONNECT,
BAD_SETUP
};
enum GkrellmConnectState
{
CONNECTING,
CONNECTED,
DISCONNECTED,
NO_CLIENT
};
enum GkrellmState
{
INITIALIZING,
INTERNAL,
INIT_MONITOR,
CREATE_MONITOR,
UPDATE_MONITOR,
CREATE_CONFIG,
APPLY_CONFIG,
SAVE_CONFIG,
LOAD_CONFIG
};
typedef void (*GkrellmFunc)();
/* Private global extern declarations and function prototypes.
*/
struct GkrellmConfig
{
gint debug;
gint spare;
gint debug_level;
gint demo;
gint test;
gboolean nolock;
gboolean without_libsensors; /* transition override */
gboolean use_acpi_battery; /* transition override */
gboolean config_clean;
gint up_minutes;
gint base_uptime;
time_t start_time;
time_t time_now;
GkrellmMonitor *active_monitor;
enum GkrellmState gkrellm_state;
gint cpu_sys_activity;
gint sensor_temp_files;
gboolean initialized;
gboolean no_messages;
gint max_chart_height;
gint monitor_height,
total_frame_height,
w_display,
h_display,
y_position,
x_position;
gboolean position_valid;
gchar *theme_path;
gchar *config_suffix; /* Overrides host_configs below */
gchar *command_line_theme;
gchar *command_line_plugin;
gchar *gtk_theme_name;
GtkSettings *gtk_settings;
gchar *server;
gint server_port;
gchar *server_hostname;
gchar *server_sysname;
gboolean client_mode;
gint client_server_reconnect_timeout;
gint client_server_io_timeout;
time_t client_server_read_time;
gboolean force_host_config;
gboolean found_host_config;
gboolean no_config,
allow_multiple_instances,
allow_multiple_instances_real;
gint frame_left_width,
frame_right_width,
frame_top_height,
frame_bottom_height;
gint chart_width_ref;
gint frame_left_chart_overlap,
frame_right_chart_overlap,
frame_left_panel_overlap,
frame_right_panel_overlap,
frame_left_spacer_overlap,
frame_right_spacer_overlap;
gboolean need_frame_packing;
gint theme_reload_count;
gint chart_history_length;
gint chart_height_min;
gint chart_height_max;
gint allow_scaling;
gboolean chart_text_no_fill;
gboolean config_modified;
gboolean any_transparency;
gboolean track_gtk_theme_name;
gchar *default_track_theme;
gchar *session_id;
gint update_HZ;
gint chart_width;
gboolean save_position,
withdrawn,
on_top;
gboolean sticky_state,
state_skip_taskbar,
state_skip_pager,
state_above,
state_below,
dock_type,
is_dock_type,
decorated,
command_line_decorated; /* Will override decorated */
gboolean enable_hostname, /* No separate hostname config. */
hostname_short,
enable_system_name;
gfloat float_factor; /* avoid config locale breakage */
gint mbmon_port;
gint rx_led_x; /* Move these to net monitor */
gint rx_led_y;
gint tx_led_x;
gint tx_led_y;
GkrellmStyle *krell_slider_style,
*krell_mini_style;
GkrellmPiximage
*frame_top_piximage,
*frame_bottom_piximage,
*frame_left_piximage,
*frame_right_piximage;
GkrellmPiximage
*button_panel_out_piximage,
*button_panel_in_piximage,
*button_meter_out_piximage,
*button_meter_in_piximage;
GkrellmPiximage
*krell_slider_piximage,
*krell_mini_piximage;
GkrellmPiximage
*spacer_top_piximage,
*spacer_bottom_piximage,
*spacer_top_chart_piximage,
*spacer_bottom_chart_piximage,
*spacer_top_meter_piximage,
*spacer_bottom_meter_piximage;
GkrellmPiximage
*cap_top_left_chart_piximage,
*cap_bottom_left_chart_piximage,
*cap_top_right_chart_piximage,
*cap_bottom_right_chart_piximage,
*cap_top_left_meter_piximage,
*cap_bottom_left_meter_piximage,
*cap_top_right_meter_piximage,
*cap_bottom_right_meter_piximage;
GkrellmBorder
frame_top_border,
frame_bottom_border,
frame_left_border,
frame_right_border,
button_panel_border,
button_meter_border,
frame_left_chart_border,
frame_right_chart_border,
frame_left_panel_border,
frame_right_panel_border,
spacer_top_border,
spacer_bottom_border;
gint spacer_top_height_chart,
spacer_bottom_height_chart,
spacer_top_height_meter,
spacer_bottom_height_meter;
GkrellmPiximage
*decal_misc_piximage;
GdkPixmap *decal_misc_pixmap;
GdkBitmap *decal_misc_mask;
GkrellmPiximage
*decal_button_piximage;
/* These two vars should be handled in mail.c, but for historical reasons
| gkrellmrcs define them in a way that must be handled in config.c
*/
gint decal_mail_frames,
decal_mail_delay;
GdkGC *draw1_GC,
*draw2_GC,
*draw3_GC,
*draw_stencil_GC,
*text_GC;
GdkGC *bit1_GC, /* Depth 1 GCs */
*bit0_GC;
PangoFontDescription
*large_font,
*normal_font,
*small_font;
gchar *large_font_string,
*normal_font_string,
*small_font_string;
gint font_load_count;
GkrellmPiximage *decal_alarm_piximage;
GkrellmPiximage *decal_warn_piximage;
gint decal_alarm_frames,
decal_warn_frames;
GkrellmPiximage *bg_separator_piximage;
GdkPixmap *bg_separator_pixmap;
gint bg_separator_height;
GkrellmPiximage *data_in_piximage, /* Default data layers 0,2, ... */
*data_in_grid_piximage;
GdkPixmap *data_in_pixmap,
*data_out_pixmap;
GkrellmPiximage *data_out_piximage, /* Default data layers 1,3, ... */
*data_out_grid_piximage;
GdkPixmap *data_in_grid_pixmap,
*data_out_grid_pixmap;
gchar *chart_in_color,
*chart_in_color_grid,
*chart_out_color,
*chart_out_color_grid;
GdkColor in_color; /* For cpu user, disk read, rx data */
GdkColor out_color; /* For cpu sys, disk writes, tx data */
GdkColor in_color_grid;
GdkColor out_color_grid;
GdkColor background_color;
GdkColor white_color;
gint bg_grid_mode;
gint theme_n_alternatives;
gint theme_alternative;
gint theme_scale;
gint m2;
gint use_top_bottom_margins;
void (*sys_setup_func)(gint, gchar **);
GList *chart_name_list, /* Move these lists to monitor_list */
*meter_name_list,
*custom_name_list,
*bg_chart_piximage_list,
*bg_grid_piximage_list,
*bg_panel_piximage_list,
*bg_meter_piximage_list,
*krell_panel_piximage_list,
*krell_meter_piximage_list,
*chart_style_list,
*panel_style_list,
*meter_style_list,
*custom_style_list;
};
extern struct GkrellmConfig _GK;
extern GList *gkrellm_monitor_list;
extern struct tm gkrellm_current_tm;
extern gint gkrellm_w_display,
gkrellm_h_display,
gkrellm_y_position;
void gkrellm_plugins_load(void);
void gkrellm_record_state(enum GkrellmState state, GkrellmMonitor *mon);
void gkrellm_plugins_config_create(GtkWidget *);
void gkrellm_plugins_config_close(void);
void gkrellm_menu_popup(void);
GkrellmMonitor *gkrellm_init_host_monitor(void);
GkrellmMonitor *gkrellm_init_cal_monitor(void);
GkrellmMonitor *gkrellm_init_clock_monitor(void);
GkrellmMonitor *gkrellm_init_cpu_monitor(void);
GkrellmMonitor *gkrellm_init_proc_monitor(void);
GkrellmMonitor *gkrellm_init_sensor_monitor(void);
GkrellmMonitor *gkrellm_init_disk_monitor(void);
GkrellmMonitor *gkrellm_init_inet_monitor(void);
GkrellmMonitor *gkrellm_init_net_monitor(void);
GkrellmMonitor *gkrellm_init_timer_monitor(void);
GkrellmMonitor *gkrellm_init_mem_monitor(void);
GkrellmMonitor *gkrellm_init_swap_monitor(void);
GkrellmMonitor *gkrellm_init_fs_monitor(void);
GkrellmMonitor *gkrellm_init_mail_monitor(void);
GkrellmMonitor *gkrellm_init_battery_monitor(void);
GkrellmMonitor *gkrellm_init_uptime_monitor(void);
GkrellmMonitor *gkrellm_init_sensors_config_monitor(void);
GkrellmMonitor *gkrellm_get_cpu_mon(void);
GkrellmMonitor *gkrellm_get_proc_mon(void);
GkrellmMonitor *gkrellm_get_sensors_mon(void);
void gkrellm_init_hostname_monitor(void); /* XXX */
GkrellmMonitor *gkrellm_mon_host(void);
void gkrellm_gkrellmd_disconnect_cb(GtkWidget *b, gpointer data);
GList *gkrellm_get_chart_list(void);
GList *gkrellm_get_panel_list(void);
void gkrellm_alert_update(void);
void gkrellm_alert_reset_all(void);
GdkPixbuf *gkrellm_alert_pixbuf(void);
GkrellmMonitor *gkrellm_monitor_from_style_name(gchar *);
GkrellmMonitor *gkrellm_monitor_from_id(gint);
gboolean gkrellm_render_spacer(GkrellmSpacer *spacer, gint y_src, gint h_src,
gint l_overlap, gint r_overlap);
void gkrellm_spacers_hide(GkrellmMonitor *);
void gkrellm_spacers_show(GkrellmMonitor *);
void gkrellm_panel_button_signals_connect(GkrellmPanel *p);
void gkrellm_panel_cleanup(void);
void gkrellm_chart_setup(void);
void gkrellm_build(void);
void gkrellm_theme_config(void);
void gkrellm_load_user_config(GkrellmMonitor *mon_only, gboolean);
void gkrellm_save_user_config(void);
void gkrellm_save_theme_config(void);
void gkrellm_load_theme_config(void);
void gkrellm_load_theme_piximages(void);
void gkrellm_read_theme_event(GtkSettings *settings);
void gkrellm_make_themes_list(void);
gchar *gkrellm_get_large_font_string(void);
gchar *gkrellm_get_normal_font_string(void);
gchar *gkrellm_get_small_font_string(void);
gint gkrellm_label_x_position(gint, gint, gint, gint);
void gkrellm_inet_load_data(void);
void gkrellm_inet_save_data(void);
void gkrellm_net_save_data(void);
void gkrellm_net_server_has_timer(void);
gint gkrellm_effect_string_value(gchar *);
void gkrellm_map_color_string(gchar *, GdkColor *);
void gkrellm_add_plugin_config_page(GkrellmMonitor *);
void gkrellm_remove_plugin_config_page(GkrellmMonitor *);
void gkrellm_set_theme_alternatives_label(void);
void gkrellm_start_timer(gint);
GtkUIManager *gkrellm_create_ui_manager_popup(void);
void gkrellm_apply_hostname_config(void);
gboolean gkrellm_hostname_can_shorten(void);
gchar *gkrellm_proc_get_sensor_panel_label(void);
gboolean gkrellm_proc_set_sensor(gpointer sr, gint type);
void gkrellm_proc_draw_sensors(gpointer sr);
gchar *gkrellm_cpu_get_sensor_panel_label(gint n);
gboolean gkrellm_cpu_set_sensor(gpointer sr, gint type, gint n);
void gkrellm_cpu_draw_sensors(gpointer sr);
/* utils.c */
gchar *gkrellm_cut_quoted_string(gchar *, gchar **);
gboolean gkrellm_getline_from_gstring(GString **, gchar *, gint);
void gkrellm_free_glist_and_data(GList **);
GList *gkrellm_string_in_list(GList *, gchar *);
gint gkrellm_string_position_in_list(GList *list, gchar *s);
gboolean gkrellm_make_home_subdir(gchar *, gchar **);
gint gkrellm_format_size_abbrev(gchar *, size_t, gfloat,
GkrellmSizeAbbrev *, size_t);
/* sensors.c */
void gkrellm_sensors_create_decals(GkrellmPanel *, gint,
GkrellmDecal **, GkrellmDecal **);
gboolean gkrellm_sensors_available(void);
void gkrellm_sensor_draw_temperature_decal(GkrellmPanel *,
GkrellmDecal *, gfloat, gchar);
void gkrellm_sensor_draw_fan_decal(GkrellmPanel *, GkrellmDecal *,
gfloat);
gint gkrellm_sensor_read_temperature(gpointer sr, gfloat *, gchar *);
gint gkrellm_sensor_read_fan(gpointer sr, gfloat *);
gint gkrellm_sensor_read_voltage(gpointer sr, gfloat *);
GkrellmAlert *gkrellm_sensor_alert(gpointer sr);
void gkrellm_sensor_alert_connect(gpointer sr,
void (*fn)(), gpointer data);
gboolean gkrellm_sensor_reset_location(gpointer sr);
void gkrellm_sensors_rebuild(gboolean do_temp, gboolean do_fan,
gboolean do_volt);
void gkrellm_sensors_model_update(void);
void gkrellm_sensors_interface_remove(gint _interface);
void gkrellm_sensors_sysdep_option(gchar *, gchar *, void (*func)());
/* pixops */
void gkrellm_border_adjust(GkrellmBorder *border,
gint l, gint r, gint t, gint b);
/* winops */
void gkrellm_winop_reset(void);
void gkrellm_winop_options(gint, gchar **);
void gkrellm_winop_place_gkrellm(gchar *);
void gkrellm_winop_flush_motion_events(void);
gboolean gkrellm_winop_updated_background(void);
void gkrellm_winop_update_struts(void);
void gkrellm_winop_withdrawn(void);
gboolean gkrellm_winop_draw_rootpixmap_onto_transparent_panel(GkrellmPanel *);
gboolean gkrellm_winop_draw_rootpixmap_onto_transparent_chart(GkrellmChart *);
void gkrellm_winop_apply_rootpixmap_transparency(void);
void gkrellm_winop_state_skip_taskbar(gboolean);
void gkrellm_winop_state_skip_pager(gboolean);
void gkrellm_winop_state_above(gboolean);
void gkrellm_winop_state_below(gboolean);
/* client */
gint gkrellm_connect_to(gchar *, gint);
enum GkrellmConnectResult
gkrellm_client_mode_connect(void);
void gkrellm_client_mode_disconnect(void);
struct tm *gkrellm_client_server_time(void);
enum GkrellmConnectState
gkrellm_client_server_connect_state(void);
void gkrellm_client_mode_connect_thread(void);
gint gkrellm_client_server_get_net_timer(void);