[Goodies-commits] r7877 - in xfce4-power-manager/trunk: . src

Ali Abdallah aliov at xfce.org
Fri Jul 31 16:29:39 CEST 2009


Author: aliov
Date: 2009-07-31 14:29:39 +0000 (Fri, 31 Jul 2009)
New Revision: 7877

Modified:
   xfce4-power-manager/trunk/ChangeLog
   xfce4-power-manager/trunk/src/xfpm-brightness-widget.c
Log:
	* Get rid of the cairo OSD and use a gtk based one instead
	as the old one seems to be problematic on some hardware.

Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog	2009-07-31 06:40:10 UTC (rev 7876)
+++ xfce4-power-manager/trunk/ChangeLog	2009-07-31 14:29:39 UTC (rev 7877)
@@ -1,3 +1,7 @@
+2009-07-31: Ali aliov at xfce.org
+	* Get rid of the cairo OSD and use a gtk based one instead
+	as the old one seems to be problematic on some hardware.
+
 2009-07-30: Ali aliov at xfce.org
 	* Fix a typo that prevents from getting the correct 
 	critical configuration.

Modified: xfce4-power-manager/trunk/src/xfpm-brightness-widget.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-brightness-widget.c	2009-07-31 06:40:10 UTC (rev 7876)
+++ xfce4-power-manager/trunk/src/xfpm-brightness-widget.c	2009-07-31 14:29:39 UTC (rev 7877)
@@ -52,7 +52,7 @@
 {
     XfpmDBusMonitor     *monitor;
     GtkWidget 		*window;
-    GdkPixbuf 		*pix;
+    GtkWidget           *progress_bar;
     
     guint      		 level;
     guint      		 max_level;
@@ -143,60 +143,7 @@
     return FALSE;
 }
 
-static gboolean
-xfpm_brightness_widget_expose_event (GtkWidget *w, GdkEventExpose *ev, XfpmBrightnessWidget *widget)
-{
-    cairo_t *cr;
-    gdouble width;
-    gdouble padding;
-    guint i;
-
-    g_return_val_if_fail (widget->priv->max_level != 0, FALSE );
-
-    cr = gdk_cairo_create (widget->priv->window->window);
-
-    cairo_set_source_rgba (cr, 1.0f, 1.0f, 1.0f, 0.0f);
-    cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
-    cairo_paint (cr); 
-    
-    gdk_cairo_set_source_pixbuf (cr, widget->priv->pix,  (180 - 128)/2, 0);
-    cairo_paint (cr);
-    
-    width = (gdouble)  (180-20) / widget->priv->max_level;
-    padding = width /10;
-    cairo_translate (cr, 10, 0);
-    
-    for ( i = 0; i < widget->priv->max_level; i++) 
-    {
-	if ( i >= widget->priv->level )
-	{
-	    cairo_set_source_rgb (cr, 0., 0., 0.);
-	}
-	else
-	{
-	    cairo_set_source_rgb (cr, 1., 1.0, 0.0);
-	}
-	cairo_rectangle (cr, (gdouble)i*width, 130, width - padding , 20);
-	cairo_fill (cr);
-    }
-
-    cairo_destroy (cr);
-    return TRUE;
-}
-
 static void
