Re: Need help with GtkColorButton in sawfish



Hi all,

I just found out, that rep-gtks glue-code-generator supports both
auto-generated functions (gtk.defs) and self-written ones (gtk-compat +
rpe-gtk.h + gtk.defs), so I simply wrote the c-function
gtk_color_button_get_color_interp, which outputs the GdkColor in 6
digits hexformat, so that we don't need to additionally modify the
output string.

So now sawfish-ui uses the GtkColorButton widget for changing colors,
previously it used GtkButton + GtkPreview + GtkColorSelection. Of course
that's o.k., but:

a) GtkPreview is deprecated (droped from gtk3)
b) GtkColorButton provides all that in a single widget -> less code

Have Fun,
Chris 

Am Mittwoch, den 29.07.2009, 16:46 +0200 schrieb Christopher Roy
Bratusek:
> Hi all,
> 
> I just began finishing the GtkPreview/GtkColorSelection to
> GtkColorButton transistion in sawfish-ui, but now I began struggling
> around T_T
> 
> You'll need rep-gtk 0.90 HEAD to be able to test (I've added the
> GtkColorButton Widget to it there)
> 
> First of all the patch:
> 
> ================================================
> diff --git a/lisp/sawfish/gtk/widgets/color.jl
> b/lisp/sawfish/gtk/widgets/color.jl
> index ae07e20..7cdbcae 100644
> --- a/lisp/sawfish/gtk/widgets/color.jl
> +++ b/lisp/sawfish/gtk/widgets/color.jl
> @@ -26,50 +26,30 @@
>      (open rep
>  	  gui.gtk-2.gtk
>  	  rep.regexp
> -	  sawfish.gtk.widget
> -	  sawfish.gtk.color-preview)
> +	  sawfish.gtk.widget)
>  
>    (defconst default-color "#000000")
>  
>    (define (make-color-item changed-callback)
>      (let* ((value default-color)
> -	   (button (button-new-with-color value)))
> -      (g-signal-connect
> -       button "clicked"
> +	   (button (gtk-color-button-new-with-color (gdk-color-parse-interp
> value))))
> +      (g-signal-connect button "color-set"
>         (lambda ()
> -	 (let ((colorsel (gtk-color-selection-dialog-new (_ "Select color"))))
> -	   (gtk-color-selection-set-color-interp
> -	    (gtk-color-selection-dialog-colorsel colorsel)
> -	    (gdk-color-parse-interp value))
> -	   (g-signal-connect
> -	    (gtk-color-selection-dialog-ok-button colorsel) "clicked"
> -	    (lambda ()
> -	      (let ((color (gtk-color-selection-get-color-interp
> -			    (gtk-color-selection-dialog-colorsel colorsel))))
> -		(setq value (format nil "#%04x%04x%04x"
> -				    (gdk-color-red color)
> -				    (gdk-color-green color)
> -				    (gdk-color-blue color)))
> -		(set-button-color button value)
> -		(call-callback changed-callback)
> -		(gtk-widget-destroy colorsel))))
> -	   (g-signal-connect
> -	    (gtk-color-selection-dialog-cancel-button colorsel) "clicked"
> -	    (lambda () (gtk-widget-destroy colorsel)))
> -	   (g-signal-connect colorsel "delete_event"
> -			       (lambda () (gtk-widget-destroy colorsel)))
> -	   (gtk-widget-hide (gtk-color-selection-dialog-help-button colorsel))
> -	   (gtk-widget-show colorsel)
> -	   (gtk-grab-add colorsel))))
> -      (gtk-widget-show button)
> +         (let ((color (gtk-color-button-get-color button color)))
> +	   (setq value (format nil "#%04x%04x%04x"
> +	     (gdk-color-red color)
> +	     (gdk-color-blue color)
> +	     (gdk-color-green color)))
> +	     (call-callback changed-callback))))
> +       (gtk-widget-show button)
>        (lambda (op)
>  	(case op
>  	  ((set) (lambda (x)
>  		   (setq value x)
> -		   (set-button-color button value)))
> +		   (gtk-color-button-set-color button (gdk-color-parse-interp
> value))))
>  	  ((clear) (lambda ()
>  		     (setq value default-color)
> -		     (set-button-color button nil)))
> +		     (gtk-color-button-set-color button (gdk-color-parse-interp
> value))))
>  	  ((ref) (lambda () value))
>  	  ((gtk-widget) button)
>  	  ((validp) (lambda (x)
> ================================================
> 
> as you can see I want to grab the GdkColor via the following call:
> 
> gtk-color-button-get-color arg1 arg2
> 
> arg1 is the widget (here: button)
> arg2 is the variable to save the color in, but how do I declare the type
> of the variable color as GdkColor? Or should I do it in an other way?
> 
> Everything else is already working, but without beeing able to actually
> set a new color it's quite useless. I really hope you can help me. 
> 
> If I finished it, gtk/color-preview can be safely removed and sawfish-ui
> is a bit more gtk1(!)-stuff free. Well, there are more gtk1 widgets
> (they are still part of gtk2, but will be removed in gtk3 AFAIK) in
> sawfish-ui: GtkCombo (new one: GtkCombobox and GtkComboboxEntry),
> GtkTree (new one: GtkTreeView) and GtkClist (new one: GtkTreeView) so
> it's still a long way to go.
> 
> Thanks in advance,
> Chris
> 
> 




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]