[Goodies-commits] r1938 - in xfce4-battery-plugin/trunk: panel-plugin po

Nick Schermer nick at xfce.org
Sat Sep 2 18:10:55 CEST 2006


Author: nick
Date: 2006-09-02 16:10:54 +0000 (Sat, 02 Sep 2006)
New Revision: 1938

Added:
   xfce4-battery-plugin/trunk/po/LINGUAS
   xfce4-battery-plugin/trunk/po/xfce4-battery-plugin.pot
Modified:
   xfce4-battery-plugin/trunk/panel-plugin/battmon.c
   xfce4-battery-plugin/trunk/panel-plugin/libacpi.c
   xfce4-battery-plugin/trunk/po/cs.po
Log:
2005-09-01 14:0  nick

	* Bumped version to 0.4.90.2 for realease.

2005-09-01 13:30  nick

	* panel-plugin/battmon.c, panel-plugin/libacpi.c: Applied patches (or
	parts of it) from Bug #1261, Bug #1475
	* panel-plugin/battmon.c, panel-plugin/libacpi.c: NetBSD patch from
	Stefan Sperling <stsp at stsp.in-berlin.de>

2005-09-01 12:11  nick

	* configure.ac, autogen.sh, po/LINGUAS: Switch to linguas support,
	rename configure.in to configure.in.in
	* po/xfce4-battery-plugin.pot: Addded file
	* po/*.po: Regenerated po files

2005-09-01 11:33  nick

	* panel-plugin/libacpi.c: Apply patch from Giuseppe Ciotta to
	remove hardcoded battery paths.
	* panel-plugin/battmon.c: Fix crash when adding the plugin.
	* panel-plugin/battmon.c: Fix plugin resize problem (bug #1791)
	* panel-plugin/battmon.c: Improved icon loading and try to load the
	battery icon from your current theme (fallback on buildin icon).
	* panel-plugin/battmon.c: Initially hide the icon when building the
	plugin (this stops the icon from flashing if disabled).
	* panel-plugin/battmon.c: Remove the time label from "display percentage"
	and add a new option "Display time".
	* panel-plugin/battmon.c: Fix label alignment if only 1 "option" is shown
	in a vbox.
	* panel-plugin/battmon.c, configure.ac: Use new titled dialog and depend on
	beta 2.
	* panel-plugin/battmon.c: Couple of small fixes, improvement, memleaks etc.


Modified: xfce4-battery-plugin/trunk/panel-plugin/battmon.c
===================================================================
--- xfce4-battery-plugin/trunk/panel-plugin/battmon.c	2006-09-02 16:09:21 UTC (rev 1937)
+++ xfce4-battery-plugin/trunk/panel-plugin/battmon.c	2006-09-02 16:10:54 UTC (rev 1938)
@@ -35,6 +35,11 @@
 #elif __OpenBSD__
 #include <sys/param.h>
 #include <machine/apmvar.h>
+#elif __NetBSD__
+#include <sys/param.h>
+#include <sys/ioctl.h>
+#include <machine/apmvar.h>
+#define APMDEVICE "/dev/apm"
 #elif __linux__
 #include <apm.h>
 #endif
@@ -55,10 +60,10 @@
 #include "battery.h"
 #include "libacpi.h"
 
-#define BORDER			8
-#define HIGH_COLOR 		"#00ff00"
-#define LOW_COLOR 		"#ffff00"
-#define CRITICAL_COLOR 	"#ff0000"
+#define BORDER		8
+#define HIGH_COLOR	"#00ff00"
+#define LOW_COLOR	"#ffff00"
+#define CRITICAL_COLOR	"#ff0000"
 
 typedef struct
 {
@@ -66,6 +71,7 @@
 	gboolean	display_icon;	/* Options */
 	gboolean	display_power;	/* Options */
 	gboolean	display_percentage;	/* Options */
+	gboolean	display_time;
 	gboolean	tooltip_display_percentage;
 	gboolean	tooltip_display_time;
 	int		low_percentage;
