From f330eb95678d81fc43294114e66da5660a71e041 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Sun, 18 Feb 2018 23:11:43 +0100 Subject: [PATCH] Fixed set_value() bug. Fixed Infill density. * Got rid of try/catch at PointCtrl::set_value(). * Optimized localization: got rid of redundant macro _LU8(s). --- resources/localization/cs_CZ/Slic3rPE.mo | Bin 76950 -> 76950 bytes resources/localization/cs_CZ/Slic3rPE_cs.po | 10 ++--- xs/src/slic3r/GUI/Field.cpp | 45 ++++++++++++-------- xs/src/slic3r/GUI/OptionsGroup.cpp | 34 ++++++--------- xs/src/slic3r/GUI/OptionsGroup.hpp | 4 +- 5 files changed, 46 insertions(+), 47 deletions(-) diff --git a/resources/localization/cs_CZ/Slic3rPE.mo b/resources/localization/cs_CZ/Slic3rPE.mo index 52b2c5fb5dfc4645e0d98978564b9b6dadc066c1..a3add632a70edcbcd5c057032626984c48576b80 100644 GIT binary patch delta 2418 zcmXZddrVhl7{Kx8rJwQx~+F9oAql5A4QwuoZP9rKBeS%TPD48bfg{>d9Wg z+4uo|hreJn9{Jjd_hUBw#FI{ZE8j!U{~o z`KLw3<2v-Bh5Fp97>-RCk1ePN=|s(RKk7j&9}N$U5!4iqVmNyGMA9)DHD$%9Ct8e} zi3*&C8&DVC<=TRi>9?a^dh$lph4#93pk`efa)OZj?N3go>M)z}deqE(fl=6r zRyvLEY3OU{x#;XL&^69A1J^TNfVJ3$cWVDZ|bqtU;0>$1o1x=lIL<5bDAyzfuQS zh$Kmt;5NMHvQt|p@DchKFO&cIEPU4${s`1ub?*LvYnST)1~7ib?cYL8rT3b1mtnY= zd9rXS@!IQ7@wH$Q{T{5x%h-g~zd0L>w0?Ic%Ewj)icwE+9X&YihRDAdhe=QRCho#!`uX9;ex3SIGjl$|2!$_s z6OH6!Y^0G`o}Y*8MarX$Ftg4U+$1AO zSb`> u!`QFqY}AEH+SgCsUh7|wl$%?WTi718yED<`v=1JBcC}wlW#il#rsRKtou_dC delta 2417 zcmXZddrXyO9KiA40|bb`K{y9ZM2;SgD1vB;B39C77qZk`O;NX&m=yyv<6p67i}WqU+r zd&I5@Nr8}v>^vlL3^#ovvH^>~6*-K5<0ts#cOvyTo22S$5XmO z!WtZmb?C+xOvUq)575YL5{bv**c-=VB2IHG!JfqB7=x=Z4L?8+?s58? zQ3pPS{qYvIU_!I~`wrCpPMpWW!&?G&V*XKkg)1?R2e#oB+>N@BDU_!N7Nag;0lKgZ zb!YG51l)l?<5f(?!^iFX85~CJJz?i3V+rxx01X|W6}2=sP)jC1*m`gbVJ5n8HeSF| z^yBlbB9XWhqj5Rvb8D~{)?fdvcCC;H5>0kuLM zr~`DPE;y`BBo?DkcjQKW&WHNkW2kqe5Org(q7N6LF0dM-nP2wNaFaNQ+1Q3!fv}%M zCZiiC;T+VR2GN5D(ApvD1R*EBgSw#jQzD}<6%%kOYQ7k?qNNzk{IZ@#A-Ay-AI0;h zMW$m~yT~{!`-KaMd(Mc|V$oTV#d!N17YY}g7x|rW-n+nn#AUzQXS@8OU8!|AjQ)+N zl{thSY{WnYjdL{gHH^GuuQ1jz#W53?&_5PeU=W9E{F_J)mY`m`8jQo8s1xi*J=)_q z1VgA5a9_47?z>F=Cy~e_k;2MX;dvGSUI_WK>19XqfG{nwrNE@~-b zuG?psh((N(jp^i9-LNlTJ$i|c;`?|FH)Hutdx6P;TlPSCxQmVg)E(Ty2#oquS*@DAx(H)T&a2w`hH*Ub(E|D+r2u{bh?otg5oTlNYk@OFr zTO5luxDg-6tZsYYQuGmjjD^^MyeQ)Om(M9Xzl4IvSZy=SsoeOS z06%yo)mWElbAMxfqd!8uTtU>k@D=vKR@9w^oc^RVW8MA~%qE|UiCB#Kg?keRVg;7t zKGX$`@*44CDF)(cRM2o?9qz#0IFp4H4Pap0OWpMdF8YjhnO1X76h->_jl4!aYmmL; zYK$gM&oI^(E*lewpK>h1Wa1K>i_0@i!1{!Ck{Clm1{*8RL*3~V)U#TG+J6sU#@r$H zk=3H++i(WPW*T9QG7t5WymqLu{vE5(P5dG1YaDd)Uk`oKSbu|uox};`Xyg>?O50I? za1;I5?dZ)i*6aBMYX8LGl75?3M2+^2$jyIfWYAN0q<^?K#~bW8v~YgavstF_e=2FG AR{#J2 diff --git a/resources/localization/cs_CZ/Slic3rPE_cs.po b/resources/localization/cs_CZ/Slic3rPE_cs.po index 395aac683c..5b8ebbff87 100644 --- a/resources/localization/cs_CZ/Slic3rPE_cs.po +++ b/resources/localization/cs_CZ/Slic3rPE_cs.po @@ -5,7 +5,7 @@ msgstr "" "Project-Id-Version: SLIC3R PE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-13 17:18+0100\n" -"PO-Revision-Date: 2018-02-16 15:23+0100\n" +"PO-Revision-Date: 2018-02-17 22:28+0100\n" "Last-Translator: Filip Hurka \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -602,7 +602,7 @@ msgstr "" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1503 #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:1633 msgid "mm/s or %" -msgstr "mm nebo %" +msgstr "mm/s nebo %" #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:293 msgid "External perimeters first" @@ -983,9 +983,9 @@ msgid "" "the print moves of the first layer, regardless of their type. If expressed " "as a percentage (for example: 40%) it will scale the default speeds." msgstr "" -"Pokud je vyjádřena jako absolutní hodnota v mm / s, bude tato rychlost " -"použita pro všechny pohyby tisku první vrstvy bez ohledu na jejich typ. " -"Pokud je vyjádřeno jako procento (například: 40%), změní se výchozí rychlost." +"Pokud je vyjádřena jako absolutní hodnota v mm/s, bude tato rychlost použita " +"pro všechny pohyby tisku první vrstvy bez ohledu na jejich typ. Pokud je " +"vyjádřeno jako procento (například: 40%), změní se výchozí rychlost." #: C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp:628 msgid "" diff --git a/xs/src/slic3r/GUI/Field.cpp b/xs/src/slic3r/GUI/Field.cpp index 330af6d0a1..30d181a135 100644 --- a/xs/src/slic3r/GUI/Field.cpp +++ b/xs/src/slic3r/GUI/Field.cpp @@ -56,7 +56,8 @@ namespace Slic3r { namespace GUI { case coPercents: case coFloats: case coFloat:{ - if (m_opt.type == coPercent) str.RemoveLast(); + if (m_opt.type == coPercent && str.Last() == '%') + str.RemoveLast(); double val; str.ToCDouble(&val); ret_val = val; @@ -87,7 +88,7 @@ namespace Slic3r { namespace GUI { wxString text_value = wxString(""); - switch (m_opt.type) { +/* switch (m_opt.type) { case coFloatOrPercent: { if (static_cast(m_opt.default_value)->percent) @@ -147,7 +148,7 @@ namespace Slic3r { namespace GUI { break; } - auto temp = new wxTextCtrl(m_parent, wxID_ANY, text_value, wxDefaultPosition, size, (m_opt.multiline ? wxTE_MULTILINE : 0)); +*/ auto temp = new wxTextCtrl(m_parent, wxID_ANY, text_value, wxDefaultPosition, size, (m_opt.multiline ? wxTE_MULTILINE : 0)); temp->SetToolTip(get_tooltip_text(text_value)); @@ -303,7 +304,7 @@ void Choice::set_selection() break; ++idx; } - if (m_opt.type == coPercent) text_value += "%"; +// if (m_opt.type == coPercent) text_value += "%"; idx == m_opt.enum_values.size() ? dynamic_cast(window)->SetValue(text_value) : dynamic_cast(window)->SetSelection(idx); @@ -387,7 +388,7 @@ void Choice::set_value(boost::any value) break; ++idx; } - if (m_opt.type == coPercent) text_value += "%"; +// if (m_opt.type == coPercent) text_value += "%"; idx == m_opt.enum_values.size() ? dynamic_cast(window)->SetValue(text_value) : dynamic_cast(window)->SetSelection(idx); @@ -535,21 +536,29 @@ void PointCtrl::set_value(const Pointf value) void PointCtrl::set_value(boost::any value) { Pointf pt; - try + Pointf *ptf = boost::any_cast(&value); + if (!ptf) { - pt = boost::any_cast(value)->values.at(0); + ConfigOptionPoints* pts = boost::any_cast(value); + pt = pts->values.at(0); } - catch (const std::exception &e) - { - try{ - pt = boost::any_cast(value); - } - catch (const std::exception &e) - { - std::cerr << "Error! Can't cast PointCtrl value" << m_opt_id << "\n"; - return; - } - } + else + pt = *ptf; +// try +// { +// pt = boost::any_cast(value)->values.at(0); +// } +// catch (const std::exception &e) +// { +// try{ +// pt = boost::any_cast(value); +// } +// catch (const std::exception &e) +// { +// std::cerr << "Error! Can't cast PointCtrl value" << m_opt_id << "\n"; +// return; +// } +// } set_value(pt); } diff --git a/xs/src/slic3r/GUI/OptionsGroup.cpp b/xs/src/slic3r/GUI/OptionsGroup.cpp index 23e2cbdc10..198821958d 100644 --- a/xs/src/slic3r/GUI/OptionsGroup.cpp +++ b/xs/src/slic3r/GUI/OptionsGroup.cpp @@ -7,9 +7,6 @@ namespace Slic3r { namespace GUI { -//! macro used to localization, return const CharType * -#define _LU8(s) wxGetTranslation(s).ToUTF8().data() - const t_field& OptionsGroup::build_field(const Option& opt) { return build_field(opt.opt_id, opt.opt); } @@ -155,7 +152,7 @@ void OptionsGroup::append_line(const Line& line) { ConfigOptionDef option = opt.opt; // add label if any if (option.label != "") { - auto field_label = new wxStaticText(parent(), wxID_ANY, wxString::FromUTF8(option.label.c_str()) + ":", wxDefaultPosition, wxDefaultSize); + auto field_label = new wxStaticText(parent(), wxID_ANY, _L(option.label) + ":", wxDefaultPosition, wxDefaultSize); field_label->SetFont(label_font); sizer->Add(field_label, 0, wxALIGN_CENTER_VERTICAL, 0); } @@ -169,7 +166,9 @@ void OptionsGroup::append_line(const Line& line) { // add sidetext if any if (option.sidetext != "") { - auto sidetext = new wxStaticText(parent(), wxID_ANY, wxString::FromUTF8(option.sidetext.c_str()), wxDefaultPosition, wxDefaultSize); + // Explicitly specify that the source string is already in UTF-8 encoding + wxString sidetext_str(option.sidetext.c_str(), wxConvUTF8); + auto sidetext = new wxStaticText(parent(), wxID_ANY, _L(sidetext_str), wxDefaultPosition, wxDefaultSize); sidetext->SetFont(sidetext_font); sizer->Add(sidetext, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, 4); } @@ -191,7 +190,7 @@ void OptionsGroup::append_line(const Line& line) { } Line OptionsGroup::create_single_option_line(const Option& option) const { - Line retval{ wxString::FromUTF8(option.opt.label.c_str()), wxString::FromUTF8(option.opt.tooltip.c_str()) }; + Line retval{ _L(option.opt.label), _L(option.opt.tooltip) }; Option tmp(option); tmp.opt.label = std::string(""); retval.append_option(tmp); @@ -206,7 +205,7 @@ void OptionsGroup::on_change_OG(t_config_option_key id, /*config_value*/boost::a Option ConfigOptionsGroup::get_option(const std::string opt_key, int opt_index /*= -1*/) { if (!m_config->has(opt_key)) { - //! exception ("No $opt_key in ConfigOptionsGroup config"); + std::cerr << "No " << opt_key << " in ConfigOptionsGroup config."; } std::string opt_id = opt_index == -1 ? opt_key : opt_key + "#" + std::to_string(opt_index); @@ -328,9 +327,9 @@ boost::any ConfigOptionsGroup::get_config_value(DynamicPrintConfig& config, std: case coFloats: case coFloat:{ double val = opt->type == coFloats ? - config.opt_float(opt_key, idx/*0opt_index*/) : + config.opt_float(opt_key, idx) : opt->type == coFloat ? config.opt_float(opt_key) : - config.option(opt_key)->values.at(idx/*0*/); + config.option(opt_key)->values.at(idx); ret = double_to_string(val); } break; @@ -341,19 +340,19 @@ boost::any ConfigOptionsGroup::get_config_value(DynamicPrintConfig& config, std: if (config.option(opt_key)->values.empty()) ret = text_value; else - ret = static_cast(config.opt_string(opt_key, static_cast(idx/*0*/)/*opt_index*/)); + ret = static_cast(config.opt_string(opt_key, static_cast(idx))); break; case coBool: ret = config.opt_bool(opt_key); break; case coBools: - ret = config.opt_bool(opt_key, idx/*0opt_index*/); + ret = config.opt_bool(opt_key, idx); break; case coInt: ret = config.opt_int(opt_key); break; case coInts: - ret = config.opt_int(opt_key, idx/*0/*opt_index*/); + ret = config.opt_int(opt_key, idx); break; case coEnum:{ if (opt_key.compare("external_fill_pattern") == 0 || @@ -372,7 +371,7 @@ boost::any ConfigOptionsGroup::get_config_value(DynamicPrintConfig& config, std: break; case coPoints:{ const auto &value = *config.option(opt_key); - ret = value.values.at(idx/*0*/); + ret = value.values.at(idx); } break; case coNone: @@ -400,14 +399,5 @@ void ogStaticText::SetText(wxString value) GetParent()->Layout(); } -void Option::translate() -{ - opt.label = _LU8(opt.label); - opt.tooltip = _LU8(opt.tooltip); - opt.sidetext = _LU8(opt.sidetext); - opt.full_label = _LU8(opt.full_label); - opt.category = _LU8(opt.category); -} - } // GUI } // Slic3r diff --git a/xs/src/slic3r/GUI/OptionsGroup.hpp b/xs/src/slic3r/GUI/OptionsGroup.hpp index 30bb4013d3..6e88d1d887 100644 --- a/xs/src/slic3r/GUI/OptionsGroup.hpp +++ b/xs/src/slic3r/GUI/OptionsGroup.hpp @@ -35,8 +35,7 @@ struct Option { bool readonly {false}; Option(const ConfigOptionDef& _opt, t_config_option_key id) : - opt(_opt), opt_id(id) { translate(); } - void translate(); + opt(_opt), opt_id(id) {} }; using t_option = std::unique_ptr