Re: EXTERNAL: Re: Gtk2::SpinButton For Hex



On Wed, May 20, 2015 at 05:23:53PM +0000, Williams, James P2 wrote:
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?

Bob

<SNIP>

On Tue, May 19, 2015 at 10:22:51PM +0000, Williams, James P2 wrote:
How can I use a Gtk2::SpinButton to prompt for an integer expressed in hex?  I've tried the following, 
but it fails.

   use strict;
   use warnings;

   use Glib qw(TRUE FALSE);
   use Gtk2 qw(-init);

   my($spin)=Gtk2::SpinButton->new_with_range(0,1000,1);
   $spin->set_numeric(FALSE);
   $spin->signal_connect(output => \&outputCB);

   my($win)=new Gtk2::Window();
   $win->add($spin);
   $win->show_all();

   Gtk2->main();

   sub outputCB
   {
      my($spin)= _;
      my($value)=$spin->get_adjustment()->get_value();

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

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.

Thanks.

Jim

Hi Jim

What do the '$value's look like in the outputCB (either in a debugger or ...).

sprint - should be sprintf?

Maybe try set_value or set_digits rather than set_text?

How are any of these impacted by the set_numeric statement?

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


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