@@ -81,7 +87,7 @@
 typedef struct
 {
 	XfcePanelPlugin *plugin;
-	
+
 	GtkTooltips		*tips;
 	GtkWidget		*vbox;		/* Widgets */
 	GtkWidget		*ebox;
@@ -108,6 +114,7 @@
 	GtkWidget		*cb_disp_power;
 	GtkWidget		*cb_disp_label;
 	GtkWidget		*cb_disp_percentage;
+	GtkWidget		*cb_disp_time;
 	GtkWidget		*cb_disp_tooltip_percentage;
 	GtkWidget		*cb_disp_tooltip_time;
 	GtkWidget		*cb_disp_icon;
@@ -130,7 +137,8 @@
 	options->display_icon = FALSE;
 	options->display_label = FALSE;
 	options->display_power = FALSE;
-	options->display_percentage = FALSE;
+	options->display_percentage = TRUE;
+	options->display_time = FALSE;
 	options->tooltip_display_percentage = FALSE;
 	options->tooltip_display_time = FALSE;
 	options->low_percentage = 10;
@@ -146,21 +154,15 @@
 gboolean
 detect_battery_info(t_battmon *battmon)
 {
-#ifdef __OpenBSD__
-	struct apm_power_info apm;
-#else
-	struct apm_info apm;
-#endif
-
 #ifdef __FreeBSD__
   /* This is how I read the information from the APM subsystem under
      FreeBSD.  Each time this functions is called (once every second)
      the APM device is opened, read from and then closed.
 
-     except that is does not work on FreeBSD  
-     
+     except that is does not work on FreeBSD
+
   */
-	
+	struct apm_info apm;
   	int fd;
 
 	/* First check to see if ACPI is available */
@@ -170,15 +172,15 @@
 		battmon->method = BM_USE_ACPI;
 		/* consider battery 0 first... */
 		for (i=0;i<batt_count;i++) {
-			if (read_acpi_info(i)) break; 
+			if (read_acpi_info(i)) break;
 		}
 		for (i=0;i<batt_count;i++) {
-		    if (read_acpi_state(i)) break; 
+		    if (read_acpi_state(i)) break;
 		}
 		/*read_acpi_state(0);*/ /* only consider first battery... */
-#ifdef DEBUG
-	printf("using ACPI\n");
-#endif
+
+	DBG ("using ACPI");
+
 		return TRUE;
 	}
 
@@ -187,40 +189,47 @@
   	fd = open(APMDEVICE, O_RDONLY);
   	if (fd == -1) return FALSE;
 
-  	if (ioctl(fd, APMIO_GETINFO, &apm) == -1)
-     		return FALSE;
-
+  	if (ioctl(fd, APMIO_GETINFO, &apm) == -1) {
+		close(fd);
+      		return FALSE;
+  	}
   	close(fd);
   	battmon->method = BM_USE_APM;
 #endif
   	return TRUE;
-#elif __OpenBSD__
+#elif defined(__OpenBSD__) || defined(__NetBSD__)
   /* Code for OpenBSD by Joe Ammond <jra at twinight.org>. Using the same
      procedure as for FreeBSD.
+     Made to work on NetBSD by Stefan Sperling <stsp at stsp.in-berlin.de>
   */
+  	struct apm_power_info apm;
   	int fd;
 
   	battmon->method = BM_BROKEN;
   	fd = open(APMDEVICE, O_RDONLY);
   	if (fd == -1) return FALSE;
-  	if (ioctl(fd, APM_IOC_GETPOWER, &apm) == -1)
-    		return FALSE;
+  	+  	if (ioctl(fd, APM_IOC_GETPOWER, &apm) == -1) {
+		close(fd);
+     		return FALSE;
+	}
   	close(fd);
   	battmon->method = BM_USE_APM;
-  
+
   	return TRUE;
 #elif __linux__
+	struct apm_info apm;
+
 	/* First check to see if ACPI is available */
 	if(check_acpi()==0) {
 		/* ACPI detected */
 		int i;
 		battmon->method = BM_USE_ACPI;
 		for (i=0;i<batt_count;i++) {
-			if (read_acpi_info(i)) break; 
+			if (read_acpi_info(i)) break;
 		}
 		/*read_acpi_info(0);*/ /* only consider first battery... */
 		for (i=0;i<batt_count;i++) {
-		    if (read_acpi_state(i)) break; 
+		    if (read_acpi_state(i)) break;
 		}
 		if (batt_count){
 		   apm.battery_percentage=acpistate->percentage;
@@ -238,17 +247,12 @@
 	battmon->method = BM_BROKEN;
 
 	return FALSE;
-#endif	
+#endif
 }
 
 static gboolean
 update_apm_status(t_battmon *battmon)
 {
-#ifdef __OpenBSD__
-	struct apm_power_info apm;
-#else
-	struct apm_info apm;
-#endif
 	int charge=0;
 	gboolean fan=FALSE;
 	const char *temp;
@@ -257,10 +261,12 @@
 	gchar buffer[128];
 
 
-#ifdef __OpenBSD__
+#if defined(__OpenBSD__) || defined(__NetBSD__)
   /* Code for OpenBSD by Joe Ammond <jra at twinight.org>. Using the same
      procedure as for FreeBSD.
+     Made to work on NetBSD by Stefan Sperling <stsp at stsp.in-berlin.de>
   */
+  	struct apm_power_info apm;
   	int fd;
 
   	battmon->method = BM_BROKEN;
@@ -272,11 +278,11 @@
   	charge = apm.battery_life;
   	time_remaining = apm.minutes_left;
   	acline = apm.ac_state ? TRUE : FALSE;
-	
+
 #else
-#ifdef DEBUG
-	printf("updating battery status...\n");
-#endif
+	struct apm_info apm;
+	DBG ("Updating battery status...");
+
 	if(battmon->method == BM_BROKEN) {
 		/* See if ACPI or APM support has been enabled yet */
 		if(!detect_battery_info(battmon)) return TRUE;
@@ -285,12 +291,12 @@
 #ifdef TURTLE_UPDATES
 		/* what bug? I don't see any bug here. */
 		if(battmon->method == BM_USE_ACPI) {
-			battmon->timeoutid = g_timeout_add(60 * 1024, 
+			battmon->timeoutid = g_timeout_add(60 * 1024,
 					(GSourceFunc) update_apm_status, battmon);
 		}
-	        else 
+	        else
 #endif
-			battmon->timeoutid = g_timeout_add(2 * 1024, 
+			battmon->timeoutid = g_timeout_add(2 * 1024,
 					(GSourceFunc) update_apm_status, battmon);
 	}
 
@@ -298,14 +304,14 @@
 	if(battmon->flag) {
 		battmon->flag = FALSE;
 		g_source_remove(battmon->timeoutid);
-		battmon->timeoutid = g_timeout_add(2 * 1024, 
+		battmon->timeoutid = g_timeout_add(2 * 1024,
 				(GSourceFunc) update_apm_status, battmon);
 	}
 	if(battmon->method == BM_USE_ACPI) {
 		int i;
 		acline = read_acad_state();
 		for (i=0;i<batt_count;i++) {
-		    if (read_acpi_state(i)) break; 
+		    if (read_acpi_state(i)) break;
 		}
 		/*read_acpi_state(0);*/ /* only consider first battery... */
 		if (batt_count) {
@@ -313,7 +319,7 @@
 		   time_remaining = acpistate->rtime;
 		}
 	}
-#ifdef __linux__	
+#ifdef __linux__
 	else {
 		apm_read(&apm);	/* not broken and not using ACPI, assume APM */
 		charge = apm.battery_percentage;
@@ -326,7 +332,7 @@
      FreeBSD.  Each time this functions is called (once every second)
      the APM device is opened, read from and then closed.
 
-     except it don't work with 5.x: 
+     except it don't work with 5.x:
 battmon.c: In function `update_apm_status':
 battmon.c:241: `APMDEVICE' undeclared (first use in this function)
 battmon.c:241: (Each undeclared identifier is reported only once
@@ -341,8 +347,10 @@
   	 fd = open(APMDEVICE, O_RDONLY);
   	 if (fd == -1) return TRUE;
 
-  	 if (ioctl(fd, APMIO_GETINFO, &apm) == -1)
-     		return TRUE;
+  	 if (ioctl(fd, APMIO_GETINFO, &apm) == -1) {
+		close(fd);
+		return TRUE;
+	 }
 
   	 close(fd);
 
@@ -359,11 +367,11 @@
 	}
 #endif
 #endif
-	
 
+
 	charge = CLAMP (charge, 0, 100);
 	gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(battmon->battstatus), charge / 100.0);
-	
+
 	if(battmon->options.display_label){
 		gtk_widget_show((GtkWidget *)battmon->label);
 	} else {
@@ -375,26 +383,31 @@
 	} else {
 		gtk_widget_hide(battmon->image);
 	}
-		
+
 	if(battmon->options.display_percentage){
 		gtk_widget_show((GtkWidget *)battmon->charge);
-		gtk_widget_show((GtkWidget *)battmon->rtime);
 		g_snprintf(buffer, sizeof(buffer),"%d%% ", charge);
 		gtk_label_set_text(battmon->charge,buffer);
+	} else {
+		gtk_widget_hide((GtkWidget *)battmon->charge);
+	}
+
+	if (battmon->options.display_time){
+		gtk_widget_show((GtkWidget *)battmon->rtime);
 		g_snprintf(buffer, sizeof(buffer),"%02d:%02d ",time_remaining/60,time_remaining%60);
 		gtk_label_set_text(battmon->rtime,buffer);
+
 	} else {
-		gtk_widget_hide((GtkWidget *)battmon->charge);
 		gtk_widget_hide((GtkWidget *)battmon->rtime);
 	}
-		
 
+
 	if(acline) {
 		char *t=(charge<99.9)?_("(Charging from AC)"):_("(AC on-line)");
 		if(battmon->options.tooltip_display_percentage) {
 			g_snprintf(buffer, sizeof(buffer), "%d%% %s", charge,t);
 		}
-		else 
+		else
 			g_snprintf(buffer, sizeof(buffer), "%s",t);
 	}
 	else {
@@ -407,28 +420,40 @@
    		else
 		     g_snprintf(buffer, sizeof(buffer), _("AC off-line"));
 	}
-	
+
 	gtk_tooltips_set_tip (battmon->tips, battmon->ebox, buffer, NULL);
 
 	if(battmon->options.display_power){
 	  gtk_widget_show((GtkWidget *)battmon->acfan);
 	  gtk_widget_show((GtkWidget *)battmon->temp);
+
 	  fan=get_fan_status();
-  	  if(acline && fan) gtk_label_set_text(battmon->acfan,"AC FAN");
-	  else if(acline && !fan) gtk_label_set_text(battmon->acfan,"AC");
-	  else if(!acline && fan) gtk_label_set_text(battmon->acfan,"FAN");
-	  else gtk_label_set_text(battmon->acfan,"");
-	
+	  if(acline && fan)
+		gtk_label_set_text(battmon->acfan,"AC FAN");
+	  else if(acline && !fan)
+		gtk_label_set_text(battmon->acfan,"AC");
+	  else if(!acline && fan)
+		gtk_label_set_text(battmon->acfan,"FAN");
+	  else {
+	  	gtk_label_set_text(battmon->acfan,"");
+	  	gtk_widget_hide((GtkWidget *)battmon->acfan);
+	  }
+
 	  temp=get_temperature();
-	  if(temp) gtk_label_set_text(battmon->temp,temp);
-	  else gtk_label_set_text(battmon->temp,"");
+	  DBG ("Temp: %s", temp);
+	  if(temp)
+		gtk_label_set_text(battmon->temp,temp);
+	  else {
+	  	gtk_label_set_text(battmon->temp,"");
+	  	gtk_widget_hide((GtkWidget *)battmon->temp);
+	  }
 	} else {
 	  gtk_widget_hide((GtkWidget *)battmon->acfan);
 	  gtk_widget_hide((GtkWidget *)battmon->temp);
 	}
-		
+
 	gtk_progress_bar_set_text(GTK_PROGRESS_BAR(battmon->battstatus), NULL);
-	
+
 	/* bar colors and state flags */
 	if (acline) {
 	  battmon->low = battmon->critical = FALSE;
@@ -437,11 +462,11 @@
 	else {
 	  if(charge <= battmon->options.critical_percentage) {
 		gtk_widget_modify_bg(battmon->battstatus, GTK_STATE_PRELIGHT, &(battmon->colorC));
-	  } 
+	  }
 	  else if(charge <= battmon->options.low_percentage) {
 		gtk_widget_modify_bg(battmon->battstatus, GTK_STATE_PRELIGHT, &(battmon->colorL));
 		battmon->critical = FALSE;
-	  } 
+	  }
 	  else {
 	    	battmon->low = battmon->critical = FALSE;
 		gtk_widget_modify_bg(battmon->battstatus, GTK_STATE_PRELIGHT, &(battmon->colorH));
@@ -460,7 +485,7 @@
 				xfce_warn(_("WARNING: Your battery has reached critical status. You should plug in or shutdown your computer now to avoid possible data loss."));
 				return TRUE;
 			}
-			if(battmon->options.action_on_critical == BM_COMMAND || 
+			if(battmon->options.action_on_critical == BM_COMMAND ||
 			   battmon->options.action_on_critical == BM_COMMAND_TERM){
 				int interm=(battmon->options.action_on_critical == BM_COMMAND_TERM)?1:0;
 				if (!battmon->options.command_on_critical ||
@@ -486,62 +511,105 @@
 	return TRUE;
 }
 
+static GdkPixbuf *
+battmon_icon (t_battmon *battmon)
+{
+	GdkPixbuf      *icon;
+	GtkOrientation  orientation;
+	gint            width, height, size;
 
+	/* panel info */
+	orientation = xfce_panel_plugin_get_orientation (battmon->plugin);
+	size = xfce_panel_plugin_get_size (battmon->plugin) - 6;
+
+        /* icon size is 41x64px */
+	if (orientation == GTK_ORIENTATION_HORIZONTAL)
+	{
+		height = size;
+		width = height * 0.625;
+	}
+	else /* vertical */
+	{
+		width = size;
+		height = width * 1.6;
+	}
+
+	/* try to load battery icon from your current icon theme */
+	icon = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
+		"battery", size , 0, NULL);
+
+	/* no icon found in your curren icon theme? Use ours! */
+	if (!icon)
+		icon = xfce_inline_icon_at_size (battery_pixbuf, width, height);
+
+	return icon;
+}
+
+
 static void setup_battmon(t_battmon *battmon, GtkOrientation orientation)
-{	
+{
 	GtkWidget *box,*vbox;
 	GdkPixbuf *icon;
-	
+
 	battmon->battstatus = gtk_progress_bar_new();
-	if (orientation == GTK_ORIENTATION_HORIZONTAL) 
+	if (orientation == GTK_ORIENTATION_HORIZONTAL)
 	{
-	   gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(battmon->battstatus), 
+	   gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(battmon->battstatus),
 			   GTK_PROGRESS_BOTTOM_TO_TOP);
 	   box=gtk_hbox_new(FALSE, 0);
 	   battmon->vbox = gtk_hbox_new(FALSE, 0);
 	} else {
-	   gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(battmon->battstatus), 
+	   gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(battmon->battstatus),
 			   GTK_PROGRESS_LEFT_TO_RIGHT);
 	   box=gtk_vbox_new(FALSE, 0);
 	   battmon->vbox = gtk_vbox_new(FALSE, 0);
 	}
-	
+
 	gtk_container_set_border_width(GTK_CONTAINER(battmon->vbox), BORDER / 2);
 
 	gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(battmon->battstatus), 0.0);
-	
-	
-	icon  = xfce_inline_icon_at_size (battery_pixbuf, 20, 32);
-	battmon->image = gtk_image_new_from_pixbuf (icon);
+
+	icon  = battmon_icon (battmon);
+	if (icon)
+	{
+		battmon->image = gtk_image_new_from_pixbuf (icon);
+		g_object_unref (G_OBJECT (icon));
+	}
+	else
+	{
+		battmon->image = gtk_image_new_from_icon_name ("battery", GTK_ICON_SIZE_BUTTON);
+	}
+
 	gtk_box_pack_start(GTK_BOX(box),GTK_WIDGET(battmon->image), FALSE, FALSE, 2);
-	g_object_unref (icon);
+	/* init hide the widget */
+	gtk_widget_hide(battmon->image);
 
   	battmon->label = (GtkLabel *)gtk_label_new(_("Battery"));
     	gtk_box_pack_start(GTK_BOX(box),GTK_WIDGET(battmon->label),FALSE, FALSE, 0);
-	
+
 	gtk_box_pack_start(GTK_BOX(box),  GTK_WIDGET(battmon->battstatus), FALSE, FALSE, 2);
 
 	vbox = gtk_vbox_new(FALSE, 0);
-	
+
 	/* percent + rtime */
 	gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(vbox), FALSE, FALSE, 0);
-	
+
   	battmon->charge = (GtkLabel *)gtk_label_new("50%%");
-    	gtk_box_pack_start(GTK_BOX(vbox),GTK_WIDGET(battmon->charge),FALSE, FALSE, 0);
-	
+    	gtk_box_pack_start(GTK_BOX(vbox),GTK_WIDGET(battmon->charge),TRUE, TRUE, 0);
+
   	battmon->rtime = (GtkLabel *)gtk_label_new("01:00");
-    	gtk_box_pack_start(GTK_BOX(vbox),GTK_WIDGET(battmon->rtime),FALSE, FALSE, 0);
+    	gtk_box_pack_start(GTK_BOX(vbox),GTK_WIDGET(battmon->rtime),TRUE, TRUE, 0);
 
 	vbox=gtk_vbox_new(FALSE, 0);
-	
+
 	/* ac-fan-temp */
 	gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(vbox), FALSE, FALSE, 0);
-  	
+
 	battmon->acfan = (GtkLabel *)gtk_label_new("AC FAN");
-    	gtk_box_pack_start(GTK_BOX(vbox),GTK_WIDGET(battmon->acfan),FALSE, FALSE, 0);
-	 
+    	gtk_box_pack_start(GTK_BOX(vbox),GTK_WIDGET(battmon->acfan),TRUE, TRUE, 0);
+
   	battmon->temp = (GtkLabel *)gtk_label_new("40°C");
-    	gtk_box_pack_start(GTK_BOX(vbox),GTK_WIDGET(battmon->temp),FALSE, FALSE, 0);
+    	gtk_box_pack_start(GTK_BOX(vbox),GTK_WIDGET(battmon->temp),TRUE, TRUE, 0);
 
 
 	gtk_box_pack_start(GTK_BOX(battmon->vbox), box, FALSE, FALSE, 0);
@@ -554,8 +622,10 @@
 	}
 	if(!battmon->options.display_percentage){
 		gtk_widget_hide((GtkWidget *)battmon->charge);
+	}
+	if (!battmon->options.display_time){
 		gtk_widget_hide((GtkWidget *)battmon->rtime);
-	} 
+	}
 
 	gtk_container_add(GTK_CONTAINER(battmon->ebox),GTK_WIDGET(battmon->vbox));
 	gtk_widget_show(battmon->ebox);
@@ -596,9 +666,11 @@
 	battmon->timeoutid = 0;
 	battmon->flag = FALSE;
 	battmon->tips = gtk_tooltips_new ();
-	g_object_ref (battmon->tips);
+	g_object_ref (G_OBJECT (battmon->tips));
 	gtk_object_sink (GTK_OBJECT (battmon->tips));
 
+
+
 	return battmon;
 }
 
@@ -610,7 +682,14 @@
 		battmon->timeoutid = 0;
 	}
 
