RE: EXTERNAL: Re: Gtk2::SpinButton For Hex
- From: "Williams, James P2" <james p2 williams lmco com>
- To: "'Robert Wilkinson'" <bob fourtheye org>
- Cc: "'gtk-perl-list gnome org'" <gtk-perl-list gnome org>
- Subject: RE: EXTERNAL: Re: Gtk2::SpinButton For Hex
- Date: Wed, 20 May 2015 17:23:53 +0000
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.
sprint - should be sprintf?
Sorry about the "sprint". We're on a closed network; that was a transcription typo.
Maybe try set_value or set_digits rather than set_text?
I think I have to call set_text() to see the hex version in the entry. I have tried calling set_value() too,
both before and after set_text(). That gives me the same behavior: spinning seems to work, but single
clicks wrap to 0 or 1 as soon as I reach a number containing [A-F]+.
On set_digits(), I'm spinning integers, so I've left it at the default, 0. It wouldn't make sense being any
other value, if I understand its purpose.
How are any of these impacted by the set_numeric statement?
I've set this to FALSE, since I have to allow A-F to be typed into the entry. Otherwise, those key events
are ignored.
Thanks for any other ideas you may have.
Jim
-----Original Message-----
From: Robert Wilkinson [mailto:bob fourtheye org]
Sent: Wednesday, May 20, 2015 3:12 AM
To: Williams, James P2
Cc: 'gtk-perl-list gnome org'
Subject: EXTERNAL: Re: Gtk2::SpinButton For Hex
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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]