Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

WxGrid returning a scalar

by benn (Vicar)
on Jul 23, 2003 at 00:44 UTC ( [id://276979]=perlquestion: print w/replies, xml ) Need Help??

benn has asked for the wisdom of the Perl Monks concerning the following question:

Greetings Monks,

Unlike all the rest of the WxPerl objects, WxGrid->new() seems to return a scalar rather than a hashref (thus preventing me from subclassing it), as shown below.

use Wx qw(:everything ); use Wx::Grid; *Wx::App::OnInit = sub {1}; my $a = Wx::App->new; my $f = Wx::Frame->new( undef, -1,''); my $p= Wx::Panel->new($f,-1); my $s= Wx::ScrolledWindow->new($p,-1); #Grid derives from this my $g = Wx::Grid->new($p,-1); print "$p\n$s\n$g\n";
...which prints
Wx::Panel=HASH(0xdeadbeef) Wx::ScrolledWindow=HASH(0xbaddeed) Wx::Grid=SCALAR(0xfeeddad)
...under ActiveState 5.8.0 with WxPerl 0.15, using the 8xx PPM fom the WXPerl site.

There was no Wx_Grid defined in the distro's typemap, (everything else is a 'O_WXOBJECT') so I presumed this was the root of the problem, but as nobody here or on the WxPerl mailing list seems to have posted anything about this, I wondered if I was missing something?

Cheers,
Ben

Replies are listed 'Best First'.
Re: WxGrid returning a scalar
by PodMaster (Abbot) on Jul 23, 2003 at 04:22 UTC
    Yes, you didn't post on the list ;)(seeing how fresh wxPerl is, anyone who knows anything is subscribed to the list) Wx-0.15/ext/grid/typemap says:
    Wx_Grid * O_WXOBJECT wxGrid * O_WXOBJECT
    In theory, you should be able to subclass it , but those bits may not be finished yet, the readme says:
    DEPRECATIONS The following features have been deprecated and may disappear in the f +uture 1 - class->new always returning an hash reference until now calling ->new( ... ) returned an hash reference for most classes derived from Wx::Window, hence the following code worked: my $button = Wx::Button->new( ... ); $button->{attribute} = 'value'; At some point in the future this will be changed so that only _user-defined_ classes derived from Wx::Window (or from any class derived from Wx::Window) will yield an hash reference, hence the following code will not wo +rk: my $button = Wx::Button->new( ... ); my $window = Wx::Window->new( ... ); $button->{a} = 'b'; $window->{c} = 'd'; while the following code will work as it did before: my $button = MyButton->new( ... ); # MyButton ISA Wx::Button my $window = MyWindow->new( ... ); # MyWindow ISA Wx::Window $button->{a} = 'b'; $window->{c} = 'd';

    MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
    I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
    ** The third rule of perl club is a statement of fact: pod is sexy.

      Ah...that'd explain it :) The PPM didn't include the readme, so I missed that bit. I'm not sure how one is supposed to turn a scalarref into a hashref though simply by deriving a new class... if '$class->SUPER::new()' returns a scalarref, then you're stuck with that as the 'base' of the derived class, surely? (...and I *have* tried, btw, with evey single bl**din' combination of re-re-blessing multiple-inherited refs to derived hashes-of-hashrefs that I can think of...{g} )

      Thanks,
      Ben

        This looks like a bug to me. There are other subclasses of Wx::Window that don't return hash reference when subclassed. For example, Wx::STC. Please post to the mailing list

        -- simonflk

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://276979]
Approved by Enlil
Front-paged by broquaint
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others meditating upon the Monastery: (3)
As of 2025-06-17 17:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.