22 #include <sys/types.h> 32 #include <glib/gstdio.h> 40 #define DEFAULT_PREFS "[PNMixer]\n\ 41 SliderOrientation=vertical\n\ 42 DisplayTextVolume=true\n\ 43 TextVolumePosition=0\n\ 46 MiddleClickAction=0\n\ 52 NormalizeVolume=true\n\ 76 DEBUG(
"Looking for a volume control command...");
82 absolute_path = g_find_program_in_path(*cmd);
84 g_free(absolute_path);
105 GError *error = NULL;
107 ret = g_key_file_get_boolean(
keyFile,
"PNMixer", key, &error);
128 GError *error = NULL;
130 ret = g_key_file_get_integer(
keyFile,
"PNMixer", key, &error);
151 GError *error = NULL;
153 ret = g_key_file_get_double(
keyFile,
"PNMixer", key, &error);
174 GError *error = NULL;
176 ret = g_key_file_get_string(
keyFile,
"PNMixer", key, &error);
187 if (!g_strcmp0(key,
"VolumeControlCommand")) {
190 return g_strdup(cmd);
194 return g_strdup(def);
210 GError *error = NULL;
212 ret = g_key_file_get_double_list(
keyFile,
"PNMixer", key, &numcols, &error);
221 if (!g_strcmp0(key,
"VolMeterColor")) {
224 if (ret && numcols != 3) {
230 ret = g_malloc(3 *
sizeof(gdouble));
231 ret[0] = 0.909803921569;
232 ret[1] = 0.43137254902;
233 ret[2] = 0.43137254902;
236 for (i = 0; i < 3; i++) {
263 return g_key_file_get_string(
keyFile, card,
"Channel", NULL);
275 g_key_file_set_boolean(
keyFile,
"PNMixer", key, value);
287 g_key_file_set_integer(
keyFile,
"PNMixer", key, value);
299 g_key_file_set_double(
keyFile,
"PNMixer", key, value);
311 g_key_file_set_string(
keyFile,
"PNMixer", key, value);
324 g_key_file_set_double_list(
keyFile,
"PNMixer", key, list, n);
336 g_key_file_set_string(
keyFile, card,
"Channel", channel);
347 gchar *filename = g_build_filename(g_get_user_config_dir(),
348 "pnmixer",
"config", NULL);
355 if (g_file_test(filename, G_FILE_TEST_EXISTS)) {
356 if (!g_key_file_load_from_file(
keyFile, filename, 0, &err)) {
364 if (!g_key_file_load_from_data
385 gchar *filename = g_build_filename(g_get_user_config_dir(),
386 "pnmixer",
"config", NULL);
387 gchar *filedata = g_key_file_to_data(
keyFile, &len, NULL);
389 g_file_set_contents(filename, filedata, len, &err);
407 gchar *prefs_dir = g_build_filename(g_get_user_config_dir(),
410 if (!g_file_test(prefs_dir, G_FILE_TEST_IS_DIR)) {
411 if (g_file_test(prefs_dir, G_FILE_TEST_EXISTS))
413 "won't be able to save preferences."),
415 else if (g_mkdir(prefs_dir, S_IRWXU))
Internationalization support.
static const gchar * find_vol_control_command(void)
void prefs_set_double(const gchar *key, gdouble value)
static GKeyFile * keyFile
static const gchar * vol_control_commands[]
gdouble * prefs_get_double_list(const gchar *key, gsize *n)
void prefs_set_channel(const gchar *card, const gchar *channel)
gboolean prefs_get_boolean(const gchar *key, gboolean def)
void prefs_set_integer(const gchar *key, gint value)
gchar * prefs_get_channel(const gchar *card)
gchar * prefs_get_string(const gchar *key, const gchar *def)
void prefs_ensure_save_dir(void)
void prefs_set_double_list(const gchar *key, gdouble *list, gsize n)
void run_error_dialog(const char *fmt,...)
void prefs_set_string(const gchar *key, const gchar *value)
gint prefs_get_integer(const gchar *key, gint def)
void prefs_set_boolean(const gchar *key, gboolean value)
gdouble prefs_get_double(const gchar *key, gdouble def)