-	g_object_unref (battmon->tips);
+	/* cleanup options */
+	g_free (battmon->options.command_on_low);
+	g_free (battmon->options.command_on_critical);
+
+	/* free tooltip */
+	gtk_tooltips_set_tip (battmon->tips, battmon->ebox, NULL, NULL);
+	g_object_unref (G_OBJECT (battmon->tips));
+
 	g_free(battmon);
 }
 
@@ -620,24 +699,26 @@
     const char *value;
     char *file;
     XfceRc *rc;
-    
+
     if (!(file = xfce_panel_plugin_lookup_rc_file (plugin)))
         return;
-    
+
     rc = xfce_rc_simple_open (file, TRUE);
     g_free (file);
 
     if (!rc)
         return;
-    
+
 	battmon->options.display_label = xfce_rc_read_bool_entry (rc, "display_label", FALSE);
-	
+
 	battmon->options.display_icon = xfce_rc_read_bool_entry (rc, "display_icon", FALSE);
 
 	battmon->options.display_power = xfce_rc_read_bool_entry (rc, "display_power", FALSE);
 
 	battmon->options.display_percentage = xfce_rc_read_bool_entry (rc, "display_percentage", FALSE);
 
+	battmon->options.display_time = xfce_rc_read_bool_entry (rc, "display_time", FALSE);
+
 	battmon->options.tooltip_display_percentage = xfce_rc_read_bool_entry (rc, "tooltip_display_percentage", FALSE);
 
 	battmon->options.tooltip_display_time = xfce_rc_read_bool_entry (rc, "tooltip_display_time", FALSE);
