summaryrefslogtreecommitdiff
path: root/sensors-applet
diff options
context:
space:
mode:
Diffstat (limited to 'sensors-applet')
-rw-r--r--sensors-applet/Makefile.am8
-rw-r--r--sensors-applet/about-dialog.c3
-rw-r--r--sensors-applet/active-sensor.c64
-rw-r--r--sensors-applet/main.c17
-rw-r--r--sensors-applet/prefs-dialog.c71
-rw-r--r--sensors-applet/sensor-config-dialog.c2
-rw-r--r--sensors-applet/sensors-applet-mateconf.c491
-rw-r--r--sensors-applet/sensors-applet-mateconf.h91
-rw-r--r--sensors-applet/sensors-applet-settings.c142
-rw-r--r--sensors-applet/sensors-applet-settings.h56
-rw-r--r--sensors-applet/sensors-applet.c233
-rw-r--r--sensors-applet/sensors-applet.h10
12 files changed, 382 insertions, 806 deletions
diff --git a/sensors-applet/Makefile.am b/sensors-applet/Makefile.am
index ce3cb01..7ea2099 100644
--- a/sensors-applet/Makefile.am
+++ b/sensors-applet/Makefile.am
@@ -1,9 +1,13 @@
## Process this file with automake to produce Makefile.in
+
+uidir = $(datadir)/mate-sensors-applet/ui
+
INCLUDES = -DMATELOCALEDIR=\""$(datadir)/locale/"\" \
-DG_LOG_DOMAIN=\""Sensors Applet"\" \
-DPIXMAPS_DIR=\""$(datadir)/pixmaps/$(PACKAGE)/"\" \
-DDATADIR=\""$(datadir)"\" \
-DLIBDIR=\""$(libdir)"\" \
+ -DUIDIR=\""$(pkgdatadir)/ui"\" \
-DSENSORS_APPLET_PLUGIN_DIR=\""$(libdir)/$(PACKAGE)/plugins/"\" \
-DSYSCONFDIR=\""$(sysconfdir)"\" \
-DPREFIX=\""$(prefix)"\" \
@@ -35,8 +39,8 @@ mate_sensors_applet_SOURCES = main.c \
sensors-applet-sensor.h \
sensors-applet-plugins.c \
sensors-applet-plugins.h \
- sensors-applet-mateconf.c \
- sensors-applet-mateconf.h \
+ sensors-applet-settings.c \
+ sensors-applet-settings.h \
$(libmatenotify_SRC)
# install headers for plugins to use
diff --git a/sensors-applet/about-dialog.c b/sensors-applet/about-dialog.c
index cdb9d23..39603b2 100644
--- a/sensors-applet/about-dialog.c
+++ b/sensors-applet/about-dialog.c
@@ -20,7 +20,8 @@
#include "config.h"
#endif /* HAVE_CONFIG_H */
-#include <mate.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
#include "about-dialog.h"
void about_dialog_open(SensorsApplet *sensors_applet) {
diff --git a/sensors-applet/active-sensor.c b/sensors-applet/active-sensor.c
index f7cb83c..94cc707 100644
--- a/sensors-applet/active-sensor.c
+++ b/sensors-applet/active-sensor.c
@@ -24,12 +24,14 @@
#include <string.h>
#endif /* HAVE_STRING_H */
-#include <mateconf/mateconf-client.h>
-#include <mate.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <gio/gio.h>
#include "active-sensor.h"
#include "sensors-applet-plugins.h"
-#include "sensors-applet-mateconf.h"
+#include "sensors-applet-settings.h"
typedef enum {
VERY_LOW_SENSOR_VALUE = 0,
@@ -73,18 +75,21 @@ static SensorValueRange sensor_value_range(gdouble sensor_value,
static gboolean active_sensor_execute_alarm(ActiveSensor *active_sensor,
NotifType notif_type) {
- int pid;
+ gboolean ret;
+ GError *error = NULL;
sensors_applet_notify_active_sensor(active_sensor, notif_type);
g_debug("EXECUTING %s ALARM: %s",
(notif_type == LOW_ALARM ?
"LOW" : "HIGH"),
active_sensor->alarm_command[notif_type]);
- pid = mate_execute_shell(NULL,
- active_sensor->alarm_command[notif_type]);
- g_debug("Command executed in shell with pid %d", pid);
+ ret = g_spawn_command_line_async (active_sensor->alarm_command[notif_type], &error);
+ g_debug("Command executed in shell");
+
+ if (error)
+ g_error_free (error);
- return (pid != -1);
+ return ret;
}
static gboolean active_sensor_execute_low_alarm(ActiveSensor *active_sensor) {
@@ -460,8 +465,7 @@ ActiveSensor *active_sensor_new(SensorsApplet *sensors_applet,
/* need to set size according to orientation */
orient = mate_panel_applet_get_orient(active_sensor->sensors_applet->applet);
- graph_size = mate_panel_applet_mateconf_get_int(active_sensor->sensors_applet->applet,
- GRAPH_SIZE, NULL);
+ graph_size = g_settings_get_int(active_sensor->sensors_applet->settings, GRAPH_SIZE);
horizontal = ((orient == MATE_PANEL_APPLET_ORIENT_UP) ||
(orient == MATE_PANEL_APPLET_ORIENT_DOWN));
@@ -527,8 +531,7 @@ void active_sensor_update(ActiveSensor *active_sensor,
gchar *tooltip = NULL;
gchar *value_tooltip = NULL;
- /* hidden mateconf options */
- MateConfClient *client;
+ /* hidden gsettings options */
gint font_size = 0;
gboolean hide_units = FALSE;
@@ -584,29 +587,16 @@ void active_sensor_update(ActiveSensor *active_sensor,
* note this is not unique */
sensor_value = -1;
} else {
- /* use hidden mateconf key for hide_units */
-
- if ((client = mateconf_client_get_default()) != NULL) {
- hide_units = mateconf_client_get_bool(client,
- "/apps/sensors-applet/" HIDE_UNITS,
- &error);
- if (error) {
- g_debug("Could not get hide units from MateConf - assuming false");
- hide_units = FALSE;
- g_error_free(error);
- error = NULL;
- }
-
- g_object_unref(client);
- }
+ /* use hidden gsettings key for hide_units */
+ hide_units = g_settings_get_boolean(sensors_applet->settings, HIDE_UNITS);
/* scale value and set text using this
* value */
switch (sensor_type) {
case TEMP_SENSOR:
- scale = (TemperatureScale)mate_panel_applet_mateconf_get_int(sensors_applet->applet, TEMPERATURE_SCALE, NULL);
+ scale = (TemperatureScale) g_settings_get_int(sensors_applet->settings, TEMPERATURE_SCALE);
/* scale value */
sensor_value = sensors_applet_convert_temperature(sensor_value,
CELSIUS,
@@ -661,24 +651,10 @@ void active_sensor_update(ActiveSensor *active_sensor,
g_free(value_tooltip);
/* only do icons and labels / graphs if needed */
- display_mode = mate_panel_applet_mateconf_get_int(sensors_applet->applet,
- DISPLAY_MODE,
- NULL);
+ display_mode = g_settings_get_int (sensors_applet->settings, DISPLAY_MODE);
/* most users wont have a font size set */
- if ((client = mateconf_client_get_default()) != NULL) {
- font_size = mateconf_client_get_int(client,
- "/apps/sensors-applet/" FONT_SIZE,
- &error);
- if (error) {
- g_debug("Could not get font size from MateConf - assuming default size");
- font_size = 0;
- g_error_free(error);
- error = NULL;
- }
-
- g_object_unref(client);
- }
+ font_size = g_settings_get_int (sensors_applet->settings, FONT_SIZE);
/* do icon if needed */
diff --git a/sensors-applet/main.c b/sensors-applet/main.c
index c3f7784..dc3a2ed 100644
--- a/sensors-applet/main.c
+++ b/sensors-applet/main.c
@@ -24,12 +24,12 @@
#include <string.h>
#include "sensors-applet.h"
-static gboolean sensors_applet_fill(MatePanelApplet *applet,
- const gchar *iid,
+static gboolean sensors_applet_fill(MatePanelApplet *applet,
+ const gchar *iid,
gpointer data) {
SensorsApplet *sensors_applet;
gboolean retval = FALSE;
- if (strcmp(iid, "OAFIID:SensorsApplet") == 0) {
+ if (strcmp(iid, "SensorsApplet") == 0) {
sensors_applet = g_new0(SensorsApplet, 1);
sensors_applet->applet = applet;
sensors_applet_init(sensors_applet);
@@ -38,9 +38,8 @@ static gboolean sensors_applet_fill(MatePanelApplet *applet,
return retval;
}
-MATE_PANEL_APPLET_MATECOMPONENT_FACTORY ("OAFIID:SensorsApplet_Factory",
- PANEL_TYPE_APPLET,
- PACKAGE,
- PACKAGE_VERSION,
- sensors_applet_fill,
- NULL);
+MATE_PANEL_APPLET_OUT_PROCESS_FACTORY ("SensorsAppletFactory",
+ PANEL_TYPE_APPLET,
+ "SensorsApplet",
+ sensors_applet_fill,
+ NULL);
diff --git a/sensors-applet/prefs-dialog.c b/sensors-applet/prefs-dialog.c
index 7789996..386af34 100644
--- a/sensors-applet/prefs-dialog.c
+++ b/sensors-applet/prefs-dialog.c
@@ -20,8 +20,9 @@
#include "config.h"
#endif /* HAVE_CONFIG_H */
-#include <libmate/libmate.h>
-#include "sensors-applet-mateconf.h"
+#include <glib/gi18n.h>
+#include <gio/gio.h>
+#include "sensors-applet-settings.h"
#include "prefs-dialog.h"
#include "sensor-config-dialog.h"
@@ -29,13 +30,11 @@
#define NEW_TEMP_SCALE 1
/* when a user closes the prefs-dialog we assume that applet is now
- setup, so store all values in mateconf */
+ setup, so store all values in gsettings */
void prefs_dialog_close(SensorsApplet *sensors_applet) {
if (sensors_applet->sensors != NULL) {
- if (sensors_applet_mateconf_save_sensors(sensors_applet))
- mate_panel_applet_mateconf_set_bool(sensors_applet->applet,
- IS_SETUP, TRUE, NULL);
+ sensors_applet_settings_save_sensors(sensors_applet);
}
if (sensors_applet->prefs_dialog) {
gtk_widget_destroy(GTK_WIDGET(sensors_applet->prefs_dialog->dialog));
@@ -44,7 +43,7 @@ void prefs_dialog_close(SensorsApplet *sensors_applet) {
}
if (sensors_applet->timeout_id == 0) {
- sensors_applet->timeout_id = g_timeout_add_seconds(mate_panel_applet_mateconf_get_int(sensors_applet->applet, TIMEOUT, NULL) / 1000, (GSourceFunc)sensors_applet_update_active_sensors, sensors_applet);
+ sensors_applet->timeout_id = g_timeout_add_seconds(g_settings_get_int (sensors_applet->settings, TIMEOUT) / 1000, (GSourceFunc)sensors_applet_update_active_sensors, sensors_applet);
}
@@ -125,7 +124,7 @@ static void prefs_dialog_timeout_changed(GtkSpinButton *button,
PrefsDialog *prefs_dialog) {
gint value;
value = (gint)(gtk_spin_button_get_value(button) * 1000);
- mate_panel_applet_mateconf_set_int(prefs_dialog->sensors_applet->applet, TIMEOUT, value, NULL);
+ g_settings_set_int (prefs_dialog->sensors_applet->settings, TIMEOUT, value);
}
static void prefs_dialog_display_mode_changed(GtkComboBox *display_mode_combo_box,
@@ -149,10 +148,9 @@ static void prefs_dialog_display_mode_changed(GtkComboBox *display_mode_combo_bo
gtk_widget_set_sensitive(GTK_WIDGET(prefs_dialog->graph_size_spinbutton),
(display_mode == DISPLAY_GRAPH));
- mate_panel_applet_mateconf_set_int(prefs_dialog->sensors_applet->applet,
- DISPLAY_MODE,
- gtk_combo_box_get_active(display_mode_combo_box),
- NULL);
+ g_settings_set_int (prefs_dialog->sensors_applet->settings,
+ DISPLAY_MODE,
+ gtk_combo_box_get_active(display_mode_combo_box));
sensors_applet_display_layout_changed(prefs_dialog->sensors_applet);
}
@@ -160,10 +158,9 @@ static void prefs_dialog_display_mode_changed(GtkComboBox *display_mode_combo_bo
static void prefs_dialog_layout_mode_changed(GtkComboBox *layout_mode_combo_box,
PrefsDialog *prefs_dialog) {
- mate_panel_applet_mateconf_set_int(prefs_dialog->sensors_applet->applet,
- LAYOUT_MODE,
- gtk_combo_box_get_active(layout_mode_combo_box),
- NULL);
+ g_settings_set_int (prefs_dialog->sensors_applet->settings,
+ LAYOUT_MODE,
+ gtk_combo_box_get_active(layout_mode_combo_box));
sensors_applet_display_layout_changed(prefs_dialog->sensors_applet);
}
@@ -175,16 +172,14 @@ static void prefs_dialog_temperature_scale_changed(GtkComboBox *temperature_scal
TemperatureScale scales[2];
GtkTreeModel *model;
- scales[OLD_TEMP_SCALE] = (TemperatureScale)mate_panel_applet_mateconf_get_int(prefs_dialog->sensors_applet->applet,
- TEMPERATURE_SCALE,
- NULL);
+ scales[OLD_TEMP_SCALE] = (TemperatureScale) g_settings_get_int (prefs_dialog->sensors_applet->settings,
+ TEMPERATURE_SCALE);
scales[NEW_TEMP_SCALE] = (TemperatureScale)gtk_combo_box_get_active(temperature_scale_combo_box);
- mate_panel_applet_mateconf_set_int(prefs_dialog->sensors_applet->applet,
- TEMPERATURE_SCALE,
- scales[NEW_TEMP_SCALE],
- NULL);
+ g_settings_set_int (prefs_dialog->sensors_applet->settings,
+ TEMPERATURE_SCALE,
+ scales[NEW_TEMP_SCALE]);
/* now go thru and convert all low and high sensor values in
* the tree to either celcius or Fahrenheit */
@@ -205,10 +200,9 @@ static void prefs_dialog_display_notifications_toggled(GtkCheckButton *display_n
gboolean notify;
notify = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(display_notifications));
- mate_panel_applet_mateconf_set_bool(prefs_dialog->sensors_applet->applet,
- DISPLAY_NOTIFICATIONS,
- notify,
- NULL);
+ g_settings_set_boolean(prefs_dialog->sensors_applet->settings,
+ DISPLAY_NOTIFICATIONS,
+ notify);
if (notify) {
sensors_applet_update_active_sensors(prefs_dialog->sensors_applet);
@@ -222,7 +216,7 @@ static void prefs_dialog_graph_size_changed(GtkSpinButton *button,
PrefsDialog *prefs_dialog) {
gint value;
value = (gint)(gtk_spin_button_get_value(button));
- mate_panel_applet_mateconf_set_int(prefs_dialog->sensors_applet->applet, GRAPH_SIZE, value, NULL);
+ g_settings_set_int(prefs_dialog->sensors_applet->settings, GRAPH_SIZE, value);
/* notify change of number of samples */
sensors_applet_graph_size_changed(prefs_dialog->sensors_applet);
@@ -472,7 +466,7 @@ void prefs_dialog_open(SensorsApplet *sensors_applet) {
gtk_combo_box_append_text(prefs_dialog->display_mode_combo_box, _("graph only"));
- display_mode = mate_panel_applet_mateconf_get_int(sensors_applet->applet, DISPLAY_MODE, NULL);
+ display_mode = g_settings_get_int(sensors_applet->settings, DISPLAY_MODE);
gtk_combo_box_set_active(prefs_dialog->display_mode_combo_box, display_mode);
g_signal_connect(prefs_dialog->display_mode_combo_box,
@@ -503,7 +497,7 @@ void prefs_dialog_open(SensorsApplet *sensors_applet) {
gtk_combo_box_append_text(prefs_dialog->layout_mode_combo_box, _("beside labels / icons"));
gtk_combo_box_append_text(prefs_dialog->layout_mode_combo_box, _("below labels / icons"));
- gtk_combo_box_set_active(prefs_dialog->layout_mode_combo_box, mate_panel_applet_mateconf_get_int(sensors_applet->applet, LAYOUT_MODE, NULL));
+ gtk_combo_box_set_active(prefs_dialog->layout_mode_combo_box, g_settings_get_int(sensors_applet->settings, LAYOUT_MODE));
g_signal_connect(prefs_dialog->layout_mode_combo_box,
"changed",
@@ -528,7 +522,7 @@ void prefs_dialog_open(SensorsApplet *sensors_applet) {
gtk_combo_box_append_text(prefs_dialog->temperature_scale_combo_box, _("Celsius"));
gtk_combo_box_append_text(prefs_dialog->temperature_scale_combo_box, _("Fahrenheit"));
- gtk_combo_box_set_active(prefs_dialog->temperature_scale_combo_box, mate_panel_applet_mateconf_get_int(sensors_applet->applet, TEMPERATURE_SCALE, NULL));
+ gtk_combo_box_set_active(prefs_dialog->temperature_scale_combo_box, g_settings_get_int(sensors_applet->settings, TEMPERATURE_SCALE));
g_signal_connect(prefs_dialog->temperature_scale_combo_box,
"changed",
@@ -543,9 +537,7 @@ void prefs_dialog_open(SensorsApplet *sensors_applet) {
NULL);
prefs_dialog->graph_size_adjust = g_object_new(GTK_TYPE_ADJUSTMENT,
- "value", (gdouble)mate_panel_applet_mateconf_get_int(sensors_applet->applet,
- GRAPH_SIZE,
- NULL),
+ "value", (gdouble)g_settings_get_int(sensors_applet->settings, GRAPH_SIZE),
"lower", 1.0,
"upper", 100.0,
"step-increment", 1.0,
@@ -557,9 +549,7 @@ void prefs_dialog_open(SensorsApplet *sensors_applet) {
"adjustment", prefs_dialog->graph_size_adjust,
"climb-rate", 1.0,
"digits", 0,
- "value", (gdouble)mate_panel_applet_mateconf_get_int(sensors_applet->applet,
- GRAPH_SIZE,
- NULL),
+ "value", (gdouble)g_settings_get_int(sensors_applet->settings, GRAPH_SIZE),
"width-chars", 4,
NULL);
@@ -604,7 +594,7 @@ void prefs_dialog_open(SensorsApplet *sensors_applet) {
"adjustment", prefs_dialog->timeout_adjust,
"climb-rate", 0.5,
"digits", 1,
- "value", (gdouble) mate_panel_applet_mateconf_get_int(sensors_applet->applet, TIMEOUT, NULL) / 1000.0,
+ "value", (gdouble) g_settings_get_int(sensors_applet->settings, TIMEOUT) / 1000.0,
"width-chars", 4,
NULL);
@@ -635,9 +625,8 @@ void prefs_dialog_open(SensorsApplet *sensors_applet) {
"label", _("Display _notifications"),
NULL);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(prefs_dialog->display_notifications),
- mate_panel_applet_mateconf_get_bool(sensors_applet->applet,
- DISPLAY_NOTIFICATIONS,
- NULL));
+ g_settings_get_boolean(sensors_applet->settings,
+ DISPLAY_NOTIFICATIONS));
g_signal_connect(prefs_dialog->display_notifications,
"toggled",
G_CALLBACK(prefs_dialog_display_notifications_toggled),
diff --git a/sensors-applet/sensor-config-dialog.c b/sensors-applet/sensor-config-dialog.c
index c053c19..dd9f3c7 100644
--- a/sensors-applet/sensor-config-dialog.c
+++ b/sensors-applet/sensor-config-dialog.c
@@ -20,7 +20,7 @@
#include "config.h"
#endif /* HAVE_CONFIG_H */
-#include <mate.h>
+#include <glib/gi18n.h>
#include "sensor-config-dialog.h"
#include "sensors-applet.h"
diff --git a/sensors-applet/sensors-applet-mateconf.c b/sensors-applet/sensors-applet-mateconf.c
deleted file mode 100644
index 5039a95..0000000
--- a/sensors-applet/sensors-applet-mateconf.c
+++ /dev/null
@@ -1,491 +0,0 @@
-/*
- * Copyright (C) 2005-2009 Alex Murray <[email protected]>
- *
- * This program 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.
- *
- * This program 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, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include "sensors-applet.h"
-#include "sensors-applet-mateconf.h"
-
-#define DEFAULT_TIMEOUT 2000
-#define DEFAULT_GRAPH_SIZE 42
-
-static const gchar * const compatible_versions[] = {
- PACKAGE_VERSION, /* always list current version */
- "1.1.1",
- "1.1.0",
- "1.0.7",
- "1.1.0",
-};
-
-#define NUM_COMPATIBLE_VERSIONS G_N_ELEMENTS(compatible_versions)
-
-typedef enum {
- SENSORS_APPLET_MATECONF_ERROR = 0,
- SENSORS_APPLET_VERSION_ERROR,
-} SensorsAppletMateConfError;
-
-static const gchar * const error_titles[] = {
- N_("An error occurred loading the stored sensors data"),
- N_("Incompatible sensors configuration found")
-};
-
-static const gchar * const error_messages[] = {
- N_("An error has occurred when loading the stored sensors data. "
- "The default values will be used to recover from this error."),
-
- N_("Unfortunately the previous configuration for MATE Sensors Applet "
- "is not compatible with this version. The existing sensors data "
- "will be overwritten with the default values for this new version.")
-};
-
-/* function to be called if an error occurs
- when loading values from mateconf */
-static void sensors_applet_mateconf_error_occurred(SensorsAppletMateConfError error) {
- GtkWidget *dialog;
- gchar *markup;
-
- g_debug("Error occurred: %s", error_titles[error]);
- markup = g_markup_printf_escaped("<span size=\"large\" weight=\"bold\">%s</span>\n\n%s", _(error_titles[error]), _(error_messages[error]));
-
- dialog = gtk_message_dialog_new_with_markup(NULL, /* no parent window */
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_WARNING,
- GTK_BUTTONS_OK,
- "%s", markup);
-
- g_free(markup);
-
- /* runs dialog as modal and doesn't return until user clicks
- * button */
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(GTK_WIDGET(dialog));
-}
-
-
-static void sensors_applet_mateconf_set_defaults(SensorsApplet *sensors_applet) {
- mate_panel_applet_mateconf_set_int(sensors_applet->applet, DISPLAY_MODE, DISPLAY_ICON_WITH_VALUE, NULL);
- mate_panel_applet_mateconf_set_int(sensors_applet->applet, LAYOUT_MODE, VALUE_BESIDE_LABEL, NULL);
- mate_panel_applet_mateconf_set_int(sensors_applet->applet, TEMPERATURE_SCALE, CELSIUS, NULL);
- mate_panel_applet_mateconf_set_int(sensors_applet->applet, TIMEOUT, DEFAULT_TIMEOUT, NULL);
- mate_panel_applet_mateconf_set_int(sensors_applet->applet, GRAPH_SIZE, DEFAULT_GRAPH_SIZE, NULL);
-#ifdef HAVE_LIBMATENOTIFY
- mate_panel_applet_mateconf_set_bool(sensors_applet->applet, DISPLAY_NOTIFICATIONS, TRUE, NULL);
-#endif
- mate_panel_applet_mateconf_set_bool(sensors_applet->applet, IS_SETUP, FALSE, NULL);
-
-}
-
-/**
- * Returns TRUE is old_version is one of the compatible versions
- */
-static gboolean sensors_applet_mateconf_is_compatible(const gchar *old_version) {
- guint i;
- for (i = 0; i < NUM_COMPATIBLE_VERSIONS; i++) {
- if (g_ascii_strcasecmp(old_version, compatible_versions[i]) == 0) {
- return TRUE;
- }
- }
- return FALSE;
-}
-
-
-void sensors_applet_mateconf_setup(SensorsApplet *sensors_applet) {
- gboolean setup = FALSE;
- gchar *old_version;
- GError *error = NULL;
-
- /* need to convert old num_samples value to new GRAPH_SIZE
- * parameter */
- gint num_samples;
- if ((num_samples = mate_panel_applet_mateconf_get_int(sensors_applet->applet,
- "num_samples",
- NULL))) {
- g_debug("Convering old num_samples value %d into graph_size", num_samples);
- mate_panel_applet_mateconf_set_int(sensors_applet->applet,
- GRAPH_SIZE,
- (num_samples + GRAPH_FRAME_EXTRA_WIDTH),
- NULL);
- /* reset num_samples to zero */
- mate_panel_applet_mateconf_set_int(sensors_applet->applet,
- "num_samples",
- 0,
- NULL);
-
- }
-
- /* convert old alarm_commands to high and low if exist */
- GSList *alarm_commands;
- if ((alarm_commands = mate_panel_applet_mateconf_get_list(sensors_applet->applet,
- "alarm_commands",
- MATECONF_VALUE_STRING,
- NULL))) {
-
- g_debug("Converting old alarm commands to new high and low commands");
-
- mate_panel_applet_mateconf_set_list(sensors_applet->applet,
- LOW_ALARM_COMMANDS,
- MATECONF_VALUE_STRING,
- alarm_commands,
- NULL);
- mate_panel_applet_mateconf_set_list(sensors_applet->applet,
- HIGH_ALARM_COMMANDS,
- MATECONF_VALUE_STRING,
- alarm_commands,
- NULL);
- /* reset old list to null */
- mate_panel_applet_mateconf_set_list(sensors_applet->applet,
- "alarm_commands",
- MATECONF_VALUE_STRING,
- NULL,
- NULL);
- g_slist_foreach(alarm_commands, (GFunc)g_free, NULL);
- g_slist_free(alarm_commands);
-
- }
-
- setup = mate_panel_applet_mateconf_get_bool(sensors_applet->applet,
- IS_SETUP, &error);
- if (error) {
- g_debug("Previous configuration not found: %s, setting up manually", error->message);
- g_error_free(error);
- error = NULL;
- setup = FALSE;
- }
-
-
- if (setup) {
- /* see if setup version matches */
- old_version = mate_panel_applet_mateconf_get_string(sensors_applet->applet,
- SENSORS_APPLET_VERSION,
- &error);
- /* if versions don't match or there is no saved
- * version string then need to overwrite old config */
- if (error) {
- g_debug("Error getting old version string: %s", error->message);
- g_error_free(error);
- error = NULL;
- old_version = NULL;
- }
-
- if (old_version) {
- if (sensors_applet_mateconf_is_compatible(old_version)) {
- /* previously setup and versions match so use
- * old values */
- g_debug("MateConf data is compatible. Trying to set up sensors from mateconf data");
- if (sensors_applet_mateconf_setup_sensors(sensors_applet)) {
- g_debug("done setting up from mateconf");
- } else {
- g_debug("Setting mateconf defaults only");
- sensors_applet_mateconf_set_defaults(sensors_applet);
- }
- g_free(old_version);
-
- return;
-
-
- }
- g_free(old_version);
-
- }
- sensors_applet_notify(sensors_applet, MATECONF_READ_ERROR);
-
-
- sensors_applet_mateconf_error_occurred(SENSORS_APPLET_VERSION_ERROR);
- }
-
- /* use defaults */
- g_debug("Setting mateconf defaults only");
- sensors_applet_mateconf_set_defaults(sensors_applet);
-}
-
-enum {
- PATHS_INDEX = 0,
- IDS_INDEX,
- LABELS_INDEX,
- INTERFACES_INDEX,
- SENSOR_TYPES_INDEX,
- ENABLES_INDEX,
- LOW_VALUES_INDEX,
- HIGH_VALUES_INDEX,
- ALARM_ENABLES_INDEX,
- LOW_ALARM_COMMANDS_INDEX,
- HIGH_ALARM_COMMANDS_INDEX,
- ALARM_TIMEOUTS_INDEX,
- MULTIPLIERS_INDEX,
- OFFSETS_INDEX,
- ICON_TYPES_INDEX,
- GRAPH_COLORS_INDEX,
- NUM_KEYS
-};
-
-const gchar * const keys[NUM_KEYS] = {
- PATHS,
- IDS,
- LABELS,
- INTERFACES,
- SENSOR_TYPES,
- ENABLES,
- LOW_VALUES,
- HIGH_VALUES,
- ALARM_ENABLES,
- LOW_ALARM_COMMANDS,
- HIGH_ALARM_COMMANDS,
- ALARM_TIMEOUTS,
- MULTIPLIERS,
- OFFSETS,
- ICON_TYPES,
- GRAPH_COLORS,
-};
-
-/* MUST CORRESPOND TO ABOVE KEYS */
-const MateConfValueType key_types[NUM_KEYS] = {
- MATECONF_VALUE_STRING, /* PATHS */
- MATECONF_VALUE_STRING, /* IDS, */
- MATECONF_VALUE_STRING, /* LABELS */
- MATECONF_VALUE_STRING, /* INTERFACES, */
- MATECONF_VALUE_INT, /* SENSOR_TYPES, */
- MATECONF_VALUE_BOOL, /* ENABLES, */
- MATECONF_VALUE_INT, /* LOW_VALUES, */
- MATECONF_VALUE_INT, /* HIGH_VALUES, */
- MATECONF_VALUE_BOOL, /* ALARM_ENABLES, */
- MATECONF_VALUE_STRING, /* LOW_ALARM_COMMANDS, */
- MATECONF_VALUE_STRING, /* HIGH_ALARM_COMMANDS, */
- MATECONF_VALUE_INT, /* ALARM_TIMEOUTS, */
- MATECONF_VALUE_INT, /* MULTIPLIERS, */
- MATECONF_VALUE_INT, /* OFFSETS, */
- MATECONF_VALUE_INT, /* ICON_TYPES, */
- MATECONF_VALUE_STRING /* GRAPH_COLORS, */
-};
-
-void sensors_applet_mateconf_set_current_to_lists(GSList *current[],
- GSList *lists[],
- int len) {
- for (len--; len >= 0; len--) {
- current[len] = lists[len];
- }
-}
-
-int sensors_applet_mateconf_current_not_null(GSList *current[],
- int len) {
- for (len--; len >= 0; len--) {
- if (NULL == current[len]) {
- return FALSE;
- }
- }
- return TRUE;
-}
-void sensors_applet_mateconf_current_get_next(GSList *current[],
- int len) {
- for (len--; len >= 0; len--) {
- current[len] = g_slist_next(current[len]);
- }
-}
-
-void sensors_applet_mateconf_free_lists(GSList *lists[],
- int len) {
- for (len--; len >= 0; len--) {
- if (key_types[len] == MATECONF_VALUE_STRING) {
- g_slist_foreach(lists[len], (GFunc)g_free, NULL);
- }
- g_slist_free(lists[len]);
- }
-
-}
-
-/* gets called if are already setup so we don't have to manually go
- through and find sensors etc again */
-gboolean sensors_applet_mateconf_setup_sensors(SensorsApplet *sensors_applet) {
- /* everything gets stored except alarm timeout indexes, which
- we set to -1, and visible which we set to false for all
- parent nodes and true for all child nodes */
- int i;
- GSList *lists[NUM_KEYS] = {NULL};
-
- GSList *current[NUM_KEYS] = {NULL};
-
- GError *error = NULL;
-
- for (i = 0; i < NUM_KEYS; i++) {
- lists[i] = mate_panel_applet_mateconf_get_list(sensors_applet->applet,
- keys[i],
- key_types[i],
- &error);
- if (error || NULL == lists[i]) {
- sensors_applet_notify(sensors_applet, MATECONF_READ_ERROR);
-
- sensors_applet_mateconf_error_occurred(SENSORS_APPLET_MATECONF_ERROR);
- if (error) {
- g_error_free(error);
- }
- return FALSE;
- }
- }
-
- for (sensors_applet_mateconf_set_current_to_lists(current,
- lists,
- NUM_KEYS);
- sensors_applet_mateconf_current_not_null(current,
- NUM_KEYS);
- sensors_applet_mateconf_current_get_next(current,
- NUM_KEYS)) {
-
-
- g_debug("trying to add sensor from mateconf data: %s\n", (gchar *)(current[IDS_INDEX]->data));
- /* need to ensure correct order */
- sensors_applet_add_sensor(sensors_applet,
- (gchar *)(current[PATHS_INDEX]->data),
- (gchar *)(current[IDS_INDEX]->data),
- (gchar *)(current[LABELS_INDEX]->data),
- (gchar *)(current[INTERFACES_INDEX]->data),
- GPOINTER_TO_UINT(current[SENSOR_TYPES_INDEX]->data),
- GPOINTER_TO_INT(current[ENABLES_INDEX]->data),
- (gdouble)(GPOINTER_TO_INT(current[LOW_VALUES_INDEX]->data) / 1000.0),
- (gdouble)(GPOINTER_TO_INT(current[HIGH_VALUES_INDEX]->data) / 1000.0),
- GPOINTER_TO_INT(current[ALARM_ENABLES_INDEX]->data),
- (gchar *)(current[LOW_ALARM_COMMANDS_INDEX]->data),
- (gchar *)(current[HIGH_ALARM_COMMANDS_INDEX]->data),
- GPOINTER_TO_INT(current[ALARM_TIMEOUTS_INDEX]->data),
- (gdouble)(GPOINTER_TO_INT(current[MULTIPLIERS_INDEX]->data) / 1000.0),
- (gdouble)(GPOINTER_TO_INT(current[OFFSETS_INDEX]->data) / 1000.0),
- (SensorType)GPOINTER_TO_UINT(current[ICON_TYPES_INDEX]->data),
- (gchar *)(current[GRAPH_COLORS_INDEX]->data)
-
- );
-
- }
- sensors_applet_mateconf_free_lists(lists,
- NUM_KEYS);
-
- return TRUE;
-}
-
-
-gboolean sensors_applet_mateconf_save_sensors(SensorsApplet *sensors_applet) {
- /* write everything to mateconf except VISIBLE and
- ALARM_TIMEOUT_INDEX */
- /* for stepping through GtkTreeStore data structure */
- GtkTreeIter interfaces_iter, sensors_iter;
- gboolean not_end_of_interfaces = TRUE, not_end_of_sensors = TRUE;
-
- /* make sure all are initialized to null - since list of
- * intializers is horter than number of element, rest get set
- * to 0 (ie NULL) */
- GSList *lists[NUM_KEYS] = {NULL};
- int i;
- gchar *current_path, *current_id, *current_label, *current_interface,
- *current_low_alarm_command, *current_high_alarm_command,
- *current_graph_color;
- gboolean current_enable, current_alarm_enable;
- gdouble current_low_value, current_high_value, current_multiplier,
- current_offset;
- guint current_alarm_timeout, current_sensor_type,
- current_icon_type;
-
- GError *error = NULL;
-
- /* now step through the GtkTreeStore sensors to
- find which sensors are enabled */
- for (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(sensors_applet->sensors), &interfaces_iter); not_end_of_interfaces; not_end_of_interfaces = gtk_tree_model_iter_next(GTK_TREE_MODEL(sensors_applet->sensors), &interfaces_iter)) {
- // store a mateconf key for this interface
- gtk_tree_model_get(GTK_TREE_MODEL(sensors_applet->sensors),
- &interfaces_iter,
- ID_COLUMN, &current_id,
- -1);
-
- mate_panel_applet_mateconf_set_bool(sensors_applet->applet, current_id, TRUE, NULL);
- g_free(current_id);
-
- /* reset sensors sentinel */
- not_end_of_sensors = TRUE;
-
- for (gtk_tree_model_iter_children(GTK_TREE_MODEL(sensors_applet->sensors), &sensors_iter, &interfaces_iter); not_end_of_sensors; not_end_of_sensors = gtk_tree_model_iter_next(GTK_TREE_MODEL(sensors_applet->sensors), &sensors_iter)) {
- gtk_tree_model_get(GTK_TREE_MODEL(sensors_applet->sensors),
- &sensors_iter,
- PATH_COLUMN, &current_path,
- ID_COLUMN, &current_id,
- LABEL_COLUMN, &current_label,
- INTERFACE_COLUMN, &current_interface,
- SENSOR_TYPE_COLUMN, &current_sensor_type,
- ENABLE_COLUMN, &current_enable,
- LOW_VALUE_COLUMN, &current_low_value,
- HIGH_VALUE_COLUMN, &current_high_value,
- ALARM_ENABLE_COLUMN, &current_alarm_enable,
- LOW_ALARM_COMMAND_COLUMN, &current_low_alarm_command,
- HIGH_ALARM_COMMAND_COLUMN, &current_high_alarm_command,
- ALARM_TIMEOUT_COLUMN, &current_alarm_timeout,
- MULTIPLIER_COLUMN, &current_multiplier,
- OFFSET_COLUMN, &current_offset,
- ICON_TYPE_COLUMN, &current_icon_type,
- GRAPH_COLOR_COLUMN, &current_graph_color,
- -1);
-
- /* prepend values as this is faster then just
- reverse list when finished */
- lists[PATHS_INDEX] = g_slist_prepend(lists[PATHS_INDEX], current_path);
- lists[IDS_INDEX] = g_slist_prepend(lists[IDS_INDEX], current_id);
- lists[LABELS_INDEX] = g_slist_prepend(lists[LABELS_INDEX], current_label);
- lists[INTERFACES_INDEX] = g_slist_prepend(lists[INTERFACES_INDEX], current_interface);
- lists[ENABLES_INDEX] = g_slist_prepend(lists[ENABLES_INDEX], GINT_TO_POINTER(current_enable));
- lists[LOW_VALUES_INDEX] = g_slist_prepend(lists[LOW_VALUES_INDEX], GINT_TO_POINTER((gint)(current_low_value * 1000)));
- lists[HIGH_VALUES_INDEX] = g_slist_prepend(lists[HIGH_VALUES_INDEX], GINT_TO_POINTER((gint)(current_high_value * 1000)));
- lists[ALARM_ENABLES_INDEX] = g_slist_prepend(lists[ALARM_ENABLES_INDEX], GINT_TO_POINTER(current_alarm_enable));
- lists[LOW_ALARM_COMMANDS_INDEX] = g_slist_prepend(lists[LOW_ALARM_COMMANDS_INDEX], current_low_alarm_command);
- lists[HIGH_ALARM_COMMANDS_INDEX] = g_slist_prepend(lists[HIGH_ALARM_COMMANDS_INDEX], current_high_alarm_command);
- lists[ALARM_TIMEOUTS_INDEX] = g_slist_prepend(lists[ALARM_TIMEOUTS_INDEX], GINT_TO_POINTER(current_alarm_timeout));
- lists[SENSOR_TYPES_INDEX] = g_slist_prepend(lists[SENSOR_TYPES_INDEX], GUINT_TO_POINTER(current_sensor_type));
- lists[MULTIPLIERS_INDEX] = g_slist_prepend(lists[MULTIPLIERS_INDEX], GINT_TO_POINTER((gint)(current_multiplier * 1000)));
- lists[OFFSETS_INDEX] = g_slist_prepend(lists[OFFSETS_INDEX], GINT_TO_POINTER((gint)(current_offset * 1000)));
- lists[ICON_TYPES_INDEX] = g_slist_prepend(lists[ICON_TYPES_INDEX], GUINT_TO_POINTER(current_icon_type));
- lists[GRAPH_COLORS_INDEX] = g_slist_prepend(lists[GRAPH_COLORS_INDEX], current_graph_color);
- }
- }
-
- /* keep lists in original order */
- for (i = 0; i < NUM_KEYS; i++) {
- if (lists[i] != NULL) {
- lists[i] = g_slist_reverse(lists[i]);
-
- mate_panel_applet_mateconf_set_list(sensors_applet->applet,
- keys[i],
- key_types[i],
- lists[i], &error);
- if (error) {
- sensors_applet_notify(sensors_applet, MATECONF_WRITE_ERROR);
-
- g_error_free(error);
- return FALSE;
- }
- } else {
- g_debug("list %s is NULL", keys[i]);
- }
-
- }
-
- sensors_applet_mateconf_free_lists(lists,
- NUM_KEYS);
-
- /* store current version to identify config data */
- mate_panel_applet_mateconf_set_string(sensors_applet->applet,
- SENSORS_APPLET_VERSION,
- PACKAGE_VERSION, &error);
-
- return TRUE;
-}
-
diff --git a/sensors-applet/sensors-applet-mateconf.h b/sensors-applet/sensors-applet-mateconf.h
deleted file mode 100644
index be74941..0000000
--- a/sensors-applet/sensors-applet-mateconf.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2005-2009 Alex Murray <[email protected]>
- *
- * This program 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.
- *
- * This program 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, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef SENSORS_APPLET_MATECONF_H
-#define SENSORS_APPLET_MATECONF_H
-
-#include "sensors-applet.h"
-#include <mate-panel-applet-mateconf.h>
-
-#define FONT_SIZE "font-size" /* hidden mateconf option specifying font
- * size in points */
-
-#define HIDE_UNITS "hide-units" /* hidden mateconf option specifying not to
- * show sensor units */
-
-#define IS_SETUP "setup" /* have we actually set up this instance of
- * the applet (gets set to true after
- * closing prefences dialog) */
-
-#define DISPLAY_MODE "display_mode" /* display icons or text labels?*/
-
-#define LAYOUT_MODE "layout_mode" /* value beside or below label */
-#define TEMPERATURE_SCALE "temperature_scale" /* Kelvin,
- Celsius or
- Fahrenheit */
-#define DISPLAY_NOTIFICATIONS "display_notifications" /* whether to
- * display
- * notifications */
-#define TIMEOUT "timeout_delay" /* delay (in ms) between refreshes */
-#define GRAPH_SIZE "graph_size" /* the size of the graph in pixels -
- * either width if horizontal, or
- * height if vertical */
-#define PATHS "paths" /* full paths to filenames */
-#define IDS "ids" /* a list of the sensor device ids */
-#define INTERFACES "interfaces" /* a list of the sensor device
- * interface for each sensor */
-#define LABELS "labels" /* user defined labels for each sensor */
-#define ENABLES "sensor_enables" /* list of booleans corresponding to
- * the filenames of whether a sensor
- * is enabled or not */
-#define LOW_VALUES "low_values" /* stored as ints (1000 * double
- * value) for accuracy, since can
- * only do ints easily */
-#define HIGH_VALUES "high_values" /* stored as ints (1000 * double
- * value) for accuracy, since can
- * only do ints easily */
-#define ALARM_ENABLES "alarm_enables" /* list of whether each sensor
- * has its alarm enabled */
-#define LOW_ALARM_COMMANDS "low_alarm_commands" /* list of commands to execute
- * when each alarm is
- * activated */
-#define HIGH_ALARM_COMMANDS "high_alarm_commands" /* list of commands to execute
- * when each alarm is
- * activated */
-
-#define ALARM_TIMEOUTS "alarm_timeouts" /* list of how often each
- alarm should be sounded (in
- seconds) */
-
-#define SENSOR_TYPES "sensor_types" /* used to identify a sensor in a
- list */
-
-#define MULTIPLIERS "multipliers"
-#define OFFSETS "offsets"
-#define ICON_TYPES "icon_types"
-#define GRAPH_COLORS "graph_colors"
-
-#define SENSORS_APPLET_VERSION "sensors_applet_version" /* version of
- * config
- * data */
-
-gboolean sensors_applet_mateconf_save_sensors(SensorsApplet *sensors_applet);
-gboolean sensors_applet_mateconf_setup_sensors(SensorsApplet *sensors_applet);
-void sensors_applet_mateconf_setup(SensorsApplet *sensors_applet);
-
-#endif /* SENSORS_APPLET_MATECONF_H*/
diff --git a/sensors-applet/sensors-applet-settings.c b/sensors-applet/sensors-applet-settings.c
new file mode 100644
index 0000000..6b0d92f
--- /dev/null
+++ b/sensors-applet/sensors-applet-settings.c
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2005-2009 Alex Murray <[email protected]>
+ *
+ * This program 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.
+ *
+ * This program 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#include <glib.h>
+#include "sensors-applet.h"
+#include "sensors-applet-settings.h"
+
+gchar* sensors_applet_settings_get_unique_id (const gchar *interface, const gchar *id, const gchar *path) {
+ gchar *unique_id;
+ gchar *unique_id_hash;
+ GChecksum *checksum;
+ guint8 digest[16];
+ gsize digest_len = sizeof (digest);
+
+ unique_id = g_strdup_printf ("%s/%s/%s", interface, id, path);
+
+ checksum = g_checksum_new (G_CHECKSUM_MD5);
+ g_checksum_update (checksum, (const guchar *) unique_id, strlen (unique_id));
+ g_checksum_get_digest (checksum, digest, &digest_len);
+ g_assert (digest_len == 16);
+
+ unique_id_hash = g_strdup (g_checksum_get_string (checksum));
+
+ g_checksum_free (checksum);
+ g_free (unique_id);
+
+ return unique_id_hash;
+}
+
+gboolean sensors_applet_settings_save_sensors(SensorsApplet *sensors_applet) {
+ /* write everything to GSettings except VISIBLE and
+ ALARM_TIMEOUT_INDEX */
+ /* for stepping through GtkTreeStore data structure */
+ GtkTreeIter interfaces_iter, sensors_iter;
+ gboolean not_end_of_interfaces = TRUE, not_end_of_sensors = TRUE;
+ gchar *applet_path;
+
+ int i;
+ gchar *current_path, *current_id, *current_label, *current_interface,
+ *current_low_alarm_command, *current_high_alarm_command,
+ *current_graph_color;
+ gboolean current_enable, current_alarm_enable;
+ gdouble current_low_value, current_high_value, current_multiplier,
+ current_offset;
+ guint current_alarm_timeout, current_sensor_type,
+ current_icon_type;
+
+ applet_path = mate_panel_applet_get_preferences_path (sensors_applet->applet);
+
+ /* now step through the GtkTreeStore sensors to
+ find which sensors are enabled */
+ for (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(sensors_applet->sensors), &interfaces_iter); not_end_of_interfaces; not_end_of_interfaces = gtk_tree_model_iter_next(GTK_TREE_MODEL(sensors_applet->sensors), &interfaces_iter)) {
+ gtk_tree_model_get(GTK_TREE_MODEL(sensors_applet->sensors),
+ &interfaces_iter,
+ ID_COLUMN, &current_id,
+ -1);
+
+ //mate_panel_applet_mateconf_set_bool(sensors_applet->applet, current_id, TRUE, NULL);
+ g_free(current_id);
+
+ /* reset sensors sentinel */
+ not_end_of_sensors = TRUE;
+
+ for (gtk_tree_model_iter_children(GTK_TREE_MODEL(sensors_applet->sensors), &sensors_iter, &interfaces_iter); not_end_of_sensors; not_end_of_sensors = gtk_tree_model_iter_next(GTK_TREE_MODEL(sensors_applet->sensors), &sensors_iter)) {
+ gtk_tree_model_get(GTK_TREE_MODEL(sensors_applet->sensors),
+ &sensors_iter,
+ PATH_COLUMN, &current_path,
+ ID_COLUMN, &current_id,
+ LABEL_COLUMN, &current_label,
+ INTERFACE_COLUMN, &current_interface,
+ SENSOR_TYPE_COLUMN, &current_sensor_type,
+ ENABLE_COLUMN, &current_enable,
+ LOW_VALUE_COLUMN, &current_low_value,
+ HIGH_VALUE_COLUMN, &current_high_value,
+ ALARM_ENABLE_COLUMN, &current_alarm_enable,
+ LOW_ALARM_COMMAND_COLUMN, &current_low_alarm_command,
+ HIGH_ALARM_COMMAND_COLUMN, &current_high_alarm_command,
+ ALARM_TIMEOUT_COLUMN, &current_alarm_timeout,
+ MULTIPLIER_COLUMN, &current_multiplier,
+ OFFSET_COLUMN, &current_offset,
+ ICON_TYPE_COLUMN, &current_icon_type,
+ GRAPH_COLOR_COLUMN, &current_graph_color,
+ -1);
+
+ gchar *path = g_strdup_printf ("%s%s/",
+ applet_path,
+ sensors_applet_settings_get_unique_id (current_interface,
+ current_id,
+ current_path));
+
+ GSettings *settings;
+ settings = g_settings_new_with_path ("org.mate.sensors-applet.sensor",
+ path);
+ g_free (path);
+
+ g_settings_delay (settings);
+ g_settings_set_string (settings, PATH, current_path);
+ g_settings_set_string (settings, ID, current_id);
+ g_settings_set_string (settings, LABEL, current_label);
+ g_settings_set_string (settings, INTERFACE, current_interface);
+ g_settings_set_int (settings, SENSOR_TYPE, current_sensor_type);
+ g_settings_set_boolean (settings, ENABLED, current_enable);
+ g_settings_set_double (settings, LOW_VALUE, current_low_value);
+ g_settings_set_double (settings, HIGH_VALUE, current_high_value);
+ g_settings_set_boolean (settings, ALARM_ENABLED, current_alarm_enable);
+ g_settings_set_string (settings, LOW_ALARM_COMMAND, current_low_alarm_command);
+ g_settings_set_string (settings, HIGH_ALARM_COMMAND, current_high_alarm_command);
+ g_settings_set_int (settings, ALARM_TIMEOUT, current_alarm_timeout);
+ g_settings_set_double (settings, MULTIPLIER, current_multiplier);
+ g_settings_set_double (settings, OFFSET, current_offset);
+ g_settings_set_int (settings, ICON_TYPE, current_icon_type);
+ g_settings_set_string (settings, GRAPH_COLOR, current_graph_color);
+ g_settings_apply (settings);
+ g_object_unref (settings);
+
+ }
+ }
+
+ g_free (applet_path);
+
+ return TRUE;
+}
+
diff --git a/sensors-applet/sensors-applet-settings.h b/sensors-applet/sensors-applet-settings.h
new file mode 100644
index 0000000..89f6ce0
--- /dev/null
+++ b/sensors-applet/sensors-applet-settings.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2005-2009 Alex Murray <[email protected]>
+ *
+ * This program 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.
+ *
+ * This program 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef SENSORS_APPLET_SETTINGS_H
+#define SENSORS_APPLET_SETTINGS_H
+
+#include "sensors-applet.h"
+#include <mate-panel-applet.h>
+#include <mate-panel-applet-gsettings.h>
+
+#define FONT_SIZE "font-size"
+#define HIDE_UNITS "hide-units"
+#define DISPLAY_MODE "display-mode"
+#define LAYOUT_MODE "layout-mode"
+#define TEMPERATURE_SCALE "temperature-scale"
+#define DISPLAY_NOTIFICATIONS "display-notifications"
+#define TIMEOUT "timeout-delay"
+#define GRAPH_SIZE "graph-size"
+#define SENSORS_LIST "sensors-list"
+
+#define PATH "path"
+#define ID "id"
+#define INTERFACE "interface"
+#define LABEL "label"
+#define ENABLED "enabled"
+#define LOW_VALUE "low-value"
+#define HIGH_VALUE "high-value"
+#define ALARM_ENABLED "alarm-enabled"
+#define LOW_ALARM_COMMAND "low-alarm-command"
+#define HIGH_ALARM_COMMAND "high-alarm-command"
+#define ALARM_TIMEOUT "alarm-timeout"
+#define SENSOR_TYPE "sensor-type"
+#define MULTIPLIER "multiplier"
+#define OFFSET "offset"
+#define ICON_TYPE "icon-type"
+#define GRAPH_COLOR "graph-color"
+
+gchar* sensors_applet_settings_get_unique_id (const gchar *interface, const gchar *id, const gchar *path);
+gboolean sensors_applet_settings_save_sensors(SensorsApplet *sensors_applet);
+
+#endif /* SENSORS_APPLET_SETTINGS_H*/
diff --git a/sensors-applet/sensors-applet.c b/sensors-applet/sensors-applet.c
index 2e0d3b9..63ed3f9 100644
--- a/sensors-applet/sensors-applet.c
+++ b/sensors-applet/sensors-applet.c
@@ -28,11 +28,12 @@
#include <unistd.h>
#endif /* HAVE_UNISTD_H */
-#include <mate.h>
+#include <glib/gi18n.h>
#include <glib/gprintf.h>
+#include <gio/gio.h>
#include "sensors-applet.h"
#include "active-sensor.h"
-#include "sensors-applet-mateconf.h"
+#include "sensors-applet-settings.h"
#include "sensors-applet-plugins.h"
#ifdef HAVE_LIBMATENOTIFY
@@ -51,9 +52,8 @@
#define ROW_SPACING 0
/* callbacks for panel menu */
-static void prefs_cb(MateComponentUIComponent *uic,
- gpointer *data,
- const gchar *verbname) {
+static void prefs_cb(GtkAction *action,
+ gpointer *data) {
SensorsApplet *sensors_applet;
sensors_applet = (SensorsApplet *)data;
@@ -65,18 +65,16 @@ static void prefs_cb(MateComponentUIComponent *uic,
prefs_dialog_open(sensors_applet);
}
-static void about_cb(MateComponentUIComponent *uic,
- gpointer data,
- const gchar *verbname) {
+static void about_cb(GtkAction *action,
+ gpointer data) {
SensorsApplet *sensors_applet;
sensors_applet = (SensorsApplet *)data;
about_dialog_open(sensors_applet);
}
-static void help_cb(MateComponentUIComponent *uic,
- gpointer data,
- const gchar *verbname) {
+static void help_cb(GtkAction *action,
+ gpointer data) {
GError *error = NULL;
@@ -105,6 +103,11 @@ static void destroy_cb(GtkWidget *widget, gpointer data) {
g_source_remove(sensors_applet->timeout_id);
}
+ if (sensors_applet->settings ) {
+ g_object_unref (sensors_applet->settings);
+ sensors_applet->settings = NULL;
+ }
+
// destroy all active sensors
g_list_foreach(sensors_applet->active_sensors,
(GFunc)active_sensor_destroy,
@@ -212,9 +215,7 @@ static void style_set_cb(GtkWidget *widget,
g_debug("set-style occurred");
- display_mode = mate_panel_applet_mateconf_get_int(sensors_applet->applet,
- DISPLAY_MODE,
- NULL);
+ display_mode = g_settings_get_int (sensors_applet->settings, DISPLAY_MODE);
if (sensors_applet->sensors) {
for (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(sensors_applet->sensors), &interfaces_iter); not_end_of_interfaces; not_end_of_interfaces = gtk_tree_model_iter_next(GTK_TREE_MODEL(sensors_applet->sensors), &interfaces_iter)) {
@@ -255,11 +256,16 @@ static void style_set_cb(GtkWidget *widget,
}
-static const MateComponentUIVerb sensors_applet_menu_verbs[] = {
- MATECOMPONENT_UI_UNSAFE_VERB("Preferences", prefs_cb),
- MATECOMPONENT_UI_UNSAFE_VERB ("Help", help_cb),
- MATECOMPONENT_UI_UNSAFE_VERB("About", about_cb),
- MATECOMPONENT_UI_VERB_END
+static const GtkActionEntry sensors_applet_menu_actions[] = {
+ { "Preferences", GTK_STOCK_PROPERTIES, N_("_Preferences"),
+ NULL, NULL,
+ G_CALLBACK(prefs_cb) },
+ { "Help", GTK_STOCK_HELP, N_("_Help"),
+ NULL, NULL,
+ G_CALLBACK(help_cb) },
+ { "About", GTK_STOCK_ABOUT, N_("_About"),
+ NULL, NULL,
+ G_CALLBACK(about_cb) }
};
#ifdef HAVE_LIBMATENOTIFY
@@ -272,58 +278,6 @@ static void notif_closed_cb(NotifyNotification *notification,
}
#endif // HAVE_LIBMATENOTIFY
-void sensors_applet_notify(SensorsApplet *sensors_applet,
- NotifType notif_type)
-{
-#ifdef HAVE_LIBMATENOTIFY
- gchar *message;
- gchar *summary;
- GError *error = NULL;
- g_assert(sensors_applet);
-
- if (!notify_is_initted()) {
- if (!notify_init(PACKAGE)) {
- return;
- }
- }
-
- if (sensors_applet->notification) {
- g_debug("notification already shown, not showing another one...");
- return;
- }
-
- switch (notif_type) {
- case MATECONF_READ_ERROR:
- summary = g_strdup_printf(_("Error restoring saved sensor configuration."));
- message = g_strdup_printf(_("An error occurred while trying to restore the saved sensor configuration. The previous configuration has been lost and will need to be re-entered."));
- break;
-
- case MATECONF_WRITE_ERROR:
- summary = g_strdup_printf(_("Error saving sensor configuration."));
- message = g_strdup_printf(_("An error occurred while trying to save the current sensor configuration. "));
- break;
- }
-
- sensors_applet->notification = notify_notification_new(summary,
- message,
- GTK_STOCK_DIALOG_WARNING,
- GTK_WIDGET(sensors_applet->applet));
- g_free(summary);
- g_free(message);
-
- g_signal_connect(sensors_applet->notification,
- "closed",
- G_CALLBACK(notif_closed_cb),
- sensors_applet);
- g_debug("showing notification");
- if (!notify_notification_show(sensors_applet->notification, &error)) {
- g_debug("Error showing notification: %s", error->message);
- g_error_free(error);
- }
-#endif // HAVE_LIBMATENOTIFY
-}
-
-
void sensors_applet_notify_active_sensor(ActiveSensor *active_sensor, NotifType notif_type) {
#ifdef HAVE_LIBMATENOTIFY
@@ -347,9 +301,7 @@ void sensors_applet_notify_active_sensor(ActiveSensor *active_sensor, NotifType
sensors_applet = active_sensor->sensors_applet;
- if (!mate_panel_applet_mateconf_get_bool(sensors_applet->applet,
- DISPLAY_NOTIFICATIONS,
- NULL)) {
+ if (!g_settings_get_boolean (sensors_applet->settings, DISPLAY_NOTIFICATIONS)) {
g_debug("Wanted to display notification, but user has disabled them");
return;
}
@@ -411,9 +363,7 @@ void sensors_applet_notify_active_sensor(ActiveSensor *active_sensor, NotifType
case TEMP_SENSOR:
unit_type_title = _("Temperature");
unit_type = _("temperature");
- temp_scale = (TemperatureScale)mate_panel_applet_mateconf_get_int(active_sensor->sensors_applet->applet,
- TEMPERATURE_SCALE,
- NULL);
+ temp_scale = (TemperatureScale) g_settings_get_int (active_sensor->sensors_applet->settings, TEMPERATURE_SCALE);
switch (temp_scale) {
case CELSIUS:
@@ -457,9 +407,7 @@ void sensors_applet_notify_active_sensor(ActiveSensor *active_sensor, NotifType
case SENSOR_INTERFACE_ERROR:
summary = g_strdup_printf(_("Error updating sensor %s"), sensor_label);
message = g_strdup_printf(_("An error occurred while trying to update the value of the sensor %s located at %s."), sensor_label, sensor_path);
- timeout_msecs = mate_panel_applet_mateconf_get_int(active_sensor->sensors_applet->applet,
- TIMEOUT,
- NULL);
+ timeout_msecs = g_settings_get_int (active_sensor->sensors_applet->settings, TIMEOUT);
break;
@@ -599,10 +547,8 @@ static void sensors_applet_pack_display(SensorsApplet *sensors_applet) {
/* otherwise can acess active_sensors without any worries */
num_active_sensors = g_list_length(sensors_applet->active_sensors);
- display_mode = (DisplayMode)mate_panel_applet_mateconf_get_int(sensors_applet->applet,
- DISPLAY_MODE, NULL);
- layout_mode = (LayoutMode)mate_panel_applet_mateconf_get_int(sensors_applet->applet,
- LAYOUT_MODE, NULL);
+ display_mode = (DisplayMode) g_settings_get_int (sensors_applet->settings, DISPLAY_MODE);
+ layout_mode = (LayoutMode) g_settings_get_int (sensors_applet->settings, LAYOUT_MODE);
horizontal = (((mate_panel_applet_get_orient(sensors_applet->applet) == MATE_PANEL_APPLET_ORIENT_UP) ||
@@ -1099,8 +1045,6 @@ gboolean sensors_applet_add_sensor(SensorsApplet *sensors_applet,
g_debug("Added sensor interface %s to tree", interface);
}
- icon = sensors_applet_load_icon(icon_type);
-
/* then add sensor as a child under interface node - ie assume
* we either found it or created it - the inteface node that
@@ -1111,28 +1055,70 @@ gboolean sensors_applet_add_sensor(SensorsApplet *sensors_applet,
&sensors_iter,
&interfaces_iter);
- gtk_tree_store_set(sensors_applet->sensors,
- &sensors_iter,
- PATH_COLUMN, path,
- ID_COLUMN, id,
- LABEL_COLUMN, label,
- INTERFACE_COLUMN, interface,
- SENSOR_TYPE_COLUMN, type,
- ENABLE_COLUMN, enable,
- VISIBLE_COLUMN, TRUE,
- LOW_VALUE_COLUMN, low_value,
- HIGH_VALUE_COLUMN, high_value,
- ALARM_ENABLE_COLUMN, alarm_enable,
- ALARM_TIMEOUT_COLUMN, alarm_timeout,
- LOW_ALARM_COMMAND_COLUMN, low_alarm_command,
- HIGH_ALARM_COMMAND_COLUMN, high_alarm_command,
- MULTIPLIER_COLUMN, multiplier,
- OFFSET_COLUMN, offset,
- ICON_TYPE_COLUMN, icon_type,
- ICON_PIXBUF_COLUMN, icon,
- GRAPH_COLOR_COLUMN, graph_color,
- -1);
- g_debug("added sensor %s to tree", path);
+ /* if sensor is already in settings, load values from there */
+ gchar *applet_path = mate_panel_applet_get_preferences_path (sensors_applet->applet);
+ gchar *settings_path = g_strdup_printf ("%s%s/",
+ applet_path,
+ sensors_applet_settings_get_unique_id (interface,
+ id,
+ path));
+ GSettings *settings = g_settings_new_with_path ("org.mate.sensors-applet.sensor", settings_path);
+ g_free (applet_path);
+ g_free (settings_path);
+
+ gchar *settings_id = g_settings_get_string (settings, ID);
+
+ if (settings_id != NULL && settings_id[0] != '\0') {
+ icon = sensors_applet_load_icon(g_settings_get_int (settings, ICON_TYPE));
+ gtk_tree_store_set(sensors_applet->sensors,
+ &sensors_iter,
+ PATH_COLUMN, g_settings_get_string (settings, PATH),
+ ID_COLUMN, settings_id,
+ LABEL_COLUMN, g_settings_get_string (settings, LABEL),
+ INTERFACE_COLUMN, g_settings_get_string (settings, INTERFACE),
+ SENSOR_TYPE_COLUMN, g_settings_get_int (settings, SENSOR_TYPE),
+ ENABLE_COLUMN, g_settings_get_boolean (settings, ENABLED),
+ VISIBLE_COLUMN, TRUE,
+ LOW_VALUE_COLUMN, g_settings_get_double (settings, LOW_VALUE),
+ HIGH_VALUE_COLUMN, g_settings_get_double (settings, HIGH_VALUE),
+ ALARM_ENABLE_COLUMN, g_settings_get_boolean (settings, ALARM_ENABLED),
+ ALARM_TIMEOUT_COLUMN, g_settings_get_int (settings, ALARM_TIMEOUT),
+ LOW_ALARM_COMMAND_COLUMN, g_settings_get_string (settings, LOW_ALARM_COMMAND),
+ HIGH_ALARM_COMMAND_COLUMN, g_settings_get_string (settings, HIGH_ALARM_COMMAND),
+ MULTIPLIER_COLUMN, g_settings_get_double (settings, MULTIPLIER),
+ OFFSET_COLUMN, g_settings_get_double (settings, OFFSET),
+ ICON_TYPE_COLUMN, g_settings_get_int (settings, ICON_TYPE),
+ ICON_PIXBUF_COLUMN, icon,
+ GRAPH_COLOR_COLUMN, g_settings_get_string (settings, GRAPH_COLOR),
+ -1);
+ g_free (settings_id);
+ }
+ else {
+ icon = sensors_applet_load_icon(icon_type);
+ gtk_tree_store_set(sensors_applet->sensors,
+ &sensors_iter,
+ PATH_COLUMN, path,
+ ID_COLUMN, id,
+ LABEL_COLUMN, label,
+ INTERFACE_COLUMN, interface,
+ SENSOR_TYPE_COLUMN, type,
+ ENABLE_COLUMN, enable,
+ VISIBLE_COLUMN, TRUE,
+ LOW_VALUE_COLUMN, low_value,
+ HIGH_VALUE_COLUMN, high_value,
+ ALARM_ENABLE_COLUMN, alarm_enable,
+ ALARM_TIMEOUT_COLUMN, alarm_timeout,
+ LOW_ALARM_COMMAND_COLUMN, low_alarm_command,
+ HIGH_ALARM_COMMAND_COLUMN, high_alarm_command,
+ MULTIPLIER_COLUMN, multiplier,
+ OFFSET_COLUMN, offset,
+ ICON_TYPE_COLUMN, icon_type,
+ ICON_PIXBUF_COLUMN, icon,
+ GRAPH_COLOR_COLUMN, graph_color,
+ -1);
+ }
+ g_object_unref (settings);
+ g_debug("added sensor %s to tree", path);
/* remove reference to icon as tree now has ref */
g_object_unref(icon);
@@ -1302,9 +1288,7 @@ void sensors_applet_graph_size_changed(SensorsApplet *sensors_applet) {
if (sensors_applet->active_sensors) {
- graph_size = mate_panel_applet_mateconf_get_int(sensors_applet->applet,
- GRAPH_SIZE,
- NULL);
+ graph_size = g_settings_get_int (sensors_applet->settings, GRAPH_SIZE);
if (mate_panel_applet_get_orient(sensors_applet->applet) ==
MATE_PANEL_APPLET_ORIENT_UP ||
mate_panel_applet_get_orient(sensors_applet->applet) ==
@@ -1375,6 +1359,9 @@ void sensors_applet_init(SensorsApplet *sensors_applet) {
g_assert(sensors_applet);
g_assert(sensors_applet->applet);
+ GtkActionGroup *action_group;
+ gchar *ui_path;
+
/* plugin functions are stored as name -> get_value_function pairs so
* use standard string functions on hash table */
sensors_applet->plugins = g_hash_table_new(g_str_hash,
@@ -1395,9 +1382,9 @@ void sensors_applet_init(SensorsApplet *sensors_applet) {
G_CALLBACK(destroy_cb),
sensors_applet);
-
- /* if not setup, write defaults to mateconf */
- sensors_applet_mateconf_setup(sensors_applet);
+ /* init gsettings */
+ sensors_applet->settings = mate_panel_applet_settings_new (sensors_applet->applet,
+ "org.mate.sensors-applet");
/* now do any setup needed manually */
sensors_applet_plugins_load_all(sensors_applet);
@@ -1413,12 +1400,16 @@ void sensors_applet_init(SensorsApplet *sensors_applet) {
}
/* only do menu and signal connections if sensors are found */
- mate_panel_applet_setup_menu_from_file(sensors_applet->applet,
- DATADIR,
- SENSORS_APPLET_MENU_FILE,
- NULL,
- sensors_applet_menu_verbs,
- sensors_applet);
+ action_group = gtk_action_group_new ("Sensors Applet Actions");
+ gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE);
+ gtk_action_group_add_actions (action_group,
+ sensors_applet_menu_actions,
+ G_N_ELEMENTS (sensors_applet_menu_actions),
+ sensors_applet);
+ ui_path = g_build_filename (UIDIR, SENSORS_APPLET_MENU_FILE, NULL);
+ mate_panel_applet_setup_menu_from_file (sensors_applet->applet, ui_path, action_group);
+ g_free (ui_path);
+ g_object_unref (action_group);
g_signal_connect(sensors_applet->applet, "style-set",
G_CALLBACK(style_set_cb),
@@ -1441,7 +1432,7 @@ void sensors_applet_init(SensorsApplet *sensors_applet) {
sensors_applet_update_active_sensors(sensors_applet);
sensors_applet_pack_display(sensors_applet);
- sensors_applet->timeout_id = g_timeout_add_seconds(mate_panel_applet_mateconf_get_int(sensors_applet->applet, TIMEOUT, NULL) / 1000,
+ sensors_applet->timeout_id = g_timeout_add_seconds(g_settings_get_int(sensors_applet->settings, TIMEOUT) / 1000,
(GSourceFunc)sensors_applet_update_active_sensors,
sensors_applet);
gtk_widget_show_all(GTK_WIDGET(sensors_applet->applet));
diff --git a/sensors-applet/sensors-applet.h b/sensors-applet/sensors-applet.h
index 62abfcb..0cd35ec 100644
--- a/sensors-applet/sensors-applet.h
+++ b/sensors-applet/sensors-applet.h
@@ -60,7 +60,7 @@ static const gchar * const stock_icons[NUM_ICONS] = {
/* enumeration used to identify columns in the GtkTreeStore data
- * structure and to access specific mateconf keys too.
+ * structure
*/
enum {
PATH_COLUMN = 0,
@@ -110,8 +110,6 @@ typedef enum {
LOW_ALARM = 0,
HIGH_ALARM,
SENSOR_INTERFACE_ERROR,
- MATECONF_READ_ERROR,
- MATECONF_WRITE_ERROR,
NUM_NOTIFS
} NotifType;
@@ -137,6 +135,9 @@ struct _SensorsApplet {
* list of labels and sensor values into this container */
GtkWidget *table;
GList *active_sensors;
+
+ GSettings *settings;
+
#ifdef HAVE_LIBMATENOTIFY
NotifyNotification *notification;
#endif // HAVE_LIBMATENOTIFY
@@ -169,8 +170,7 @@ void sensors_applet_reorder_sensors(SensorsApplet *sensors_applet);
gdouble sensors_applet_convert_temperature(gdouble value,
TemperatureScale old,
TemperatureScale new);
-void sensors_applet_notify(SensorsApplet *sensors_applet,
- NotifType notif_type);
+
void sensors_applet_notify_end(ActiveSensor *active_sensor, NotifType notif_type);
void sensors_applet_notify_end_all(SensorsApplet *sensors_applet);
void sensors_applet_notify_active_sensor(ActiveSensor *active_sensor, NotifType notif_type);