FIX: Copywriting updates
JIRA: NONE Change-Id: I6df034f95b4e6d517c57286dd6f564510b9fa4ab
This commit is contained in:
parent
ca96b61781
commit
8cba6a3566
|
@ -844,7 +844,7 @@ std::vector<GCode::LayerToPrint> GCode::collect_layers_to_print(const PrintObjec
|
||||||
// first layer may result in skirt/brim in the air and maybe other issues.
|
// first layer may result in skirt/brim in the air and maybe other issues.
|
||||||
if (layers_to_print.size() == 1u) {
|
if (layers_to_print.size() == 1u) {
|
||||||
if (!has_extrusions)
|
if (!has_extrusions)
|
||||||
throw Slic3r::SlicingError(_(L("The following object(s) have empty initial layer and can't be printed. Please Cut the bottom or enable supports.")), object.id().id);
|
throw Slic3r::SlicingError(_(L("The following object(s) have empty initial layer and can't be printed. Please cut the bottom or enable supports.")), object.id().id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// In case there are extrusions on this layer, check there is a layer to lay it on.
|
// In case there are extrusions on this layer, check there is a layer to lay it on.
|
||||||
|
|
|
@ -1222,7 +1222,7 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons*
|
||||||
// BBS
|
// BBS
|
||||||
#if 0
|
#if 0
|
||||||
if (this->has_wipe_tower() && object->config().independent_support_layer_height) {
|
if (this->has_wipe_tower() && object->config().independent_support_layer_height) {
|
||||||
return {L("The prime tower requires that support has the same layer height with object."), object, "support_filament"};
|
return {L("The prime tower requires that support has the same layer height as object."), object, "support_filament"};
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -541,7 +541,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("reduce_crossing_wall", coBool);
|
def = this->add("reduce_crossing_wall", coBool);
|
||||||
def->label = L("Avoid crossing wall");
|
def->label = L("Avoid crossing wall");
|
||||||
def->category = L("Quality");
|
def->category = L("Quality");
|
||||||
def->tooltip = L("Detour and avoid to travel across wall which may cause blob on surface");
|
def->tooltip = L("Detour and avoid traveling across wall which may cause blob on surface");
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionBool(false));
|
def->set_default_value(new ConfigOptionBool(false));
|
||||||
|
|
||||||
|
@ -549,7 +549,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def->label = L("Avoid crossing wall - Max detour length");
|
def->label = L("Avoid crossing wall - Max detour length");
|
||||||
def->category = L("Quality");
|
def->category = L("Quality");
|
||||||
def->tooltip = L("Maximum detour distance for avoiding crossing wall. "
|
def->tooltip = L("Maximum detour distance for avoiding crossing wall. "
|
||||||
"Don't detour if the detour distance is large than this value. "
|
"Don't detour if the detour distance is larger than this value. "
|
||||||
"Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path. Zero to disable");
|
"Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path. Zero to disable");
|
||||||
def->sidetext = L("mm or %");
|
def->sidetext = L("mm or %");
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
|
@ -693,7 +693,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("bottom_shell_thickness", coFloat);
|
def = this->add("bottom_shell_thickness", coFloat);
|
||||||
def->label = L("Bottom shell thickness");
|
def->label = L("Bottom shell thickness");
|
||||||
def->category = L("Strength");
|
def->category = L("Strength");
|
||||||
def->tooltip = L("The number of bottom solid layers is increased when slicing if the thickness calculated by bottom shell layers is "
|
def->tooltip = L("The number of bottom solid layers is increased when slicing if the thickness calculated by bottom shells layers is "
|
||||||
"thinner than this value. This can avoid having too thin shell when layer height is small. 0 means that "
|
"thinner than this value. This can avoid having too thin shell when layer height is small. 0 means that "
|
||||||
"this setting is disabled and thickness of bottom shell is absolutely determained by bottom shell layers");
|
"this setting is disabled and thickness of bottom shell is absolutely determained by bottom shell layers");
|
||||||
def->full_label = L("Bottom shell thickness");
|
def->full_label = L("Bottom shell thickness");
|
||||||
|
@ -709,7 +709,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
|
|
||||||
def = this->add("overhang_fan_speed", coInts);
|
def = this->add("overhang_fan_speed", coInts);
|
||||||
def->label = L("Fan speed for overhang");
|
def->label = L("Fan speed for overhang");
|
||||||
def->tooltip = L("Force part cooling fan to be this speed when printing bridge or overhang wall which has large overhang degree. "
|
def->tooltip = L("Force part cooling fan to be at this speed when printing bridge or overhang wall which has large overhang degree. "
|
||||||
"Forcing cooling for overhang and bridge can get better quality for these part");
|
"Forcing cooling for overhang and bridge can get better quality for these part");
|
||||||
def->sidetext = "%";
|
def->sidetext = "%";
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
|
@ -780,7 +780,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("top_one_wall_type", coEnum);
|
def = this->add("top_one_wall_type", coEnum);
|
||||||
def->label = L("Only one wall on top surfaces");
|
def->label = L("Only one wall on top surfaces");
|
||||||
def->category = L("Quality");
|
def->category = L("Quality");
|
||||||
def->tooltip = L("Use only one wall on flat top surface, to give more space to the top infill pattern. Could be applyed on topmost surface or all top surface.");
|
def->tooltip = L("Use only one wall on flat top surface, to give more space to the top infill pattern. Could be applied on topmost surface or all top surface.");
|
||||||
def->enum_keys_map = &ConfigOptionEnum<TopOneWallType>::get_enum_values();
|
def->enum_keys_map = &ConfigOptionEnum<TopOneWallType>::get_enum_values();
|
||||||
def->enum_values.push_back("not apply");
|
def->enum_values.push_back("not apply");
|
||||||
def->enum_values.push_back("all top");
|
def->enum_values.push_back("all top");
|
||||||
|
@ -979,7 +979,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("slow_down_for_layer_cooling", coBools);
|
def = this->add("slow_down_for_layer_cooling", coBools);
|
||||||
def->label = L("Slow printing down for better layer cooling");
|
def->label = L("Slow printing down for better layer cooling");
|
||||||
def->tooltip = L("Enable this option to slow printing speed down to make the final layer time not shorter than "
|
def->tooltip = L("Enable this option to slow printing speed down to make the final layer time not shorter than "
|
||||||
"the layer time threshold in \"Max fan speed threshold\", so that layer can be cooled for longer time. "
|
"the layer time threshold in \"Max fan speed threshold\", so that layer can be cooled for a longer time. "
|
||||||
"This can improve the cooling quality for needle and small details");
|
"This can improve the cooling quality for needle and small details");
|
||||||
def->set_default_value(new ConfigOptionBools { true });
|
def->set_default_value(new ConfigOptionBools { true });
|
||||||
|
|
||||||
|
@ -1011,7 +1011,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
|
|
||||||
def = this->add("during_print_exhaust_fan_speed", coInts);
|
def = this->add("during_print_exhaust_fan_speed", coInts);
|
||||||
def->label = L("Fan speed");
|
def->label = L("Fan speed");
|
||||||
def->tooltip=L("Speed of exhuast fan during printing.This speed will overwrite the speed in filament custom gcode");
|
def->tooltip=L("Speed of exhaust fan during printing.This speed will overwrite the speed in filament custom gcode");
|
||||||
def->sidetext = "%";
|
def->sidetext = "%";
|
||||||
def->min=0;
|
def->min=0;
|
||||||
def->max=100;
|
def->max=100;
|
||||||
|
@ -1040,7 +1040,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("bridge_no_support", coBool);
|
def = this->add("bridge_no_support", coBool);
|
||||||
def->label = L("Don't support bridges");
|
def->label = L("Don't support bridges");
|
||||||
def->category = L("Support");
|
def->category = L("Support");
|
||||||
def->tooltip = L("Don't support the whole bridge area which make support very large. "
|
def->tooltip = L("Don't support the whole bridge area which makes support very large. "
|
||||||
"Bridge usually can be printing directly without support if not very long");
|
"Bridge usually can be printing directly without support if not very long");
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionBool(false));
|
def->set_default_value(new ConfigOptionBool(false));
|
||||||
|
@ -1100,9 +1100,10 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("internal_bridge_support_thickness", coFloat);
|
def = this->add("internal_bridge_support_thickness", coFloat);
|
||||||
def->label = L("Internal bridge support thickness");
|
def->label = L("Internal bridge support thickness");
|
||||||
def->category = L("Strength");
|
def->category = L("Strength");
|
||||||
def->tooltip = L("If enabled, Studio will generate support loops under the contours of internal bridges."
|
def->tooltip = L("When sparse infill density is low, the internal solid infill or internal bridge may have no archor at the end of line. "
|
||||||
"These support loops could prevent internal bridges from extruding over the air and improve the top surface quality, especially when the sparse infill density is low."
|
"This causes falling and bad quality when printing internal solid infill. "
|
||||||
"This value determines the thickness of the support loops. 0 means disable this feature");
|
"When enable this feature, loop paths will be added to the sparse fill of the lower layers for specific thickness, so that better archor can be provided for internal bridge. "
|
||||||
|
"0 means disable this feature");
|
||||||
def->sidetext = L("mm");
|
def->sidetext = L("mm");
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->max = 2;
|
def->max = 2;
|
||||||
|
@ -1330,8 +1331,8 @@ void PrintConfigDef::init_fff_params()
|
||||||
|
|
||||||
def = this->add("reduce_fan_stop_start_freq", coBools);
|
def = this->add("reduce_fan_stop_start_freq", coBools);
|
||||||
def->label = L("Keep fan always on");
|
def->label = L("Keep fan always on");
|
||||||
def->tooltip = L("If enable this setting, part cooling fan will never be stoped and will run at least "
|
def->tooltip = L("If enable this setting, part cooling fan will never be stopped and will run at least "
|
||||||
"at minimum speed to reduce the frequency of starting and stoping");
|
"at minimum speed to reduce the frequency of starting and stopping");
|
||||||
def->set_default_value(new ConfigOptionBools { false });
|
def->set_default_value(new ConfigOptionBools { false });
|
||||||
|
|
||||||
def = this->add("fan_cooling_layer_time", coInts);
|
def = this->add("fan_cooling_layer_time", coInts);
|
||||||
|
@ -1669,7 +1670,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("initial_layer_print_height", coFloat);
|
def = this->add("initial_layer_print_height", coFloat);
|
||||||
def->label = L("Initial layer height");
|
def->label = L("Initial layer height");
|
||||||
def->category = L("Quality");
|
def->category = L("Quality");
|
||||||
def->tooltip = L("Height of initial layer. Making initial layer height to be thick slightly can improve build plate adhension");
|
def->tooltip = L("Height of initial layer. Making initial layer height thick slightly can improve build plate adhension");
|
||||||
def->sidetext = L("mm");
|
def->sidetext = L("mm");
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->set_default_value(new ConfigOptionFloat(0.2));
|
def->set_default_value(new ConfigOptionFloat(0.2));
|
||||||
|
@ -1748,7 +1749,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("fuzzy_skin_point_distance", coFloat);
|
def = this->add("fuzzy_skin_point_distance", coFloat);
|
||||||
def->label = L("Fuzzy skin point distance");
|
def->label = L("Fuzzy skin point distance");
|
||||||
def->category = L("Others");
|
def->category = L("Others");
|
||||||
def->tooltip = L("The average diatance between the random points introducded on each line segment");
|
def->tooltip = L("The average distance between the random points introduced on each line segment");
|
||||||
def->sidetext = L("mm");
|
def->sidetext = L("mm");
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->max = 5;
|
def->max = 5;
|
||||||
|
@ -1774,7 +1775,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("enable_arc_fitting", coBool);
|
def = this->add("enable_arc_fitting", coBool);
|
||||||
def->label = L("Arc fitting");
|
def->label = L("Arc fitting");
|
||||||
def->tooltip = L("Enable this to get a G-code file which has G2 and G3 moves. "
|
def->tooltip = L("Enable this to get a G-code file which has G2 and G3 moves. "
|
||||||
"And the fitting tolerance is same with resolution");
|
"And the fitting tolerance is the same as resolution");
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionBool(0));
|
def->set_default_value(new ConfigOptionBool(0));
|
||||||
// BBS
|
// BBS
|
||||||
|
@ -2303,8 +2304,8 @@ void PrintConfigDef::init_fff_params()
|
||||||
|
|
||||||
def = this->add("max_layer_height", coFloats);
|
def = this->add("max_layer_height", coFloats);
|
||||||
def->label = L("Max");
|
def->label = L("Max");
|
||||||
def->tooltip = L("The largest printable layer height for extruder. Used tp limits "
|
def->tooltip = L("The largest printable layer height for extruder. Used to limit "
|
||||||
"the maximum layer hight when enable adaptive layer height");
|
"the maximum layer height when enable adaptive layer height");
|
||||||
def->sidetext = L("mm");
|
def->sidetext = L("mm");
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
|
@ -2346,7 +2347,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("additional_cooling_fan_speed", coInts);
|
def = this->add("additional_cooling_fan_speed", coInts);
|
||||||
def->label = L("Fan speed");
|
def->label = L("Fan speed");
|
||||||
def->tooltip = L("Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during printing except the first several layers "
|
def->tooltip = L("Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during printing except the first several layers "
|
||||||
"which is defined by no cooling layers");
|
"which are defined by no cooling layers");
|
||||||
def->sidetext = "%";
|
def->sidetext = "%";
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->max = 100;
|
def->max = 100;
|
||||||
|
@ -2355,8 +2356,8 @@ void PrintConfigDef::init_fff_params()
|
||||||
|
|
||||||
def = this->add("min_layer_height", coFloats);
|
def = this->add("min_layer_height", coFloats);
|
||||||
def->label = L("Min");
|
def->label = L("Min");
|
||||||
def->tooltip = L("The lowest printable layer height for extruder. Used tp limits "
|
def->tooltip = L("The lowest printable layer height for extruder. Used to limit "
|
||||||
"the minimum layer hight when enable adaptive layer height");
|
"the minimum layer height when enable adaptive layer height");
|
||||||
def->sidetext = L("mm");
|
def->sidetext = L("mm");
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
|
@ -2411,7 +2412,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
|
|
||||||
def = this->add("start_end_points", coPoints);
|
def = this->add("start_end_points", coPoints);
|
||||||
def->label = L("Start end points");
|
def->label = L("Start end points");
|
||||||
def->tooltip = L("The start and end points which is from cutter area to garbage can.");
|
def->tooltip = L("The start and end points which are from cutter area to garbage can.");
|
||||||
def->mode = comDevelop;
|
def->mode = comDevelop;
|
||||||
def->readonly = true;
|
def->readonly = true;
|
||||||
// start and end point is from the change_filament_gcode
|
// start and end point is from the change_filament_gcode
|
||||||
|
@ -2575,8 +2576,8 @@ void PrintConfigDef::init_fff_params()
|
||||||
|
|
||||||
def = this->add("resolution", coFloat);
|
def = this->add("resolution", coFloat);
|
||||||
def->label = L("Resolution");
|
def->label = L("Resolution");
|
||||||
def->tooltip = L("G-code path is genereated after simplifing the contour of model to avoid too much points and gcode lines "
|
def->tooltip = L("G-code path is generated after simplifying the contour of model to avoid too many points and gcode lines "
|
||||||
"in gcode file. Smaller value means higher resolution and more time to slice");
|
"in the gcode file. Smaller value means higher resolution and more time to slice");
|
||||||
def->sidetext = L("mm");
|
def->sidetext = L("mm");
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
|
@ -2625,7 +2626,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("z_hop", coFloats);
|
def = this->add("z_hop", coFloats);
|
||||||
def->label = L("Z hop when retract");
|
def->label = L("Z hop when retract");
|
||||||
def->tooltip = L("Whenever the retraction is done, the nozzle is lifted a little to create clearance between nozzle and the print. "
|
def->tooltip = L("Whenever the retraction is done, the nozzle is lifted a little to create clearance between nozzle and the print. "
|
||||||
"It prevents nozzle from hitting the print when travel move. "
|
"It prevents nozzle from hitting the print when travel moves. "
|
||||||
"Using spiral line to lift z can prevent stringing");
|
"Using spiral line to lift z can prevent stringing");
|
||||||
def->sidetext = L("mm");
|
def->sidetext = L("mm");
|
||||||
def->mode = comSimple;
|
def->mode = comSimple;
|
||||||
|
@ -2705,7 +2706,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("deretraction_speed", coFloats);
|
def = this->add("deretraction_speed", coFloats);
|
||||||
def->label = L("Deretraction Speed");
|
def->label = L("Deretraction Speed");
|
||||||
def->full_label = L("Deretraction Speed");
|
def->full_label = L("Deretraction Speed");
|
||||||
def->tooltip = L("Speed for reloading filament into extruder. Zero means same speed with retraction");
|
def->tooltip = L("Speed for reloading filament into extruder. Zero means the same speed as retraction");
|
||||||
def->sidetext = L("mm/s");
|
def->sidetext = L("mm/s");
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionFloats { 0. });
|
def->set_default_value(new ConfigOptionFloats { 0. });
|
||||||
|
@ -3284,7 +3285,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("tree_support_wall_count", coInt);
|
def = this->add("tree_support_wall_count", coInt);
|
||||||
def->label = L("Support wall loops");
|
def->label = L("Support wall loops");
|
||||||
def->category = L("Support");
|
def->category = L("Support");
|
||||||
def->tooltip = L("This setting specify the count of walls around support");
|
def->tooltip = L("This setting specifies the count of walls around support");
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionInt(0));
|
def->set_default_value(new ConfigOptionInt(0));
|
||||||
|
@ -3431,13 +3432,13 @@ void PrintConfigDef::init_fff_params()
|
||||||
def = this->add("wipe", coBools);
|
def = this->add("wipe", coBools);
|
||||||
def->label = L("Wipe while retracting");
|
def->label = L("Wipe while retracting");
|
||||||
def->tooltip = L("Move nozzle along the last extrusion path when retracting to clean leaked material on nozzle. "
|
def->tooltip = L("Move nozzle along the last extrusion path when retracting to clean leaked material on nozzle. "
|
||||||
"This can minimize blob when print new part after travel");
|
"This can minimize blob when printing new part after travel");
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionBools { false });
|
def->set_default_value(new ConfigOptionBools { false });
|
||||||
|
|
||||||
def = this->add("wipe_distance", coFloats);
|
def = this->add("wipe_distance", coFloats);
|
||||||
def->label = L("Wipe Distance");
|
def->label = L("Wipe Distance");
|
||||||
def->tooltip = L("Discribe how long the nozzle will move along the last path when retracting");
|
def->tooltip = L("Describe how long the nozzle will move along the last path when retracting");
|
||||||
def->sidetext = L("mm");
|
def->sidetext = L("mm");
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
|
@ -5336,8 +5337,8 @@ CLITransformConfigDef::CLITransformConfigDef()
|
||||||
def->set_default_value(new ConfigOptionInt(0));
|
def->set_default_value(new ConfigOptionInt(0));
|
||||||
|
|
||||||
def = this->add("repetitions", coInt);
|
def = this->add("repetitions", coInt);
|
||||||
def->label = "Repetions count";
|
def->label = "Repetition count";
|
||||||
def->tooltip = "Repetions count of the whole model";
|
def->tooltip = "Repetition count of the whole model";
|
||||||
def->cli_params = "count";
|
def->cli_params = "count";
|
||||||
def->set_default_value(new ConfigOptionInt(1));
|
def->set_default_value(new ConfigOptionInt(1));
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,7 @@ void AMSSetting::create()
|
||||||
|
|
||||||
// tip line2
|
// tip line2
|
||||||
m_tip_Insert_material_line2 = new Label(m_panel_body,
|
m_tip_Insert_material_line2 = new Label(m_panel_body,
|
||||||
_L("Note: if new filament is inserted during printing, the AMS will not automatically read any information until printing is completed.")
|
_L("Note: if a new filament is inserted during printing, the AMS will not automatically read any information until printing is completed.")
|
||||||
);
|
);
|
||||||
m_tip_Insert_material_line2->SetFont(::Label::Body_13);
|
m_tip_Insert_material_line2->SetFont(::Label::Body_13);
|
||||||
m_tip_Insert_material_line2->SetForegroundColour(AMS_SETTING_GREY700);
|
m_tip_Insert_material_line2->SetForegroundColour(AMS_SETTING_GREY700);
|
||||||
|
|
|
@ -828,7 +828,7 @@ AmsHumidityTipPopup::AmsHumidityTipPopup(wxWindow* parent)
|
||||||
m_staticText1->SetFont(::Label::Head_13);
|
m_staticText1->SetFont(::Label::Head_13);
|
||||||
|
|
||||||
|
|
||||||
m_staticText2 = new Label(this, _L("Green means that AMS humidity is normal, orange represent humidity is high, red represent humidity is too high.(Hygrometer: lower the better.)"));
|
m_staticText2 = new Label(this, _L("Green means that AMS humidity is normal, orange represents humidity is high, red represents humidity is too high.(Hygrometer: lower the better.)"));
|
||||||
m_staticText2->SetFont(::Label::Body_13);
|
m_staticText2->SetFont(::Label::Body_13);
|
||||||
m_staticText2->SetSize(wxSize(FromDIP(357), -1));
|
m_staticText2->SetSize(wxSize(FromDIP(357), -1));
|
||||||
m_staticText2->SetMinSize(wxSize(FromDIP(357), -1));
|
m_staticText2->SetMinSize(wxSize(FromDIP(357), -1));
|
||||||
|
|
|
@ -77,7 +77,7 @@ std::pair<std::string, std::vector<size_t>> SlicingProcessCompletedEvent::format
|
||||||
try {
|
try {
|
||||||
this->rethrow_exception();
|
this->rethrow_exception();
|
||||||
} catch (const std::bad_alloc &ex) {
|
} catch (const std::bad_alloc &ex) {
|
||||||
wxString errmsg = GUI::from_u8(boost::format(_utf8(L("A error occurred. Maybe memory of system is not enough or it's a bug "
|
wxString errmsg = GUI::from_u8(boost::format(_utf8(L("An error occurred. Maybe memory of system is not enough or it's a bug "
|
||||||
"of the program"))).str());
|
"of the program"))).str());
|
||||||
error = std::string(errmsg.ToUTF8()) + "\n" + std::string(ex.what());
|
error = std::string(errmsg.ToUTF8()) + "\n" + std::string(ex.what());
|
||||||
} catch (const HardCrash &ex) {
|
} catch (const HardCrash &ex) {
|
||||||
|
|
|
@ -408,7 +408,7 @@ bool CaliPASaveAutoPanel::get_result(std::vector<PACalibResult>& out_result) {
|
||||||
std::unordered_set<std::pair<std::string, std::string>, PACalibResult> set;
|
std::unordered_set<std::pair<std::string, std::string>, PACalibResult> set;
|
||||||
for (auto& result : m_calib_results) {
|
for (auto& result : m_calib_results) {
|
||||||
if (!set.insert({ result.second.name, result.second.filament_id }).second) {
|
if (!set.insert({ result.second.name, result.second.filament_id }).second) {
|
||||||
MessageDialog msg_dlg(nullptr, _L("Only one of the results with the same name will be saved. Are you sure you want to overrides the other results?"), wxEmptyString, wxICON_WARNING | wxYES_NO);
|
MessageDialog msg_dlg(nullptr, _L("Only one of the results with the same name will be saved. Are you sure you want to override the other results?"), wxEmptyString, wxICON_WARNING | wxYES_NO);
|
||||||
if (msg_dlg.ShowModal() != wxID_YES) {
|
if (msg_dlg.ShowModal() != wxID_YES) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -420,7 +420,7 @@ bool CaliPASaveAutoPanel::get_result(std::vector<PACalibResult>& out_result) {
|
||||||
// Check for duplicate names from history
|
// Check for duplicate names from history
|
||||||
for (auto& result : m_history_results) {
|
for (auto& result : m_history_results) {
|
||||||
if (!set.insert({ result.name, result.filament_id }).second) {
|
if (!set.insert({ result.name, result.filament_id }).second) {
|
||||||
MessageDialog msg_dlg(nullptr, wxString::Format(_L("There is already a historical calibration result with the same name: %s. Only one of the results with the same name is saved. Are you sure you want to overrides the historical result?"), result.name), wxEmptyString, wxICON_WARNING | wxYES_NO);
|
MessageDialog msg_dlg(nullptr, wxString::Format(_L("There is already a historical calibration result with the same name: %s. Only one of the results with the same name is saved. Are you sure you want to override the historical result?"), result.name), wxEmptyString, wxICON_WARNING | wxYES_NO);
|
||||||
if (msg_dlg.ShowModal() != wxID_YES) {
|
if (msg_dlg.ShowModal() != wxID_YES) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -529,7 +529,7 @@ void CaliPASaveManualPanel::set_pa_cali_method(ManualPaCaliMethod method)
|
||||||
m_complete_text->SetLabel(_L("Please find the best line on your plate"));
|
m_complete_text->SetLabel(_L("Please find the best line on your plate"));
|
||||||
set_save_img();
|
set_save_img();
|
||||||
} else if (method == ManualPaCaliMethod::PA_PATTERN) {
|
} else if (method == ManualPaCaliMethod::PA_PATTERN) {
|
||||||
m_complete_text->SetLabel(_L("Please find the cornor with perfect degree of extrusion"));
|
m_complete_text->SetLabel(_L("Please find the corner with perfect degree of extrusion"));
|
||||||
if (wxGetApp().app_config->get_language_code() == "zh-cn") {
|
if (wxGetApp().app_config->get_language_code() == "zh-cn") {
|
||||||
m_picture_panel->set_bmp(ScalableBitmap(this, "fd_pattern_manual_result_CN", 350));
|
m_picture_panel->set_bmp(ScalableBitmap(this, "fd_pattern_manual_result_CN", 350));
|
||||||
} else {
|
} else {
|
||||||
|
@ -691,7 +691,7 @@ void CaliPASaveP1PPanel::set_pa_cali_method(ManualPaCaliMethod method)
|
||||||
set_save_img();
|
set_save_img();
|
||||||
}
|
}
|
||||||
else if (method == ManualPaCaliMethod::PA_PATTERN) {
|
else if (method == ManualPaCaliMethod::PA_PATTERN) {
|
||||||
m_complete_text->SetLabel(_L("Please find the cornor with perfect degree of extrusion"));
|
m_complete_text->SetLabel(_L("Please find the corner with perfect degree of extrusion"));
|
||||||
if (wxGetApp().app_config->get_language_code() == "zh-cn") {
|
if (wxGetApp().app_config->get_language_code() == "zh-cn") {
|
||||||
m_picture_panel->set_bmp(ScalableBitmap(this, "fd_pattern_manual_result_CN", 350));
|
m_picture_panel->set_bmp(ScalableBitmap(this, "fd_pattern_manual_result_CN", 350));
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -101,7 +101,7 @@ void ConfigManipulation::check_nozzle_temperature_range(DynamicPrintConfig *conf
|
||||||
config->opt_int("nozzle_temperature", 0) > temperature_range_high)
|
config->opt_int("nozzle_temperature", 0) > temperature_range_high)
|
||||||
{
|
{
|
||||||
wxString msg_text = _(L("Nozzle may be blocked when the temperature is out of recommended range.\n"
|
wxString msg_text = _(L("Nozzle may be blocked when the temperature is out of recommended range.\n"
|
||||||
"Please make sure whether to use the temperature to print.\n\n"));
|
"Please confirm whether to use the temperature for printing.\n\n"));
|
||||||
msg_text += wxString::Format(_L("Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade"), temperature_range_low, temperature_range_high);
|
msg_text += wxString::Format(_L("Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade"), temperature_range_low, temperature_range_high);
|
||||||
MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK);
|
MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK);
|
||||||
is_msg_dlg_already_exist = true;
|
is_msg_dlg_already_exist = true;
|
||||||
|
@ -130,7 +130,7 @@ void ConfigManipulation::check_nozzle_temperature_initial_layer_range(DynamicPri
|
||||||
config->opt_int("nozzle_temperature_initial_layer", 0) > temperature_range_high)
|
config->opt_int("nozzle_temperature_initial_layer", 0) > temperature_range_high)
|
||||||
{
|
{
|
||||||
wxString msg_text = _(L("Nozzle may be blocked when the temperature is out of recommended range.\n"
|
wxString msg_text = _(L("Nozzle may be blocked when the temperature is out of recommended range.\n"
|
||||||
"Please make sure whether to use the temperature to print.\n\n"));
|
"Please confirm whether to use the temperature for printing.\n\n"));
|
||||||
msg_text += wxString::Format(_L("Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade"), temperature_range_low, temperature_range_high);
|
msg_text += wxString::Format(_L("Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade"), temperature_range_low, temperature_range_high);
|
||||||
MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK);
|
MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK);
|
||||||
is_msg_dlg_already_exist = true;
|
is_msg_dlg_already_exist = true;
|
||||||
|
@ -253,9 +253,9 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con
|
||||||
|
|
||||||
if (abs(config->option<ConfigOptionFloat>("xy_hole_compensation")->value) > 2)
|
if (abs(config->option<ConfigOptionFloat>("xy_hole_compensation")->value) > 2)
|
||||||
{
|
{
|
||||||
const wxString msg_text = _(L("This setting is only used for model size tunning with small value in some cases.\n"
|
const wxString msg_text = _(L("This setting is only used for model size tuning with small value in some cases.\n"
|
||||||
"For example, when model size has small error and hard to be assembled.\n"
|
"For example, when the model size has slight errors and is difficult be assembled.\n"
|
||||||
"For large size tuning, please use model scale function.\n\n"
|
"For large size tuning, please use model scaling function.\n\n"
|
||||||
"The value will be reset to 0."));
|
"The value will be reset to 0."));
|
||||||
MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK);
|
MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK);
|
||||||
DynamicPrintConfig new_conf = *config;
|
DynamicPrintConfig new_conf = *config;
|
||||||
|
@ -268,9 +268,9 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con
|
||||||
|
|
||||||
if (abs(config->option<ConfigOptionFloat>("xy_contour_compensation")->value) > 2)
|
if (abs(config->option<ConfigOptionFloat>("xy_contour_compensation")->value) > 2)
|
||||||
{
|
{
|
||||||
const wxString msg_text = _(L("This setting is only used for model size tunning with small value in some cases.\n"
|
const wxString msg_text = _(L("This setting is only used for model size tuning with small value in some cases.\n"
|
||||||
"For example, when model size has small error and hard to be assembled.\n"
|
"For example, when the model size has slight errors and is difficult be assembled.\n"
|
||||||
"For large size tuning, please use model scale function.\n\n"
|
"For large size tuning, please use model scaling function.\n\n"
|
||||||
"The value will be reset to 0."));
|
"The value will be reset to 0."));
|
||||||
MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK);
|
MessageDialog dialog(m_msg_dlg_parent, msg_text, "", wxICON_WARNING | wxOK);
|
||||||
DynamicPrintConfig new_conf = *config;
|
DynamicPrintConfig new_conf = *config;
|
||||||
|
@ -283,7 +283,7 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con
|
||||||
|
|
||||||
if (config->option<ConfigOptionFloat>("elefant_foot_compensation")->value > 1)
|
if (config->option<ConfigOptionFloat>("elefant_foot_compensation")->value > 1)
|
||||||
{
|
{
|
||||||
const wxString msg_text = _(L("Too large elefant foot compensation is unreasonable.\n"
|
const wxString msg_text = _(L("Too large elephant foot compensation is unreasonable.\n"
|
||||||
"If really have serious elephant foot effect, please check other settings.\n"
|
"If really have serious elephant foot effect, please check other settings.\n"
|
||||||
"For example, whether bed temperature is too high.\n\n"
|
"For example, whether bed temperature is too high.\n\n"
|
||||||
"The value will be reset to 0."));
|
"The value will be reset to 0."));
|
||||||
|
@ -491,8 +491,8 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con
|
||||||
_(fill_pattern_def->enum_labels[it_pattern - fill_pattern_def->enum_values.begin()]));
|
_(fill_pattern_def->enum_labels[it_pattern - fill_pattern_def->enum_values.begin()]));
|
||||||
if (is_global_config)
|
if (is_global_config)
|
||||||
msg_text += "\n" + _L("Switch to rectilinear pattern?\n"
|
msg_text += "\n" + _L("Switch to rectilinear pattern?\n"
|
||||||
"Yes - switch to rectilinear pattern automaticlly\n"
|
"Yes - switch to rectilinear pattern automatically\n"
|
||||||
"No - reset density to default non 100% value automaticlly") + "\n";
|
"No - reset density to default non 100% value automatically") + "\n";
|
||||||
MessageDialog dialog(m_msg_dlg_parent, msg_text, "",
|
MessageDialog dialog(m_msg_dlg_parent, msg_text, "",
|
||||||
wxICON_WARNING | (is_global_config ? wxYES | wxNO : wxOK) );
|
wxICON_WARNING | (is_global_config ? wxYES | wxNO : wxOK) );
|
||||||
DynamicPrintConfig new_conf = *config;
|
DynamicPrintConfig new_conf = *config;
|
||||||
|
|
|
@ -2037,8 +2037,8 @@ bool CreatePrinterPresetDialog::load_system_and_user_presets_with_curr_model(Pre
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_printer_preset_vendor_selected.id.empty() || m_printer_preset_model_selected.id.empty()) {
|
if (m_printer_preset_vendor_selected.id.empty() || m_printer_preset_model_selected.id.empty()) {
|
||||||
BOOST_LOG_TRIVIAL(info) << "selected id is not find";
|
BOOST_LOG_TRIVIAL(info) << "selected id is not found";
|
||||||
MessageDialog dlg(this, _L("Preset path is not find, please reselect vendor."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES_NO | wxYES_DEFAULT | wxCENTRE);
|
MessageDialog dlg(this, _L("Preset path is not found, please reselect vendor."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES_NO | wxYES_DEFAULT | wxCENTRE);
|
||||||
dlg.ShowModal();
|
dlg.ShowModal();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -2058,8 +2058,8 @@ bool CreatePrinterPresetDialog::load_system_and_user_presets_with_curr_model(Pre
|
||||||
}
|
}
|
||||||
|
|
||||||
if (preset_path.empty()) {
|
if (preset_path.empty()) {
|
||||||
BOOST_LOG_TRIVIAL(info) << "Preset path is not find";
|
BOOST_LOG_TRIVIAL(info) << "Preset path is not found";
|
||||||
MessageDialog dlg(this, _L("Preset path is not find, please reselect vendor."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"),
|
MessageDialog dlg(this, _L("Preset path is not found, please reselect vendor."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"),
|
||||||
wxYES_NO | wxYES_DEFAULT | wxCENTRE);
|
wxYES_NO | wxYES_DEFAULT | wxCENTRE);
|
||||||
dlg.ShowModal();
|
dlg.ShowModal();
|
||||||
return false;
|
return false;
|
||||||
|
@ -2122,8 +2122,8 @@ bool CreatePrinterPresetDialog::load_system_and_user_presets_with_curr_model(Pre
|
||||||
preset_path = (boost::filesystem::path(Slic3r::resources_dir()) / PRESET_PROFILES_TEMOLATE_DIR).string();
|
preset_path = (boost::filesystem::path(Slic3r::resources_dir()) / PRESET_PROFILES_TEMOLATE_DIR).string();
|
||||||
}
|
}
|
||||||
if (preset_path.empty()) {
|
if (preset_path.empty()) {
|
||||||
BOOST_LOG_TRIVIAL(info) << "Preset path is not find";
|
BOOST_LOG_TRIVIAL(info) << "Preset path is not found";
|
||||||
MessageDialog dlg(this, _L("Preset path is not find, please reselect vendor."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"),
|
MessageDialog dlg(this, _L("Preset path is not found, please reselect vendor."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"),
|
||||||
wxYES_NO | wxYES_DEFAULT | wxCENTRE);
|
wxYES_NO | wxYES_DEFAULT | wxCENTRE);
|
||||||
dlg.ShowModal();
|
dlg.ShowModal();
|
||||||
return false;
|
return false;
|
||||||
|
@ -2834,7 +2834,7 @@ bool CreatePrinterPresetDialog::data_init()
|
||||||
if (iterator != vendors.end()) {
|
if (iterator != vendors.end()) {
|
||||||
m_printer_preset_vendor_selected = iterator->second;
|
m_printer_preset_vendor_selected = iterator->second;
|
||||||
} else {
|
} else {
|
||||||
MessageDialog dlg(this, _L("Vendor is not find, please reselect."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES_NO | wxYES_DEFAULT | wxCENTRE);
|
MessageDialog dlg(this, _L("Vendor is not found, please reselect."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES_NO | wxYES_DEFAULT | wxCENTRE);
|
||||||
dlg.ShowModal();
|
dlg.ShowModal();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -3204,7 +3204,7 @@ CreatePresetSuccessfulDialog::CreatePresetSuccessfulDialog(wxWindow *parent, con
|
||||||
break;
|
break;
|
||||||
case FILAMENT:
|
case FILAMENT:
|
||||||
success_text = new wxStaticText(this, wxID_ANY, _L("Filament Created"));
|
success_text = new wxStaticText(this, wxID_ANY, _L("Filament Created"));
|
||||||
next_step_text = new wxStaticText(this, wxID_ANY, _L("Please go to filament setting to edit your presets if you need.\nPlease note that nozzle temperature, hot bed temperature, and maximum volumetric speed have a significant impact on printing quality. Please set them carefully."));
|
next_step_text = new wxStaticText(this, wxID_ANY, _L("Please go to filament setting to edit your presets if you need.\nPlease note that nozzle temperature, hot bed temperature, and maximum volumetric speed has a significant impact on printing quality. Please set them carefully."));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
success_text->SetFont(Label::Head_18);
|
success_text->SetFont(Label::Head_18);
|
||||||
|
@ -3532,7 +3532,7 @@ wxBoxSizer *ExportConfigsDialog::create_export_config_item(wxWindow *parent)
|
||||||
|
|
||||||
radioBoxSizer->Add(create_radio_item(m_exprot_type.preset_bundle, parent, wxEmptyString, m_export_type_btns), 0, wxEXPAND | wxALL, 0);
|
radioBoxSizer->Add(create_radio_item(m_exprot_type.preset_bundle, parent, wxEmptyString, m_export_type_btns), 0, wxEXPAND | wxALL, 0);
|
||||||
radioBoxSizer->Add(0, 0, 0, wxTOP, FromDIP(6));
|
radioBoxSizer->Add(0, 0, 0, wxTOP, FromDIP(6));
|
||||||
wxStaticText *static_export_printer_preset_bundle_text = new wxStaticText(parent, wxID_ANY, _L("Printer and all the filament&process presets that belongs to the printer. \nCan be shared with others."), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_export_printer_preset_bundle_text = new wxStaticText(parent, wxID_ANY, _L("Printer and all the filament&process presets that belong to the printer. \nCan be shared with others."), wxDefaultPosition, wxDefaultSize);
|
||||||
static_export_printer_preset_bundle_text->SetFont(Label::Body_12);
|
static_export_printer_preset_bundle_text->SetFont(Label::Body_12);
|
||||||
static_export_printer_preset_bundle_text->SetForegroundColour(wxColour("#6B6B6B"));
|
static_export_printer_preset_bundle_text->SetForegroundColour(wxColour("#6B6B6B"));
|
||||||
radioBoxSizer->Add(static_export_printer_preset_bundle_text, 0, wxEXPAND | wxLEFT, FromDIP(22));
|
radioBoxSizer->Add(static_export_printer_preset_bundle_text, 0, wxEXPAND | wxLEFT, FromDIP(22));
|
||||||
|
|
|
@ -9132,7 +9132,7 @@ void GLCanvas3D::_set_warning_notification(EWarning warning, bool state)
|
||||||
case EWarning::ToolpathOutside: text = _u8L("A G-code path goes beyond the boundary of plate."); error = ErrorType::SLICING_ERROR; break;
|
case EWarning::ToolpathOutside: text = _u8L("A G-code path goes beyond the boundary of plate."); error = ErrorType::SLICING_ERROR; break;
|
||||||
// BBS: remove _u8L() for SLA
|
// BBS: remove _u8L() for SLA
|
||||||
case EWarning::SlaSupportsOutside: text = ("SLA supports outside the print area were detected."); error = ErrorType::PLATER_ERROR; break;
|
case EWarning::SlaSupportsOutside: text = ("SLA supports outside the print area were detected."); error = ErrorType::PLATER_ERROR; break;
|
||||||
case EWarning::SomethingNotShown: text = _u8L("Only the object being edit is visible."); break;
|
case EWarning::SomethingNotShown: text = _u8L("Only the object being edited is visible."); break;
|
||||||
case EWarning::ObjectClashed:
|
case EWarning::ObjectClashed:
|
||||||
text = _u8L("An object is laid over the boundary of plate or exceeds the height limit.\n"
|
text = _u8L("An object is laid over the boundary of plate or exceeds the height limit.\n"
|
||||||
"Please solve the problem by moving it totally on or off the plate, and confirming that the height is within the build volume.");
|
"Please solve the problem by moving it totally on or off the plate, and confirming that the height is within the build volume.");
|
||||||
|
|
|
@ -2178,7 +2178,7 @@ void GUI_App::init_app_config()
|
||||||
if (!error.empty()) {
|
if (!error.empty()) {
|
||||||
// Error while parsing config file. We'll customize the error message and rethrow to be displayed.
|
// Error while parsing config file. We'll customize the error message and rethrow to be displayed.
|
||||||
throw Slic3r::RuntimeError(
|
throw Slic3r::RuntimeError(
|
||||||
_u8L("BambuStudio configuration file may be corrupted and is not abled to be parsed."
|
_u8L("BambuStudio configuration file may be corrupted and is not able to be parsed."
|
||||||
"Please delete the file and try again.") +
|
"Please delete the file and try again.") +
|
||||||
"\n\n" + app_config->config_path() + "\n\n" + error);
|
"\n\n" + app_config->config_path() + "\n\n" + error);
|
||||||
}
|
}
|
||||||
|
@ -3802,7 +3802,7 @@ void GUI_App::request_user_logout()
|
||||||
/* delete old user settings */
|
/* delete old user settings */
|
||||||
bool transfer_preset_changes = false;
|
bool transfer_preset_changes = false;
|
||||||
wxString header = _L("Some presets are modified.") + "\n" +
|
wxString header = _L("Some presets are modified.") + "\n" +
|
||||||
_L("You can keep the modifield presets to the new project, discard or save changes as new presets.");
|
_L("You can keep the modified presets for the new project, discard or save changes as new presets.");
|
||||||
using ab = UnsavedChangesDialog::ActionButtons;
|
using ab = UnsavedChangesDialog::ActionButtons;
|
||||||
wxGetApp().check_and_keep_current_preset_changes(_L("User logged out"), header, ab::KEEP | ab::SAVE, &transfer_preset_changes);
|
wxGetApp().check_and_keep_current_preset_changes(_L("User logged out"), header, ab::KEEP | ab::SAVE, &transfer_preset_changes);
|
||||||
|
|
||||||
|
|
|
@ -1165,10 +1165,10 @@ void MenuFactory::create_bbl_part_menu()
|
||||||
if (!split_menu)
|
if (!split_menu)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
append_menu_item(split_menu, wxID_ANY, _L("To objects"), _L("Split the selected object into mutiple objects"),
|
append_menu_item(split_menu, wxID_ANY, _L("To objects"), _L("Split the selected object into multiple objects"),
|
||||||
[](wxCommandEvent&) { plater()->split_object(); }, "split_objects", menu,
|
[](wxCommandEvent&) { plater()->split_object(); }, "split_objects", menu,
|
||||||
[]() { return plater()->can_split(true); }, m_parent);
|
[]() { return plater()->can_split(true); }, m_parent);
|
||||||
append_menu_item(split_menu, wxID_ANY, _L("To parts"), _L("Split the selected object into mutiple parts"),
|
append_menu_item(split_menu, wxID_ANY, _L("To parts"), _L("Split the selected object into multiple parts"),
|
||||||
[](wxCommandEvent&) { plater()->split_volume(); }, "split_parts", menu,
|
[](wxCommandEvent&) { plater()->split_volume(); }, "split_parts", menu,
|
||||||
[]() { return plater()->can_split(false); }, m_parent);
|
[]() { return plater()->can_split(false); }, m_parent);
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ int GUI_Run(GUI_InitParams ¶ms)
|
||||||
wxMessageBox(boost::nowide::widen(ex.what()), _L("Bambu Studio GUI initialization failed"), wxICON_STOP);
|
wxMessageBox(boost::nowide::widen(ex.what()), _L("Bambu Studio GUI initialization failed"), wxICON_STOP);
|
||||||
} catch (const std::exception &ex) {
|
} catch (const std::exception &ex) {
|
||||||
BOOST_LOG_TRIVIAL(error) << ex.what() << std::endl;
|
BOOST_LOG_TRIVIAL(error) << ex.what() << std::endl;
|
||||||
wxMessageBox(format_wxstr(_L("Fatal error, exception catched: %1%"), ex.what()), _L("Bambu Studio GUI initialization failed"), wxICON_STOP);
|
wxMessageBox(format_wxstr(_L("Fatal error, exception caught: %1%"), ex.what()), _L("Bambu Studio GUI initialization failed"), wxICON_STOP);
|
||||||
}
|
}
|
||||||
// error
|
// error
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -2488,7 +2488,7 @@ bool ObjectList::del_from_cut_object(bool is_cut_connector, bool is_model_part/*
|
||||||
(_L("This action will break a cut correspondence.\n"
|
(_L("This action will break a cut correspondence.\n"
|
||||||
"After that model consistency can't be guaranteed .\n"
|
"After that model consistency can't be guaranteed .\n"
|
||||||
"\n"
|
"\n"
|
||||||
"To manipulate with solid parts or negative volumes you have to invalidate cut infornation first.") + msg_end ),
|
"To manipulate solid parts or negative volumes you have to invalidate cut information first.") + msg_end ),
|
||||||
false, buttons_style | wxCANCEL_DEFAULT | wxICON_WARNING);
|
false, buttons_style | wxCANCEL_DEFAULT | wxICON_WARNING);
|
||||||
|
|
||||||
dialog.SetButtonLabel(wxID_YES, _L("Invalidate cut info"));
|
dialog.SetButtonLabel(wxID_YES, _L("Invalidate cut info"));
|
||||||
|
@ -2597,7 +2597,7 @@ void ObjectList::split()
|
||||||
const ConfigOptionStrings* filament_colors = config.option<ConfigOptionStrings>("filament_colour", false);
|
const ConfigOptionStrings* filament_colors = config.option<ConfigOptionStrings>("filament_colour", false);
|
||||||
const auto filament_cnt = (filament_colors == nullptr) ? size_t(1) : filament_colors->size();
|
const auto filament_cnt = (filament_colors == nullptr) ? size_t(1) : filament_colors->size();
|
||||||
if (!volume->is_splittable()) {
|
if (!volume->is_splittable()) {
|
||||||
wxMessageBox(_(L("The target object contains only one part and can not be splited.")));
|
wxMessageBox(_(L("The target object contains only one part and can not be split.")));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4893,11 +4893,11 @@ bool ObjectList::check_last_selection(wxString& msg_str)
|
||||||
|
|
||||||
if (m_selection_mode == smInstance) {
|
if (m_selection_mode == smInstance) {
|
||||||
msg_str = wxString::Format(_(L("Selection conflicts")) + "\n\n" +
|
msg_str = wxString::Format(_(L("Selection conflicts")) + "\n\n" +
|
||||||
_(L("If first selected item is an object, the second one should also be object.")) + "\n");
|
_(L("If the first selected item is an object, the second one should also be an object.")) + "\n");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
msg_str = wxString::Format(_(L("Selection conflicts")) + "\n\n" +
|
msg_str = wxString::Format(_(L("Selection conflicts")) + "\n\n" +
|
||||||
_(L("If first selected item is a part, the second one should be part in the same object.")) + "\n");
|
_(L("If the first selected item is a part, the second one should be part of the same object.")) + "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unselect last selected item, if selection is without SHIFT
|
// Unselect last selected item, if selection is without SHIFT
|
||||||
|
@ -5459,7 +5459,7 @@ void ObjectList::fix_through_netfabb()
|
||||||
msg += "\n\n";
|
msg += "\n\n";
|
||||||
}
|
}
|
||||||
if (!failed_models.empty()) {
|
if (!failed_models.empty()) {
|
||||||
msg += _L_PLURAL("Failed to repair folowing model object", "Failed to repair folowing model objects", failed_models.size()) + ":\n";
|
msg += _L_PLURAL("Failed to repair the following model object", "Failed to repair the following model object", failed_models.size()) + ":\n";
|
||||||
for (auto& model : failed_models)
|
for (auto& model : failed_models)
|
||||||
msg += bullet_suf + from_u8(model.first) + ": " + _(model.second);
|
msg += bullet_suf + from_u8(model.first) + ": " + _(model.second);
|
||||||
}
|
}
|
||||||
|
|
|
@ -945,7 +945,7 @@ void GLGizmoAdvancedCut::perform_cut(const Selection& selection)
|
||||||
if (its_num_open_edges(new_objects[i]->volumes[j]->mesh().its) > 0) {
|
if (its_num_open_edges(new_objects[i]->volumes[j]->mesh().its) > 0) {
|
||||||
if (!is_showed_dialog) {
|
if (!is_showed_dialog) {
|
||||||
is_showed_dialog = true;
|
is_showed_dialog = true;
|
||||||
MessageDialog dlg(nullptr, _L("non-mainifold edges be caused by cut tool, do you want to fix it now?"), "", wxYES | wxCANCEL);
|
MessageDialog dlg(nullptr, _L("non-manifold edges be caused by cut tool, do you want to fix it now?"), "", wxYES | wxCANCEL);
|
||||||
int ret = dlg.ShowModal();
|
int ret = dlg.ShowModal();
|
||||||
if (ret == wxID_YES) {
|
if (ret == wxID_YES) {
|
||||||
user_fix_model = true;
|
user_fix_model = true;
|
||||||
|
@ -2307,7 +2307,7 @@ void GLGizmoAdvancedCut::render_input_window_warning() const
|
||||||
m_imgui->text(out);
|
m_imgui->text(out);
|
||||||
}
|
}
|
||||||
if (!m_keep_upper && !m_keep_lower)
|
if (!m_keep_upper && !m_keep_lower)
|
||||||
m_imgui->text(/*wxString(ImGui::WarningMarkerSmall)*/_L("Warning") + ": " + _L("Invalid state. \nNo one part is selected for keep after cut"));
|
m_imgui->text(/*wxString(ImGui::WarningMarkerSmall)*/_L("Warning") + ": " + _L("Invalid state. \nNo one part is selected to keep after cut"));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GLGizmoAdvancedCut::render_reset_button(const std::string &label_id, const std::string &tooltip) const
|
bool GLGizmoAdvancedCut::render_reset_button(const std::string &label_id, const std::string &tooltip) const
|
||||||
|
|
|
@ -366,7 +366,7 @@ void GLGizmoSimplify::on_render_input_window(float x, float y, float bottom_limi
|
||||||
apply_simplify();
|
apply_simplify();
|
||||||
}
|
}
|
||||||
else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && is_worker_running) {
|
else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && is_worker_running) {
|
||||||
ImGui::SetTooltip("%s", _u8L("Can't apply when proccess preview.").c_str());
|
ImGui::SetTooltip("%s", _u8L("Can't apply when process preview.").c_str());
|
||||||
}
|
}
|
||||||
m_imgui->pop_confirm_button_style();
|
m_imgui->pop_confirm_button_style();
|
||||||
m_imgui->disabled_end(); // state !settings
|
m_imgui->disabled_end(); // state !settings
|
||||||
|
|
|
@ -150,7 +150,7 @@ bool GLGizmoText::on_init()
|
||||||
|
|
||||||
reset_text_info();
|
reset_text_info();
|
||||||
|
|
||||||
m_desc["rotate_text_caption"] = _L("Shift + Mouse move up or dowm");
|
m_desc["rotate_text_caption"] = _L("Shift + Mouse move up or down");
|
||||||
m_desc["rotate_text"] = _L("Rotate text");
|
m_desc["rotate_text"] = _L("Rotate text");
|
||||||
|
|
||||||
m_grabbers.push_back(Grabber());
|
m_grabbers.push_back(Grabber());
|
||||||
|
|
|
@ -237,7 +237,7 @@ void ArrangeJob::prepare_all() {
|
||||||
if (m_selected.empty()) {
|
if (m_selected.empty()) {
|
||||||
if (!selected_is_locked) {
|
if (!selected_is_locked) {
|
||||||
m_plater->get_notification_manager()->push_notification(NotificationType::BBLPlateInfo,
|
m_plater->get_notification_manager()->push_notification(NotificationType::BBLPlateInfo,
|
||||||
NotificationManager::NotificationLevel::WarningNotificationLevel, into_u8(_L("No arrangable objects are selected.")));
|
NotificationManager::NotificationLevel::WarningNotificationLevel, into_u8(_L("No arrangeable objects are selected.")));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_plater->get_notification_manager()->push_notification(NotificationType::BBLPlateInfo,
|
m_plater->get_notification_manager()->push_notification(NotificationType::BBLPlateInfo,
|
||||||
|
|
|
@ -122,7 +122,7 @@ wxString PrintJob::get_http_error_msg(unsigned int status, std::string body)
|
||||||
return _L("Service Unavailable");
|
return _L("Service Unavailable");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
wxString unkown_text = _L("Unkown Error.");
|
wxString unkown_text = _L("Unknown Error.");
|
||||||
unkown_text += wxString::Format("status=%u, body=%s", status, body);
|
unkown_text += wxString::Format("status=%u, body=%s", status, body);
|
||||||
BOOST_LOG_TRIVIAL(error) << "http_error: status=" << status << ", code=" << code << ", error=" << error;
|
BOOST_LOG_TRIVIAL(error) << "http_error: status=" << status << ", code=" << code << ", error=" << error;
|
||||||
return unkown_text;
|
return unkown_text;
|
||||||
|
|
|
@ -87,7 +87,7 @@ wxString SendJob::get_http_error_msg(unsigned int status, std::string body)
|
||||||
return _L("Service Unavailable");
|
return _L("Service Unavailable");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
wxString unkown_text = _L("Unkown Error.");
|
wxString unkown_text = _L("Unknown Error.");
|
||||||
unkown_text += wxString::Format("status=%u, body=%s", status, body);
|
unkown_text += wxString::Format("status=%u, body=%s", status, body);
|
||||||
return unkown_text;
|
return unkown_text;
|
||||||
}
|
}
|
||||||
|
|
|
@ -518,7 +518,7 @@ void MediaFilePanel::doAction(size_t index, int action)
|
||||||
return;
|
return;
|
||||||
if (result != 0) {
|
if (result != 0) {
|
||||||
MessageDialog(this,
|
MessageDialog(this,
|
||||||
_L("Failed to fetching model infomations from printer."),
|
_L("Failed to fetch model information from printer."),
|
||||||
_L("Error"), wxOK).ShowModal();
|
_L("Error"), wxOK).ShowModal();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -530,7 +530,7 @@ void MediaFilePanel::doAction(size_t index, int action)
|
||||||
if (!Slic3r::load_gcode_3mf_from_stream(is, &config, &model, &plate_data_list, &file_version)
|
if (!Slic3r::load_gcode_3mf_from_stream(is, &config, &model, &plate_data_list, &file_version)
|
||||||
|| plate_data_list.empty()) {
|
|| plate_data_list.empty()) {
|
||||||
MessageDialog(this,
|
MessageDialog(this,
|
||||||
_L("Failed to parse model infomations."),
|
_L("Failed to parse model information."),
|
||||||
_L("Error"), wxOK).ShowModal();
|
_L("Error"), wxOK).ShowModal();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1252,7 +1252,7 @@ void NotificationManager::UpdatedItemsInfoNotification::add_type(InfoItemType ty
|
||||||
if ((*it).second == 0)
|
if ((*it).second == 0)
|
||||||
continue;
|
continue;
|
||||||
switch ((*it).first) {
|
switch ((*it).first) {
|
||||||
case InfoItemType::CustomSupports: text += format(_L_PLURAL("%1$d Object has custom supports.", "%1$d Objects have custom supports.", (*it).second), (*it).second) + "\n"; break;
|
case InfoItemType::CustomSupports: text += format(_L_PLURAL("%1$d Object has custom support.", "%1$d Objects have custom support.", (*it).second), (*it).second) + "\n"; break;
|
||||||
// BBS
|
// BBS
|
||||||
//case InfoItemType::CustomSeam: text += format(("%1$d Object has custom seam.", "%1$d Objects have custom seam.", (*it).second), (*it).second) + "\n"; break;
|
//case InfoItemType::CustomSeam: text += format(("%1$d Object has custom seam.", "%1$d Objects have custom seam.", (*it).second), (*it).second) + "\n"; break;
|
||||||
case InfoItemType::MmuSegmentation: text += format(_L_PLURAL("%1$d Object has color painting.", "%1$d Objects have color painting.",(*it).second), (*it).second) + "\n"; break;
|
case InfoItemType::MmuSegmentation: text += format(_L_PLURAL("%1$d Object has color painting.", "%1$d Objects have color painting.",(*it).second), (*it).second) + "\n"; break;
|
||||||
|
|
|
@ -8416,7 +8416,7 @@ int Plater::new_project(bool skip_confirm, bool silent, const wxString &project_
|
||||||
auto check = [&transfer_preset_changes](bool yes_or_no) {
|
auto check = [&transfer_preset_changes](bool yes_or_no) {
|
||||||
wxString header = _L("Some presets are modified.") + "\n" +
|
wxString header = _L("Some presets are modified.") + "\n" +
|
||||||
(yes_or_no ? _L("You can keep the modified presets to the new project or discard them") :
|
(yes_or_no ? _L("You can keep the modified presets to the new project or discard them") :
|
||||||
_L("You can keep the modifield presets to the new project, discard or save changes as new presets."));
|
_L("You can keep the modified presets for the new project, discard or save changes as new presets."));
|
||||||
using ab = UnsavedChangesDialog::ActionButtons;
|
using ab = UnsavedChangesDialog::ActionButtons;
|
||||||
int act_buttons = ab::KEEP | ab::REMEMBER_CHOISE;
|
int act_buttons = ab::KEEP | ab::REMEMBER_CHOISE;
|
||||||
if (!yes_or_no)
|
if (!yes_or_no)
|
||||||
|
|
|
@ -193,7 +193,7 @@ wxBoxSizer *PreferencesDialog::create_item_language_combobox(
|
||||||
{
|
{
|
||||||
//check if the project has changed
|
//check if the project has changed
|
||||||
if (wxGetApp().plater()->is_project_dirty()) {
|
if (wxGetApp().plater()->is_project_dirty()) {
|
||||||
auto result = MessageDialog(static_cast<wxWindow*>(this), _L("The current project has unsaved changes, save it before continue?"),
|
auto result = MessageDialog(static_cast<wxWindow*>(this), _L("The current project has unsaved changes, save it before continuing?"),
|
||||||
wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Save"), wxYES_NO | wxCANCEL | wxYES_DEFAULT | wxCENTRE).ShowModal();
|
wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Save"), wxYES_NO | wxCANCEL | wxYES_DEFAULT | wxCENTRE).ShowModal();
|
||||||
|
|
||||||
if (result == wxID_YES) {
|
if (result == wxID_YES) {
|
||||||
|
@ -1011,7 +1011,7 @@ wxWindow* PreferencesDialog::create_general_page()
|
||||||
_L("Studio will remember build plate selected last time for certain printer model."), 50,
|
_L("Studio will remember build plate selected last time for certain printer model."), 50,
|
||||||
"user_bed_type");
|
"user_bed_type");
|
||||||
//auto item_hints = create_item_checkbox(_L("Show \"Tip of the day\" notification after start"), page, _L("If enabled, useful hints are displayed at startup."), 50, "show_hints");
|
//auto item_hints = create_item_checkbox(_L("Show \"Tip of the day\" notification after start"), page, _L("If enabled, useful hints are displayed at startup."), 50, "show_hints");
|
||||||
auto item_calc_mode = create_item_checkbox(_L("Flushing volumes: Auto-calculate everytime the color changed."), page, _L("If enabled, auto-calculate everytime the color changed."), 50, "auto_calculate");
|
auto item_calc_mode = create_item_checkbox(_L("Flushing volumes: Auto-calculate every time when the color is changed."), page, _L("If enabled, auto-calculate every time when the color is changed."), 50, "auto_calculate");
|
||||||
auto title_presets = create_item_title(_L("Presets"), page, _L("Presets"));
|
auto title_presets = create_item_title(_L("Presets"), page, _L("Presets"));
|
||||||
auto item_user_sync = create_item_checkbox(_L("Auto sync user presets(Printer/Filament/Process)"), page, _L("User Sync"), 50, "sync_user_preset");
|
auto item_user_sync = create_item_checkbox(_L("Auto sync user presets(Printer/Filament/Process)"), page, _L("User Sync"), 50, "sync_user_preset");
|
||||||
auto item_system_sync = create_item_checkbox(_L("Update built-in Presets automatically."), page, _L("System Sync"), 50, "sync_system_preset");
|
auto item_system_sync = create_item_checkbox(_L("Update built-in Presets automatically."), page, _L("System Sync"), 50, "sync_system_preset");
|
||||||
|
|
|
@ -47,7 +47,7 @@ static wxBitmap default_thumbnail;
|
||||||
static std::map<int, std::string> error_messages = {
|
static std::map<int, std::string> error_messages = {
|
||||||
{PrinterFileSystem::ERROR_PIPE, L("Connection lost. Please retry.")},
|
{PrinterFileSystem::ERROR_PIPE, L("Connection lost. Please retry.")},
|
||||||
{PrinterFileSystem::ERROR_RES_BUSY, L("The device cannot handle more conversations. Please retry later.")},
|
{PrinterFileSystem::ERROR_RES_BUSY, L("The device cannot handle more conversations. Please retry later.")},
|
||||||
{PrinterFileSystem::FILE_NO_EXIST, L("File not exists.")},
|
{PrinterFileSystem::FILE_NO_EXIST, L("File does not exist.")},
|
||||||
{PrinterFileSystem::FILE_CHECK_ERR, L("File checksum error. Please retry.")},
|
{PrinterFileSystem::FILE_CHECK_ERR, L("File checksum error. Please retry.")},
|
||||||
{PrinterFileSystem::FILE_TYPE_ERR, L("Not supported on the current printer version.")},
|
{PrinterFileSystem::FILE_TYPE_ERR, L("Not supported on the current printer version.")},
|
||||||
{PrinterFileSystem::STORAGE_UNAVAILABLE, L("Storage unavailable, insert SD card.")}
|
{PrinterFileSystem::STORAGE_UNAVAILABLE, L("Storage unavailable, insert SD card.")}
|
||||||
|
|
|
@ -24,7 +24,7 @@ static wxString PUBLISH_STEP_STRING[STEP_COUNT] = {
|
||||||
_L("Jump to model publish web page")
|
_L("Jump to model publish web page")
|
||||||
};
|
};
|
||||||
|
|
||||||
static wxString NOTE_STRING = _L("Note: The preparation may takes several minutes. Please be patiant.");
|
static wxString NOTE_STRING = _L("Note: The preparation may take several minutes. Please be patient.");
|
||||||
|
|
||||||
PublishDialog::PublishDialog(Plater *plater)
|
PublishDialog::PublishDialog(Plater *plater)
|
||||||
: DPIDialog(static_cast<wxWindow *>(wxGetApp().mainframe), wxID_ANY, _L("Publish"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX)
|
: DPIDialog(static_cast<wxWindow *>(wxGetApp().mainframe), wxID_ANY, _L("Publish"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX)
|
||||||
|
|
|
@ -4621,7 +4621,7 @@ wxBoxSizer *ScoreDialog::get_button_sizer()
|
||||||
++it;
|
++it;
|
||||||
break;
|
break;
|
||||||
case BAMBU_NETWORK_ERR_PARSE_CONFIG_FAILED:
|
case BAMBU_NETWORK_ERR_PARSE_CONFIG_FAILED:
|
||||||
error_info += need_upload.second + _L(" upload config prase failed\n").ToUTF8().data() + "\n";
|
error_info += need_upload.second + _L(" upload config parse failed\n").ToUTF8().data() + "\n";
|
||||||
m_upload_status_code = StatusCode::UPLOAD_IMG_FAILED;
|
m_upload_status_code = StatusCode::UPLOAD_IMG_FAILED;
|
||||||
++it;
|
++it;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -797,7 +797,7 @@ bool GuideFrame::apply_config(AppConfig *app_config, PresetBundle *preset_bundle
|
||||||
}
|
}
|
||||||
|
|
||||||
check_unsaved_preset_changes = (enabled_vendors != old_enabled_vendors) || (enabled_filaments != old_enabled_filaments);
|
check_unsaved_preset_changes = (enabled_vendors != old_enabled_vendors) || (enabled_filaments != old_enabled_filaments);
|
||||||
wxString header = _L("The configuration package is changed in previous Config Guide");
|
wxString header = _L("The configuration package is changed to the previous Config Guide");
|
||||||
wxString caption = _L("Configuration package changed");
|
wxString caption = _L("Configuration package changed");
|
||||||
int act_btns = UnsavedChangesDialog::ActionButtons::KEEP|UnsavedChangesDialog::ActionButtons::SAVE;
|
int act_btns = UnsavedChangesDialog::ActionButtons::KEEP|UnsavedChangesDialog::ActionButtons::SAVE;
|
||||||
|
|
||||||
|
|
|
@ -2829,7 +2829,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
|
||||||
wxBoxSizer *sizer_err_calibration_v = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *sizer_err_calibration_v = new wxBoxSizer(wxVERTICAL);
|
||||||
m_hyperlink = new wxHyperlinkCtrl(m_calibration_err_panel, wxID_ANY, wxEmptyString, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE);
|
m_hyperlink = new wxHyperlinkCtrl(m_calibration_err_panel, wxID_ANY, wxEmptyString, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE);
|
||||||
m_hyperlink->SetVisitedColour(wxColour(31, 142, 234));
|
m_hyperlink->SetVisitedColour(wxColour(31, 142, 234));
|
||||||
auto m_tip_calibration_err = new wxStaticText(m_calibration_err_panel, wxID_ANY, _L("A problem occured during calibration. Click to view the solution."), wxDefaultPosition,
|
auto m_tip_calibration_err = new wxStaticText(m_calibration_err_panel, wxID_ANY, _L("A problem occurred during calibration. Click to view the solution."), wxDefaultPosition,
|
||||||
wxDefaultSize, 0);
|
wxDefaultSize, 0);
|
||||||
m_tip_calibration_err->SetFont(::Label::Body_14);
|
m_tip_calibration_err->SetFont(::Label::Body_14);
|
||||||
m_tip_calibration_err->SetForegroundColour(AMS_CONTROL_GRAY700);
|
m_tip_calibration_err->SetForegroundColour(AMS_CONTROL_GRAY700);
|
||||||
|
@ -3558,7 +3558,7 @@ void AMSControl::ShowFilamentTip(bool hasams)
|
||||||
m_simplebook_right->SetSelection(0);
|
m_simplebook_right->SetSelection(0);
|
||||||
if (hasams) {
|
if (hasams) {
|
||||||
m_tip_right_top->Show();
|
m_tip_right_top->Show();
|
||||||
m_tip_load_info->SetLabelText(_L("Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load or unload filiament."));
|
m_tip_load_info->SetLabelText(_L("Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load or unload filaments."));
|
||||||
} else {
|
} else {
|
||||||
// m_tip_load_info->SetLabelText(_L("Before loading, please make sure the filament is pushed into toolhead."));
|
// m_tip_load_info->SetLabelText(_L("Before loading, please make sure the filament is pushed into toolhead."));
|
||||||
m_tip_right_top->Hide();
|
m_tip_right_top->Hide();
|
||||||
|
|
Loading…
Reference in New Issue