@@ -663,17 +744,17 @@
 battmon_write_config(XfcePanelPlugin *plugin, t_battmon *battmon)
 {
     XfceRc *rc;
-	char *file;
+    gchar *file;
 
     if (!(file = xfce_panel_plugin_save_location (plugin, TRUE)))
         return;
-    
+
     rc = xfce_rc_simple_open (file, FALSE);
     g_free (file);
 
     if (!rc)
         return;
-    
+
 	xfce_rc_write_bool_entry (rc, "display_label", battmon->options.display_label);
 
 	xfce_rc_write_bool_entry (rc, "display_icon", battmon->options.display_icon);
@@ -682,6 +763,8 @@
 
 	xfce_rc_write_bool_entry (rc, "display_percentage", battmon->options.display_percentage);
 
+	xfce_rc_write_bool_entry (rc, "display_time", battmon->options.display_time);
+
 	xfce_rc_write_bool_entry (rc, "tooltip_display_percentage", battmon->options.tooltip_display_percentage);
 
 	xfce_rc_write_bool_entry (rc, "tooltip_display_time", battmon->options.tooltip_display_time);
@@ -696,7 +779,7 @@
 
 	xfce_rc_write_entry (rc, "command_on_low", battmon->options.command_on_low ? battmon->options.command_on_low : "");
 
-	xfce_rc_write_entry (rc, "command_on_critical", battmon->options.command_on_critical ? battmon->options.command_on_critical : 0);
+	xfce_rc_write_entry (rc, "command_on_critical", battmon->options.command_on_critical ? battmon->options.command_on_critical : "");
 
 	xfce_rc_close (rc);
 }
@@ -704,18 +787,36 @@
 static gboolean
 battmon_set_size(XfcePanelPlugin *plugin, int size, t_battmon *battmon)
 {
-	if (xfce_panel_plugin_get_orientation (plugin) == 
+	GdkPixbuf *icon;
+
+	if (xfce_panel_plugin_get_orientation (plugin) ==
 			GTK_ORIENTATION_HORIZONTAL)
 	{
-	      gtk_widget_set_size_request(GTK_WIDGET(battmon->battstatus),
-                                      BORDER, size);
+		/* force size of the panel plugin */
+		gtk_widget_set_size_request(GTK_WIDGET(battmon->plugin),
+                                -1, size);
+		/* size of the progressbar */
+		gtk_widget_set_size_request(GTK_WIDGET(battmon->battstatus),
+				BORDER, size);
 	}
-	else 
+	else
 	{
-	      gtk_widget_set_size_request(GTK_WIDGET(battmon->battstatus),
-                                      size, BORDER);
+		/* size of the plugin */
+		gtk_widget_set_size_request(GTK_WIDGET(battmon->plugin),
+				size, -1);
+		/* size of the progressbar */
+		gtk_widget_set_size_request(GTK_WIDGET(battmon->battstatus),
+				size, BORDER);
 	}
 
+	/* update the icon */
+	icon  = battmon_icon (battmon);
+	if (icon)
+	{
+		gtk_image_set_from_pixbuf (GTK_IMAGE (battmon->image), icon);
+		g_object_unref (G_OBJECT (icon));
+	}
+
 	return TRUE;
 }
 
@@ -740,6 +841,7 @@
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->cb_disp_icon), battmon->options.display_icon);
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->cb_disp_power), battmon->options.display_power);
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->cb_disp_percentage), battmon->options.display_percentage);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->cb_disp_time), battmon->options.display_time);
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->cb_disp_tooltip_percentage), battmon->options.tooltip_display_percentage);
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->cb_disp_tooltip_time), battmon->options.tooltip_display_time);
 	gtk_widget_set_sensitive(dialog->en_command_low, (battmon->options.action_on_low > 1) ? 1 : 0);
@@ -756,6 +858,15 @@
 }
 
 static void
+set_disp_time(GtkToggleButton *tb, t_battmon_dialog *dialog)
+{
+	t_battmon *battmon = dialog->battmon;
+
+	battmon->options.display_time = gtk_toggle_button_get_active(tb);
+	update_apm_status(dialog->battmon);
+}
+
+static void
 set_tooltip_disp_percentage(GtkToggleButton *tb, t_battmon_dialog *dialog)
 {
 	t_battmon *battmon = dialog->battmon;
@@ -844,7 +955,7 @@
 
 	g_free(battmon->options.command_on_low);
 	temp = gtk_entry_get_text(en);
-	battmon->options.command_on_low = g_strdup(temp); 
+	battmon->options.command_on_low = g_strdup(temp);
 	update_apm_status(dialog->battmon);
 
 	/* Prevents a GTK crash */
@@ -859,9 +970,9 @@
 
 	g_free(battmon->options.command_on_critical);
 	temp = gtk_entry_get_text(en);
-	battmon->options.command_on_critical = g_strdup(temp); 
+	battmon->options.command_on_critical = g_strdup(temp);
 	update_apm_status(dialog->battmon);
-	
+
 	/* Prevents a GTK crash */
 	return FALSE;
 }
@@ -874,11 +985,11 @@
     char *name = NULL;
 
     t = (title) ? title : _("Select file");
-    
-    fs = gtk_file_chooser_dialog_new (t, GTK_WINDOW(parent), 
-                               GTK_FILE_CHOOSER_ACTION_OPEN, 
-                               GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, 
-                               GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, 
+
+    fs = gtk_file_chooser_dialog_new (t, GTK_WINDOW(parent),
+                               GTK_FILE_CHOOSER_ACTION_OPEN,
+                               GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+                               GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
                                NULL);
 
     if (path && *path && g_file_test (path, G_FILE_TEST_EXISTS))
@@ -933,7 +1044,7 @@
 static void
 battmon_create_options(XfcePanelPlugin *plugin, t_battmon *battmon)
 {
-    GtkWidget *dlg, *header;
+    GtkWidget *dlg;
 	GtkWidget *vbox, *vbox2, *hbox, *label, *menu, *mi, *button, *button2;
 	GtkSizeGroup *sg;
 	t_battmon_dialog *dialog;
@@ -941,207 +1052,167 @@
 	dialog = g_new0(t_battmon_dialog, 1);
 
 	dialog->battmon = battmon;
-    
+
     xfce_panel_plugin_block_menu (plugin);
-    
-    dlg = gtk_dialog_new_with_buttons (_("Configure Battery Monitor"), 
-                GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (plugin))),
-                GTK_DIALOG_DESTROY_WITH_PARENT |
-                GTK_DIALOG_NO_SEPARATOR,
-                GTK_STOCK_CLOSE, GTK_RESPONSE_OK,
-                NULL);
-    
+
+    dlg = xfce_titled_dialog_new_with_buttons (_("Battery Monitor"),
+                                                  GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (plugin))),
+                                                  GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR,
+                                                  GTK_STOCK_CLOSE, GTK_RESPONSE_OK,
+                                                  NULL);
+
+    gtk_window_set_position   (GTK_WINDOW (dlg), GTK_WIN_POS_CENTER);
+    gtk_window_set_icon_name  (GTK_WINDOW (dlg), "xfce4-settings");
+
     g_signal_connect (dlg, "response", G_CALLBACK (battmon_dialog_response),
                       battmon);
 
     gtk_container_set_border_width (GTK_CONTAINER (dlg), 2);
