Get most of software names, id, description from the define.

This commit is contained in:
remi durand 2021-03-30 19:40:11 +02:00
parent fd743c6b3f
commit 93e5584ede
53 changed files with 116 additions and 151 deletions

View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="800" viewBox="0 0 800 800">
<circle cx="400" cy="400" r="400" fill="#fff"/>
<path d="M599.3,186.8c-93.9-93.9-246.1-93.9-340,0s-93.9,246.1,0,340Z" transform="translate(0 0)" fill="#363636"/>
<path d="M202.7,612.5c93.9,93.9,246.1,93.9,340,0s93.9-246.1,0-340" transform="translate(0 0)" fill="#ed6b21"/>
</svg>

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

Before

Width:  |  Height:  |  Size: 374 B

After

Width:  |  Height:  |  Size: 374 B

View File

@ -1,68 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="super_slicer_logo.svg"
id="svg8"
version="1.1"
viewBox="0 0 800 800"
height="800"
width="800">
<metadata
id="metadata14">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs12" />
<sodipodi:namedview
inkscape:current-layer="svg8"
inkscape:window-maximized="1"
inkscape:window-y="-8"
inkscape:window-x="-8"
inkscape:cy="444.78766"
inkscape:cx="149.49165"
inkscape:zoom="0.459375"
showgrid="false"
id="namedview10"
inkscape:window-height="1137"
inkscape:window-width="1920"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
<circle
id="circle2"
fill="#fff"
r="400"
cy="400"
cx="400" />
<path
id="path4"
fill="#363636"
transform="translate(0 0)"
d="M599.3,186.8c-93.9-93.9-246.1-93.9-340,0s-93.9,246.1,0,340Z" />
<path
style="fill:#2172eb;fill-opacity:1"
id="path6"
fill="#2172eb"
transform="translate(0 0)"
d="M202.7,612.5c93.9,93.9,246.1,93.9,340,0s93.9-246.1,0-340" />
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -92,7 +92,7 @@ endif()
# Create a SuperSlicer executable # Create a SuperSlicer executable
# Process mainfests for various platforms. # Process mainfests for various platforms.
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/msw/SuperSlicer.rc.in ${CMAKE_CURRENT_BINARY_DIR}/SuperSlicer.rc @ONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/msw/SuperSlicer.rc.in ${CMAKE_CURRENT_BINARY_DIR}/SuperSlicer.rc @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/msw/PrusaSlicer-gcodeviewer.rc.in ${CMAKE_CURRENT_BINARY_DIR}/PrusaSlicer-gcodeviewer.rc @ONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/msw/gcodeviewer.rc.in ${CMAKE_CURRENT_BINARY_DIR}/gcodeviewer.rc @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/msw/PrusaSlicer.manifest.in ${CMAKE_CURRENT_BINARY_DIR}/SuperSlicer.manifest @ONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/msw/PrusaSlicer.manifest.in ${CMAKE_CURRENT_BINARY_DIR}/SuperSlicer.manifest @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/osx/Info.plist.in ${CMAKE_CURRENT_BINARY_DIR}/Info.plist @ONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/platform/osx/Info.plist.in ${CMAKE_CURRENT_BINARY_DIR}/Info.plist @ONLY)
if (WIN32) if (WIN32)
@ -149,34 +149,39 @@ if (WIN32)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -municode") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -municode")
endif() endif()
add_executable(SuperSlicer_app_gui WIN32 PrusaSlicer_app_msvc.cpp ${CMAKE_CURRENT_BINARY_DIR}/SuperSlicer.rc) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libslic3r/libslic3r_version.h.in ${CMAKE_CURRENT_BINARY_DIR}/libslic3r_version.h @ONLY)
add_executable(SuperSlicer_app_gui WIN32 PrusaSlicer_app_msvc.cpp ${CMAKE_CURRENT_BINARY_DIR}/SuperSlicer.rc ${CMAKE_CURRENT_BINARY_DIR}/libslic3r_version.h)
target_include_directories(SuperSlicer_app_gui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
# Generate debug symbols even in release mode. # Generate debug symbols even in release mode.
if(MSVC) if(MSVC)
target_link_options(SuperSlicer_app_gui PUBLIC "$<$<CONFIG:RELEASE>:/DEBUG>") target_link_options(SuperSlicer_app_gui PUBLIC "$<$<CONFIG:RELEASE>:/DEBUG>")
endif() endif()
target_compile_definitions(SuperSlicer_app_gui PRIVATE -DSLIC3R_WRAPPER_NOCONSOLE) target_compile_definitions(SuperSlicer_app_gui PRIVATE -DSLIC3R_WRAPPER_NOCONSOLE)
add_dependencies(SuperSlicer_app_gui SuperSlicer) add_dependencies(SuperSlicer_app_gui SuperSlicer)
set_target_properties(SuperSlicer_app_gui PROPERTIES OUTPUT_NAME "superslicer") set_target_properties(SuperSlicer_app_gui PROPERTIES OUTPUT_NAME "@SLIC3R_APP_CMD@")
target_link_libraries(SuperSlicer_app_gui PRIVATE boost_headeronly) target_link_libraries(SuperSlicer_app_gui PRIVATE boost_headeronly)
add_executable(SuperSlicer_app_console PrusaSlicer_app_msvc.cpp ${CMAKE_CURRENT_BINARY_DIR}/SuperSlicer.rc) add_executable(SuperSlicer_app_console PrusaSlicer_app_msvc.cpp ${CMAKE_CURRENT_BINARY_DIR}/SuperSlicer.rc ${CMAKE_CURRENT_BINARY_DIR}/libslic3r_version.h)
target_include_directories(SuperSlicer_app_console PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
# Generate debug symbols even in release mode. # Generate debug symbols even in release mode.
if (MSVC) if (MSVC)
target_link_options(SuperSlicer_app_console PUBLIC "$<$<CONFIG:RELEASE>:/DEBUG>") target_link_options(SuperSlicer_app_console PUBLIC "$<$<CONFIG:RELEASE>:/DEBUG>")
endif () endif ()
target_compile_definitions(SuperSlicer_app_console PRIVATE -DSLIC3R_WRAPPER_CONSOLE) target_compile_definitions(SuperSlicer_app_console PRIVATE -DSLIC3R_WRAPPER_CONSOLE)
add_dependencies(SuperSlicer_app_console SuperSlicer) add_dependencies(SuperSlicer_app_console SuperSlicer)
set_target_properties(SuperSlicer_app_console PROPERTIES OUTPUT_NAME "superslicer_console") set_target_properties(SuperSlicer_app_console PROPERTIES OUTPUT_NAME "@SLIC3R_APP_CMD@_console")
target_link_libraries(SuperSlicer_app_console PRIVATE boost_headeronly) target_link_libraries(SuperSlicer_app_console PRIVATE boost_headeronly)
add_executable(PrusaSlicer_app_gcodeviewer WIN32 PrusaSlicer_app_msvc.cpp ${CMAKE_CURRENT_BINARY_DIR}/PrusaSlicer-gcodeviewer.rc) add_executable(PrusaSlicer_app_gcodeviewer WIN32 PrusaSlicer_app_msvc.cpp ${CMAKE_CURRENT_BINARY_DIR}/gcodeviewer.rc ${CMAKE_CURRENT_BINARY_DIR}/libslic3r_version.h)
target_include_directories(PrusaSlicer_app_gcodeviewer PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
# Generate debug symbols even in release mode. # Generate debug symbols even in release mode.
if (MSVC) if (MSVC)
target_link_options(PrusaSlicer_app_gcodeviewer PUBLIC "$<$<CONFIG:RELEASE>:/DEBUG>") target_link_options(PrusaSlicer_app_gcodeviewer PUBLIC "$<$<CONFIG:RELEASE>:/DEBUG>")
endif () endif ()
target_compile_definitions(PrusaSlicer_app_gcodeviewer PRIVATE -DSLIC3R_WRAPPER_NOCONSOLE -DSLIC3R_WRAPPER_GCODEVIEWER) target_compile_definitions(PrusaSlicer_app_gcodeviewer PRIVATE -DSLIC3R_WRAPPER_NOCONSOLE -DSLIC3R_WRAPPER_GCODEVIEWER)
add_dependencies(PrusaSlicer_app_gcodeviewer SuperSlicer) add_dependencies(PrusaSlicer_app_gcodeviewer SuperSlicer)
set_target_properties(PrusaSlicer_app_gcodeviewer PROPERTIES OUTPUT_NAME "prusa-gcodeviewer") set_target_properties(PrusaSlicer_app_gcodeviewer PROPERTIES OUTPUT_NAME "@GCODEVIEWER_APP_CMD@")
target_link_libraries(PrusaSlicer_app_gcodeviewer PRIVATE boost_headeronly) target_link_libraries(PrusaSlicer_app_gcodeviewer PRIVATE boost_headeronly)
endif () endif ()

View File

@ -668,7 +668,7 @@ void CLI::print_help(bool include_print_options, PrinterTechnology printer_techn
<< " (without GUI support)" << " (without GUI support)"
#endif /* SLIC3R_GUI */ #endif /* SLIC3R_GUI */
<< std::endl << std::endl
<< "https://github.com/prusa3d/PrusaSlicer" << std::endl << std::endl << "https://github.com/" << SLIC3R_GITHUB << std::endl << std::endl
<< "Usage: superslicer [ ACTIONS ] [ TRANSFORM ] [ OPTIONS ] [ file.stl ... ]" << std::endl << "Usage: superslicer [ ACTIONS ] [ TRANSFORM ] [ OPTIONS ] [ file.stl ... ]" << std::endl
<< std::endl << std::endl
<< "Actions:" << std::endl; << "Actions:" << std::endl;

View File

@ -6,6 +6,7 @@
#include <Windows.h> #include <Windows.h>
#include <shellapi.h> #include <shellapi.h>
#include <wchar.h> #include <wchar.h>
#include "libslic3r/libslic3r_version.h"
@ -286,7 +287,7 @@ int wmain(int argc, wchar_t **argv)
// printf("Loading SuperSlicer library: %S\n", path_to_slic3r); // printf("Loading SuperSlicer library: %S\n", path_to_slic3r);
HINSTANCE hInstance_Slic3r = LoadLibraryExW(path_to_slic3r, nullptr, 0); HINSTANCE hInstance_Slic3r = LoadLibraryExW(path_to_slic3r, nullptr, 0);
if (hInstance_Slic3r == nullptr) { if (hInstance_Slic3r == nullptr) {
printf("SuperSlicer.dll was not loaded, error code: %d\n", GetLastError()); printf(SLIC3R_APP_NAME ".dll was not loaded, error code: %d\n", GetLastError());
return -1; return -1;
} }

View File

@ -24,7 +24,7 @@ namespace Slic3r {
static const std::string VENDOR_PREFIX = "vendor:"; static const std::string VENDOR_PREFIX = "vendor:";
static const std::string MODEL_PREFIX = "model:"; static const std::string MODEL_PREFIX = "model:";
static const std::string VERSION_CHECK_URL = "https://api.github.com/repos/supermerill/superslicer/releases"; static const std::string VERSION_CHECK_URL = "https://api.github.com/repos/" SLIC3R_GITHUB "/releases";
const std::string AppConfig::SECTION_FILAMENTS = "filaments"; const std::string AppConfig::SECTION_FILAMENTS = "filaments";
const std::string AppConfig::SECTION_MATERIALS = "sla_materials"; const std::string AppConfig::SECTION_MATERIALS = "sla_materials";
@ -208,7 +208,7 @@ std::string AppConfig::load()
// we will rethrow this exception from the place of load() call, if returned value wouldn't be empty // we will rethrow this exception from the place of load() call, if returned value wouldn't be empty
/* /*
throw Slic3r::RuntimeError( throw Slic3r::RuntimeError(
_utf8(L("Error parsing SuperSlicer config file, it is probably corrupted. " _utf8(L("Error parsing " SLIC3R_APP_NAME " config file, it is probably corrupted. "
"Try to manually delete the file to recover from the error. Your user profiles will not be affected.")) + "Try to manually delete the file to recover from the error. Your user profiles will not be affected.")) +
"\n\n" + AppConfig::config_path() + "\n\n" + ex.what()); "\n\n" + AppConfig::config_path() + "\n\n" + ex.what());
*/ */

View File

@ -722,7 +722,7 @@ void ConfigBase::load_from_gcode_file(const std::string &file)
strncmp(slic3rpp_gcode_header, firstline.c_str(), strlen(slic3rpp_gcode_header)) != 0 && strncmp(slic3rpp_gcode_header, firstline.c_str(), strlen(slic3rpp_gcode_header)) != 0 &&
strncmp(superslicer_gcode_header, firstline.c_str(), strlen(superslicer_gcode_header)) != 0 && strncmp(superslicer_gcode_header, firstline.c_str(), strlen(superslicer_gcode_header)) != 0 &&
strncmp(prusaslicer_gcode_header, firstline.c_str(), strlen(prusaslicer_gcode_header)) != 0) strncmp(prusaslicer_gcode_header, firstline.c_str(), strlen(prusaslicer_gcode_header)) != 0)
throw Slic3r::RuntimeError("Not a PrusaSlicer / SuperSlicer generated g-code."); throw Slic3r::RuntimeError("Not a Slic3r / PrusaSlicer / SuperSlicer generated g-code.");
} }
ifs.seekg(0, ifs.end); ifs.seekg(0, ifs.end);
auto file_length = ifs.tellg(); auto file_length = ifs.tellg();

View File

@ -863,7 +863,7 @@ void GCodeProcessor::process_file(const std::string& filename, bool apply_postpr
} }
}); });
// if the gcode was produced by SuperSlicer, // if the gcode was produced by this slicer,
// extract the config from it // extract the config from it
try { try {
if (m_producer == EProducer::PrusaSlicer || m_producer == EProducer::SuperSlicer || m_producer == EProducer::Slic3rPE || m_producer == EProducer::Slic3r) { if (m_producer == EProducer::PrusaSlicer || m_producer == EProducer::SuperSlicer || m_producer == EProducer::Slic3rPE || m_producer == EProducer::Slic3r) {

View File

@ -435,7 +435,8 @@ namespace Slic3r {
{ {
Unknown, Unknown,
PrusaSlicer, PrusaSlicer,
SuperSlicer, Slic3rPE, SuperSlicer,
Slic3rPE,
Slic3r, Slic3r,
Cura, Cura,
Simplify3D, Simplify3D,

View File

@ -1932,7 +1932,7 @@ void PrintConfigDef::init_fff_params()
def->category = OptionCategory::infill; def->category = OptionCategory::infill;
def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. " def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. "
"If expressed as percentage (example: 15%) it is calculated over infill extrusion width. " "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. "
"PrusaSlicer tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment " SLIC3R_APP_NAME " tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment "
"shorter than infill_anchor_max is found, the infill line is connected to a perimeter segment at just one side " "shorter than infill_anchor_max is found, the infill line is connected to a perimeter segment at just one side "
"and the length of the perimeter segment taken is limited to this parameter, but no longer than anchor_length_max. " "and the length of the perimeter segment taken is limited to this parameter, but no longer than anchor_length_max. "
"\nSet this parameter to zero to disable anchoring perimeters connected to a single infill line."); "\nSet this parameter to zero to disable anchoring perimeters connected to a single infill line.");
@ -1959,7 +1959,7 @@ void PrintConfigDef::init_fff_params()
def->category = def_infill_anchor_min->category; def->category = def_infill_anchor_min->category;
def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. " def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. "
"If expressed as percentage (example: 15%) it is calculated over infill extrusion width. " "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. "
"PrusaSlicer tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment " SLIC3R_APP_NAME " tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment "
"shorter than this parameter is found, the infill line is connected to a perimeter segment at just one side " "shorter than this parameter is found, the infill line is connected to a perimeter segment at just one side "
"and the length of the perimeter segment taken is limited to infill_anchor, but no longer than this parameter. " "and the length of the perimeter segment taken is limited to infill_anchor, but no longer than this parameter. "
"\nIf set to 0, the old algorithm for infill connection will be used, it should create the same result as with 1000 & 0."); "\nIf set to 0, the old algorithm for infill connection will be used, it should create the same result as with 1000 & 0.");
@ -2903,7 +2903,7 @@ void PrintConfigDef::init_fff_params()
"the slicing job and reducing memory usage. High-resolution models often carry " "the slicing job and reducing memory usage. High-resolution models often carry "
"more detail than printers can render. Set to zero to disable any simplification " "more detail than printers can render. Set to zero to disable any simplification "
"and use full resolution from input. " "and use full resolution from input. "
"\nNote: SuperSlicer has an internal resolution of 0.000001mm." "\nNote: " SLIC3R_APP_NAME " has an internal resolution of 0.000001mm."
"\nInfill & Thin areas are simplified up to 0.0125mm."); "\nInfill & Thin areas are simplified up to 0.0125mm.");
def->sidetext = L("mm"); def->sidetext = L("mm");
def->min = 0; def->min = 0;
@ -5971,8 +5971,8 @@ CLIMiscConfigDef::CLIMiscConfigDef()
def = this->add("single_instance", coBool); def = this->add("single_instance", coBool);
def->label = L("Single instance mode"); def->label = L("Single instance mode");
def->tooltip = L("If enabled, the command line arguments are sent to an existing instance of GUI PrusaSlicer, " def->tooltip = L("If enabled, the command line arguments are sent to an existing instance of GUI " SLIC3R_APP_NAME ", "
"or an existing PrusaSlicer window is activated. " "or an existing " SLIC3R_APP_NAME " window is activated. "
"Overrides the \"single_instance\" configuration value from application preferences."); "Overrides the \"single_instance\" configuration value from application preferences.");
/* /*

View File

@ -24,7 +24,7 @@ lerr2=1./(0.3+cos(a));
plot(adeg, t, 'b', adeg, sqrt(t), 'g', adeg, 0.5 * lerr, 'm', adeg, 0.5 * lerr2, 'r') plot(adeg, t, 'b', adeg, sqrt(t), 'g', adeg, 0.5 * lerr, 'm', adeg, 0.5 * lerr2, 'r')
xlabel("angle(deg), 0 - horizontal wall, 90 - vertical wall"); xlabel("angle(deg), 0 - horizontal wall, 90 - vertical wall");
ylabel("layer height"); ylabel("layer height");
legend("tan(a) as cura - topographic lines distance limit", "sqrt(tan(a)) as PrusaSlicer - error triangle area limit", "old slic3r - max distance metric", "new slic3r - Waserfall paper"); legend("tan(a) as cura - topographic lines distance limit", "sqrt(tan(a)) as "+SLIC3R_APP_NAME+" - error triangle area limit", "old slic3r - max distance metric", "new slic3r - Waserfall paper");
#endif #endif
#ifndef NDEBUG #ifndef NDEBUG

View File

@ -2,9 +2,6 @@
#define _libslic3r_h_ #define _libslic3r_h_
#include "libslic3r_version.h" #include "libslic3r_version.h"
#define GCODEVIEWER_APP_NAME "PrusaSlicer G-code Viewer"
#define GCODEVIEWER_APP_KEY "PrusaSlicerGcodeViewer"
#define GCODEVIEWER_BUILD_ID std::string("PrusaSlicer G-code Viewer-") + std::string(SLIC3R_VERSION) + std::string("-UNKNOWN")
// this needs to be included early for MSVC (listing it in Build.PL is not enough) // this needs to be included early for MSVC (listing it in Build.PL is not enough)
#include <memory> #include <memory>

View File

@ -2,9 +2,22 @@
#define __SLIC3R_VERSION_H #define __SLIC3R_VERSION_H
#define SLIC3R_APP_NAME "@SLIC3R_APP_NAME@" #define SLIC3R_APP_NAME "@SLIC3R_APP_NAME@"
#define SLIC3R_APP_WNAME L"@SLIC3R_APP_NAME@"
#define SLIC3R_APP_KEY "@SLIC3R_APP_KEY@" #define SLIC3R_APP_KEY "@SLIC3R_APP_KEY@"
#define SLIC3R_APP_CMD "@SLIC3R_APP_CMD@"
#define SLIC3R_APP_WCMD L"@SLIC3R_APP_CMD@"
#define SLIC3R_VERSION "@SLIC3R_VERSION@" #define SLIC3R_VERSION "@SLIC3R_VERSION@"
#define SLIC3R_VERSION_FULL "@SLIC3R_VERSION_FULL@" #define SLIC3R_VERSION_FULL "@SLIC3R_VERSION_FULL@"
#define SLIC3R_BUILD_ID "@SLIC3R_BUILD_ID@" #define SLIC3R_BUILD_ID "@SLIC3R_BUILD_ID@"
#define GCODEVIEWER_APP_NAME "@GCODEVIEWER_APP_NAME@"
#define GCODEVIEWER_APP_KEY "@GCODEVIEWER_APP_KEY@"
#define GCODEVIEWER_APP_CMD "@GCODEVIEWER_APP_CMD@"
#define GCODEVIEWER_APP_WCMD L"@GCODEVIEWER_APP_CMD@"
#define GCODEVIEWER_BUILD_ID GCODEVIEWER_APP_NAME "-" SLIC3R_VERSION "-UNKNOWN"
#define SLIC3R_BASED_ON "@SLIC3R_BASED_ON@"
#define SLIC3R_GITHUB "@SLIC3R_GITHUB@"
#define SLIC3R_INTRO "@SLIC3R_INTRO@"
#endif /* __SLIC3R_VERSION_H */ #endif /* __SLIC3R_VERSION_H */

View File

@ -21,5 +21,5 @@ PRODUCTVERSION @SLIC3R_RC_VERSION@
VALUE "Translation", 0x409, 1252 VALUE "Translation", 0x409, 1252
} }
} }
2 ICON "@SLIC3R_RESOURCES_DIR@/icons/slic3r.ico" 2 ICON "@SLIC3R_RESOURCES_DIR@/icons/SuperSlicer.ico"
1 24 "SuperSlicer.manifest" 1 24 "SuperSlicer.manifest"

