> > >> How can I use a Gtk2::SpinButton to prompt for an integer expressed in 
> > >> hex?  I've tried the following, but it fails.
> > >> 
> > >> ...
> > >> 
> > >> The text appears to be correct while I hold either arrow button down; I 
> > >> see hex values incrementing.  However, single clicks of an arrow button 
> > >> fail if the displayed text contains A-F.  Hitting the Enter key also 
> > >> fails on the same values.  In both cases, the text changes to a decimal 
> > >> integer.
> > > 
> > > What do the '$value's look like in the outputCB (either in a debugger or 
> > > ...).
> > 
> > With single clicks of the up arrow button, the values in outputCB() 
> > increment from 0 to 10.  10 correctly displays as A.  One more click of the 
> > up arrow calls outputCB() twice for some reason, the first time with a 
> > value of 0, and the second with a value of 1.  So visibly, 10 wraps to 1 
> > instead of 11, or B.  If I manually type 'FF' and hit the Enter key, 
> > outputCB() is called with a value of 0.  I've played with callbacks on the 
> > 'input' and 'changed' signals too, but nothing has worked so far.
> > 
> > I learned something else.  If I change the sprintf() to use '0x%X' instead 
> > of '%X', it seems to work.  It also works in octal with '0%o' and binary 
> > with '0b%b'.
> > 
> > Unfortunately, the '0x' prefix is unacceptable to my users.  Grr.  So I'm 
> > still in search of a way to spin a hex value, but with no '0x'.  Knowing 
> > this about the prefix, though, still may be useful to others wanting 
> > something similar.
> 
> Hi Jim
> 
> If that is the case can you not use chain the sprintf through substr?
> 
> e.g.
> 
> >       $spin->set_text(substr (sprintf '0x%X',$value), 2);
> 
> which will drop the first 2 characters of the string that is printed > by 
> sprintf?

That's the same as what I had originally, which failed.

   $spin->set_text(sprintf('%X',$value));

Gtk2::SpinButton seems to spin hex values fine if the "0x" is in the string.  
Your substr() version and my original fail, I think, because the "0x" is 
missing.  My users, of course, don't want to type the "0x" since the input is 
always hex, and it's really a programming convention; not something for a user 
interface.

Thanks.

Jim

_______________________________________________
gtk-perl-list mailing list
gtk-perl-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-perl-list

Reply via email to