-    
-	header = xfce_create_header (NULL, _("Battery Monitor"));
-    gtk_widget_set_size_request (GTK_BIN (header)->child, -1, 32);
-    gtk_container_set_border_width (GTK_CONTAINER (header), BORDER - 2);
-    gtk_widget_show (header);
-    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), header,
-                        FALSE, TRUE, 0);
-    
+
     vbox = gtk_vbox_new(FALSE, BORDER);
     gtk_container_set_border_width (GTK_CONTAINER (vbox), BORDER - 2);
-    gtk_widget_show(vbox);
     gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), vbox,
                         TRUE, TRUE, 0);
-    
+
 	/* Create size group to keep widgets aligned */
 
 	sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
 
 	/* Low and Critical percentage settings */
 
-	hbox = gtk_hbox_new(FALSE, BORDER);	
-	gtk_widget_show(hbox);
+	hbox = gtk_hbox_new(FALSE, BORDER);
 	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
 	label = gtk_label_new(_("Low percentage:"));
 	gtk_size_group_add_widget(sg, label);
 	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-	gtk_widget_show(label);
 	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
 	dialog->sb_low_percentage = gtk_spin_button_new_with_range(1, 100, 1);
-	gtk_widget_show(dialog->sb_low_percentage);
 	gtk_box_pack_start(GTK_BOX(hbox), dialog->sb_low_percentage, FALSE, FALSE, 0);
 
-	hbox = gtk_hbox_new(FALSE, BORDER);	
-	gtk_widget_show(hbox);
+	hbox = gtk_hbox_new(FALSE, BORDER);
 	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
 	label = gtk_label_new(_("Critical percentage:"));
 	gtk_size_group_add_widget(sg, label);
 	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-	gtk_widget_show(label);
 	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
 	dialog->sb_critical_percentage = gtk_spin_button_new_with_range(1, 100, 1);
-	gtk_widget_show(dialog->sb_critical_percentage);
 	gtk_box_pack_start(GTK_BOX(hbox), dialog->sb_critical_percentage, FALSE, FALSE, 0);
 
 	/* Low battery action settings */
 
-	hbox = gtk_hbox_new(FALSE, BORDER);	
-	gtk_widget_show(hbox);
+	hbox = gtk_hbox_new(FALSE, BORDER);
 	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
 	label = gtk_label_new(_("Low battery action:"));
 	gtk_size_group_add_widget(sg, label);
 	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-	gtk_widget_show(label);
 	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
 	menu = gtk_menu_new();
  	mi = gtk_menu_item_new_with_label(_("Do nothing"));
-    	gtk_widget_show(mi);
     	gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
  	mi = gtk_menu_item_new_with_label(_("Display a warning message"));
-    	gtk_widget_show(mi);
     	gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
 	mi = gtk_menu_item_new_with_label(_("Run command"));
-    	gtk_widget_show(mi);
     	gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
  	mi = gtk_menu_item_new_with_label(_("Run command in terminal"));
-    	gtk_widget_show(mi);
     	gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
 
 	dialog->om_action_low = gtk_option_menu_new();
-	gtk_widget_show(dialog->om_action_low);
 	gtk_option_menu_set_menu(GTK_OPTION_MENU(dialog->om_action_low), menu);
 	gtk_box_pack_start(GTK_BOX(hbox), dialog->om_action_low, FALSE, FALSE, 0);
 
 	/* Low battery command */
 
 	hbox = gtk_hbox_new(FALSE, BORDER);
-    	gtk_widget_show(hbox);
   	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
 
     	label = gtk_label_new(_("Command:"));
     	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
     	gtk_size_group_add_widget(sg, label);
-    	gtk_widget_show(label);
 	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
     	dialog->en_command_low = gtk_entry_new();
-	gtk_widget_show(dialog->en_command_low);
     	gtk_box_pack_start(GTK_BOX(hbox), dialog->en_command_low, FALSE, FALSE, 0);
 
     	button = gtk_button_new_with_label("...");
-    	gtk_widget_show(button);
     	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
 
 	/* Critical battery action settings */
 
-	hbox = gtk_hbox_new(FALSE, BORDER);	
-	gtk_widget_show(hbox);
+	hbox = gtk_hbox_new(FALSE, BORDER);
 	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
 	label = gtk_label_new(_("Critical battery action:"));
 	gtk_size_group_add_widget(sg, label);
 	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-	gtk_widget_show(label);
 	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
 	menu = gtk_menu_new();
  	mi = gtk_menu_item_new_with_label(_("Do nothing"));
-    	gtk_widget_show(mi);
     	gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
  	mi = gtk_menu_item_new_with_label(_("Display a warning message"));
-    	gtk_widget_show(mi);
     	gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
 	mi = gtk_menu_item_new_with_label(_("Run command"));
-    	gtk_widget_show(mi);
     	gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
  	mi = gtk_menu_item_new_with_label(_("Run command in terminal"));
-    	gtk_widget_show(mi);
     	gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
 
 	dialog->om_action_critical = gtk_option_menu_new();
-	gtk_widget_show(dialog->om_action_critical);
 	gtk_option_menu_set_menu(GTK_OPTION_MENU(dialog->om_action_critical), menu);
 	gtk_box_pack_start(GTK_BOX(hbox), dialog->om_action_critical, FALSE, FALSE, 0);
 
 	/* Critical battery command */
 
 	hbox = gtk_hbox_new(FALSE, BORDER);
-    	gtk_widget_show(hbox);
   	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
 
     	label = gtk_label_new(_("Command:"));
     	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
     	gtk_size_group_add_widget(sg, label);
-    	gtk_widget_show(label);
 	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
     	dialog->en_command_critical = gtk_entry_new();
-	gtk_widget_show(dialog->en_command_critical);
 	gtk_box_pack_start(GTK_BOX(hbox), dialog->en_command_critical, FALSE, FALSE, 0);
 
     	button2 = gtk_button_new_with_label("...");
-    	gtk_widget_show(button2);
     	gtk_box_pack_start(GTK_BOX(hbox), button2, FALSE, FALSE, 0);
 
 	/* Create checkbox options */
 
-	hbox = gtk_hbox_new(FALSE, BORDER);	
-	gtk_widget_show(hbox);
+	hbox = gtk_hbox_new(FALSE, BORDER);
 	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
 	label = gtk_label_new(NULL);
 	gtk_size_group_add_widget(sg, label);
-	gtk_widget_show(label);
 	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
 	vbox2 = gtk_vbox_new(FALSE, 4);
-	gtk_widget_show(vbox2);
 	gtk_box_pack_start(GTK_BOX(hbox), vbox2, FALSE, FALSE, 0);
 
 	dialog->cb_disp_label = gtk_check_button_new_with_mnemonic(_("Display label"));
-	gtk_widget_show(dialog->cb_disp_label);
 	gtk_box_pack_start(GTK_BOX(vbox2), dialog->cb_disp_label, FALSE, FALSE, 0);
-	
+
 	dialog->cb_disp_percentage = gtk_check_button_new_with_mnemonic(_("Display percentage"));
-	gtk_widget_show(dialog->cb_disp_percentage);
 	gtk_box_pack_start(GTK_BOX(vbox2), dialog->cb_disp_percentage, FALSE, FALSE, 0);
 
+	dialog->cb_disp_time = gtk_check_button_new_with_mnemonic(_("Display time"));
+	gtk_box_pack_start(GTK_BOX(vbox2), dialog->cb_disp_time, FALSE, FALSE, 0);
+
 	dialog->cb_disp_tooltip_percentage = gtk_check_button_new_with_mnemonic(_("Display percentage in tooltip"));
