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 > > > >