/*
* xfce4-hdaps, an XFCE4 panel plugin for the HDAPS system.
*
- * Copyright Michael Orlitzky
+ * Copyright (C) 2019 Michael Orlitzky
*
- * http://michael.orlitzky.com/
+ * http://michael.orlitzky.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 3 of the License, or
- * (at your option) any later version.
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 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.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details:
+ *
+ * https://www.gnu.org/licenses/agpl-3.0.html
*
- * http://www.fsf.org/licensing/licenses/gpl.html
*/
#ifdef HAVE_CONFIG_H
void hdaps_save(XfcePanelPlugin *plugin, HdapsPlugin *hdaps) {
-
+
XfceRc *rc;
gchar *file;
DBG("Failed to open the configuration file. Bailing.");
return;
}
-
-
+
+
/* Write any user-configured values to the resource file. */
if (hdaps->device_name) {
xfce_rc_write_entry(rc, "device_name", hdaps->device_name);
}
-
+
xfce_rc_write_int_entry(rc, "poll_frequency", hdaps->poll_frequency);
-
+
/* close the rc file */
xfce_rc_close(rc);
}
if (hdaps->icon) {
gtk_widget_destroy(hdaps->icon);
}
-
+
if (icon) {
hdaps->icon = gtk_image_new_from_pixbuf(icon);
g_object_unref(G_OBJECT(icon));
gtk_box_pack_start(GTK_BOX(hdaps->hvbox), GTK_WIDGET(hdaps->icon), FALSE, FALSE, 0);
gtk_widget_show(hdaps->icon);
-
+
return;
}
void hdaps_set_tooltip(HdapsPlugin *hdaps, int status) {
-
if (status == HDAPS_ERROR) {
- gtk_tooltips_set_tip(hdaps->tooltip, hdaps->eventbox, "HDAPS Error", NULL);
+ gtk_widget_set_tooltip_text(GTK_WIDGET(hdaps->eventbox), "HDAPS Error");
}
else if (status == HDAPS_OFF) {
- gtk_tooltips_set_tip(hdaps->tooltip, hdaps->eventbox, "HDAPS Off", NULL);
+ gtk_widget_set_tooltip_text(GTK_WIDGET(hdaps->eventbox), "HDAPS Off");
}
else {
- gtk_tooltips_set_tip(hdaps->tooltip, hdaps->eventbox, "HDAPS On", NULL);
+ gtk_widget_set_tooltip_text(GTK_WIDGET(hdaps->eventbox), "HDAPS On");
}
}
static void hdaps_read(HdapsPlugin *hdaps) {
-
+
XfceRc *rc;
gchar *file;
const gchar *saved_device_name;
DBG("Retaining default settings.");
return;
}
-
+
/* Open the config file read-only. */
rc = xfce_rc_simple_open(file, TRUE);
DBG("Retaining default settings.");
return;
}
-
+
/* Read the settings, one at a time. */
-
+
/* We use saved_device_name here because we need
to dupe the string after we read it in from the
config file. */
hdaps->poll_frequency = xfce_rc_read_int_entry(rc,
"poll_frequency",
DEFAULT_POLL_FREQUENCY);
-
+
/* And close the config file. */
xfce_rc_close(rc);
}
/* The HdapsPlugin gets a copy of the XfcePanelPlugin. */
hdaps->plugin = plugin;
-
+
/* Set default values right before reading in the user's settings.
This way, hdaps_read() doesn't have to set defaults on error
conditions. */
hdaps_set_defaults(hdaps);
-
+
/* Read any user settings into the HdapsPlugin. */
hdaps_read(hdaps);
/* Make the event box transparent. In newer versions of xfce4-panel
users can make the panel transparent, so we don't want to stick a
big opaque box on it. */
- gtk_event_box_set_visible_window(hdaps->eventbox, FALSE);
+ gtk_event_box_set_visible_window(GTK_EVENT_BOX(hdaps->eventbox), FALSE);
/* Set up the hvbox for the widget, which supports
both horizontal and vertical (hv) orientations. */
- hdaps->hvbox = xfce_hvbox_new(orientation, FALSE, 2);
+ hdaps->hvbox = gtk_box_new(orientation, 2);
gtk_widget_show(hdaps->hvbox);
gtk_container_add(GTK_CONTAINER(hdaps->eventbox), hdaps->hvbox);
so it's important that they start out n*sync. */
hdaps->previous_status = HDAPS_OFF;
hdaps_set_icon(hdaps, HDAPS_OFF);
-
- /* Create the tooltip widget, and set its initial value.
- * The first couple of lines are stolen from the battery
- * status plugin. I make no claim as to their correctness.
- */
- hdaps->tooltip = gtk_tooltips_new();
- g_object_ref(G_OBJECT(hdaps->tooltip));
- gtk_object_sink(GTK_OBJECT(hdaps->tooltip));
hdaps_set_tooltip(hdaps, HDAPS_OFF);
-
+
return hdaps;
}
static void hdaps_free(XfcePanelPlugin *plugin,
HdapsPlugin *hdaps) {
-
+
GtkWidget *dialog;
/* Destroy the dialog if it's still open. */
g_free(hdaps->device_name);
}
- /* Goodbye, tooltips. */
- gtk_tooltips_set_tip(hdaps->tooltip, hdaps->eventbox, NULL, NULL);
- g_object_unref(G_OBJECT(hdaps->tooltip));
-
/* ...and finally free the plugin structure. */
panel_slice_free(HdapsPlugin, hdaps);
}
static void hdaps_orientation_changed(XfcePanelPlugin *plugin,
GtkOrientation orientation,
HdapsPlugin *hdaps) {
-
+
/* Change the plugin's orientation. Basically magic to me. */
- xfce_hvbox_set_orientation(XFCE_HVBOX(hdaps->hvbox), orientation);
+ gtk_orientable_set_orientation(GTK_ORIENTABLE(hdaps->hvbox), orientation);
}
static gboolean hdaps_size_changed(XfcePanelPlugin *plugin,
gint size,
HdapsPlugin *hdaps) {
-
+
GtkOrientation orientation;
/* Get the current orientation of the plugin. */
gtk_widget_set_size_request(GTK_WIDGET(plugin), size, -1);
}
+ /* This fixes an issue where the initial icon size is too small. */
+ hdaps_set_icon(hdaps, hdaps->previous_status);
+
/* We handled the change, so we're supposed to return TRUE. */
return TRUE;
}
static gboolean hdaps_update_status(HdapsPlugin *hdaps) {
/* This checks the status of HDAPS and updates the
- widget accordingly. */
+ widget accordingly. */
/* This just gets the status. */
int status = parse_int_from_file(hdaps->sysfs_file);
if (status > 0) {
status = HDAPS_ON;
}
-
+
if (status != hdaps->previous_status) {
/* And we only update the icon if we need to. */
hdaps_set_icon(hdaps, status);
hdaps_set_tooltip(hdaps, status);
hdaps->previous_status = status;
}
-
+
return TRUE;
}
/* Show the "about" right-click menu item, and
connect its event handler. */
- xfce_panel_plugin_menu_show_about(plugin);
+ xfce_panel_plugin_menu_show_about(plugin);
g_signal_connect(G_OBJECT(plugin), "about",
G_CALLBACK(hdaps_about), hdaps);