community/sensors-applet to 3.0.0+13+g0728426-4

This commit is contained in:
Kevin Mihelich 2020-10-22 12:57:35 +00:00
parent 2755363c10
commit 087ef5e029
3 changed files with 750 additions and 3 deletions

View file

@ -5,7 +5,7 @@
pkgname=sensors-applet
pkgver=3.0.0+13+g0728426
pkgrel=3
pkgrel=4
pkgdesc="Applet for GNOME Panel to display readings from hardware sensors, including CPU temperature, fan speeds and voltage readings"
arch=('x86_64')
url="http://sensors-applet.sourceforge.net/"
@ -14,8 +14,12 @@ depends=('gnome-panel' 'libatasmart' 'lm_sensors')
makedepends=('git' 'gnome-common' 'intltool' 'yelp-tools')
optdepends=('hddtemp: get HDD temperatures')
_commit=07284262768e3a7066da09845370d78526be6bc1 # master
source=("$pkgname::git+https://git.code.sf.net/p/sensors-applet/code#commit=$_commit")
sha256sums=('SKIP')
source=("$pkgname::git+https://git.code.sf.net/p/sensors-applet/code#commit=$_commit"
fix-crash-destroying-active-sensor.patch
port-to-libgnome-panel.patch)
sha256sums=('SKIP'
'9c4cc2accf326c44cb625f5db0b82a782351cdf8829f1a4067a30f287b6b7156'
'cb0e35e0d6e6568f14836da7e5b78154bd4d9a4127f0f6dd476e4f7c9d62339d')
pkgver() {
cd $pkgname
@ -24,6 +28,8 @@ pkgver() {
prepare() {
cd $pkgname
patch -Np1 -i ../port-to-libgnome-panel.patch
patch -Np1 -i ../fix-crash-destroying-active-sensor.patch
NOCONFIGURE=1 ./autogen.sh
}

View file

@ -0,0 +1,56 @@
From: Alberts Muktupāvels <alberts.muktupavels@gmail.com>
Date: Sat, 28 Mar 2020 19:38:07 +0200
Subject: fix crash destroying active sensor
---
sensors-applet/active-sensor.c | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/sensors-applet/active-sensor.c b/sensors-applet/active-sensor.c
index 725e050..9fe4718 100644
--- a/sensors-applet/active-sensor.c
+++ b/sensors-applet/active-sensor.c
@@ -347,17 +347,17 @@ static void active_sensor_update_graph(ActiveSensor *as) {
void active_sensor_destroy(ActiveSensor *active_sensor) {
g_debug("-- destroying active sensor label...");
- gtk_widget_destroy(active_sensor->label);
+ g_object_unref(active_sensor->label);
g_debug("-- destroying active sensor icon..");
- gtk_widget_destroy(active_sensor->icon);
+ g_object_unref(active_sensor->icon);
g_debug("-- destroying active sensor value...");
- gtk_widget_destroy(active_sensor->value);
+ g_object_unref(active_sensor->value);
g_debug("-- destroying active sensor graph and frame...");
- gtk_widget_destroy(active_sensor->graph);
- gtk_widget_destroy(active_sensor->graph_frame);
+ g_object_unref(active_sensor->graph);
+ g_object_unref(active_sensor->graph_frame);
g_debug("-- destroying active sensor values...");
g_free(active_sensor->sensor_values);
@@ -450,11 +450,20 @@ ActiveSensor *active_sensor_new(SensorsApplet *sensors_applet,
}
active_sensor->label = gtk_label_new("");
+ g_object_ref_sink (active_sensor->label);
+
active_sensor->value = gtk_label_new("");
+ g_object_ref_sink (active_sensor->value);
+
active_sensor->icon = gtk_image_new();
+ g_object_ref_sink (active_sensor->icon);
active_sensor->graph = gtk_drawing_area_new();
+ g_object_ref_sink (active_sensor->graph);
+
active_sensor->graph_frame = gtk_frame_new(NULL);
+ g_object_ref_sink (active_sensor->graph_frame);
+
gtk_frame_set_shadow_type(GTK_FRAME(active_sensor->graph_frame),
GTK_SHADOW_IN);
gtk_container_add(GTK_CONTAINER(active_sensor->graph_frame),

View file

@ -0,0 +1,685 @@
From: Alberts Muktupāvels <alberts.muktupavels@gmail.com>
Date: Thu, 26 Mar 2020 18:33:32 +0200
Subject: port to libgnome-panel
---
Makefile.am | 20 ---
SensorsApplet.xml | 32 ++--
configure.ac | 10 +-
org.gnome.applets.SensorsApplet.panel-applet.in.in | 17 ---
po/POTFILES.in | 1 +
po/POTFILES.skip | 1 -
sensors-applet/Makefile.am | 8 +-
sensors-applet/active-sensor.c | 9 +-
sensors-applet/main.c | 45 ------
sensors-applet/sensors-applet.c | 164 ++++++++++-----------
sensors-applet/sensors-applet.h | 11 +-
sensors-applet/sensors-module.c | 62 ++++++++
12 files changed, 179 insertions(+), 201 deletions(-)
delete mode 100644 org.gnome.applets.SensorsApplet.panel-applet.in.in
delete mode 100644 sensors-applet/main.c
create mode 100644 sensors-applet/sensors-module.c
diff --git a/Makefile.am b/Makefile.am
index 2ff4740..fa8686b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,30 +2,10 @@ ACLOCAL_AMFLAGS=-I m4
SUBDIRS = sensors-applet lib plugins pixmaps po help
-appletdir = $(LIBPANEL_APPLET_DIR)
-applet_in_files = org.gnome.applets.SensorsApplet.panel-applet.in
-applet_DATA = $(applet_in_files:.panel-applet.in=.panel-applet)
-
-APPLET_LOCATION=$(pkglibdir)/$(LIBPANEL_APPLET_API_VERSION)/libsensors-applet.so
-
-$(applet_in_files): $(applet_in_files).in Makefile
- $(AM_V_GEN)sed \
- -e "s|\@APPLET_LOCATION\@|$(APPLET_LOCATION)|" \
- -e "s|\@VERSION\@|$(PACKAGE_VERSION)|" \
- $< > $@
-
-@INTLTOOL_SERVER_RULE@
-
uidir = $(pkgdatadir)/ui
ui_DATA = SensorsApplet.xml
-%.panel-applet: %.panel-applet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< $@ -d -u -c $(top_builddir)/po/.intltool-merge-cache
-
-CLEANFILES = $(applet_DATA) $(applet_DATA).in $(schemas_DATA)
-
EXTRA_DIST = $(ui_DATA) \
- $(applet_in_files:.panel-applet.in=.panel-applet.in.in) \
- $(service_in_files) \
intltool-merge.in intltool-extract.in intltool-update.in
DISTCLEANFILES = intltool-extract \
diff --git a/SensorsApplet.xml b/SensorsApplet.xml
index 41e1d1f..d90309c 100644
--- a/SensorsApplet.xml
+++ b/SensorsApplet.xml
@@ -1,14 +1,18 @@
-<section>
- <item>
- <attribute name="label" translatable="yes">_Preferences</attribute>
- <attribute name="action">sensorsapplet.preferences</attribute>
- </item>
- <item>
- <attribute name="label" translatable="yes">_Help</attribute>
- <attribute name="action">sensorsapplet.help</attribute>
- </item>
- <item>
- <attribute name="label" translatable="yes">_About</attribute>
- <attribute name="action">sensorsapplet.about</attribute>
- </item>
-</section>
+<interface>
+ <menu id="sensorsapplet-menu">
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Preferences</attribute>
+ <attribute name="action">sensorsapplet.preferences</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Help</attribute>
+ <attribute name="action">sensorsapplet.help</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_About</attribute>
+ <attribute name="action">sensorsapplet.about</attribute>
+ </item>
+ </section>
+ </menu>
+</interface>
diff --git a/configure.ac b/configure.ac
index 332faf1..d89a029 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
AC_INIT([GNOME Sensors Applet], [3.0.0], [murray.alex@gmail.com],
[sensors-applet])
-AC_CONFIG_SRCDIR([sensors-applet/main.c])
+AC_CONFIG_SRCDIR([sensors-applet/sensors-module.c])
AM_CONFIG_HEADER([sensors-applet/config.h])
AC_CONFIG_MACRO_DIRS([m4])
AM_INIT_AUTOMAKE([ -Wno-portability])
@@ -52,7 +52,7 @@ AC_CHECK_HEADERS(
GLIB_REQUIRED=2.22.0
GTK_REQUIRED=3.4.0
-LIBPANEL_REQUIRED=3.0.0
+LIBGNOME_PANEL_REQUIRED=3.36.0
LIBNOTIFY_REQUIRED=0.3.0
LIBCAIRO_REQUIRED=1.0.4
LIBDBUSGLIB_REQUIRED=0.80
@@ -66,12 +66,12 @@ PKG_CHECK_MODULES(GTK, gtk+-3.0 >= $GTK_REQUIRED)
AC_SUBST(GTK_CFLAGS)
AC_SUBST(GTK_LIBS)
-PKG_CHECK_MODULES(GNOME, libpanel-applet >= $LIBPANEL_REQUIRED)
+PKG_CHECK_MODULES(GNOME, libgnome-panel >= $LIBGNOME_PANEL_REQUIRED)
AC_SUBST(GNOME_CFLAGS)
AC_SUBST(GNOME_LIBS)
-LIBPANEL_APPLET_DIR=`$PKG_CONFIG --variable=libpanel_applet_dir libpanel-applet`
-AC_SUBST(LIBPANEL_APPLET_DIR)
+LIBGNOME_PANEL_MODULES_DIR=`$PKG_CONFIG --variable=modulesdir libgnome-panel`
+AC_SUBST([LIBGNOME_PANEL_MODULES_DIR], [$LIBGNOME_PANEL_MODULES_DIR])
PKG_CHECK_MODULES(CAIRO, cairo >= $LIBCAIRO_REQUIRED)
AC_SUBST(CAIRO_CFLAGS)
diff --git a/org.gnome.applets.SensorsApplet.panel-applet.in.in b/org.gnome.applets.SensorsApplet.panel-applet.in.in
deleted file mode 100644
index 0c101ae..0000000
--- a/org.gnome.applets.SensorsApplet.panel-applet.in.in
+++ /dev/null
@@ -1,17 +0,0 @@
-[Applet Factory]
-Id=SensorsAppletFactory
-Location=@APPLET_LOCATION@
-InProcess=true
-_Name=Sensors Applet Factory
-_Description=Sensors Applet Factory
-
-[SensorsApplet]
-_Name=Hardware Sensors Monitor
-_Description=Displays temperature, fan speed and voltage sensor readings
-Icon=sensors-applet
-BonoboId=OAFIID:GNOME_SensorsApplet
-X-GNOME-Bugzilla-Bugzilla=GNOME
-X-GNOME-Bugzilla-Product=gnome-applets
-X-GNOME-Bugzilla-Component=geyes
-X-GNOME-Bugzilla-Version=@VERSION@
-X-GNOME-Bugzilla-OtherBinaries=sensors-appet
diff --git a/po/POTFILES.in b/po/POTFILES.in
index a0843b0..84a930e 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -17,4 +17,5 @@ sensors-applet/about-dialog.c
sensors-applet/sensor-config-dialog.c
sensors-applet/sensors-applet.c
sensors-applet/sensors-applet-conf.c
+sensors-applet/sensors-module.c
[type: gettext/glade]SensorsApplet.xml
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index f23af73..e69de29 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -1 +0,0 @@
-SensorsApplet.server.in
diff --git a/sensors-applet/Makefile.am b/sensors-applet/Makefile.am
index c5712ee..ca52205 100644
--- a/sensors-applet/Makefile.am
+++ b/sensors-applet/Makefile.am
@@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
-sensors_applet_libdir=${pkglibdir}/${LIBPANEL_APPLET_API_VERSION}
+sensors_applet_libdir=$(LIBGNOME_PANEL_MODULES_DIR)
sensors_applet_lib_LTLIBRARIES=libsensors-applet.la
libsensors_applet_la_CPPFLAGS = \
@@ -29,7 +29,7 @@ else
libnotify_SRC =
endif
-libsensors_applet_la_SOURCES = main.c \
+libsensors_applet_la_SOURCES = \
about-dialog.c \
about-dialog.h \
active-sensor.c \
@@ -45,6 +45,7 @@ libsensors_applet_la_SOURCES = main.c \
sensors-applet-plugins.h \
sensors-applet-conf.c \
sensors-applet-conf.h \
+ sensors-module.c \
$(libnotify_SRC)
libsensors_applet_la_LIBADD = \
@@ -54,6 +55,9 @@ libsensors_applet_la_LIBADD = \
$(CAIRO_LIBS) \
$(LIBNOTIFY_LIBS) -ldl
+libsensors_applet_la_LDFLAGS = \
+ -module -avoid-version
+
# install headers for plugins to use
INST_H_FILES = sensors-applet-plugin.h sensors-applet-sensor.h
diff --git a/sensors-applet/active-sensor.c b/sensors-applet/active-sensor.c
index 8afb224..725e050 100644
--- a/sensors-applet/active-sensor.c
+++ b/sensors-applet/active-sensor.c
@@ -429,7 +429,7 @@ void active_sensor_update_graph_dimensions(ActiveSensor *as,
ActiveSensor *active_sensor_new(SensorsApplet *sensors_applet,
GtkTreeRowReference *sensor_row) {
ActiveSensor *active_sensor;
- PanelAppletOrient orient;
+ GtkOrientation orient;
gint graph_size;
gboolean horizontal;
@@ -440,7 +440,7 @@ ActiveSensor *active_sensor_new(SensorsApplet *sensors_applet,
active_sensor = g_new0(ActiveSensor, 1);
active_sensor->sensors_applet = sensors_applet;
- active_sensor->sensors_applet->settings = panel_applet_settings_new (sensors_applet->applet, SENSORS_APPLET_SCHEMA);
+ active_sensor->sensors_applet->settings = gp_applet_settings_new (GP_APPLET(sensors_applet), SENSORS_APPLET_SCHEMA);
active_sensor->sensor_row = sensor_row;
@@ -463,12 +463,11 @@ ActiveSensor *active_sensor_new(SensorsApplet *sensors_applet,
GDK_ALL_EVENTS_MASK);
/* need to set size according to orientation */
- orient = panel_applet_get_orient(active_sensor->sensors_applet->applet);
+ orient = gp_applet_get_orientation(GP_APPLET(active_sensor->sensors_applet));
graph_size = g_settings_get_double(active_sensor->sensors_applet->settings,
GRAPH_SIZE);
- horizontal = ((orient == PANEL_APPLET_ORIENT_UP) ||
- (orient == PANEL_APPLET_ORIENT_DOWN));
+ horizontal = (orient == GTK_ORIENTATION_HORIZONTAL);
active_sensor_set_graph_dimensions(active_sensor,
(horizontal ? graph_size : sensors_applet->size),
diff --git a/sensors-applet/main.c b/sensors-applet/main.c
deleted file mode 100644
index b898fd7..0000000
--- a/sensors-applet/main.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2005-2009 Alex Murray <murray.alex@gmail.com>
- *
- * 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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <panel-applet.h>
-#include <string.h>
-#include "sensors-applet.h"
-
-static gboolean sensors_applet_fill(PanelApplet *applet,
- const gchar *iid,
- gpointer data) {
- SensorsApplet *sensors_applet;
- gboolean retval = FALSE;
-
- if (strcmp(iid, "SensorsApplet") == 0) {
- sensors_applet = g_new0(SensorsApplet, 1);
- sensors_applet->applet = applet;
- sensors_applet_init(sensors_applet);
- retval = TRUE;
- }
- return retval;
-}
-
-PANEL_APPLET_IN_PROCESS_FACTORY ("SensorsAppletFactory",
- PANEL_TYPE_APPLET,
- sensors_applet_fill,
- NULL);
diff --git a/sensors-applet/sensors-applet.c b/sensors-applet/sensors-applet.c
index e96a4ef..d197a9c 100644
--- a/sensors-applet/sensors-applet.c
+++ b/sensors-applet/sensors-applet.c
@@ -51,6 +51,8 @@
#define COLUMN_SPACING 2
#define ROW_SPACING 1
+G_DEFINE_TYPE (SensorsApplet, sensors_applet, GP_TYPE_APPLET)
+
/* callbacks for panel menu */
static void prefs_cb(GSimpleAction *action,
GVariant *parameter,
@@ -90,56 +92,23 @@ static void help_cb(GSimpleAction *action,
}
}
-static void destroy_cb(GtkWidget *widget, gpointer data) {
- SensorsApplet *sensors_applet;
- sensors_applet = (SensorsApplet *)data;
-
- /* destory dialogs, remove timeout and clear sensors tree and finally
- * the applet */
- if (sensors_applet->prefs_dialog != NULL) {
- // destroy's dialog too
- prefs_dialog_close(sensors_applet);
- }
-
- if (sensors_applet->timeout_id) {
- g_source_remove(sensors_applet->timeout_id);
- }
-
- // destroy all active sensors
- g_list_foreach(sensors_applet->active_sensors,
- (GFunc)active_sensor_destroy,
- NULL);
-
- if (sensors_applet->sensors != NULL) {
- gtk_tree_store_clear(sensors_applet->sensors);
- }
-
- gtk_widget_destroy(GTK_WIDGET(sensors_applet->applet));
-
- g_free(sensors_applet);
- return;
-}
-
-static void change_orient_cb (PanelApplet *applet,
- PanelAppletOrient orient,
- gpointer data) {
- SensorsApplet *sensors_applet;
- sensors_applet = (SensorsApplet *)data;
-
+static void placement_changed_cb (GpApplet *applet,
+ GtkOrientation orientation,
+ GtkPositionType position,
+ SensorsApplet *sensors_applet) {
sensors_applet_display_layout_changed(sensors_applet);
}
-static void size_allocate_cb(PanelApplet *applet,
+static void size_allocate_cb(GtkWidget *widget,
GtkAllocation *allocation,
gpointer data) {
SensorsApplet *sensors_applet;
- PanelAppletOrient orient;
+ GtkOrientation orient;
sensors_applet = (SensorsApplet *)data;
- orient = panel_applet_get_orient(sensors_applet->applet);
+ orient = gp_applet_get_orientation(GP_APPLET(sensors_applet));
- if ((orient == PANEL_APPLET_ORIENT_LEFT) ||
- (orient == PANEL_APPLET_ORIENT_RIGHT)) {
+ if (orient == GTK_ORIENTATION_VERTICAL) {
if (sensors_applet->size == allocation->width)
return;
sensors_applet->size = allocation->width;
@@ -214,7 +183,8 @@ static void style_set_cb(GtkWidget *widget,
static const GActionEntry sensors_applet_menu_actions[] = {
{ "preferences", prefs_cb, NULL, NULL, NULL },
{ "help", help_cb, NULL, NULL, NULL },
- { "about", about_cb, NULL, NULL, NULL }
+ { "about", about_cb, NULL, NULL, NULL },
+ { NULL }
};
#ifdef HAVE_LIBNOTIFY
@@ -523,7 +493,7 @@ static void sensors_applet_pack_display(SensorsApplet *sensors_applet) {
gtk_grid_set_column_spacing(GTK_GRID(sensors_applet->table), COLUMN_SPACING);
gtk_grid_set_row_spacing(GTK_GRID(sensors_applet->table), ROW_SPACING);
/* add table to applet */
- gtk_container_add(GTK_CONTAINER(sensors_applet->applet), sensors_applet->table);
+ gtk_container_add(GTK_CONTAINER(sensors_applet), sensors_applet->table);
} else {
/* destroy existing widgets - could be an
@@ -545,7 +515,7 @@ static void sensors_applet_pack_display(SensorsApplet *sensors_applet) {
"vexpand", TRUE,
"hexpand", TRUE,
NULL);
- gtk_widget_show_all(GTK_WIDGET(sensors_applet->applet));
+ gtk_widget_show_all(GTK_WIDGET(sensors_applet));
return;
}
@@ -558,8 +528,7 @@ static void sensors_applet_pack_display(SensorsApplet *sensors_applet) {
LAYOUT_MODE);
- horizontal = (((panel_applet_get_orient(sensors_applet->applet) == PANEL_APPLET_ORIENT_UP) ||
- (panel_applet_get_orient(sensors_applet->applet) == PANEL_APPLET_ORIENT_DOWN)));
+ horizontal = (gp_applet_get_orientation(GP_APPLET (sensors_applet)) == GTK_ORIENTATION_HORIZONTAL);
/* figure out num rows / cols by how high / wide sensors
* labels / icons are and how much size we have to put them
@@ -736,7 +705,7 @@ static void sensors_applet_pack_display(SensorsApplet *sensors_applet) {
sensors_applet->table = gtk_grid_new();
gtk_grid_set_column_spacing(GTK_GRID(sensors_applet->table), COLUMN_SPACING);
gtk_grid_set_row_spacing(GTK_GRID(sensors_applet->table), ROW_SPACING);
- gtk_container_add(GTK_CONTAINER(sensors_applet->applet), sensors_applet->table);
+ gtk_container_add(GTK_CONTAINER(sensors_applet), sensors_applet->table);
} else {
/* remove all children if table already exists so we can start
* again */
@@ -914,7 +883,7 @@ static void sensors_applet_pack_display(SensorsApplet *sensors_applet) {
old_table_children);
g_list_free(old_table_children);
}
- gtk_widget_show_all(GTK_WIDGET(sensors_applet->applet));
+ gtk_widget_show_all(GTK_WIDGET(sensors_applet));
}
@@ -1294,10 +1263,8 @@ void sensors_applet_graph_size_changed(SensorsApplet *sensors_applet) {
graph_size = g_settings_get_int(sensors_applet->settings,
GRAPH_SIZE);
- if (panel_applet_get_orient(sensors_applet->applet) ==
- PANEL_APPLET_ORIENT_UP ||
- panel_applet_get_orient(sensors_applet->applet) ==
- PANEL_APPLET_ORIENT_DOWN) {
+ if (gp_applet_get_orientation(GP_APPLET (sensors_applet)) ==
+ GTK_ORIENTATION_HORIZONTAL) {
/* is horizontal so set graph_size as width */
dimensions[0] = graph_size;
dimensions[1] = sensors_applet->size;
@@ -1359,15 +1326,14 @@ gdouble sensors_applet_convert_temperature(gdouble value,
return value;
}
-void sensors_applet_init(SensorsApplet *sensors_applet) {
-
- GSimpleActionGroup *action_group;
+static void
+sensors_applet_setup (SensorsApplet *sensors_applet)
+{
gchar *ui_path;
g_assert(sensors_applet);
- g_assert(sensors_applet->applet);
- sensors_applet->settings = panel_applet_settings_new (sensors_applet->applet, SENSORS_APPLET_SCHEMA);
+ sensors_applet->settings = gp_applet_settings_new (GP_APPLET (sensors_applet), SENSORS_APPLET_SCHEMA);
/* plugin functions are stored as name -> get_value_function pairs so
* use standard string functions on hash table */
@@ -1379,12 +1345,7 @@ void sensors_applet_init(SensorsApplet *sensors_applet) {
/* initialise size */
sensors_applet->size = DEFAULT_APPLET_SIZE;
- panel_applet_set_flags(sensors_applet->applet,
- PANEL_APPLET_EXPAND_MINOR);
-
- g_signal_connect(sensors_applet->applet, "destroy",
- G_CALLBACK(destroy_cb), sensors_applet);
-
+ gp_applet_set_flags (GP_APPLET (sensors_applet), GP_APPLET_FLAGS_EXPAND_MINOR);
/* if not setup, write defaults to configuration backend */
sensors_applet_conf_setup(sensors_applet);
@@ -1397,38 +1358,23 @@ void sensors_applet_init(SensorsApplet *sensors_applet) {
if (NULL == sensors_applet->sensors) {
GtkWidget *label;
label = gtk_label_new(_("No sensors found!"));
- gtk_container_add(GTK_CONTAINER(sensors_applet->applet), label);
- gtk_widget_show_all(GTK_WIDGET(sensors_applet->applet));
+ gtk_container_add(GTK_CONTAINER(sensors_applet), label);
+ gtk_widget_show_all(GTK_WIDGET(sensors_applet));
return;
}
/* only do menu and signal connections if sensors are found */
- action_group = g_simple_action_group_new ();
- g_action_map_add_action_entries (G_ACTION_MAP (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);
- panel_applet_setup_menu_from_file (sensors_applet->applet, ui_path, action_group,
- GETTEXT_PACKAGE);
+ gp_applet_setup_menu_from_file (GP_APPLET (sensors_applet), ui_path, sensors_applet_menu_actions);
g_free (ui_path);
- gtk_widget_insert_action_group (GTK_WIDGET (sensors_applet->applet), "sensorsapplet",
- G_ACTION_GROUP (action_group));
-
-// action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "dialog");
- // g_object_bind_property (applet, "locked-down", action, "enabled",
-// + G_BINDING_DEFAULT|G_BINDING_INVERT_BOOLEAN|G_BINDING_SYNC_CREATE);
-
- g_object_unref (action_group);
-
- g_signal_connect(sensors_applet->applet, "style-set",
+ g_signal_connect(sensors_applet, "style-set",
G_CALLBACK(style_set_cb), sensors_applet);
- g_signal_connect(G_OBJECT(sensors_applet->applet), "change_orient",
- G_CALLBACK(change_orient_cb), sensors_applet);
+ g_signal_connect(G_OBJECT(sensors_applet), "placement-changed",
+ G_CALLBACK(placement_changed_cb), sensors_applet);
- g_signal_connect(G_OBJECT(sensors_applet->applet), "size_allocate",
+ g_signal_connect(G_OBJECT(sensors_applet), "size_allocate",
G_CALLBACK(size_allocate_cb), sensors_applet);
sensors_applet_update_active_sensors(sensors_applet);
@@ -1438,6 +1384,52 @@ void sensors_applet_init(SensorsApplet *sensors_applet) {
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));
+ gtk_widget_show_all(GTK_WIDGET(sensors_applet));
+}
+
+static void
+sensors_applet_constructed (GObject *object)
+{
+ G_OBJECT_CLASS (sensors_applet_parent_class)->constructed (object);
+ sensors_applet_setup (SENSORS_APPLET (object));
}
+static void
+sensors_applet_finalize (GObject *object)
+{
+ SensorsApplet *self;
+
+ self = SENSORS_APPLET (object);
+
+ /* destory dialogs, remove timeout and clear sensors tree */
+
+ if (self->prefs_dialog != NULL)
+ prefs_dialog_close (self);
+
+ if (self->timeout_id)
+ g_source_remove (self->timeout_id);
+
+ // destroy all active sensors
+ g_list_foreach (self->active_sensors, (GFunc) active_sensor_destroy, NULL);
+
+ if (self->sensors != NULL)
+ gtk_tree_store_clear (self->sensors);
+
+ G_OBJECT_CLASS (sensors_applet_parent_class)->finalize (object);
+}
+
+static void
+sensors_applet_class_init (SensorsAppletClass *self_class)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS (self_class);
+
+ object_class->constructed = sensors_applet_constructed;
+ object_class->finalize = sensors_applet_finalize;
+}
+
+static void
+sensors_applet_init (SensorsApplet *self)
+{
+}
diff --git a/sensors-applet/sensors-applet.h b/sensors-applet/sensors-applet.h
index e740a42..2c218f4 100644
--- a/sensors-applet/sensors-applet.h
+++ b/sensors-applet/sensors-applet.h
@@ -20,7 +20,7 @@
#define SENSORS_APPLET_H
#include <gtk/gtk.h>
-#include <panel-applet.h>
+#include <libgnome-panel/gp-applet.h>
#include "sensors-applet-sensor.h"
#ifdef HAVE_CONFIG_H
@@ -118,9 +118,11 @@ typedef enum {
/* only always two type of alarms - may have more notif types */
#define NUM_ALARMS 2
+#define SENSORS_TYPE_APPLET (sensors_applet_get_type ())
+G_DECLARE_FINAL_TYPE (SensorsApplet, sensors_applet, SENSORS, APPLET, GpApplet)
+
struct _SensorsApplet {
- /* the actual applet for this instance */
- PanelApplet* applet;
+ GpApplet parent;
gint size;
GtkTreeStore *sensors;
@@ -143,10 +145,7 @@ struct _SensorsApplet {
#endif // HAVE_LIBNOTIFY
};
-
-
/* non-static function prototypes */
-void sensors_applet_init(SensorsApplet *sensors_applet);
void sensors_applet_sensor_enabled(SensorsApplet *sensors_applet,
GtkTreePath *path);
void sensors_applet_sensor_disabled(SensorsApplet *sensors_applet,
diff --git a/sensors-applet/sensors-module.c b/sensors-applet/sensors-module.c
new file mode 100644
index 0000000..ab6283d
--- /dev/null
+++ b/sensors-applet/sensors-module.c
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2005-2009 Alex Murray <murray.alex@gmail.com>
+ *
+ * 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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "config.h"
+
+#include "config.h"
+
+#include <glib/gi18n-lib.h>
+#include <libgnome-panel/gp-module.h>
+
+#include "sensors-applet.h"
+
+static GpAppletInfo *
+get_applet_info (const gchar *id)
+{
+ return gp_applet_info_new (sensors_applet_get_type,
+ _("Hardware Sensors Monitor"),
+ _("Displays temperature, fan speed and voltage sensor readings"),
+ "sensors-applet");
+}
+
+static const gchar *
+get_applet_id_from_iid (const gchar *iid)
+{
+ if (g_strcmp0 (iid, "SensorsAppletFactory::SensorsApplet") == 0)
+ return "sensorsapplet";
+
+ return NULL;
+}
+
+void
+gp_module_load (GpModule *module)
+{
+ bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ gp_module_set_gettext_domain (module, GETTEXT_PACKAGE);
+
+ gp_module_set_abi_version (module, GP_MODULE_ABI_VERSION);
+
+ gp_module_set_id (module, "net.sourceforge.sensors-applet");
+ gp_module_set_version (module, PACKAGE_VERSION);
+
+ gp_module_set_applet_ids (module, "sensorsapplet", NULL);
+
+ gp_module_set_get_applet_info (module, get_applet_info);
+ gp_module_set_compatibility (module, get_applet_id_from_iid);
+}