mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-12 02:09:02 +08:00
WIP GCode substitutions: Changed the format of gcode_substitutions by
adding an empty comment as a fourth parameter to each substitution. In the future, we will provide a UI to show / edit the comment.
This commit is contained in:
parent
12cebddce6
commit
7da4bebe7a
@ -24,11 +24,11 @@ const void unescape_extended_search_mode(std::string &s)
|
|||||||
|
|
||||||
GCodeFindReplace::GCodeFindReplace(const std::vector<std::string> &gcode_substitutions)
|
GCodeFindReplace::GCodeFindReplace(const std::vector<std::string> &gcode_substitutions)
|
||||||
{
|
{
|
||||||
if ((gcode_substitutions.size() % 3) != 0)
|
if ((gcode_substitutions.size() % 4) != 0)
|
||||||
throw RuntimeError("Invalid length of gcode_substitutions parameter");
|
throw RuntimeError("Invalid length of gcode_substitutions parameter");
|
||||||
|
|
||||||
m_substitutions.reserve(gcode_substitutions.size() / 3);
|
m_substitutions.reserve(gcode_substitutions.size() / 4);
|
||||||
for (size_t i = 0; i < gcode_substitutions.size(); i += 3) {
|
for (size_t i = 0; i < gcode_substitutions.size(); i += 4) {
|
||||||
Substitution out;
|
Substitution out;
|
||||||
try {
|
try {
|
||||||
out.plain_pattern = gcode_substitutions[i];
|
out.plain_pattern = gcode_substitutions[i];
|
||||||
|
@ -3899,17 +3899,17 @@ void SubstitutionManager::init(DynamicPrintConfig* config, wxWindow* parent, wxF
|
|||||||
void SubstitutionManager::validate_lenth()
|
void SubstitutionManager::validate_lenth()
|
||||||
{
|
{
|
||||||
std::vector<std::string>& substitutions = m_config->option<ConfigOptionStrings>("gcode_substitutions")->values;
|
std::vector<std::string>& substitutions = m_config->option<ConfigOptionStrings>("gcode_substitutions")->values;
|
||||||
if ((substitutions.size() % 3) != 0) {
|
if ((substitutions.size() % 4) != 0) {
|
||||||
WarningDialog(m_parent, "Value of gcode_substitutions parameter will be cut to valid length",
|
WarningDialog(m_parent, "Value of gcode_substitutions parameter will be cut to valid length",
|
||||||
"Invalid length of gcode_substitutions parameter").ShowModal();
|
"Invalid length of gcode_substitutions parameter").ShowModal();
|
||||||
substitutions.resize(substitutions.size() - (substitutions.size() % 3));
|
substitutions.resize(substitutions.size() - (substitutions.size() % 4));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SubstitutionManager::is_compatibile_with_ui()
|
bool SubstitutionManager::is_compatibile_with_ui()
|
||||||
{
|
{
|
||||||
const std::vector<std::string>& substitutions = m_config->option<ConfigOptionStrings>("gcode_substitutions")->values;
|
const std::vector<std::string>& substitutions = m_config->option<ConfigOptionStrings>("gcode_substitutions")->values;
|
||||||
if (int(substitutions.size() / 3) != m_grid_sizer->GetEffectiveRowsCount() - 1) {
|
if (int(substitutions.size() / 4) != m_grid_sizer->GetEffectiveRowsCount() - 1) {
|
||||||
ErrorDialog(m_parent, "Invalid compatibility between UI and BE", false).ShowModal();
|
ErrorDialog(m_parent, "Invalid compatibility between UI and BE", false).ShowModal();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -3919,7 +3919,7 @@ bool SubstitutionManager::is_compatibile_with_ui()
|
|||||||
bool SubstitutionManager::is_valid_id(int substitution_id, const wxString& message)
|
bool SubstitutionManager::is_valid_id(int substitution_id, const wxString& message)
|
||||||
{
|
{
|
||||||
const std::vector<std::string>& substitutions = m_config->option<ConfigOptionStrings>("gcode_substitutions")->values;
|
const std::vector<std::string>& substitutions = m_config->option<ConfigOptionStrings>("gcode_substitutions")->values;
|
||||||
if (int(substitutions.size() / 3) < substitution_id) {
|
if (int(substitutions.size() / 4) < substitution_id) {
|
||||||
ErrorDialog(m_parent, message, false).ShowModal();
|
ErrorDialog(m_parent, message, false).ShowModal();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -3948,7 +3948,7 @@ void SubstitutionManager::delete_substitution(int substitution_id)
|
|||||||
|
|
||||||
// delete substitution
|
// delete substitution
|
||||||
std::vector<std::string>& substitutions = m_config->option<ConfigOptionStrings>("gcode_substitutions")->values;
|
std::vector<std::string>& substitutions = m_config->option<ConfigOptionStrings>("gcode_substitutions")->values;
|
||||||
substitutions.erase(std::next(substitutions.begin(), substitution_id * 3), std::next(substitutions.begin(), substitution_id * 3 + 3));
|
substitutions.erase(std::next(substitutions.begin(), substitution_id * 4), std::next(substitutions.begin(), substitution_id * 4 + 4));
|
||||||
call_ui_update();
|
call_ui_update();
|
||||||
|
|
||||||
// update grid_sizer
|
// update grid_sizer
|
||||||
@ -3970,7 +3970,7 @@ void SubstitutionManager::add_substitution(int substitution_id, const std::strin
|
|||||||
// create new substitution
|
// create new substitution
|
||||||
// it have to be added to config too
|
// it have to be added to config too
|
||||||
std::vector<std::string>& substitutions = m_config->option<ConfigOptionStrings>("gcode_substitutions")->values;
|
std::vector<std::string>& substitutions = m_config->option<ConfigOptionStrings>("gcode_substitutions")->values;
|
||||||
for (size_t i = 0; i < 3; i ++)
|
for (size_t i = 0; i < 4; i ++)
|
||||||
substitutions.push_back(std::string());
|
substitutions.push_back(std::string());
|
||||||
|
|
||||||
call_after_layout = true;
|
call_after_layout = true;
|
||||||
@ -4073,7 +4073,7 @@ void SubstitutionManager::update_from_config()
|
|||||||
validate_lenth();
|
validate_lenth();
|
||||||
|
|
||||||
int subst_id = 0;
|
int subst_id = 0;
|
||||||
for (size_t i = 0; i < subst.size(); i += 3)
|
for (size_t i = 0; i < subst.size(); i += 4)
|
||||||
add_substitution(subst_id++, subst[i], subst[i + 1], subst[i + 2]);
|
add_substitution(subst_id++, subst[i], subst[i + 1], subst[i + 2]);
|
||||||
|
|
||||||
m_parent->GetParent()->Layout();
|
m_parent->GetParent()->Layout();
|
||||||
@ -4098,7 +4098,7 @@ void SubstitutionManager::edit_substitution(int substitution_id, int opt_pos, co
|
|||||||
if(!is_compatibile_with_ui() || !is_valid_id(substitution_id, "Invalid substitution_id to edit"))
|
if(!is_compatibile_with_ui() || !is_valid_id(substitution_id, "Invalid substitution_id to edit"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
substitutions[substitution_id * 3 + opt_pos] = value;
|
substitutions[substitution_id * 4 + opt_pos] = value;
|
||||||
|
|
||||||
call_ui_update();
|
call_ui_update();
|
||||||
}
|
}
|
||||||
|
@ -60,8 +60,8 @@ class SubstitutionManager
|
|||||||
bool is_valid_id(int substitution_id, const wxString& message);
|
bool is_valid_id(int substitution_id, const wxString& message);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SubstitutionManager() {};
|
SubstitutionManager() = default;
|
||||||
~SubstitutionManager() {};
|
~SubstitutionManager() = default;
|
||||||
|
|
||||||
void init(DynamicPrintConfig* config, wxWindow* parent, wxFlexGridSizer* grid_sizer);
|
void init(DynamicPrintConfig* config, wxWindow* parent, wxFlexGridSizer* grid_sizer);
|
||||||
void create_legend();
|
void create_legend();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user