-	gtk_widget_show(dialog->cb_disp_tooltip_percentage);
 	gtk_box_pack_start(GTK_BOX(vbox2), dialog->cb_disp_tooltip_percentage, FALSE, FALSE, 0);
 
 	dialog->cb_disp_tooltip_time = gtk_check_button_new_with_mnemonic(_("Display time remaining in tooltip"));
-	gtk_widget_show(dialog->cb_disp_tooltip_time);
 	gtk_box_pack_start(GTK_BOX(vbox2), dialog->cb_disp_tooltip_time, FALSE, FALSE, 0);
-	
+
 	dialog->cb_disp_power = gtk_check_button_new_with_mnemonic(_("Display power"));
-	gtk_widget_show(dialog->cb_disp_power);
 	gtk_box_pack_start(GTK_BOX(vbox2), dialog->cb_disp_power, FALSE, FALSE, 0);
 
 	dialog->cb_disp_icon = gtk_check_button_new_with_mnemonic(_("Display icon"));
-	gtk_widget_show(dialog->cb_disp_icon);
 	gtk_box_pack_start(GTK_BOX(vbox2), dialog->cb_disp_icon, FALSE, FALSE, 0);
 
 	/* Signal connections should be set after setting tate of toggle buttons...*/
@@ -1150,12 +1221,13 @@
 	g_signal_connect(button, "clicked", G_CALLBACK(command_browse_cb), dialog->en_command_low);
 	g_signal_connect(button2, "clicked", G_CALLBACK(command_browse_cb), dialog->en_command_critical);
 	g_signal_connect(dialog->cb_disp_percentage, "toggled", G_CALLBACK(set_disp_percentage), dialog);
+	g_signal_connect(dialog->cb_disp_time, "toggled", G_CALLBACK(set_disp_time), dialog);
 	g_signal_connect(dialog->cb_disp_tooltip_percentage, "toggled", G_CALLBACK(set_tooltip_disp_percentage), dialog);
 	g_signal_connect(dialog->cb_disp_power, "toggled", G_CALLBACK(set_disp_power), dialog);
 	g_signal_connect(dialog->cb_disp_tooltip_time, "toggled", G_CALLBACK(set_tooltip_time), dialog);
 	g_signal_connect(dialog->cb_disp_label, "toggled", G_CALLBACK(set_disp_label), dialog);
 	g_signal_connect(dialog->cb_disp_icon, "toggled", G_CALLBACK(set_disp_icon), dialog);
-	
+
 	g_signal_connect(dialog->sb_low_percentage, "value-changed", G_CALLBACK(set_low_percentage), dialog);
 	g_signal_connect(dialog->sb_critical_percentage, "value-changed", G_CALLBACK(set_critical_percentage), dialog);
 	g_signal_connect(dialog->om_action_low, "changed", G_CALLBACK(set_action_low), dialog);
@@ -1163,11 +1235,11 @@
 	g_signal_connect(dialog->en_command_low, "focus-out-event", G_CALLBACK(set_command_low), dialog);
 	g_signal_connect(dialog->en_command_critical, "focus-out-event", G_CALLBACK(set_command_critical), dialog);
 
-	gtk_widget_show (dlg);
+	gtk_widget_show_all (dlg);
 }
 
 /* create the plugin */
-static void 
+static void
 battmon_construct (XfcePanelPlugin *plugin)
 {
 	t_battmon *battmon;
@@ -1177,27 +1249,27 @@
 	battmon = battmon_create (plugin);
 
 	battmon_read_config (plugin, battmon);
-	
+
 	g_signal_connect (plugin, "free-data", G_CALLBACK (battmon_free), battmon);
-	
+
 	g_signal_connect (plugin, "save", G_CALLBACK (battmon_write_config), battmon);
-	
+
 	xfce_panel_plugin_menu_show_configure (plugin);
 	g_signal_connect (plugin, "configure-plugin", G_CALLBACK (battmon_create_options), battmon);
-	
+
 	g_signal_connect (plugin, "size-changed", G_CALLBACK (battmon_set_size), battmon);
-	
+
 	g_signal_connect (plugin, "orientation-changed", G_CALLBACK (battmon_set_orientation), battmon);
-	
+
 	gtk_container_add(GTK_CONTAINER(plugin), battmon->ebox);
 
 	xfce_panel_plugin_add_action_widget (plugin, battmon->ebox);
-	
+
 	xfce_panel_plugin_add_action_widget (plugin, battmon->battstatus);
-	
+
 	/* Determine what facility to use and initialize reading */
 	battmon->method = BM_BROKEN;
-	update_apm_status(battmon);	
+	update_apm_status(battmon);
 
 	/* If neither ACPI nor APM are enabled, check for either every 60 seconds */
 	if(battmon->timeoutid == 0)

Modified: xfce4-battery-plugin/trunk/panel-plugin/libacpi.c
===================================================================
--- xfce4-battery-plugin/trunk/panel-plugin/libacpi.c	2006-09-02 16:09:21 UTC (rev 1937)
+++ xfce4-battery-plugin/trunk/panel-plugin/libacpi.c	2006-09-02 16:10:54 UTC (rev 1938)
@@ -25,7 +25,7 @@
  *   59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.              *
  *                                                                         *
  ***************************************************************************/
- 
+
  /***************************************************************************
         Originally written by Costantino Pistagna for his wmacpimon
  ***************************************************************************/
@@ -42,6 +42,14 @@
 #include <dirent.h>
 
 #if HAVE_SYSCTL
+
+#ifdef __NetBSD__
+#include <sys/param.h>
+/* CTLTYPE does not exist in NetBSD headers.
+ * Defining it to 0x0f here won't do any harm though. */
+#define CTLTYPE 0x0f
+#endif
+
 #include <sys/sysctl.h>
 #include <err.h>
 #include <errno.h>
@@ -51,7 +59,9 @@
 
 #include "libacpi.h"
 
+#define ACBASE "/proc/acpi/ac_adapter"
 
+
 static char batteries[MAXBATT][128];
 static char battinfo[MAXBATT][128];
 #ifndef __linux__
@@ -68,7 +78,7 @@
 
 	j = CTL_MAXNAME * sizeof(int);
 	i = sysctl(oid, 2, oidp, &j, name, strlen(name));
-	if (i < 0) 
+	if (i < 0)
 		return i;
 	j /= sizeof(int);
 	return (j);
@@ -139,7 +149,7 @@
 	fmt = buf;
 	oidfmt(oid, nlen, fmt, &kind);
 	p = val;
-	switch (*fmt) {		
+	switch (*fmt) {
 	case 'I':
 #ifdef DEBUG
 		printf("I:%s%s", name, sep);
@@ -163,7 +173,7 @@
 			len -= sizeof(int);
 			p += sizeof(int);
 		}
-		
+
 		return (retval);
 	default:
 			printf("%s%s", name, sep);
@@ -177,7 +187,7 @@
 	return (0);
 }
 
- 
+
 #endif
 #endif
 
@@ -217,19 +227,13 @@
 
     /* skip . and .. */
     if (!strncmp (".", name, 1) || !strncmp ("..", name, 2)) continue;
-    
+
     sprintf (batteries[batt_count], "/proc/acpi/battery/%s/state", name);
     if (!(acpi = fopen (batteries[batt_count], "r"))) {
        sprintf (batteries[batt_count], "/proc/acpi/battery/%s/status", name);
     }
     else fclose (acpi);
-    
-#if 0    
-    if (!(acpi = fopen ("/proc/acpi/battery/1/status", "r")))
-	    sprintf (batteries[batt_count], "/proc/acpi/battery/%s/state", name);
-    else
-	    sprintf (batteries[batt_count], "/proc/acpi/battery/%s/status", name);
-#endif    
+
     sprintf (battinfo[batt_count], "/proc/acpi/battery/%s/info", name);
 #ifdef DEBUG
 	  printf("DBG:battery number %d at:\n",batt_count);
@@ -259,7 +263,7 @@
     if (oidfmt(mib, len, fmt, &kind)) return 1;
     if ((kind & CTLTYPE) == CTLTYPE_NODE) return 1;
     batt_count=get_var(mib, len);
-  
+
   }
   return 0;
 #else