-xfpm_brightness_widget_set_colormap (GtkWidget *widget)
-{
-    GdkScreen *screen = gtk_widget_get_screen (widget);
-    GdkColormap* colmap = gdk_screen_get_rgba_colormap (screen);
-  
-    if (!colmap)
-	colmap = gdk_screen_get_rgb_colormap (screen);
-  
-    gtk_widget_set_colormap (widget, colmap);
-}
-
-static void
 xfpm_brightness_widget_class_init (XfpmBrightnessWidgetClass *klass)
 {
     GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -209,9 +156,20 @@
 static void
 xfpm_brightness_widget_init (XfpmBrightnessWidget *widget)
 {
+    GtkWidget *vbox;
+    GtkWidget *img;
+    GtkWidget *align;
+    
     widget->priv = XFPM_BRIGHTNESS_WIDGET_GET_PRIVATE (widget);
+    
     widget->priv->monitor = xfpm_dbus_monitor_new ();
     
+    widget->priv->level  = 0;
+    widget->priv->max_level = 0;
+    widget->priv->timeout_id = 0;
+    widget->priv->notify_osd = FALSE;
+    widget->priv->check_server_caps = TRUE;
+    
     xfpm_dbus_monitor_add_service (widget->priv->monitor, 
 				   DBUS_BUS_SESSION,
 				   "org.freedesktop.Notifications");
@@ -230,26 +188,31 @@
 		  "app-paintable", TRUE,
 		  NULL);
 
+    gtk_window_set_default_size (GTK_WINDOW (widget->priv->window), BRIGHTNESS_POPUP_SIZE, BRIGHTNESS_POPUP_SIZE);
     
-    widget->priv->level  = 0;
-    widget->priv->max_level = 0;
-    widget->priv->timeout_id = 0;
-    widget->priv->notify_osd = FALSE;
-    widget->priv->check_server_caps = TRUE;
-
-    gtk_widget_set_size_request (GTK_WIDGET (widget->priv->window), BRIGHTNESS_POPUP_SIZE, BRIGHTNESS_POPUP_SIZE);
+    align = gtk_alignment_new (0., 0.5, 0, 0);
+    gtk_alignment_set_padding (GTK_ALIGNMENT (align), 5, 5, 5, 5);
     
-    widget->priv->pix = xfpm_load_icon ("xfpm-brightness-lcd", 128);
+    vbox = gtk_vbox_new (FALSE, 0);
     
-    xfpm_brightness_widget_set_colormap (GTK_WIDGET (widget->priv->window));
-
-    g_signal_connect (widget->priv->window, "expose_event",
-		      G_CALLBACK (xfpm_brightness_widget_expose_event), widget);
-		      
+    gtk_container_add (GTK_CONTAINER (widget->priv->window), align);
+    gtk_container_add (GTK_CONTAINER (align), vbox);
+    
+    img = gtk_image_new_from_icon_name ("xfpm-brightness-lcd", GTK_ICON_SIZE_DIALOG);
+    
+    gtk_box_pack_start (GTK_BOX (vbox), img, TRUE, TRUE, 0);
+    
+    widget->priv->progress_bar = gtk_progress_bar_new ();
+    
+    gtk_box_pack_start (GTK_BOX (vbox), widget->priv->progress_bar, TRUE, TRUE, 0);
+    
+    gtk_widget_show_all (align);
+    
     widget->priv->n = notify_notification_new (" ",
 					       "",
 					       NULL,
 					       NULL);
+					       
 }
 
 static void
@@ -259,15 +222,14 @@
 
     widget = XFPM_BRIGHTNESS_WIDGET (object);
     
-    if ( widget->priv->pix )
-	gdk_pixbuf_unref (widget->priv->pix);
-	
     if ( g_signal_handler_is_connected (G_OBJECT (widget->priv->monitor), widget->priv->sig_1) )
 	g_signal_handler_disconnect (G_OBJECT (widget->priv->monitor), widget->priv->sig_1);
 	
     g_object_unref (widget->priv->n);
     g_object_unref (widget->priv->monitor);
 
+    gtk_widget_destroy (widget->priv->window);
+
     G_OBJECT_CLASS (xfpm_brightness_widget_parent_class)->finalize (object);
 }
 
@@ -282,13 +244,24 @@
 
 void xfpm_brightness_widget_set_max_level (XfpmBrightnessWidget *widget, guint level)
 {
+    GtkObject *adj;
+    
     g_return_if_fail (XFPM_IS_BRIGHTNESS_WIDGET (widget));
 
+    adj = gtk_adjustment_new (0., 0., level, 1., 0., 0.);
+
     widget->priv->max_level = level;
+    
+    g_object_set (G_OBJECT (widget->priv->progress_bar),
+		  "adjustment", adj,
+		  NULL);
+    
 }
 
 void xfpm_brightness_widget_set_level (XfpmBrightnessWidget *widget, guint level)
 {
+    GtkAdjustment *adj;
+    
     g_return_if_fail (XFPM_IS_BRIGHTNESS_WIDGET (widget));
     
     widget->priv->level = level;
@@ -305,6 +278,12 @@
     }
     else
     {
+	g_object_get (G_OBJECT (widget->priv->progress_bar),
+		      "adjustment", &adj,
+		      NULL);
+	
+	gtk_adjustment_set_value (adj, level);
+	
 	gtk_window_present (GTK_WINDOW (widget->priv->window));
 	
 	if ( widget->priv->timeout_id != 0 )




More information about the Goodies-commits mailing list