ed2e20e532ffcf71e234975e45c0281abfb8db27
[psensor-pkg-debian.git] / src / cfg.h
1 /*
2  * Copyright (C) 2010-2014 jeanfi@gmail.com
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License as
6  * published by the Free Software Foundation; either version 2 of the
7  * License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17  * 02110-1301 USA
18  */
19 #ifndef _PSENSOR_CONFIG_H_
20 #define _PSENSOR_CONFIG_H_
21
22 #include <gio/gio.h>
23
24 #include <bool.h>
25 #include <color.h>
26
27 enum temperature_unit {
28         CELSIUS,
29         FAHRENHEIT
30 };
31
32 enum sensorlist_position {
33         SENSORLIST_POSITION_RIGHT,
34         SENSORLIST_POSITION_LEFT,
35         SENSORLIST_POSITION_TOP,
36         SENSORLIST_POSITION_BOTTOM
37 };
38
39 struct config {
40         struct color *graph_bgcolor;
41         struct color *graph_fgcolor;
42
43         double graph_bg_alpha;
44
45         bool alpha_channel_enabled;
46
47         /* Position of the sensors list table */
48         enum sensorlist_position sensorlist_position;
49
50         bool window_decoration_enabled;
51         bool window_keep_below_enabled;
52         bool window_restore_enabled;
53         /* Last saved position of the window. */
54         int window_x;
55         int window_y;
56         /* Last saved size of the window. */
57         int window_w;
58         int window_h;
59         /* Last saved position of the window divider. */
60         int window_divider_pos;
61
62         int graph_update_interval;
63         int graph_monitoring_duration;
64
65         int sensor_values_max_length;
66         int sensor_update_interval;
67
68         bool menu_bar_disabled;
69
70         bool unity_launcher_count_disabled;
71
72         int hide_on_startup;
73
74         enum temperature_unit temperature_unit;
75
76         bool slog_enabled;
77         int slog_interval;
78 };
79
80 /* Loads psensor configuration */
81 struct config *config_load();
82
83 void config_save(const struct config *);
84
85 void config_cleanup();
86
87 struct color *config_get_sensor_color(const char *sid, const struct color *);
88 void config_set_sensor_color(const char *sid, const struct color *);
89
90 int config_get_sensor_alarm_high_threshold(const char *);
91 void config_set_sensor_alarm_high_threshold(const char *, int);
92
93 int config_get_sensor_alarm_low_threshold(const char *);
94 void config_set_sensor_alarm_low_threshold(const char *, int);
95
96 bool config_get_sensor_alarm_enabled(const char *);
97 void config_set_sensor_alarm_enabled(const char *, bool);
98
99 bool config_is_sensor_graph_enabled(const char *);
100 void config_set_sensor_graph_enabled(const char *, bool);
101
102 char *config_get_sensor_name(const char *);
103 void config_set_sensor_name(const char *, const char *);
104
105 bool config_is_appindicator_enabled(const char *);
106 void config_set_appindicator_enabled(const char *, bool);
107
108 bool config_is_appindicator_label_enabled(const char *);
109 void config_set_appindicator_label_enabled(const char *, bool);
110
111 bool is_slog_enabled();
112 void config_set_slog_enabled_changed_cbk(void (*)(void *), void *);
113
114 int config_get_slog_interval();
115
116 bool config_is_smooth_curves_enabled();
117 void config_set_smooth_curves_enabled(bool);
118
119 int config_get_sensor_position(const char *);
120 void config_set_sensor_position(const char *, int);
121
122 char *config_get_notif_script();
123 void config_set_notif_script(const char *);
124
125 bool config_is_sensor_enabled(const char *sid);
126 void config_set_sensor_enabled(const char *sid, bool enabled);
127
128 bool config_is_lmsensor_enabled();
129 void config_set_lmsensor_enable(bool);
130
131 bool config_is_gtop2_enabled();
132 void config_set_gtop2_enable(bool);
133
134 bool config_is_udisks2_enabled();
135 void config_set_udisks2_enable(bool);
136
137 bool config_is_hddtemp_enabled();
138 void config_set_hddtemp_enable(bool);
139
140 bool config_is_libatasmart_enabled();
141 void config_set_libatasmart_enable(bool);
142
143 bool config_is_nvctrl_enabled();
144 void config_set_nvctrl_enable(bool);
145
146 bool config_is_atiadlsdk_enabled();
147 void config_set_atiadlsdk_enable(bool);
148
149 /*
150  * Returns the user directory containing psensor data (configuration
151  * and log).
152  * Corresponds to $HOME/.psensor/
153  * Creates the directory if it does not exist;
154  * Returns NULL if it cannot be determined.
155  */
156 const char *get_psensor_user_dir();
157
158 void config_sync();
159
160 GSettings *config_get_GSettings();
161
162 #endif