@@ -275,15 +279,33 @@
   char *ptr;
   char stat;
 
-  if (!(acpi = fopen ("/proc/acpi/ac_adapter/0/status", "r")))
-    if (!(acpi = fopen ("/proc/acpi/ac_adapter/ACAD/state", "r")))
-      if (!(acpi = fopen ("/proc/acpi/ac_adapter/AC/state", "r")))
-        if (!(acpi = fopen ("/proc/acpi/ac_adapter/ADP1/state", "r")))
-         if (!(acpi = fopen ("/proc/acpi/ac_adapter/AC0/state", "r")))
-	    if (!(acpi = fopen ("/proc/acpi/ac_adapter/ADP0/state", "r")))
-	      if (!(acpi = fopen ("/proc/acpi/ac_adapter/C11B/state", "r")))
-	        return -1;
+  char acpath[64];
+  char *name;
+  DIR  *acdir;
+  struct dirent *ac;
 
+  if (!(acdir=opendir(ACBASE))){
+    return -1;
+  }
+  while ((ac = readdir (acdir))){
+    name = ac->d_name;
+
+    /* skip . and .. */
+    if (name[0] == '.')
+      continue;
+
+    sprintf (acpath, "%s/%s/state", ACBASE, name);
+    if (access(acpath,R_OK)){
+      sprintf (acpath, "%s/%s/status", ACBASE, name);
+      if (access(acpath,R_OK)){
+	return -1;
+      }
+    }
+    break; //only one ac adapter supported
+  }
+  closedir(acdir);
+  acpi = fopen (acpath, "r");
+
   fread (buf, 512, 1, acpi);
   fclose (acpi);
   if (!acadstate) acadstate=(ACADstate *)malloc(sizeof(ACADstate));
@@ -364,7 +386,7 @@
   }
 
 #ifdef DEBUG
-  { 
+  {
 	  int jj= fread (buf, 1,512, acpi);
 	  printf("DBG:%d characters read from %s\n",jj,battinfo[battery]);
   }
@@ -461,7 +483,7 @@
 	    return 0;
 	  }
   }
-	
+
   return 1;
 #else
 #ifdef HAVE_SYSCTL
@@ -499,7 +521,7 @@
   return 0;
 #endif
 #endif
-  
+
 }
 
 int read_acpi_state(int battery)
@@ -552,9 +574,9 @@
 		    }
 	    }
 	    /* This section of the code will calculate "percentage remaining"
-	     * using battery capacity, and the following formula 
+	     * using battery capacity, and the following formula
 	     * (acpi spec 3.9.2):
-	     * 
+	     *
 	     * percentage = (current_capacity / last_full_capacity) * 100;
 	     *
 	     */
@@ -579,12 +601,12 @@
 	      if (rate <= 0) rate = 0;
 
 	      acpistate->prate = rate;
-				
+
 	      /* time remaining in minutes */
 	      rtime = ((float) ((float) acpistate->rcapacity /
 				(float) acpistate->prate)) * 60;
 	      if (rtime <= 0) rtime = 0;
-	      
+
 				acpistate->rtime = rtime;
 	    }
 	    if ((ptr = strstr (buf, "present voltage:")) || (ptr = strstr (buf, "Battery Voltage:")))
@@ -606,7 +628,7 @@
 	    return 0;
 	  }
   }
-	
+
   return 1;
 #else
 #ifdef HAVE_SYSCTL
@@ -627,7 +649,7 @@
   acpistate->pvoltage = 0;
   acpistate->rtime = 0;
   acpistate->percentage = 0;
-  
+
   snprintf(buf, BUFSIZ, "%s", "hw.acpi.battery.time");
   len = name2oid(bufp, mib);
   if (len <= 0) return(-1);
@@ -643,7 +665,7 @@
 #endif
   }
   acpistate->rtime =(retval<0)?0:retval;
-  
+
   snprintf(buf, BUFSIZ, "%s", "hw.acpi.battery.life");
   len = name2oid(bufp, mib);
   if (len <= 0) return(-1);
@@ -680,9 +702,9 @@
   	  if (strlen(line) && strstr(line,"1")) return 1;
     	  else return 0;
     }
-    proc_fan_status="/proc/acpi/fan/FAN/state";
-    if ( (fp=fopen(proc_fan_status, "r")) == NULL ) return 0; 
-    
+    proc_fan_status="/proc/acpi/fan/*/state";
+    if ( (fp=fopen(proc_fan_status, "r")) == NULL ) return 0;
+
     fgets(line,255,fp);
     fclose(fp);
 
