Re: Clean Shutdown

Steve Cookson - gmail <[email protected]> Sat, 31 Jan 2015 16:25:37 -0300
Newsgroups gmane.comp.lang.perl.wxperl
Message-ID <[email protected]>
Hi James,

You're right it does segfault, I didn't notice.

I've had that before but I can't remember why. I'll look into it. Anyone 
else any ideas?

Regards

Steve.


On 30/01/15 20:59, James Lynes wrote:
> Steve:
>
> The exit(0) seems to be causing a segmentation fault. Any Ideas?
>
> Latest version of the code is attached.
>
> Thanks,
> James
>
>
> On Thu, Jan 29, 2015 at 4:29 PM, James Lynes <[email protected] 
> <mailto:[email protected]>> wrote:
>
>     Steve:
>
>     I believe I looked at Glade a couple of years ago. Seems it kept
>     crashing on me so I just went back to the old manual method.
>
>     Thanks for the sample code.
>
>     James
>
>
>     On Thu, Jan 29, 2015 at 12:28 PM, Steve Cookson - gmail
>     <[email protected] <mailto:[email protected]>> wrote:
>
>         Hi James,
>
>         I've replied to the list as well because I feel it needs a bit
>         of loving!
>
>         On 28/01/15 18:23, James Lynes wrote:
>
>             Hi Steve:
>
>             How's your project rollout going?
>
>         Very kind of you to ask.  The launch went very well, since
>         then we have been dealing with the manufacturer and we are
>         working to a delivery of the first batch to Brazil by the end
>         of March. Our Brazilian salesman is confident that he will
>         sell all the first batch without too much difficulty.
>
>             What's the accepted method to shutdown an application?
>
>             I can use die, but there must be a WX call that should be
>             used. I don't want to leave a frame open on the screen
>             that has to be closed manually.
>
>             Example using die is attached. (Wrapper around a command
>             line application)
>
>
>         The short answer to your question is probably "exit(0);"
>         called from an exit button.
>
>         However, the longer answer is did you ever see wxGlade?
>
>         I don't know whether wxGlade was ever converted to 3.0.x, but
>         it did work on 2.8 and I thought 2.9. It's a wonderful way to
>         get started with all the Wx paradigms.  I used it extensively
>         at the beginning.
>
>         I re-wrote the OnInit subroutine as below.  It uses
>         Wx::BoxSizer and Wx::Events, both of which will help your
>         application.  I also used Wx::FilePickerCtrl as a control to
>         get the .pdf file.
>
>         Have fun with it.
>
>         Best regards
>
>         Steve.
>
>
>         sub OnInit {
>
>             my $parent  = shift;
>
>
>             my $frame = Wx::Frame->new(undef, wxID_ANY, "",
>         wxDefaultPosition, wxDefaultSize );
>
>             $parent->SetTopWindow($frame);
>
>             #Create controls
>             # Fields
>             my $pdfLabel=Wx::StaticText->new($frame, wxID_ANY,"PDF
>         file", wxDefaultPosition, wxDefaultSize);
>             my $pdfFilePicker=Wx::FilePickerCtrl->new($frame,
>         wxID_ANY, "", "Pick a folder","*.pdf",wxDefaultPosition,
>         [200,-1],
>         wxDIRP_DIR_MUST_EXIST|wxDIRP_CHANGE_DIR|wxDIRP_USE_TEXTCTRL);
>             $pdfFilePicker->SetPath("/home/image/");
>             my $cropLabel=Wx::StaticText->new($frame, wxID_ANY,"crop
>         string", wxDefaultPosition, wxDefaultSize);
>             my $cropStringText=Wx::TextCtrl->new($frame,
>         wxID_ANY,"crop string", wxDefaultPosition, [200,-1]);
>             # Buttons
>             my $okButton = Wx::Button->new($frame, wxID_OK, "",
>         wxDefaultPosition, wxDefaultSize);
>             my $cancelButton = Wx::Button->new($frame, wxID_CANCEL,
>         "", wxDefaultPosition, wxDefaultSize);
>
>             # Create sizers.
>             my $verticalSizerFrame = Wx::BoxSizer->new(wxVERTICAL);
>             $frame->SetSizer($verticalSizerFrame);
>             my $verticalSizerControls = Wx::BoxSizer->new(wxVERTICAL);
>             my $horizontalSizerButtons = Wx::BoxSizer->new(wxHORIZONTAL);
>             # Lay 'em out.
>             $verticalSizerFrame->Add($verticalSizerControls,0,0,0);
>             $verticalSizerFrame->Add($horizontalSizerButtons,0,0,0);
>
>             $verticalSizerControls->Add($pdfLabel,0,0,0);
>             $verticalSizerControls->Add($pdfFilePicker,0,0,0);
>             $verticalSizerControls->Add($cropLabel,0,0,0);
>             $verticalSizerControls->Add($cropStringText,0,0,0);
>
>             $horizontalSizerButtons->Add($okButton,0,0,0);
>             $horizontalSizerButtons->Add($cancelButton,0,0,0);
>
>             # Event handlers
>             Wx::Event::EVT_BUTTON($frame, $okButton, sub {
>             my ($self, $event) = @_;
>                 exit (0);
>             });
>
>             $verticalSizerFrame->Layout();
>
>             $frame->Show(1);
>
>         }
>
>
>             Thanks,
>             James
>
>
>
>