[Kde-perl] Why isn't this easy? implementing File->New
darrik
darrik at mythofbutterfly.com
Wed Aug 2 01:35:00 CEST 2006
I've found this works, and I'm thinking it has to do with variables
going out of scope, automagic destructors, and perl garbage collecting.
sub processFileMenu {
if ($option==FILENEW) {
our $newwin->{this()}=MyView();
$newwin->{this()}->show();
}
}
I haven't gotten any subclasses to work with "my" variables allocated in
subs, so I've been using this workaround throughout.
If someone has a better idea, I'd love to hear it.
(Also, from the example you can see the main:: namespace is unecessary
on your call to MyView().)
Darrik Mazey
Joe Carlson wrote:
> I am liking PerlQt. At last, some real widgets that enable access to our
> Perl infrastructure. I'm a convert.
>
> Nonetheless, a problem. I'd like to implement a "File->New" menu action
> to open a new instance of the main window. In the c++ version, this is
> trivial:
>
> void MyView::processFileMenu(int option)
> {
> if (option == FILENEW) {
> MyView *newWindow = new MyView();
> newWindow->show();
> }
> ...
>
> and that's it. the new window opens and I have an event loop responding
> to it.
>
> The corresponding perl version (inside MyView.pm which subclasses
> Qt::MainWindow):
>
> package MyView;
> ...
> use constant FILENEW=>1;
> ...
> sub processFileMenu
> {
> my $option = shift;
> if ($option == FILENEW) {
> my $newWindow = main::MyView();
> $newWindow->show;
> }
> ...
>
> is not as successful. I can see from the perl debugger that I am calling
> MyView::NEW and I am creating a new instance of the main window. But
> nothing shows up on the screen. The X event loop continues to process
> events from the original main window.
>
> Am I correct in assuming that I need to invoke the constructor from the
> namespace main::? I have been unable to find any other legitimate way to
> call it. Are there any alternatives for creating new instances of these
> classes directly?
>
> I looked at some of the trace output from the debugger, and I am left
> with the impression that there may be some processing that happens only
> the first time a module is autoloaded that prevents new instances from
> getting processed by the metaObject-izer.
>
> Anyone have a suggestion? I haven't stumbled over the solution yet.
>
> Thanks,
>
> Joe
>
>
>
> _______________________________________________
> Kde-perl mailing list
> Kde-perl at kde.org
> https://mail.kde.org/mailman/listinfo/kde-perl
>
More information about the Kde-perl
mailing list