@@ -694,7 +716,7 @@
 {
 #ifdef __linux__
   FILE *fp;
-  char *proc_temperature="/proc/acpi/thermal_zone/THRM/temperature";
+  char *proc_temperature="/proc/acpi/thermal_zone/*0/temperature";
   static char *p,line[256];
 
   if ( (fp=fopen(proc_temperature, "r")) == NULL) return NULL;

Added: xfce4-battery-plugin/trunk/po/LINGUAS
===================================================================
--- xfce4-battery-plugin/trunk/po/LINGUAS	                        (rev 0)
+++ xfce4-battery-plugin/trunk/po/LINGUAS	2006-09-02 16:10:54 UTC (rev 1938)
@@ -0,0 +1,2 @@
+# set of available languages (in alphabetic order)
+cs

Modified: xfce4-battery-plugin/trunk/po/cs.po
===================================================================
--- xfce4-battery-plugin/trunk/po/cs.po	2006-09-02 16:09:21 UTC (rev 1937)
+++ xfce4-battery-plugin/trunk/po/cs.po	2006-09-02 16:10:54 UTC (rev 1938)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: xfce4-battery-plugin 0.4.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-26 20:56+0200\n"
+"POT-Creation-Date: 2006-09-01 12:16+0200\n"
 "PO-Revision-Date: 2006-08-26 21:03+0100\n"
 "Last-Translator: Michal Várady <miko.vaji at gmail.com>\n"
 "Language-Team: Czech <translation-team-cs at lists.sourceforge.net>\n"
@@ -16,124 +16,128 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 
-#: ../panel-plugin/battmon.c:393
+#: ../panel-plugin/battmon.c:401
 msgid "(Charging from AC)"
 msgstr "(Nabíjení ze sítě)"
 
-#: ../panel-plugin/battmon.c:393
+#: ../panel-plugin/battmon.c:401
 msgid "(AC on-line)"
 msgstr "(Připojeno do sítě)"
 
-#: ../panel-plugin/battmon.c:402
+#: ../panel-plugin/battmon.c:410
 #, c-format
 msgid "%d%% (%02d:%02d) remaining"
 msgstr "Zbývá %d%% (%02d:%02d)"
 
-#: ../panel-plugin/battmon.c:404
+#: ../panel-plugin/battmon.c:412
 #, c-format
 msgid "%02d:%02d remaining"
 msgstr "Zbývá %02d:%02d"
 
-#: ../panel-plugin/battmon.c:406
+#: ../panel-plugin/battmon.c:414
 #, c-format
 msgid "%d%% remaining"
 msgstr "Zbývá %d%%"
 
-#: ../panel-plugin/battmon.c:408
+#: ../panel-plugin/battmon.c:416
 msgid "AC off-line"
 msgstr "Napájení odpojeno"
 
-#: ../panel-plugin/battmon.c:460
-msgid "WARNING: Your battery has reached critical status. You should plug in or shutdown your computer now to avoid possible data loss."
-msgstr "VAROVÁNÍ: Baterie dosáhla kritického stavu. Měli byste připojit počítač do elektrické sítě nebo jej vypnout, abyste předešli možné ztrátě dat."
+#: ../panel-plugin/battmon.c:479
+msgid ""
+"WARNING: Your battery has reached critical status. You should plug in or "
+"shutdown your computer now to avoid possible data loss."
+msgstr ""
+"VAROVÁNÍ: Baterie dosáhla kritického stavu. Měli byste připojit počítač do "
+"elektrické sítě nebo jej vypnout, abyste předešli možné ztrátě dat."
 
-#: ../panel-plugin/battmon.c:474
-msgid "WARNING: Your battery is running low. You should consider plugging in or shutting down your computer soon to avoid possible data loss."
-msgstr "VAROVÁNÍ: Úroveň nabití baterie je nízká. Měli byste zvážit připojení počítače do elektrické sítě nebo jej v dohledné době vypnout, abyste předešli ztrátě dat."
+#: ../panel-plugin/battmon.c:493
+msgid ""
+"WARNING: Your battery is running low. You should consider plugging in or "
+"shutting down your computer soon to avoid possible data loss."
+msgstr ""
+"VAROVÁNÍ: Úroveň nabití baterie je nízká. Měli byste zvážit připojení "
+"počítače do elektrické sítě nebo jej v dohledné době vypnout, abyste "
+"předešli ztrátě dat."
 
-#: ../panel-plugin/battmon.c:519
+#: ../panel-plugin/battmon.c:581
 msgid "Battery"
 msgstr "Baterie"
 
-#: ../panel-plugin/battmon.c:876
+#: ../panel-plugin/battmon.c:981
 msgid "Select file"
 msgstr "Vyberte soubor"
 
-#: ../panel-plugin/battmon.c:917
+#: ../panel-plugin/battmon.c:1022
 msgid "Select command"
 msgstr "Vyberte příkaz"
 
-#: ../panel-plugin/battmon.c:947
-msgid "Configure Battery Monitor"
-msgstr "Nastavit sledování baterie"
-
-#: ../panel-plugin/battmon.c:959
-#: ../panel-plugin/battmon.desktop.in.in.h:1
+#: ../panel-plugin/battmon.c:1052 ../panel-plugin/battmon.desktop.in.in.h:1
 msgid "Battery Monitor"
 msgstr "Sledování baterie"
 
-#: ../panel-plugin/battmon.c:982
+#: ../panel-plugin/battmon.c:1080
 msgid "Low percentage:"
 msgstr "Nízký stav:"
 
-#: ../panel-plugin/battmon.c:996
+#: ../panel-plugin/battmon.c:1091
 msgid "Critical percentage:"
 msgstr "Kritický stav:"
 
-#: ../panel-plugin/battmon.c:1012
+#: ../panel-plugin/battmon.c:1104
 msgid "Low battery action:"
 msgstr "Akce při nízkém stavu:"
 
-#: ../panel-plugin/battmon.c:1019
-#: ../panel-plugin/battmon.c:1070
+#: ../panel-plugin/battmon.c:1110 ../panel-plugin/battmon.c:1150
 msgid "Do nothing"
 msgstr "Žádná akce"
 
-#: ../panel-plugin/battmon.c:1022
-#: ../panel-plugin/battmon.c:1073
+#: ../panel-plugin/battmon.c:1112 ../panel-plugin/battmon.c:1152
 msgid "Display a warning message"
 msgstr "Zobrazit varování"
 
-#: ../panel-plugin/battmon.c:1025
-#: ../panel-plugin/battmon.c:1076
+#: ../panel-plugin/battmon.c:1114 ../panel-plugin/battmon.c:1154
 msgid "Run command"
 msgstr "Spustit příkaz"
 
-#: ../panel-plugin/battmon.c:1028
-#: ../panel-plugin/battmon.c:1079
+#: ../panel-plugin/battmon.c:1116 ../panel-plugin/battmon.c:1156
 msgid "Run command in terminal"
 msgstr "Spustit příkaz v terminálu"
 
-#: ../panel-plugin/battmon.c:1043
-#: ../panel-plugin/battmon.c:1094
+#: ../panel-plugin/battmon.c:1128 ../panel-plugin/battmon.c:1168
 msgid "Command:"
 msgstr "Příkaz:"
 
-#: ../panel-plugin/battmon.c:1063
+#: ../panel-plugin/battmon.c:1144
 msgid "Critical battery action:"
 msgstr "Akce při kritickém stavu:"
 
-#: ../panel-plugin/battmon.c:1123
+#: ../panel-plugin/battmon.c:1191
 msgid "Display label"
 msgstr "Zobrazit popisek"
 
-#: ../panel-plugin/battmon.c:1127
+#: ../panel-plugin/battmon.c:1194
 msgid "Display percentage"
 msgstr "Zobrazit údaj v procentech"
 
-#: ../panel-plugin/battmon.c:1131
+#: ../panel-plugin/battmon.c:1197
+#, fuzzy
+msgid "Display time"
+msgstr "Zobrazit ikonu"
+
+#: ../panel-plugin/battmon.c:1200
 msgid "Display percentage in tooltip"
 msgstr "Zobrazit údaj v procentech jako tip"
 
-#: ../panel-plugin/battmon.c:1135
+#: ../panel-plugin/battmon.c:1203
 msgid "Display time remaining in tooltip"
 msgstr "Zobrazit zbývající čas jako tip"
 
-#: ../panel-plugin/battmon.c:1139
+#: ../panel-plugin/battmon.c:1206
 msgid "Display power"
 msgstr "Zobrazit úroveň nabití"
 
-#: ../panel-plugin/battmon.c:1143
+#: ../panel-plugin/battmon.c:1209
 msgid "Display icon"
 msgstr "Zobrazit ikonu"
 
@@ -141,3 +145,5 @@
 msgid "Show and monitor the battery status"
 msgstr "Zobrazit a monitorovat stav baterie"
 
+#~ msgid "Configure Battery Monitor"
+#~ msgstr "Nastavit sledování baterie"

Added: xfce4-battery-plugin/trunk/po/xfce4-battery-plugin.pot
===================================================================
--- xfce4-battery-plugin/trunk/po/xfce4-battery-plugin.pot	                        (rev 0)
+++ xfce4-battery-plugin/trunk/po/xfce4-battery-plugin.pot	2006-09-02 16:10:54 UTC (rev 1938)
@@ -0,0 +1,140 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-01 12:16+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../panel-plugin/battmon.c:401
+msgid "(Charging from AC)"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:401
+msgid "(AC on-line)"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:410
+#, c-format
+msgid "%d%% (%02d:%02d) remaining"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:412
+#, c-format
+msgid "%02d:%02d remaining"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:414
+#, c-format
+msgid "%d%% remaining"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:416
+msgid "AC off-line"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:479
+msgid ""
+"WARNING: Your battery has reached critical status. You should plug in or "
+"shutdown your computer now to avoid possible data loss."
+msgstr ""
+
+#: ../panel-plugin/battmon.c:493
+msgid ""
+"WARNING: Your battery is running low. You should consider plugging in or "
+"shutting down your computer soon to avoid possible data loss."
+msgstr ""
+
+#: ../panel-plugin/battmon.c:581
+msgid "Battery"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:981
+msgid "Select file"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1022
+msgid "Select command"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1052 ../panel-plugin/battmon.desktop.in.in.h:1
+msgid "Battery Monitor"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1080
+msgid "Low percentage:"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1091
+msgid "Critical percentage:"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1104
+msgid "Low battery action:"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1110 ../panel-plugin/battmon.c:1150
+msgid "Do nothing"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1112 ../panel-plugin/battmon.c:1152
+msgid "Display a warning message"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1114 ../panel-plugin/battmon.c:1154
+msgid "Run command"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1116 ../panel-plugin/battmon.c:1156
+msgid "Run command in terminal"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1128 ../panel-plugin/battmon.c:1168
+msgid "Command:"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1144
+msgid "Critical battery action:"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1191
+msgid "Display label"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1194
+msgid "Display percentage"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1197
+msgid "Display time"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1200
+msgid "Display percentage in tooltip"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1203
+msgid "Display time remaining in tooltip"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1206
+msgid "Display power"
+msgstr ""
+
+#: ../panel-plugin/battmon.c:1209
+msgid "Display icon"
+msgstr ""
+
+#: ../panel-plugin/battmon.desktop.in.in.h:2
+msgid "Show and monitor the battery status"
+msgstr ""




More information about the Goodies-commits mailing list