mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-10-22 16:21:24 -06:00
Initial implementation of configuration snapshotting.
This commit is contained in:
parent
2b8da333ef
commit
670061ac33
11 changed files with 787 additions and 31 deletions
48
xs/src/libslic3r/FileParserError.hpp
Normal file
48
xs/src/libslic3r/FileParserError.hpp
Normal file
|
@ -0,0 +1,48 @@
|
|||
#ifndef slic3r_FileParserError_hpp_
|
||||
#define slic3r_FileParserError_hpp_
|
||||
|
||||
#include "libslic3r.h"
|
||||
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
|
||||
namespace Slic3r {
|
||||
|
||||
// Generic file parser error, mostly copied from boost::property_tree::file_parser_error
|
||||
class file_parser_error: public std::runtime_error
|
||||
{
|
||||
public:
|
||||
file_parser_error(const std::string &msg, const std::string &file, unsigned long line = 0) :
|
||||
std::runtime_error(format_what(msg, file, line)),
|
||||
m_message(msg), m_filename(file), m_line(line) {}
|
||||
// gcc 3.4.2 complains about lack of throw specifier on compiler
|
||||
// generated dtor
|
||||
~file_parser_error() throw() {}
|
||||
|
||||
// Get error message (without line and file - use what() to get full message)
|
||||
std::string message() const { return m_message; }
|
||||
// Get error filename
|
||||
std::string filename() const { return m_filename; }
|
||||
// Get error line number
|
||||
unsigned long line() const { return m_line; }
|
||||
|
||||
private:
|
||||
std::string m_message;
|
||||
std::string m_filename;
|
||||
unsigned long m_line;
|
||||
|
||||
// Format error message to be returned by std::runtime_error::what()
|
||||
static std::string format_what(const std::string &msg, const std::string &file, unsigned long l)
|
||||
{
|
||||
std::stringstream stream;
|
||||
stream << (file.empty() ? "<unspecified file>" : file.c_str());
|
||||
if (l > 0)
|
||||
stream << '(' << l << ')';
|
||||
stream << ": " << msg;
|
||||
return stream.str();
|
||||
}
|
||||
};
|
||||
|
||||
}; // Slic3r
|
||||
|
||||
#endif // slic3r_FileParserError_hpp_
|
|
@ -60,9 +60,6 @@ extern std::string timestamp_str();
|
|||
// to be placed at the top of Slic3r generated files.
|
||||
inline std::string header_slic3r_generated() { return std::string("generated by " SLIC3R_FORK_NAME " " SLIC3R_VERSION " " ) + timestamp_str(); }
|
||||
|
||||
// Encode a file into a multi-part HTTP response with a given boundary.
|
||||
std::string octoprint_encode_file_send_request_content(const char *path, bool select, bool print, const char *boundary);
|
||||
|
||||
// Compute the next highest power of 2 of 32-bit v
|
||||
// http://graphics.stanford.edu/~seander/bithacks.html
|
||||
template<typename T>
|
||||
|
|
|
@ -263,7 +263,6 @@ namespace PerlUtils {
|
|||
std::string timestamp_str()
|
||||
{
|
||||
const auto now = boost::posix_time::second_clock::local_time();
|
||||
const auto date = now.date();
|
||||
char buf[2048];
|
||||
sprintf(buf, "on %04d-%02d-%02d at %02d:%02d:%02d",
|
||||
// Local date in an ANSII format.
|
||||
|
@ -272,31 +271,4 @@ std::string timestamp_str()
|
|||
return buf;
|
||||
}
|
||||
|
||||
std::string octoprint_encode_file_send_request_content(const char *cpath, bool select, bool print, const char *boundary)
|
||||
{
|
||||
// Read the complete G-code string into a string buffer.
|
||||
// It will throw if the file cannot be open or read.
|
||||
std::stringstream str_stream;
|
||||
{
|
||||
boost::nowide::ifstream ifs(cpath);
|
||||
str_stream << ifs.rdbuf();
|
||||
}
|
||||
|
||||
boost::filesystem::path path(cpath);
|
||||
std::string request = boundary + '\n';
|
||||
request += "Content-Disposition: form-data; name=\"";
|
||||
request += path.stem().string() + "\"; filename=\"" + path.filename().string() + "\"\n";
|
||||
request += "Content-Type: application/octet-stream\n\n";
|
||||
request += str_stream.str();
|
||||
request += boundary + '\n';
|
||||
request += "Content-Disposition: form-data; name=\"select\"\n\n";
|
||||
request += select ? "true\n" : "false\n";
|
||||
request += boundary + '\n';
|
||||
request += "Content-Disposition: form-data; name=\"print\"\n\n";
|
||||
request += print ? "true\n" : "false\n";
|
||||
request += boundary + '\n';
|
||||
|
||||
return request;
|
||||
}
|
||||
|
||||
}; // namespace Slic3r
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue