Merge pull request #263 from eras/reslice

Added a Reslicing-function to the File menu.
This commit is contained in:
Alessandro Ranellucci 2012-03-12 10:59:47 -07:00
commit 7a4b43f8c5
2 changed files with 32 additions and 6 deletions

View File

@ -35,12 +35,14 @@ sub OnInit {
$fileMenu->Append(2, "Open Config…"); $fileMenu->Append(2, "Open Config…");
$fileMenu->AppendSeparator(); $fileMenu->AppendSeparator();
$fileMenu->Append(3, "Slice…"); $fileMenu->Append(3, "Slice…");
$fileMenu->Append(4, "Slice and Save As…"); $fileMenu->Append(4, "Reslice");
$fileMenu->Append(5, "Slice and Save As…");
$menubar->Append($fileMenu, "&File"); $menubar->Append($fileMenu, "&File");
EVT_MENU($frame, 1, sub { $panel->save_config }); EVT_MENU($frame, 1, sub { $panel->save_config });
EVT_MENU($frame, 2, sub { $panel->load_config }); EVT_MENU($frame, 2, sub { $panel->load_config });
EVT_MENU($frame, 3, sub { $panel->do_slice }); EVT_MENU($frame, 3, sub { $panel->do_slice });
EVT_MENU($frame, 4, sub { $panel->do_slice(save_as => 1) }); EVT_MENU($frame, 4, sub { $panel->do_slice(reslice => 1) });
EVT_MENU($frame, 5, sub { $panel->do_slice(save_as => 1) });
$box->SetSizeHints($frame); $box->SetSizeHints($frame);
$frame->SetSizer($box); $frame->SetSizer($box);

View File

@ -11,6 +11,8 @@ use base 'Wx::Panel';
my $last_skein_dir; my $last_skein_dir;
my $last_config_dir; my $last_config_dir;
my $last_input_file;
my $last_output_file;
our $last_config; our $last_config;
sub new { sub new {
@ -179,9 +181,26 @@ sub do_slice {
# select input file # select input file
my $dir = $last_skein_dir || $last_config_dir || ""; my $dir = $last_skein_dir || $last_config_dir || "";
my $input_file;
if (!$params{reslice}) {
my $dialog = Wx::FileDialog->new($self, 'Choose a STL or AMF file to slice:', $dir, "", $model_wildcard, wxFD_OPEN); my $dialog = Wx::FileDialog->new($self, 'Choose a STL or AMF file to slice:', $dir, "", $model_wildcard, wxFD_OPEN);
return unless $dialog->ShowModal == wxID_OK; return unless $dialog->ShowModal == wxID_OK;
my ($input_file) = $dialog->GetPaths; $input_file = $dialog->GetPaths;
$last_input_file = $input_file;
} else {
if (!defined $last_input_file) {
Wx::MessageDialog->new($self, "No previously sliced file",
'Confirm', wxICON_ERROR | wxOK)->ShowModal();
return;
}
if (! -e $last_input_file) {
Wx::MessageDialog->new($self, "Cannot find previously sliced file!",
'Confirm', wxICON_ERROR | wxOK)->ShowModal();
return;
}
$input_file = $last_input_file;
}
my $input_file_basename = basename($input_file); my $input_file_basename = basename($input_file);
$last_skein_dir = dirname($input_file); $last_skein_dir = dirname($input_file);
@ -197,12 +216,17 @@ sub do_slice {
); );
# select output file # select output file
if ($params{save_as}) { if ($params{reslice}) {
if (defined $last_output_file) {
$skein->output_file($last_output_file);
}
} elsif ($params{save_as}) {
my $output_file = $skein->expanded_output_filepath; my $output_file = $skein->expanded_output_filepath;
my $dlg = Wx::FileDialog->new($self, 'Save gcode file as:', dirname($output_file), my $dlg = Wx::FileDialog->new($self, 'Save gcode file as:', dirname($output_file),
basename($output_file), $gcode_wildcard, wxFD_SAVE); basename($output_file), $gcode_wildcard, wxFD_SAVE);
return if $dlg->ShowModal != wxID_OK; return if $dlg->ShowModal != wxID_OK;
$skein->output_file($dlg->GetPath); $skein->output_file($dlg->GetPath);
$last_output_file = $dlg->GetPath;
} }
# show processbar dialog # show processbar dialog