From 4010dd71f67f1f44a83678958d050ea2f9c7e539 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Mon, 27 Feb 2017 16:09:22 +0100 Subject: [PATCH] Support Prusa Control project files (.PRUS) by the GUI. --- lib/Slic3r/GUI.pm | 7 ++++--- lib/Slic3r/GUI/BedShapeDialog.pm | 2 +- lib/Slic3r/GUI/MainFrame.pm | 2 +- lib/Slic3r/GUI/Plater.pm | 2 +- utils/zsh/functions/_slic3r | 2 +- xs/xsp/Model.xsp | 2 ++ 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/Slic3r/GUI.pm b/lib/Slic3r/GUI.pm index 32da5d74f..6a85760cf 100644 --- a/lib/Slic3r/GUI.pm +++ b/lib/Slic3r/GUI.pm @@ -45,15 +45,16 @@ use Wx::Event qw(EVT_IDLE EVT_COMMAND); use base 'Wx::App'; use constant FILE_WILDCARDS => { - known => 'Known files (*.stl, *.obj, *.amf, *.xml)|*.stl;*.STL;*.obj;*.OBJ;*.amf;*.AMF;*.xml;*.XML', + known => 'Known files (*.stl, *.obj, *.amf, *.xml, *.prus)|*.stl;*.STL;*.obj;*.OBJ;*.amf;*.AMF;*.xml;*.XML;*.prus;*.PRUS', stl => 'STL files (*.stl)|*.stl;*.STL', obj => 'OBJ files (*.obj)|*.obj;*.OBJ', amf => 'AMF files (*.amf)|*.amf;*.AMF;*.xml;*.XML', + prus => 'PRUS files (*.prus)|*.prus;*.PRUS', ini => 'INI files *.ini|*.ini;*.INI', gcode => 'G-code files (*.gcode, *.gco, *.g, *.ngc)|*.gcode;*.GCODE;*.gco;*.GCO;*.g;*.G;*.ngc;*.NGC', svg => 'SVG files *.svg|*.svg;*.SVG', }; -use constant MODEL_WILDCARD => join '|', @{&FILE_WILDCARDS}{qw(known stl obj amf)}; +use constant MODEL_WILDCARD => join '|', @{&FILE_WILDCARDS}{qw(known stl obj amf prus)}; our $datadir; # If set, the "Controller" tab for the control of the printer over serial line and the serial port settings are hidden. @@ -370,7 +371,7 @@ sub open_model { || $Slic3r::GUI::Settings->{recent}{config_directory} || ''; - my $dialog = Wx::FileDialog->new($window // $self->GetTopWindow, 'Choose one or more files (STL/OBJ/AMF):', $dir, "", + my $dialog = Wx::FileDialog->new($window // $self->GetTopWindow, 'Choose one or more files (STL/OBJ/AMF/PRUS):', $dir, "", MODEL_WILDCARD, wxFD_OPEN | wxFD_MULTIPLE | wxFD_FILE_MUST_EXIST); if ($dialog->ShowModal != wxID_OK) { $dialog->Destroy; diff --git a/lib/Slic3r/GUI/BedShapeDialog.pm b/lib/Slic3r/GUI/BedShapeDialog.pm index 1ef787e70..065f165fe 100644 --- a/lib/Slic3r/GUI/BedShapeDialog.pm +++ b/lib/Slic3r/GUI/BedShapeDialog.pm @@ -281,7 +281,7 @@ sub _init_shape_options_page { sub _load_stl { my ($self) = @_; - my $dialog = Wx::FileDialog->new($self, 'Choose a file to import bed shape from (STL/OBJ/AMF):', "", "", &Slic3r::GUI::MODEL_WILDCARD, wxFD_OPEN | wxFD_FILE_MUST_EXIST); + my $dialog = Wx::FileDialog->new($self, 'Choose a file to import bed shape from (STL/OBJ/AMF/PRUS):', "", "", &Slic3r::GUI::MODEL_WILDCARD, wxFD_OPEN | wxFD_FILE_MUST_EXIST); if ($dialog->ShowModal != wxID_OK) { $dialog->Destroy; return; diff --git a/lib/Slic3r/GUI/MainFrame.pm b/lib/Slic3r/GUI/MainFrame.pm index 1e439963c..69a63ed5d 100644 --- a/lib/Slic3r/GUI/MainFrame.pm +++ b/lib/Slic3r/GUI/MainFrame.pm @@ -384,7 +384,7 @@ sub quick_slice { my $input_file; my $dir = $Slic3r::GUI::Settings->{recent}{skein_directory} || $Slic3r::GUI::Settings->{recent}{config_directory} || ''; if (!$params{reslice}) { - my $dialog = Wx::FileDialog->new($self, 'Choose a file to slice (STL/OBJ/AMF):', $dir, "", &Slic3r::GUI::MODEL_WILDCARD, wxFD_OPEN | wxFD_FILE_MUST_EXIST); + my $dialog = Wx::FileDialog->new($self, 'Choose a file to slice (STL/OBJ/AMF/PRUS):', $dir, "", &Slic3r::GUI::MODEL_WILDCARD, wxFD_OPEN | wxFD_FILE_MUST_EXIST); if ($dialog->ShowModal != wxID_OK) { $dialog->Destroy; return; diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index 17fa1aafe..6a519c4ef 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -2098,7 +2098,7 @@ sub OnDropFiles { @_ = (); # only accept STL, OBJ and AMF files - return 0 if grep !/\.(?:stl|obj|amf(?:\.xml)?)$/i, @$filenames; + return 0 if grep !/\.(?:stl|obj|amf(?:\.xml)?|prus)$/i, @$filenames; $self->{window}->load_file($_) for @$filenames; } diff --git a/utils/zsh/functions/_slic3r b/utils/zsh/functions/_slic3r index 72957c4eb..56a198ae9 100644 --- a/utils/zsh/functions/_slic3r +++ b/utils/zsh/functions/_slic3r @@ -111,7 +111,7 @@ _arguments -S \ '--support-material-extrusion-width[specify extrusion width for support material]:support material extrusion width in mm or % of --layer-height' \ '--bridge-flow-ratio[specify multiplier for extrusion when bridging]:bridge extrusion multiplier' \ \ - '*:input file:_files -g "*.(#i)(stl|obj|amf|xml)(-.)"' + '*:input file:_files -g "*.(#i)(stl|obj|amf|xml|prus)(-.)"' # Local Variables: *** # mode:sh *** diff --git a/xs/xsp/Model.xsp b/xs/xsp/Model.xsp index 1b3dd0209..4f184f359 100644 --- a/xs/xsp/Model.xsp +++ b/xs/xsp/Model.xsp @@ -135,6 +135,8 @@ load_prus(CLASS, path) delete RETVAL; RETVAL = NULL; } +#else + RETVAL = nullptr; #endif OUTPUT: RETVAL