View File

@ -81,6 +81,8 @@ CopyrightsDialog::CopyrightsDialog()
void CopyrightsDialog::fill_entries() void CopyrightsDialog::fill_entries()
{ {
m_entries = { m_entries = {
{ "Slic3r" , "2021 Slic3r" , "https://github.com/slic3r/slic3r" },
{ "Prusaslicer" , "2021 PrusaResearch" , "https://github.com/prusa3d/PrusaSlicer" },
{ "wxWidgets" , "2019 wxWidgets" , "https://www.wxwidgets.org/" }, { "wxWidgets" , "2019 wxWidgets" , "https://www.wxwidgets.org/" },
{ "OpenGL" , "1997-2019 The Khronos Group Inc" , "https://www.opengl.org/" }, { "OpenGL" , "1997-2019 The Khronos Group Inc" , "https://www.opengl.org/" },
{ "GNU gettext" , "1998, 2019 Free Software Foundation, Inc." , "https://www.gnu.org/software/gettext/" }, { "GNU gettext" , "1998, 2019 Free Software Foundation, Inc." , "https://www.gnu.org/software/gettext/" },
@ -264,7 +266,7 @@ AboutDialog::AboutDialog()
// TRN "Slic3r _is licensed under the_ License" // TRN "Slic3r _is licensed under the_ License"
const std::string is_lecensed_str = _utf8(L("is licensed under the")); const std::string is_lecensed_str = _utf8(L("is licensed under the"));
const std::string license_str = _utf8(L("GNU Affero General Public License, version 3")); const std::string license_str = _utf8(L("GNU Affero General Public License, version 3"));
const std::string based_on_str = _utf8(L("SuperSlicer is based on PrusaSlicer which is based on Slic3r by Alessandro Ranellucci and the RepRap community.")); const std::string based_on_str = _utf8(L(SLIC3R_INTRO));
const std::string contributors_str = _utf8(L("Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik, Durand Rémi and numerous others.")); const std::string contributors_str = _utf8(L("Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik, Durand Rémi and numerous others."));
const auto text = from_u8( const auto text = from_u8(
(boost::format( (boost::format(

View File

@ -48,7 +48,7 @@ static wxString generate_html_row(const Config::Snapshot &snapshot, bool row_eve
text += " (" + wxString::FromUTF8(snapshot.comment.data()) + ")"; text += " (" + wxString::FromUTF8(snapshot.comment.data()) + ")";
text += "</b></font><br>"; text += "</b></font><br>";
// End of row header. // End of row header.
text += _(L("SuperSlicer version")) + ": " + snapshot.slic3r_version_captured.to_string() + "<br>"; text += _(L(SLIC3R_APP_NAME " version")) + ": " + snapshot.slic3r_version_captured.to_string() + "<br>";
bool has_fff = ! snapshot.print.empty() || ! snapshot.filaments.empty(); bool has_fff = ! snapshot.print.empty() || ! snapshot.filaments.empty();
bool has_sla = ! snapshot.sla_print.empty() || ! snapshot.sla_material.empty(); bool has_sla = ! snapshot.sla_print.empty() || ! snapshot.sla_material.empty();
if (has_fff || ! has_sla) { if (has_fff || ! has_sla) {
@ -64,9 +64,9 @@ static wxString generate_html_row(const Config::Snapshot &snapshot, bool row_eve
bool compatible = true; bool compatible = true;
for (const Config::Snapshot::VendorConfig &vc : snapshot.vendor_configs) { for (const Config::Snapshot::VendorConfig &vc : snapshot.vendor_configs) {
text += _(L("vendor")) + ": " + vc.name +", " + _(L("version")) + ": " + vc.version.config_version.to_string() + text += _(L("vendor")) + ": " + vc.name +", " + _(L("version")) + ": " + vc.version.config_version.to_string() +
", " + _(L("min SuperSlicer version")) + ": " + vc.version.min_slic3r_version.to_string(); ", " + _(L("min " SLIC3R_APP_NAME " version")) + ": " + vc.version.min_slic3r_version.to_string();
if (vc.version.max_slic3r_version != Semver::inf()) if (vc.version.max_slic3r_version != Semver::inf())
text += ", " + _(L("max SuperSlicer version")) + ": " + vc.version.max_slic3r_version.to_string(); text += ", " + _(L("max " SLIC3R_APP_NAME " version")) + ": " + vc.version.max_slic3r_version.to_string();
text += "<br>"; text += "<br>";
for (const std::pair<std::string, std::set<std::string>> &model : vc.models_variants_installed) { for (const std::pair<std::string, std::set<std::string>> &model : vc.models_variants_installed) {
text += _(L("model")) + ": " + model.first + ", " + _(L("variants")) + ": "; text += _(L("model")) + ": " + model.first + ", " + _(L("variants")) + ": ";

View File

@ -1199,8 +1199,8 @@ PageReloadFromDisk::PageReloadFromDisk(ConfigWizard* parent)
PageFilesAssociation::PageFilesAssociation(ConfigWizard* parent) PageFilesAssociation::PageFilesAssociation(ConfigWizard* parent)
: ConfigWizardPage(parent, _L("Files association"), _L("Files association")) : ConfigWizardPage(parent, _L("Files association"), _L("Files association"))
{ {
cb_3mf = new wxCheckBox(this, wxID_ANY, _L("Associate .3mf files to SuperSlicer")); cb_3mf = new wxCheckBox(this, wxID_ANY, _L("Associate .3mf files to " SLIC3R_APP_NAME));
cb_stl = new wxCheckBox(this, wxID_ANY, _L("Associate .stl files to SuperSlicer")); cb_stl = new wxCheckBox(this, wxID_ANY, _L("Associate .stl files to " SLIC3R_APP_NAME));
// cb_gcode = new wxCheckBox(this, wxID_ANY, _L("Associate .gcode files to PrusaSlicer G-code Viewer")); // cb_gcode = new wxCheckBox(this, wxID_ANY, _L("Associate .gcode files to PrusaSlicer G-code Viewer"));
append(cb_3mf); append(cb_3mf);
@ -1213,7 +1213,7 @@ PageFilesAssociation::PageFilesAssociation(ConfigWizard* parent)
PageMode::PageMode(ConfigWizard *parent) PageMode::PageMode(ConfigWizard *parent)
: ConfigWizardPage(parent, _L("View mode"), _L("View mode")) : ConfigWizardPage(parent, _L("View mode"), _L("View mode"))
{ {
append_text(_L("SuperSlicer's user interfaces comes in three variants:\nSimple, Advanced, and Expert.\n" append_text(_L(SLIC3R_APP_NAME "'s user interfaces comes in three variants:\nSimple, Advanced, and Expert.\n"
"The Simple mode shows only the most frequently used settings relevant for regular 3D printing. " "The Simple mode shows only the most frequently used settings relevant for regular 3D printing. "
"The other two offer progressively more sophisticated fine-tuning, " "The other two offer progressively more sophisticated fine-tuning, "
"they are suitable for advanced and expert users, respectively.")); "they are suitable for advanced and expert users, respectively."));

View File

@ -228,7 +228,7 @@ FreeCADDialog::FreeCADDialog(GUI_App* app, MainFrame* mainframe)
commands.emplace_back(PyCommand{"extrude", PyCommandType::pctOPERATION, "extrude(x,y,z,taper,[convexity=])"}); commands.emplace_back(PyCommand{"extrude", PyCommandType::pctOPERATION, "extrude(x,y,z,taper,[convexity=])"});
//redraw //redraw
commands.emplace_back(PyCommand{"redraw", PyCommandType::pctOPERATION | PyCommandType::pctNO_PARAMETER, commands.emplace_back(PyCommand{"redraw", PyCommandType::pctOPERATION | PyCommandType::pctNO_PARAMETER,
"redraw(...obj3D)\nEvery object inside this command\nwill be added into SuperSlicer.\n"}); "redraw(...obj3D)\nEvery object inside this command\nwill be added into " SLIC3R_APP_NAME ".\n"});
// beta / buggy // beta / buggy
commands.emplace_back(PyCommand{"scale", PyCommandType::pctMODIFIER | PyCommandType::pctDO_NOT_SHOW}); commands.emplace_back(PyCommand{"scale", PyCommandType::pctMODIFIER | PyCommandType::pctDO_NOT_SHOW});

View File

@ -706,7 +706,7 @@ void GCodeViewer::export_toolpaths_to_obj(const char* filename) const
} }
fprintf(fp, "# G-Code Toolpaths Materials\n"); fprintf(fp, "# G-Code Toolpaths Materials\n");
fprintf(fp, "# Generated by %s based on Slic3r\n", SLIC3R_BUILD_ID); fprintf(fp, "# Generated by " SLIC3R_BUILD_ID " " SLIC3R_BASED_ON "\n");
unsigned int colors_count = 1; unsigned int colors_count = 1;
for (const Color& color : colors) { for (const Color& color : colors) {
@ -726,7 +726,7 @@ void GCodeViewer::export_toolpaths_to_obj(const char* filename) const
} }
fprintf(fp, "# G-Code Toolpaths\n"); fprintf(fp, "# G-Code Toolpaths\n");
fprintf(fp, "# Generated by %s based on Slic3r\n", SLIC3R_BUILD_ID); fprintf(fp, "# Generated by " SLIC3R_BUILD_ID " " SLIC3R_BASED_ON "\n");
fprintf(fp, "\nmtllib ./%s\n", mat_filename.filename().string().c_str()); fprintf(fp, "\nmtllib ./%s\n", mat_filename.filename().string().c_str());
// get vertices data from vertex buffer on gpu // get vertices data from vertex buffer on gpu

View File

@ -191,7 +191,7 @@ public:
BitmapCache bmp_cache; BitmapCache bmp_cache;
int logo_size = lround(width * 0.25); int logo_size = lround(width * 0.25);
//uint32_t color = color_from_hex(Slic3r::GUI::wxGetApp().app_config->get("color_dark")); //uncomment if you also want to modify the icon color //uint32_t color = color_from_hex(Slic3r::GUI::wxGetApp().app_config->get("color_dark")); //uncomment if you also want to modify the icon color
wxBitmap logo_bmp = *bmp_cache.load_svg(wxGetApp().is_editor() ? "super_slicer_logo" : "add_gcode", logo_size, logo_size/*, color*/); wxBitmap logo_bmp = *bmp_cache.load_svg(wxGetApp().is_editor() ? SLIC3R_APP_KEY "_logo" : "add_gcode", logo_size, logo_size/*, color*/);
wxCoord margin = int(m_scale * 20); wxCoord margin = int(m_scale * 20);
@ -253,7 +253,7 @@ private:
version = _L("Version") + " " + std::string(SLIC3R_VERSION_FULL); version = _L("Version") + " " + std::string(SLIC3R_VERSION_FULL);
// credits infornation // credits infornation
credits = title + " " + _L("is based on PrusaSlicer by Prusa and Slic3r by Alessandro Ranellucci and the RepRap community.") + "\n\n" + credits = _L(SLIC3R_INTRO) + "\n\n" +
title + " " + _L("is licensed under the") + " " + _L("GNU Affero General Public License, version 3") + "\n\n" + title + " " + _L("is licensed under the") + " " + _L("GNU Affero General Public License, version 3") + "\n\n" +
_L("Contributions by Vojtech Bubnik, Enrico Turri, Durand Remi, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others.") + "\n\n" + _L("Contributions by Vojtech Bubnik, Enrico Turri, Durand Remi, Oleksandra Iushchenko, Tamas Meszaros, Lukas Matena, Vojtech Kral, David Kocik and numerous others.") + "\n\n" +
_L("Artwork model by Durand Remi"); _L("Artwork model by Durand Remi");
@ -826,7 +826,7 @@ bool GUI_App::on_init_inner()
} }
// create splash screen with updated bmp // create splash screen with updated bmp
scrn = new SplashScreen(bmp.IsOk() ? bmp : create_scaled_bitmap("super_slicer_logo", nullptr, 400), scrn = new SplashScreen(bmp.IsOk() ? bmp : create_scaled_bitmap( SLIC3R_APP_KEY "_logo", nullptr, 400),
wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_TIMEOUT, 4000, splashscreen_pos); wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_TIMEOUT, 4000, splashscreen_pos);
#ifndef __linux__ #ifndef __linux__
wxYield(); wxYield();
@ -1525,7 +1525,7 @@ bool GUI_App::load_language(wxString language, bool initial)
// Get the active language from PrusaSlicer.ini, or empty string if the key does not exist. // Get the active language from PrusaSlicer.ini, or empty string if the key does not exist.
language = app_config->get("translation_language"); language = app_config->get("translation_language");
if (! language.empty()) if (! language.empty())
BOOST_LOG_TRIVIAL(trace) << boost::format("translation_language provided by SuperSlicer.ini: %1%") % language; BOOST_LOG_TRIVIAL(trace) << boost::format("translation_language provided by " SLIC3R_APP_NAME ".ini: %1%") % language;
// Get the system language. // Get the system language.
{ {
@ -1616,14 +1616,14 @@ bool GUI_App::load_language(wxString language, bool initial)
if (! wxLocale::IsAvailable(language_info->Language)) { if (! wxLocale::IsAvailable(language_info->Language)) {
// Loading the language dictionary failed. // Loading the language dictionary failed.
wxString message = "Switching SuperSlicer to language " + language_info->CanonicalName + " failed."; wxString message = "Switching " SLIC3R_APP_NAME " to language " + language_info->CanonicalName + " failed.";
#if !defined(_WIN32) && !defined(__APPLE__) #if !defined(_WIN32) && !defined(__APPLE__)
// likely some linux system // likely some linux system
message += "\nYou may need to reconfigure the missing locales, likely by running the \"locale-gen\" and \"dpkg-reconfigure locales\" commands.\n"; message += "\nYou may need to reconfigure the missing locales, likely by running the \"locale-gen\" and \"dpkg-reconfigure locales\" commands.\n";
#endif #endif
if (initial) if (initial)
message + "\n\nApplication will close."; message + "\n\nApplication will close.";
wxMessageBox(message, "SuperSlicer - Switching language failed", wxOK | wxICON_ERROR); wxMessageBox(message, SLIC3R_APP_NAME " - Switching language failed", wxOK | wxICON_ERROR);
if (initial) if (initial)
std::exit(EXIT_FAILURE); std::exit(EXIT_FAILURE);
else else
@ -2353,8 +2353,8 @@ void GUI_App::associate_3mf_files()
::GetModuleFileNameW(nullptr, app_path, sizeof(app_path)); ::GetModuleFileNameW(nullptr, app_path, sizeof(app_path));
std::wstring prog_path = L"\"" + std::wstring(app_path) + L"\""; std::wstring prog_path = L"\"" + std::wstring(app_path) + L"\"";
std::wstring prog_id = L"SuperSlicer.1"; std::wstring prog_id = SLIC3R_APP_WNAME L".1";
std::wstring prog_desc = L"SuperSlicer"; std::wstring prog_desc = SLIC3R_APP_WNAME;
std::wstring prog_command = prog_path + L" \"%1\""; std::wstring prog_command = prog_path + L" \"%1\"";
std::wstring reg_base = L"Software\\Classes"; std::wstring reg_base = L"Software\\Classes";
std::wstring reg_extension = reg_base + L"\\.3mf"; std::wstring reg_extension = reg_base + L"\\.3mf";
@ -2378,8 +2378,8 @@ void GUI_App::associate_stl_files()
::GetModuleFileNameW(nullptr, app_path, sizeof(app_path)); ::GetModuleFileNameW(nullptr, app_path, sizeof(app_path));
std::wstring prog_path = L"\"" + std::wstring(app_path) + L"\""; std::wstring prog_path = L"\"" + std::wstring(app_path) + L"\"";
std::wstring prog_id = L"Prusa.Slicer.1"; std::wstring prog_id = L"Super.Slicer.1";
std::wstring prog_desc = L"PrusaSlicer"; std::wstring prog_desc = SLIC3R_APP_WNAME;
std::wstring prog_command = prog_path + L" \"%1\""; std::wstring prog_command = prog_path + L" \"%1\"";
std::wstring reg_base = L"Software\\Classes"; std::wstring reg_base = L"Software\\Classes";
std::wstring reg_extension = reg_base + L"\\.stl"; std::wstring reg_extension = reg_base + L"\\.stl";

View File

@ -85,10 +85,10 @@ int GUI_Run(GUI_InitParams &params)
return result; return result;
} catch (const Slic3r::Exception &ex) { } catch (const Slic3r::Exception &ex) {
boost::nowide::cerr << ex.what() << std::endl; boost::nowide::cerr << ex.what() << std::endl;
wxMessageBox(boost::nowide::widen(ex.what()), _L("PrusaSlicer GUI initialization failed"), wxICON_STOP); wxMessageBox(boost::nowide::widen(ex.what()), _L(SLIC3R_APP_NAME " GUI initialization failed"), wxICON_STOP);
} catch (const std::exception &ex) { } catch (const std::exception &ex) {
boost::nowide::cerr << "PrusaSlicer GUI initialization failed: " << ex.what() << std::endl; boost::nowide::cerr << SLIC3R_APP_NAME << " GUI initialization failed: " << ex.what() << std::endl;
wxMessageBox(format_wxstr(_L("Fatal error, exception catched: %1%"), ex.what()), _L("PrusaSlicer GUI initialization failed"), wxICON_STOP); wxMessageBox(format_wxstr(_L("Fatal error, exception catched: %1%"), ex.what()), _L(SLIC3R_APP_NAME " GUI initialization failed"), wxICON_STOP);
} }
// error // error

View File

@ -80,7 +80,7 @@ namespace instance_check_internal
return true; return true;
std::wstring classNameString(className); std::wstring classNameString(className);
std::wstring wndTextString(wndText); std::wstring wndTextString(wndText);
if (wndTextString.find(L"PrusaSlicer") != std::wstring::npos && classNameString == L"wxWindowNR") { if (wndTextString.find(SLIC3R_APP_WNAME) != std::wstring::npos && classNameString == L"wxWindowNR") {
//check if other instances has same instance hash //check if other instances has same instance hash
//if not it is not same version(binary) as this version //if not it is not same version(binary) as this version
HANDLE handle = GetProp(hwnd, L"Instance_Hash_Minor"); HANDLE handle = GetProp(hwnd, L"Instance_Hash_Minor");

View File

@ -94,12 +94,12 @@ static wxIcon main_frame_icon(GUI_App::EAppMode app_mode)
if (len > 0 && len < MAX_PATH) { if (len > 0 && len < MAX_PATH) {
path.erase(path.begin() + len, path.end()); path.erase(path.begin() + len, path.end());
if (app_mode == GUI_App::EAppMode::GCodeViewer) { if (app_mode == GUI_App::EAppMode::GCodeViewer) {
// Only in case the slicer was started with --gcodeviewer parameter try to load the icon from prusa-gcodeviewer.exe // Only in case the slicer was started with --gcodeviewer parameter try to load the icon from gcodeviewer.exe
// Otherwise load it from the exe. // Otherwise load it from the exe.
for (const std::wstring_view exe_name : { std::wstring_view(L"superslicer.exe"), std::wstring_view(L"superslicer_console.exe") }) for (const std::wstring_view exe_name : { std::wstring_view(SLIC3R_APP_WCMD L".exe"), std::wstring_view(SLIC3R_APP_WCMD L"_console.exe") })
if (boost::iends_with(path, exe_name)) { if (boost::iends_with(path, exe_name)) {
path.erase(path.end() - exe_name.size(), path.end()); path.erase(path.end() - exe_name.size(), path.end());
path += L"prusa-gcodeviewer.exe"; path += GCODEVIEWER_APP_WCMD L".exe";
break; break;
} }
} }
@ -131,11 +131,11 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S
default: default:
case GUI_App::EAppMode::Editor: case GUI_App::EAppMode::Editor:
m_taskbar_icon = std::make_unique<PrusaSlicerTaskBarIcon>(wxTBI_DOCK); m_taskbar_icon = std::make_unique<PrusaSlicerTaskBarIcon>(wxTBI_DOCK);
m_taskbar_icon->SetIcon(wxIcon(Slic3r::var("Slic3r_128px.png"), wxBITMAP_TYPE_PNG), "SuperSlicer"); m_taskbar_icon->SetIcon(wxIcon(Slic3r::var("Slic3r_128px.png"), wxBITMAP_TYPE_PNG), SLIC3R_APP_NAME);
break; break;
case GUI_App::EAppMode::GCodeViewer: case GUI_App::EAppMode::GCodeViewer:
m_taskbar_icon = std::make_unique<GCodeViewerTaskBarIcon>(wxTBI_DOCK); m_taskbar_icon = std::make_unique<GCodeViewerTaskBarIcon>(wxTBI_DOCK);
m_taskbar_icon->SetIcon(wxIcon(Slic3r::var("PrusaSlicer-gcodeviewer_128px.png"), wxBITMAP_TYPE_PNG), "G-code Viewer"); m_taskbar_icon->SetIcon(wxIcon(Slic3r::var("PrusaSlicer-gcodeviewer_128px.png"), wxBITMAP_TYPE_PNG), GCODEVIEWER_APP_NAME);
break; break;
} }
#endif // __APPLE__ #endif // __APPLE__
@ -150,7 +150,7 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S
m_statusbar->embed(this); m_statusbar->embed(this);
m_statusbar->set_status_text(_L("Version") + " " + m_statusbar->set_status_text(_L("Version") + " " +
SLIC3R_VERSION + SLIC3R_VERSION +
_L("Remember to check for updates at https://github.com/supermerill/SuperSlicer/releases")); _L("Remember to check for updates at https://github.com/" SLIC3R_GITHUB "/releases"));
// initialize tabpanel and menubar // initialize tabpanel and menubar
init_tabpanel(); init_tabpanel();
@ -626,7 +626,7 @@ void MainFrame::update_title()
title += wxString(SLIC3R_APP_NAME) + "_" + wxString(SLIC3R_VERSION) ; title += wxString(SLIC3R_APP_NAME) + "_" + wxString(SLIC3R_VERSION) ;
if (wxGetApp().is_editor() && !has_name) if (wxGetApp().is_editor() && !has_name)
title += (" " + _L("based on PrusaSlicer & Slic3r")); title += (" " + _L(SLIC3R_BASED_ON));
SetTitle(title); SetTitle(title);
} }
@ -1050,20 +1050,20 @@ static const wxString sep_space = "";
static wxMenu* generate_help_menu() static wxMenu* generate_help_menu()
{ {
wxMenu* helpMenu = new wxMenu(); wxMenu* helpMenu = new wxMenu();
append_menu_item(helpMenu, wxID_ANY, _L("SuperSlicer Releases"), _L("Open the SuperSlicer releases page in your browser"), append_menu_item(helpMenu, wxID_ANY, _L(SLIC3R_APP_NAME " Releases"), _L("Open the " SLIC3R_APP_NAME " github releases page in your browser"),
[](wxCommandEvent&) { wxLaunchDefaultBrowser("http://github.com/supermerill/SuperSlicer/releases"); }); [](wxCommandEvent&) { wxLaunchDefaultBrowser("http://github.com/" SLIC3R_GITHUB "/releases"); });
append_menu_item(helpMenu, wxID_ANY, _L("SuperSlicer wiki"), _L("Open the SuperSlicer wiki in your browser"), append_menu_item(helpMenu, wxID_ANY, _L(SLIC3R_APP_NAME " wiki"), _L("Open the " SLIC3R_APP_NAME " wiki in your browser"),
[](wxCommandEvent&) { wxLaunchDefaultBrowser("http://github.com/supermerill/SuperSlicer/wiki"); }); [](wxCommandEvent&) { wxLaunchDefaultBrowser("http://github.com/" SLIC3R_GITHUB "/wiki"); });
append_menu_item(helpMenu, wxID_ANY, _L("SuperSlicer website"), _L("Open the SuperSlicer website in your browser"), append_menu_item(helpMenu, wxID_ANY, _L(SLIC3R_APP_NAME " website"), _L("Open the " SLIC3R_APP_NAME " website in your browser"),
[](wxCommandEvent&) { wxLaunchDefaultBrowser("http://github.com/supermerill/SuperSlicer"); }); [](wxCommandEvent&) { wxLaunchDefaultBrowser("http://github.com/" SLIC3R_GITHUB); });
append_menu_item(helpMenu, wxID_ANY, _L("Prusa Edition website"), _L("Open the Prusa Edition website in your browser"), append_menu_item(helpMenu, wxID_ANY, _L("Prusa Edition website"), _L("Open the Prusa Edition website in your browser"),
[](wxCommandEvent&) { wxLaunchDefaultBrowser("http://github.com/prusa3d/PrusaSlicer"); }); [](wxCommandEvent&) { wxLaunchDefaultBrowser("http://github.com/prusa3d/PrusaSlicer"); });
//# my $versioncheck = $self->_append_menu_item($helpMenu, "Check for &Updates...", "Check for new Slic3r versions", sub{ //# my $versioncheck = $self->_append_menu_item($helpMenu, "Check for &Updates...", "Check for new Slic3r versions", sub{
//# wxTheApp->check_version(1); //# wxTheApp->check_version(1);
//# }); //# });
//# $versioncheck->Enable(wxTheApp->have_version_check); //# $versioncheck->Enable(wxTheApp->have_version_check);
append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("Slic3r Website")), append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("Slic3r Manual")),
wxString::Format(_L("Open the Slic3r website in your browser")), wxString::Format(_L("Open the Slic3r Manual in your browser")),
// [this](wxCommandEvent&) { wxGetApp().open_web_page_localized("https://www.prusa3d.com/slicerweb"); }); // [this](wxCommandEvent&) { wxGetApp().open_web_page_localized("https://www.prusa3d.com/slicerweb"); });
// append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("%s &Manual"), SLIC3R_APP_NAME), // append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("%s &Manual"), SLIC3R_APP_NAME),
// wxString::Format(_L("Open the %s manual in your browser"), SLIC3R_APP_NAME), // wxString::Format(_L("Open the %s manual in your browser"), SLIC3R_APP_NAME),
@ -1074,7 +1074,7 @@ static wxMenu* generate_help_menu()
append_menu_item(helpMenu, wxID_ANY, _L("Show &Configuration Folder"), _L("Show user configuration folder (datadir)"), append_menu_item(helpMenu, wxID_ANY, _L("Show &Configuration Folder"), _L("Show user configuration folder (datadir)"),
[](wxCommandEvent&) { Slic3r::GUI::desktop_open_datadir_folder(); }); [](wxCommandEvent&) { Slic3r::GUI::desktop_open_datadir_folder(); });
append_menu_item(helpMenu, wxID_ANY, _L("Report an I&ssue"), wxString::Format(_L("Report an issue on %s"), SLIC3R_APP_NAME), append_menu_item(helpMenu, wxID_ANY, _L("Report an I&ssue"), wxString::Format(_L("Report an issue on %s"), SLIC3R_APP_NAME),
[](wxCommandEvent&) { wxLaunchDefaultBrowser("http://github.com/supermerill/SuperSlicer/issues/new"); }); [](wxCommandEvent&) { wxLaunchDefaultBrowser("http://github.com/" SLIC3R_GITHUB "/issues/new"); });
if (wxGetApp().is_editor()) if (wxGetApp().is_editor())
append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("&About %s"), SLIC3R_APP_NAME), _L("Show about dialog"), append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("&About %s"), SLIC3R_APP_NAME), _L("Show about dialog"),
@ -1487,7 +1487,7 @@ void MainFrame::init_menubar_as_gcodeviewer()
append_menu_item(fileMenu, wxID_ANY, _L("Export &toolpaths as OBJ") + dots, _L("Export toolpaths as OBJ"), append_menu_item(fileMenu, wxID_ANY, _L("Export &toolpaths as OBJ") + dots, _L("Export toolpaths as OBJ"),
[this](wxCommandEvent&) { if (m_plater != nullptr) m_plater->export_toolpaths_to_obj(); }, "export_plater", nullptr, [this](wxCommandEvent&) { if (m_plater != nullptr) m_plater->export_toolpaths_to_obj(); }, "export_plater", nullptr,
[this]() {return can_export_toolpaths(); }, this); [this]() {return can_export_toolpaths(); }, this);
append_menu_item(fileMenu, wxID_ANY, _L("Open &SuperSlicer") + dots, _L("Open SuperSlicer"), append_menu_item(fileMenu, wxID_ANY, _L("O&pen " SLIC3R_APP_NAME) + dots, _L("Open " SLIC3R_APP_NAME),
[this](wxCommandEvent&) { start_new_slicer(); }, "", nullptr, [this](wxCommandEvent&) { start_new_slicer(); }, "", nullptr,
[this]() {return true; }, this); [this]() {return true; }, this);
fileMenu->AppendSeparator(); fileMenu->AppendSeparator();

View File

@ -474,7 +474,7 @@ private:
{NotificationType::PresetUpdateAvailable, NotificationLevel::ImportantNotification, 20, _u8L("Configuration update is available."), _u8L("See more."), [](wxEvtHandler* evnthndlr){ {NotificationType::PresetUpdateAvailable, NotificationLevel::ImportantNotification, 20, _u8L("Configuration update is available."), _u8L("See more."), [](wxEvtHandler* evnthndlr){
if (evnthndlr != nullptr) wxPostEvent(evnthndlr, PresetUpdateAvailableClickedEvent(EVT_PRESET_UPDATE_AVAILABLE_CLICKED)); return true; }}, if (evnthndlr != nullptr) wxPostEvent(evnthndlr, PresetUpdateAvailableClickedEvent(EVT_PRESET_UPDATE_AVAILABLE_CLICKED)); return true; }},
{NotificationType::NewAppAvailable, NotificationLevel::ImportantNotification, 20, _u8L("New version is available."), _u8L("See Releases page."), [](wxEvtHandler* evnthndlr){ {NotificationType::NewAppAvailable, NotificationLevel::ImportantNotification, 20, _u8L("New version is available."), _u8L("See Releases page."), [](wxEvtHandler* evnthndlr){
wxLaunchDefaultBrowser("https://github.com/prusa3d/PrusaSlicer/releases"); return true; }}, wxLaunchDefaultBrowser("https://github.com/" SLIC3R_GITHUB "/releases"); return true; }},
{NotificationType::EmptyColorChangeCode, NotificationLevel::RegularNotification, 10, {NotificationType::EmptyColorChangeCode, NotificationLevel::RegularNotification, 10,
_u8L("You have just added a G-code for color change, but its value is empty.\n" _u8L("You have just added a G-code for color change, but its value is empty.\n"
"To export the G-code correctly, check the \"Color Change G-code\" in \"Printer Settings > Custom G-code\"") }, "To export the G-code correctly, check the \"Color Change G-code\" in \"Printer Settings > Custom G-code\"") },

View File

@ -94,7 +94,7 @@ void PreferencesDialog::build()
// Please keep in sync with ConfigWizard // Please keep in sync with ConfigWizard
def.label = L("Check for application updates"); def.label = L("Check for application updates");
def.type = coBool; def.type = coBool;
def.tooltip = L("If enabled, SuperSlicer will check for the new versions of itself online. When a new version becomes available a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done."); def.tooltip = L("If enabled, " SLIC3R_APP_NAME " will check for the new versions of itself online. When a new version becomes available a notification is displayed at the next application startup (never during program usage). This is only a notification mechanisms, no automatic installation is done.");
def.set_default_value(new ConfigOptionBool(app_config->get("version_check") == "1")); def.set_default_value(new ConfigOptionBool(app_config->get("version_check") == "1"));
option = Option(def, "version_check"); option = Option(def, "version_check");
m_optgroup_general->append_single_option_line(option); m_optgroup_general->append_single_option_line(option);
@ -110,16 +110,16 @@ void PreferencesDialog::build()
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN #if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
#ifdef _WIN32 #ifdef _WIN32
// Please keep in sync with ConfigWizard // Please keep in sync with ConfigWizard
def.label = L("Associate .3mf files to SuperSlicer"); def.label = L("Associate .3mf files to " SLIC3R_APP_NAME);
def.type = coBool; def.type = coBool;
def.tooltip = L("If enabled, sets SuperSlicer as default application to open .3mf files."); def.tooltip = L("If enabled, sets " SLIC3R_APP_NAME " as default application to open .3mf files.");
def.set_default_value(new ConfigOptionBool(app_config->get("associate_3mf") == "1")); def.set_default_value(new ConfigOptionBool(app_config->get("associate_3mf") == "1"));
option = Option(def, "associate_3mf"); option = Option(def, "associate_3mf");
m_optgroup_general->append_single_option_line(option); m_optgroup_general->append_single_option_line(option);
def.label = L("Associate .stl files to SuperSlicer"); def.label = L("Associate .stl files to " SLIC3R_APP_NAME);
def.type = coBool; def.type = coBool;
def.tooltip = L("If enabled, sets SuperSlicer as default application to open .stl files."); def.tooltip = L("If enabled, sets " SLIC3R_APP_NAME " as default application to open .stl files.");
def.set_default_value(new ConfigOptionBool(app_config->get("associate_stl") == "1")); def.set_default_value(new ConfigOptionBool(app_config->get("associate_stl") == "1"));
option = Option(def, "associate_stl"); option = Option(def, "associate_stl");
m_optgroup_general->append_single_option_line(option); m_optgroup_general->append_single_option_line(option);

View File

@ -1859,7 +1859,7 @@ bool Tab::create_pages(std::string setting_type_name, int idx_page)
"A new Physical Printer profile is created by clicking on the \"cog\" icon right of the Printer profiles combo box, " "A new Physical Printer profile is created by clicking on the \"cog\" icon right of the Printer profiles combo box, "
"by selecting the \"Add physical printer\" item in the Printer combo box. The Physical Printer profile editor opens " "by selecting the \"Add physical printer\" item in the Printer combo box. The Physical Printer profile editor opens "
"also when clicking on the \"cog\" icon in the Printer settings tab. The Physical Printer profiles are being stored " "also when clicking on the \"cog\" icon in the Printer settings tab. The Physical Printer profiles are being stored "
"into SuperSlicer/physical_printer directory."); "into " SLIC3R_APP_NAME "/physical_printer directory.");
current_line = { "", "" }; current_line = { "", "" };
current_line.full_width = 1; current_line.full_width = 1;

View File

@ -25,9 +25,9 @@ namespace Slic3r {
namespace GUI { namespace GUI {
static const char* URL_CHANGELOG = "https://files.prusa3d.com/?latest=slicer-stable&lng=%1%"; static const char* URL_CHANGELOG = "https://github.com/" SLIC3R_GITHUB "/releases";
static const char* URL_DOWNLOAD = "https://www.prusa3d.com/downloads&lng=%1%"; static const char* URL_DOWNLOAD = "https://github.com/" SLIC3R_GITHUB "/releases";
static const char* URL_DEV = "https://github.com/supermerill/SuperSlicer/releases/tag/version_%1%"; static const char* URL_DEV = "https://github.com/" SLIC3R_GITHUB "/releases/tag/version_%1%";
static const std::string CONFIG_UPDATE_WIKI_URL("https://github.com/prusa3d/PrusaSlicer/wiki/Slic3r-PE-1.40-configuration-update"); static const std::string CONFIG_UPDATE_WIKI_URL("https://github.com/prusa3d/PrusaSlicer/wiki/Slic3r-PE-1.40-configuration-update");
@ -285,7 +285,6 @@ MsgDataLegacy::MsgDataLegacy() :
content_sizer->AddSpacer(VERT_SPACING); content_sizer->AddSpacer(VERT_SPACING);
auto *text2 = new wxStaticText(this, wxID_ANY, _(L("For more information please visit Prusa wiki page:"))); auto *text2 = new wxStaticText(this, wxID_ANY, _(L("For more information please visit Prusa wiki page:")));
static const wxString url("https://github.com/prusa3d/PrusaSlicer/wiki/Slic3r-PE-1.40-configuration-update");
// The wiki page name is intentionally not localized: // The wiki page name is intentionally not localized:
auto *link = new wxHyperlinkCtrl(this, wxID_ANY, wxString::Format("%s 1.40 configuration update", SLIC3R_APP_NAME), CONFIG_UPDATE_WIKI_URL); auto *link = new wxHyperlinkCtrl(this, wxID_ANY, wxString::Format("%s 1.40 configuration update", SLIC3R_APP_NAME), CONFIG_UPDATE_WIKI_URL);
content_sizer->Add(text2); content_sizer->Add(text2);

View File

@ -473,7 +473,7 @@ Updates PresetUpdater::priv::get_config_updates(const Semver &old_slic3r_version
} }
if (recommended->config_version < vp.config_version) { if (recommended->config_version < vp.config_version) {
BOOST_LOG_TRIVIAL(warning) << format("Recommended config version for the currently running SuperSlicer is older than the currently installed config for vendor %1%. This should not happen.", idx.vendor()); BOOST_LOG_TRIVIAL(warning) << format("Recommended config version for the currently running " SLIC3R_APP_NAME " is older than the currently installed config for vendor %1%. This should not happen.", idx.vendor());
continue; continue;
} }
@ -544,7 +544,7 @@ Updates PresetUpdater::priv::get_config_updates(const Semver &old_slic3r_version
found = true; found = true;
} else { } else {
BOOST_LOG_TRIVIAL(warning) << format("The recommended config version for vendor `%1%` in resources does not match the recommended\n" BOOST_LOG_TRIVIAL(warning) << format("The recommended config version for vendor `%1%` in resources does not match the recommended\n"
" config version for this version of SuperSlicer. Corrupted installation?", idx.vendor()); " config version for this version of " SLIC3R_APP_NAME ". Corrupted installation?", idx.vendor());
} }
} }
} }

View File

@ -39,7 +39,7 @@ static void start_new_slicer_or_gcodeviewer(const NewSlicerInstanceType instance
wxString path; wxString path;
wxFileName::SplitPath(wxStandardPaths::Get().GetExecutablePath(), &path, nullptr, nullptr, wxPATH_NATIVE); wxFileName::SplitPath(wxStandardPaths::Get().GetExecutablePath(), &path, nullptr, nullptr, wxPATH_NATIVE);
path += "\\"; path += "\\";
path += (instance_type == NewSlicerInstanceType::Slicer) ? "superslicer.exe" : "prusa-gcodeviewer.exe"; path += (instance_type == NewSlicerInstanceType::Slicer) ? SLIC3R_APP_CMD ".exe" : GCODEVIEWER_APP_CMD ".exe";
std::vector<const wchar_t*> args; std::vector<const wchar_t*> args;
args.reserve(4); args.reserve(4);
args.emplace_back(path.wc_str()); args.emplace_back(path.wc_str());
@ -62,9 +62,9 @@ static void start_new_slicer_or_gcodeviewer(const NewSlicerInstanceType instance
{ {
// Maybe one day we will be able to run PrusaGCodeViewer, but for now the Apple notarization // Maybe one day we will be able to run PrusaGCodeViewer, but for now the Apple notarization
// process refuses Apps with multiple binaries and Vojtech does not know any workaround. // process refuses Apps with multiple binaries and Vojtech does not know any workaround.
// ((instance_type == NewSlicerInstanceType::Slicer) ? "PrusaSlicer" : "PrusaGCodeViewer"); // ((instance_type == NewSlicerInstanceType::Slicer) ? SLIC3R_APP_NAME : GCODEVIEWER_APP_NAME);
// Just run PrusaSlicer and give it a --gcodeviewer parameter. // Just run the slicer and give it a --gcodeviewer parameter.
bin_path = bin_path.parent_path() / "PrusaSlicer"; bin_path = bin_path.parent_path() / SLIC3R_APP_NAME;
// On Apple the wxExecute fails, thus we use boost::process instead. // On Apple the wxExecute fails, thus we use boost::process instead.
BOOST_LOG_TRIVIAL(info) << "Trying to spawn a new slicer \"" << bin_path.string() << "\""; BOOST_LOG_TRIVIAL(info) << "Trying to spawn a new slicer \"" << bin_path.string() << "\"";
try { try {
@ -109,7 +109,7 @@ static void start_new_slicer_or_gcodeviewer(const NewSlicerInstanceType instance
std::string my_path; std::string my_path;
if (args.empty()) { if (args.empty()) {
// Binary path was not set to the AppImage in the Linux specific block above, call the application directly. // Binary path was not set to the AppImage in the Linux specific block above, call the application directly.
my_path = (bin_path.parent_path() / ((instance_type == NewSlicerInstanceType::Slicer) ? "superslicer" : "prusa-gcodeviewer")).string(); my_path = (bin_path.parent_path() / ((instance_type == NewSlicerInstanceType::Slicer) ? SLIC3R_APP_CMD : GCODEVIEWER_APP_CMD)).string();
args.emplace_back(my_path.c_str()); args.emplace_back(my_path.c_str());
} }
std::string to_open; std::string to_open;

View File

@ -3,8 +3,18 @@
set(SLIC3R_APP_NAME "SuperSlicer") set(SLIC3R_APP_NAME "SuperSlicer")
set(SLIC3R_APP_KEY "SuperSlicer") set(SLIC3R_APP_KEY "SuperSlicer")
set(SLIC3R_APP_CMD "superslicer")
set(SLIC3R_VERSION "2.3.55") set(SLIC3R_VERSION "2.3.55")
set(SLIC3R_VERSION_FULL "2.3.55.5") set(SLIC3R_VERSION_FULL "2.3.55.5")
set(SLIC3R_BUILD_ID "SuperSlicer_${SLIC3R_VERSION_FULL}") set(SLIC3R_BUILD_ID "SuperSlicer_${SLIC3R_VERSION_FULL}")
set(SLIC3R_RC_VERSION "2,3,55,5") set(SLIC3R_RC_VERSION "2,3,55,5")
set(SLIC3R_RC_VERSION_DOTS "${SLIC3R_VERSION_FULL}") set(SLIC3R_RC_VERSION_DOTS "${SLIC3R_VERSION_FULL}")
set(GCODEVIEWER_APP_NAME "G-code Viewer")
set(GCODEVIEWER_APP_KEY "GCodeViewer")
set(GCODEVIEWER_APP_CMD "gcodeviewer")
set(SLIC3R_BASED_ON "based on PrusaSlicer and Slic3r")
set(SLIC3R_GITHUB "supermerill/SuperSlicer")
set(SLIC3R_INTRO "SuperSlicer is based on PrusaSlicer by Prusa and Slic3r by Alessandro Ranellucci and the RepRap community.")