FEAT: 更新2.0.3版本

This commit is contained in:
liesum 2025-06-05 09:32:57 +08:00
parent eac75df634
commit 603b2d06aa
100 changed files with 11193 additions and 525 deletions

1
.gitignore vendored
View File

@ -28,3 +28,4 @@ doc/
**/process_full/
**/machine_full/
**/filament_full/
**/.idea/

View File

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: Slic3rPE\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-24 10:10+0800\n"
"PO-Revision-Date: 2025-02-20 20:32+0800\n"
"PO-Revision-Date: 2025-06-03 17:26+0800\n"
"Last-Translator: Jiang Yue <maze1024@gmail.com>\n"
"Language-Team: \n"
"Language: zh_CN\n"
@ -13140,8 +13140,7 @@ msgstr ""
"分盘打印\n"
"您知道吗?您可以把一个有很多零件的模型安排到多个独立的分盘,然后打印出来,这将简化对所有零件的管理。"
#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer
#: Height]
#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height]
msgid ""
"Speed up your print with Adaptive Layer Height\n"
"Did you know that you can print a model even faster, by using the Adaptive Layer Height option? Check it out!"
@ -13213,8 +13212,7 @@ msgstr ""
"提高强度\n"
"您知道吗?你可以使用更多的墙层数和更高的疏散填充密度来提高模型的强度。"
#: resources/data/hints.ini: [hint:When need to print with the printer door
#: opened]
#: resources/data/hints.ini: [hint:When need to print with the printer door opened]
msgid ""
"When need to print with the printer door opened\n"
"Did you know that opening the printer door can reduce the probability of extruder/hotend clogging when printing lower temperature filament with a higher enclosure temperature. More info about this in the Wiki."
@ -13230,6 +13228,23 @@ msgstr ""
"避免翘曲\n"
"您知道吗打印ABS这类易翘曲材料时适当提高热床温度可以降低翘曲的概率。"
msgid "Ui title"
msgstr "连续纤维复材打印路径规划软件"
msgid "Default print speed"
msgstr "普通打印速度"
msgid "Configuration"
msgstr "配置"
msgid "Configuration settings"
msgstr "配置设置"
msgid "Fiber Spiral"
msgstr "连续纤维-双线桥接螺旋填充"
#~ msgid "Prefer to use high performance GPU (Effective after manual restart Bambu Studio)"
#~ msgstr "优先使用高性能显卡 (手动重启 Bambu Studio 后生效)"

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 649 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Creator: CorelDRAW 2020 (64-Bit 评估版) -->
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="35.7338mm" height="36.4897mm" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
viewBox="0 0 2014.15 2056.75"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xodm="http://www.corel.com/coreldraw/odm/2003">
<defs>
<style type="text/css">
<![CDATA[
.fil0 {fill:#332C2B}
]]>
</style>
</defs>
<g id="图层_x0020_1">
<metadata id="CorelCorpID_0Corel-Layer"/>
<path class="fil0" d="M1894.43 1937.72l0 -148.83c-10.22,10.3 -21.46,20.03 -33.81,29.11 -114.98,84.54 -255.66,64.93 -358.46,-51.4 -89.28,-100.78 -78.46,-269.18 -75.75,-425.42 3.38,-166.38 5.41,-331.41 8.12,-496.43 2.03,-158.94 31.79,-342.23 -64.25,-434.89 -89.28,-85.9 -252.95,-48.7 -287.45,127.15 -17.59,88.6 2.03,846.11 -4.73,994.9 -4.06,79.81 -35.84,136.62 -66.28,185.99 -68.31,112.95 -236.72,157.59 -352.37,90.63 -210.34,-121.74 -163.67,-367.25 -169.76,-582.33 -4.73,-164.36 -4.06,-334.12 -4.73,-501.17 -0.68,-78.45 4.73,-163 -16.91,-232.66 -47.34,-150.15 -226.57,-175.17 -307.06,-64.93 -23.02,31.69 -35.01,58.61 -41.26,88.96l0 1421.31 1774.72 0zm0 -805.21l0 -46.3 0 -8.79 0 -8.79 0 -8.79 0 -940.79 -1774.72 0 0 178.31c11.22,-9.34 23.37,-18.25 36.52,-26.81 173.14,-112.94 397.69,5.41 430.83,244.84 13.53,94.68 10.15,624.26 11.5,744.65 1.35,155.56 -23,340.2 87.25,416.63 133.91,92.66 273.24,-19.62 283.39,-158.94 8.11,-106.86 -3.38,-369.28 -3.38,-496.43 0.68,-156.91 -2.03,-342.9 10.82,-495.76 5.41,-66.96 41.26,-138.65 71.02,-179.91 80.48,-110.24 234.69,-150.82 351.02,-69.66 188.02,131.21 144.73,376.05 142.03,601.94 -2.71,167.06 -6.76,330.73 -9.47,496.44 -0.68,78.45 -10.15,171.11 14.88,239.42 55.46,151.5 226.58,162.32 302.33,43.96 41.25,-64.93 39.22,-123.1 41.25,-211.7 1.72,-105.29 2.89,-209.22 4.73,-313.51zm119.71 924.24l-2014.15 0 0 -2056.75 2014.15 0 0 2056.75 0 0z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -34,14 +34,14 @@
<img src="img/project_new.svg" /><span class="trans" tid='t32'>Create new project</span>
</div>
</div>
<div id="HotModel_Search_Bar">
<div id="HotModel_Search_Btn" >
<img src="img/search.svg" />
</div>
<div id="HotModel_Search_InputArea">
<input id="HotModel_Search_Input" maxlength="1000" placeholder="" />
</div>
</div>
<!-- <div id="HotModel_Search_Bar">-->
<!-- <div id="HotModel_Search_Btn" >-->
<!-- <img src="img/search.svg" />-->
<!-- </div> -->
<!-- <div id="HotModel_Search_InputArea">-->
<!-- <input id="HotModel_Search_Input" maxlength="1000" placeholder="" />-->
<!-- </div>-->
<!-- </div> -->
</div>
@ -97,227 +97,227 @@
</div>
<!----------Online Models--------->
<div id="HotModelArea">
<div id="Online_Models_Bar" class="Title_Bar">
<div class="Title_Left_Area">
<img class="TitleSmallIcon" src="./img/fire.svg" />
<div class="Content-Title trans TextS1" tid="t107">Online Models</div>
</div>
<div class="Right_Title_More TextS1" onClick="SwtichLeftMenu('online')"><span class="trans" tid="t108">MORE</span> ></div>
</div>
<div id="ForU_Models_Bar" class="Title_Bar">
<div class="Title_Left_Area">
<img class="TitleSmallIcon" src="./img/foru.svg" />
<div class="Content-Title trans TextS1" tid="t107">Online Models</div>
</div>
<div class="Right_Title_More TextS1" onClick="SwtichLeftMenu('online')"><span class="trans" tid="t108">MORE</span> ></div>
</div>
<div id="HotModelList" class="SingleGuideBar">
<!-- <div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
<div class="HotModel_PrevBlock">
<img class="HotModel_PrevImg" src="img/a.jpg" />
</div>
<div class="HotModel_Designer_Info">
<div class="HotModel_Author_HeadIcon">
<img src="img/a.jpg" />
</div>
<div class="HotModel_Right_1">
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
<div class="HotModel_Right_1_2">
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
<div class="HotModel_click_info TextS2">
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
</div>
</div>
</div>
</div>
</div>
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
<div class="HotModel_PrevBlock">
<img class="HotModel_PrevImg" src="img/a.jpg" />
</div>
<div class="HotModel_Designer_Info">
<div class="HotModel_Author_HeadIcon">
<img src="img/a.jpg" />
</div>
<div class="HotModel_Right_1">
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
<div class="HotModel_Right_1_2">
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
<div class="HotModel_click_info TextS2">
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
</div>
</div>
</div>
</div>
</div>
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
<div class="HotModel_PrevBlock">
<img class="HotModel_PrevImg" src="img/a.jpg" />
</div>
<div class="HotModel_Designer_Info">
<div class="HotModel_Author_HeadIcon">
<img src="img/a.jpg" />
</div>
<div class="HotModel_Right_1">
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
<div class="HotModel_Right_1_2">
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
<div class="HotModel_click_info TextS2">
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
</div>
</div>
</div>
</div>
</div>
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
<div class="HotModel_PrevBlock">
<img class="HotModel_PrevImg" src="img/a.jpg" />
</div>
<div class="HotModel_Designer_Info">
<div class="HotModel_Author_HeadIcon">
<img src="img/a.jpg" />
</div>
<div class="HotModel_Right_1">
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
<div class="HotModel_Right_1_2">
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
<div class="HotModel_click_info TextS2">
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
</div>
</div>
</div>
</div>
</div>
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
<div class="HotModel_PrevBlock">
<img class="HotModel_PrevImg" src="img/a.jpg" />
</div>
<div class="HotModel_Designer_Info">
<div class="HotModel_Author_HeadIcon">
<img src="img/a.jpg" />
</div>
<div class="HotModel_Right_1">
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
<div class="HotModel_Right_1_2">
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
<div class="HotModel_click_info TextS2">
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
</div>
</div>
</div>
</div>
</div>
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
<div class="HotModel_PrevBlock">
<img class="HotModel_PrevImg" src="img/a.jpg" />
</div>
<div class="HotModel_Designer_Info">
<div class="HotModel_Author_HeadIcon">
<img src="img/a.jpg" />
</div>
<div class="HotModel_Right_1">
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
<div class="HotModel_Right_1_2">
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
<div class="HotModel_click_info TextS2">
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
</div>
</div>
</div>
</div>
</div>
<div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">
<div class="HotModel_PrevBlock">
<img class="HotModel_PrevImg" src="img/a.jpg" />
</div>
<div class="HotModel_Designer_Info">
<div class="HotModel_Author_HeadIcon">
<img src="img/a.jpg" />
</div>
<div class="HotModel_Right_1">
<div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
<div class="HotModel_Right_1_2">
<div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>
<div class="HotModel_click_info TextS2">
<div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>
<div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>
</div>
</div>
</div>
</div>
</div> -->
</div>
</div>
<!-- <div id="HotModelArea">-->
<!-- <div id="Online_Models_Bar" class="Title_Bar">-->
<!-- <div class="Title_Left_Area">-->
<!-- <img class="TitleSmallIcon" src="./img/fire.svg" />-->
<!-- <div class="Content-Title trans TextS1" tid="t107">Online Models</div>-->
<!-- </div>-->
<!-- <div class="Right_Title_More TextS1" onClick="SwtichLeftMenu('online')"><span class="trans" tid="t108">MORE</span> ></div>-->
<!-- </div>-->
<!-- <div id="ForU_Models_Bar" class="Title_Bar">-->
<!-- <div class="Title_Left_Area">-->
<!-- <img class="TitleSmallIcon" src="./img/foru.svg" />-->
<!-- <div class="Content-Title trans TextS1" tid="t107">Online Models</div>-->
<!-- </div>-->
<!-- <div class="Right_Title_More TextS1" onClick="SwtichLeftMenu('online')"><span class="trans" tid="t108">MORE</span> ></div>-->
<!-- </div>-->
<!-- <div id="HotModelList" class="SingleGuideBar">-->
<!--&lt;!&ndash; <div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">-->
<!-- <div class="HotModel_PrevBlock">-->
<!-- <img class="HotModel_PrevImg" src="img/a.jpg" />-->
<!-- </div>-->
<!-- <div class="HotModel_Designer_Info">-->
<!-- <div class="HotModel_Author_HeadIcon">-->
<!-- <img src="img/a.jpg" />-->
<!-- </div>-->
<!-- <div class="HotModel_Right_1">-->
<!-- <div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>-->
<!-- <div class="HotModel_Right_1_2">-->
<!-- <div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>-->
<!-- <div class="HotModel_click_info TextS2">-->
<!-- <div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>-->
<!-- <div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">-->
<!-- <div class="HotModel_PrevBlock">-->
<!-- <img class="HotModel_PrevImg" src="img/a.jpg" />-->
<!-- </div>-->
<!-- <div class="HotModel_Designer_Info">-->
<!-- <div class="HotModel_Author_HeadIcon">-->
<!-- <img src="img/a.jpg" />-->
<!-- </div>-->
<!-- <div class="HotModel_Right_1">-->
<!-- <div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>-->
<!-- <div class="HotModel_Right_1_2">-->
<!-- <div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>-->
<!-- <div class="HotModel_click_info TextS2">-->
<!-- <div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>-->
<!-- <div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">-->
<!-- <div class="HotModel_PrevBlock">-->
<!-- <img class="HotModel_PrevImg" src="img/a.jpg" />-->
<!-- </div>-->
<!-- <div class="HotModel_Designer_Info">-->
<!-- <div class="HotModel_Author_HeadIcon">-->
<!-- <img src="img/a.jpg" />-->
<!-- </div>-->
<!-- <div class="HotModel_Right_1">-->
<!-- <div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>-->
<!-- <div class="HotModel_Right_1_2">-->
<!-- <div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>-->
<!-- <div class="HotModel_click_info TextS2">-->
<!-- <div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>-->
<!-- <div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">-->
<!-- <div class="HotModel_PrevBlock">-->
<!-- <img class="HotModel_PrevImg" src="img/a.jpg" />-->
<!-- </div>-->
<!-- <div class="HotModel_Designer_Info">-->
<!-- <div class="HotModel_Author_HeadIcon">-->
<!-- <img src="img/a.jpg" />-->
<!-- </div>-->
<!-- <div class="HotModel_Right_1">-->
<!-- <div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>-->
<!-- <div class="HotModel_Right_1_2">-->
<!-- <div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>-->
<!-- <div class="HotModel_click_info TextS2">-->
<!-- <div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>-->
<!-- <div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">-->
<!-- <div class="HotModel_PrevBlock">-->
<!-- <img class="HotModel_PrevImg" src="img/a.jpg" />-->
<!-- </div>-->
<!-- <div class="HotModel_Designer_Info">-->
<!-- <div class="HotModel_Author_HeadIcon">-->
<!-- <img src="img/a.jpg" />-->
<!-- </div>-->
<!-- <div class="HotModel_Right_1">-->
<!-- <div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>-->
<!-- <div class="HotModel_Right_1_2">-->
<!-- <div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>-->
<!-- <div class="HotModel_click_info TextS2">-->
<!-- <div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>-->
<!-- <div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">-->
<!-- <div class="HotModel_PrevBlock">-->
<!-- <img class="HotModel_PrevImg" src="img/a.jpg" />-->
<!-- </div>-->
<!-- <div class="HotModel_Designer_Info">-->
<!-- <div class="HotModel_Author_HeadIcon">-->
<!-- <img src="img/a.jpg" />-->
<!-- </div>-->
<!-- <div class="HotModel_Right_1">-->
<!-- <div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>-->
<!-- <div class="HotModel_Right_1_2">-->
<!-- <div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>-->
<!-- <div class="HotModel_click_info TextS2">-->
<!-- <div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>-->
<!-- <div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="HotModelPiece GuideBlock" onClick="OpenOneStaffPickModel(1)">-->
<!-- <div class="HotModel_PrevBlock">-->
<!-- <img class="HotModel_PrevImg" src="img/a.jpg" />-->
<!-- </div>-->
<!-- <div class="HotModel_Designer_Info">-->
<!-- <div class="HotModel_Author_HeadIcon">-->
<!-- <img src="img/a.jpg" />-->
<!-- </div>-->
<!-- <div class="HotModel_Right_1">-->
<!-- <div class="HotModel_Name TextS1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>-->
<!-- <div class="HotModel_Right_1_2">-->
<!-- <div class="HotModel_Author_Name TextS2">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaa</div>-->
<!-- <div class="HotModel_click_info TextS2">-->
<!-- <div class="Model_Click_Number"><img src="img/zan.svg"><span>1.7m</span></div>-->
<!-- <div class="Model_Click_Number"><img src="img/xia.svg"><span>2.8k</span></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div> &ndash;&gt; -->
<!-- </div>-->
<!-- </div> -->
<!----------Makerlab--------->
<div id="MakerlabArea">
<div id="RecentTitleBlock">
<div id="Recent_LEFT_Title">
<img class="TitleSmallIcon" src="./img/ml.svg" />
<div id="RecentTitle" class="Content-Title trans TextS1" tid="">MakerLab</div>
</div>
<div class="Right_Title_More TextS1" onClick="SwtichLeftMenu('makerlab')"><span class="trans" tid="t108">MORE</span> ></div>
</div>
<div id="LabList" class="SingleGuideBar">
<!--
<div class="MakerlabItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >
<div class="MakerlabImg"><img src="img/ml1.jpg"/></div>
<div class="MakerlabTextBlock">
<div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
</div>
</div>
<div class="MakerlabItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >
<div class="MakerlabImg"><img src="img/ml1.jpg"/></div>
<div class="MakerlabTextBlock">
<div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
</div>
</div>
<div class="MakerlabItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >
<div class="MakerlabImg"><img src="img/ml1.jpg"/></div>
<div class="MakerlabTextBlock">
<div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
</div>
</div>
<div class="MakerlabItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >
<div class="MakerlabImg"><img src="img/ml1.jpg"/></div>
<div class="MakerlabTextBlock">
<div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
</div>
</div>
<div class="MakerlabItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >
<div class="MakerlabImg"><img src="img/ml1.jpg"/></div>
<div class="MakerlabTextBlock">
<div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
</div>
</div>
<div class="MakerlabItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >
<div class="MakerlabImg"><img src="img/ml1.jpg"/></div>
<div class="MakerlabTextBlock">
<div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
</div>
</div>
-->
</div>
</div>
<!-- <div id="MakerlabArea">-->
<!-- <div id="RecentTitleBlock">-->
<!-- <div id="Recent_LEFT_Title">-->
<!-- <img class="TitleSmallIcon" src="./img/ml.svg" />-->
<!-- <div id="RecentTitle" class="Content-Title trans TextS1" tid="">MakerLab</div>-->
<!-- </div>-->
<!-- <div class="Right_Title_More TextS1" onClick="SwtichLeftMenu('makerlab')"><span class="trans" tid="t108">MORE</span> ></div> -->
<!-- </div>-->
<!-- <div id="LabList" class="SingleGuideBar">-->
<!--&lt;!&ndash;-->
<!-- <div class="MakerlabItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >-->
<!-- <div class="MakerlabImg"><img src="img/ml1.jpg"/></div>-->
<!-- <div class="MakerlabTextBlock">-->
<!-- <div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- <div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- <div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="MakerlabItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >-->
<!-- <div class="MakerlabImg"><img src="img/ml1.jpg"/></div>-->
<!-- <div class="MakerlabTextBlock">-->
<!-- <div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- <div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- <div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="MakerlabItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >-->
<!-- <div class="MakerlabImg"><img src="img/ml1.jpg"/></div>-->
<!-- <div class="MakerlabTextBlock">-->
<!-- <div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- <div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- <div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="MakerlabItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >-->
<!-- <div class="MakerlabImg"><img src="img/ml1.jpg"/></div>-->
<!-- <div class="MakerlabTextBlock">-->
<!-- <div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- <div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- <div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="MakerlabItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >-->
<!-- <div class="MakerlabImg"><img src="img/ml1.jpg"/></div>-->
<!-- <div class="MakerlabTextBlock">-->
<!-- <div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- <div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- <div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="MakerlabItem GuideBlock" onClick="OnOpenOneMakerlab('aaaa')" >-->
<!-- <div class="MakerlabImg"><img src="img/ml1.jpg"/></div>-->
<!-- <div class="MakerlabTextBlock">-->
<!-- <div class="MakerlabName">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- <div class="MakerlabDesc">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- <div class="MakerlabAuthor">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>-->
<!-- </div>-->
<!-- </div> -->
<!--&ndash;&gt;-->
<!-- </div>-->
<!-- </div> -->
<!-------------Print History-------------->
<div id="PrintHistoryArea">

View File

@ -49,28 +49,28 @@
<div class="BtnIcon "><img class="LeftIcon" src="img/left_recent.svg" /></div>
<div class="BtnText trans" tid="t35">Recent</div>
</div>
<div menu="online" class="BtnItem" onClick="GotoMenu('online')">
<div class="BtnIcon"><img class="LeftIcon" src="img/left_online.svg" /></div>
<div class="BtnText trans" tid="t107">Online Models</div>
<div id="OnlineNewTag" class="BtnNewIcon">New</div>
</div>
<div menu="makerlab" class="BtnItem" onClick="GotoMenu('makerlab')">
<div class="BtnIcon "><img class="LeftIcon" src="img/left_ml.svg" /></div>
<div class="BtnText trans" tid="">MakerLab</div>
<div id="MakerlabNewTag" class="BtnNewIcon">New</div>
</div>
<div menu="makersupply" class="BtnItem" onClick="GotoMenu('makersupply')">
<div class="BtnIcon "><img class="LeftIcon" src="img/left_ms.svg" /></div>
<div class="BtnText trans" tid="t125">Makers Supply</div>
</div>
<div menu="printhistory" class="BtnItem" onClick="GotoMenu('printhistory')">
<div class="BtnIcon "><img class="LeftIcon" src="img/left_ph.svg" /></div>
<div class="BtnText trans" tid="t117">Print History</div>
</div>
<div menu="manual" class="BtnItem" onClick="GotoMenu('manual')">
<div class="BtnIcon "><img class="LeftIcon" src="img/left_manual.svg" /></div>
<div class="BtnText trans" tid="t87">User Manual</div>
</div>
<!-- <div menu="online" class="BtnItem" onClick="GotoMenu('online')">-->
<!-- <div class="BtnIcon"><img class="LeftIcon" src="img/left_online.svg" /></div>-->
<!-- <div class="BtnText trans" tid="t107">Online Models</div> -->
<!-- <div id="OnlineNewTag" class="BtnNewIcon">New</div>-->
<!-- </div> -->
<!-- <div menu="makerlab" class="BtnItem" onClick="GotoMenu('makerlab')">-->
<!-- <div class="BtnIcon "><img class="LeftIcon" src="img/left_ml.svg" /></div>-->
<!-- <div class="BtnText trans" tid="">MakerLab</div>-->
<!-- <div id="MakerlabNewTag" class="BtnNewIcon">New</div>-->
<!-- </div>-->
<!-- <div menu="makersupply" class="BtnItem" onClick="GotoMenu('makersupply')">-->
<!-- <div class="BtnIcon "><img class="LeftIcon" src="img/left_ms.svg" /></div>-->
<!-- <div class="BtnText trans" tid="t125">Makers Supply</div>-->
<!-- </div> -->
<!-- <div menu="printhistory" class="BtnItem" onClick="GotoMenu('printhistory')">-->
<!-- <div class="BtnIcon "><img class="LeftIcon" src="img/left_ph.svg" /></div>-->
<!-- <div class="BtnText trans" tid="t117">Print History</div>-->
<!-- </div> -->
<!-- <div menu="manual" class="BtnItem" onClick="GotoMenu('manual')">-->
<!-- <div class="BtnIcon "><img class="LeftIcon" src="img/left_manual.svg" /></div>-->
<!-- <div class="BtnText trans" tid="t87">User Manual</div>-->
<!-- </div> -->
</div>
</div>

View File

@ -1364,6 +1364,7 @@ void AppConfig::reset_selections()
it->second.erase("sla_material");
it->second.erase(PRESET_PRINTER_NAME);
it->second.erase("physical_printer");
it->second.erase(PRESET_CONFIG_NAME);
m_dirty = true;
}
}

View File

@ -80,6 +80,8 @@ set(lisbslic3r_sources
FileParserError.hpp
Fill/Fill.cpp
Fill/Fill.hpp
Fill/Bridge.hpp
Fill/Bridge.cpp
Fill/Fill3DHoneycomb.cpp
Fill/Fill3DHoneycomb.hpp
Fill/FillAdaptive.cpp

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,230 @@
//
// Created by ylzha on 2025/2/25.
//
#ifndef slic3r_Bridge_hpp_
#define slic3r_Bridge_hpp_
#include "../libslic3r.h"
#include <boost/geometry.hpp>
#include "FillBase.hpp"
namespace bg = boost::geometry;
namespace Slic3r{
class Surface;
// 定义点类型
typedef bg::model::d2::point_xy<double> Point_t;
//定义线段
typedef bg::model::segment<Point_t> Segment;
// 定义多边形类型
typedef bg::model::polygon<Point_t> Polygon_t;
// 多边形集合
typedef bg::model::multi_polygon<Polygon_t> MultiPolygon;
// 定义环类型
typedef bg::model::ring<Point_t> Ring;
// 定义折线类型(用于表示直线)
typedef bg::model::linestring<Point_t> Linestring;
// 定义多边形的外边界和内边界
struct PolygonBoundaries {
Ring outerBoundary; // 外边界
std::vector<Ring> innerBoundaries; // 内边界(可能有多个)
};
struct IdIndex {
size_t id{};
size_t index{};
// 定义小于运算符
bool operator<(const IdIndex& other) const {
return id < other.id;
}
IdIndex(const size_t id, const size_t index) : id(id), index(index) {}
bool operator==(const IdIndex& ii) const {
return id == ii.id && index == ii.index;
}
};
//环路径树结构中节点类型
struct RingNode {
IdIndex id;
Ring ring; //当前环
int orientation{}; //方向 -1 向内 1 向外
std::vector<RingNode> children; //子节点集
RingNode* parent; //父节点
bool isHide{ false }; //在最终路径中是否呈现 false 呈现 true 不呈现
// 构造函数,方便初始化
RingNode(const IdIndex id, const Ring& ring, const int orientation = 0)
: id(id), ring(ring), orientation(orientation), parent(nullptr) {
}
// 重载==运算符方便比较
bool operator==(const RingNode& other) const {
return id.id == other.id.id && id.index == other.id.index;
}
};
//桥接映射
struct BridgeMap {
Point_t from;
Point_t to;
Point_t from2;
Point_t to2;
IdIndex from_ii;
IdIndex to_ii;
size_t edge_index;
BridgeMap(Point_t from, Point_t to, Point_t from2, Point_t to2, IdIndex from_ii, IdIndex to_ii, size_t edge_index) :
from(from), to(to), from2(from2), to2(to2), from_ii(from_ii), to_ii(to_ii), edge_index(edge_index) { }
};
//合并映射
struct MergeMap {
IdIndex ii1; //环1
IdIndex ii2; //环2
std::vector<IdIndex> nodes; //产生的环集
// 构造函数
MergeMap(const IdIndex& i1, const IdIndex& i2, const std::vector<IdIndex>& nodeList)
: ii1(i1), ii2(i2), nodes(nodeList) {
}
};
//struct PointHash {
// std::size_t operator()(const Point_t& p) const {
// std::size_t seed = 0;
// boost::hash_combine(seed, bg::get<0>(p));
// boost::hash_combine(seed, bg::get<1>(p));
// return seed;
// }
//};
//struct PointEqual {
// bool operator()(const Point_t& a, const Point_t& b) const {
// return bg::equals(a, b);
// }
//};
struct PointIndex {
size_t index0;
size_t index1;
Point_t point0;
Point_t point1;
PointIndex(const size_t index0, const size_t index1, const Point_t point0, const Point_t point1) :
index0(index0), index1(index1), point0(point0), point1(point1) { }
};
class Bridge : public Fill {
public:
~Bridge() override = default;
bool is_self_crossing() override { return false; }
protected:
Fill* clone() const override { return new Bridge(*this); }
Polylines fill_surface(const Surface* surface, const FillParams& params) override;
private:
//计算多边形的外边界和内边界
void computePolygonBoundaries(const Polygon_t& polygon);
// 判断两个环是否相交(不包括包含关系)
bool ringsIntersect(const Ring& ring1, const Ring& ring2);
//获取环偏移后的环(可能为空)
std::vector<Ring> offsetRing(const Ring& ring, double distance);
// 查找环非邻边的相交点
std::vector<Point_t> findNonAdjacentIntersections(const Ring& ring);
// 将环拆分成多个环
std::vector<Ring> split(const Ring& ring, const std::vector<Point_t>& intersections);
// 合并两个环
std::vector<Ring> merge(const RingNode& ring1, const RingNode& ring2);
//生成环集
void generateRings();
//形成节点
RingNode formatNode(size_t id, size_t index, const Ring& ring, int orientation);
void addNode(RingNode& node);
void removeNode(IdIndex id);
//查找节点
RingNode& findNode(IdIndex ii);
//形成树
void formatTree();
// 深度优先搜索遍历树
void dfs(RingNode& node, std::vector<IdIndex>& visited, size_t& edge);
//找到多边形环第 N 条边的中心点
Point_t findCenterPointOnEdge(Ring& ring, size_t N, double d0, size_t& e_index);
// 在环上按顺时针方向查找距离给定点d的另一个点
Point_t find_point_at_distance_clockwise(Ring& ring, const Point_t& start_point, double d, size_t& e_index);
size_t findLongestEdgeIndex(const Ring& ring);
//在第N条边上进行内外环桥接并插入桥接点
//o_ii 外环IdIndex i_ii 内环IdIndex
void handleBridge(IdIndex o_ii, IdIndex i_ii, double _offset);
//递归遍历环
void traverseRing(
RingNode& node,
IdIndex parent,
Point_t& start,
Point_t& end,
bool isOutermostLayer //是否最外层
);
//输出所有环
void printRings();
//sf::VertexArray convertToSFML(const Polygon_t& poly, const sf::Color& color);
public:
//输出树结构
void printTree();
//画路径 SFML顶点数组集
//std::vector<sf::Vertex> outputPaths();
//std::vector<sf::VertexArray> convert2vertex();
//std::vector<sf::VertexArray> verteies;
//std::vector<sf::VertexArray> convertBridge();
private:
size_t maxRid = 1; //最大环类型ID值
double offset; //偏移距离
Polygon_t polygon; //2D多边形
double area_threshold; //面积阈值
PolygonBoundaries boundaries; //外/内边界
std::map<size_t, std::vector<RingNode>> ringNodes; //存储不同环类型的节点集合 size_t 环类型id
std::vector<RingNode> nodeHandles; //当前需进行自交或互交处理的节点集合
std::map<IdIndex, std::vector<IdIndex>> splitMap; //分裂映射集
std::vector<MergeMap> mergeMap; //合并映射集
std::map<IdIndex, std::vector<IdIndex>> offsetMap; //偏移后产生的分裂映射集
std::vector<BridgeMap> bridges; //桥接映射
//std::vector<sf::Vertex> path; // 路径
std::vector<Point_t> path; // 路径
bool isFront{ false };
size_t sel_edge_index{ 1 }; //选择桥接边的索引
};
}; // namespace Slic3r
#endif // slic3r_Bridge_hpp_

View File

@ -684,7 +684,9 @@ Polylines Layer::generate_sparse_infill_polylines_for_anchoring(FillAdaptive::Oc
case ipArchimedeanChords:
case ipOctagramSpiral:
case ipZigZag:
case ipCrossZag: break;
case ipCrossZag:
case ipFiberSpiral:
break;
}
// Create the filler object.

View File

@ -25,6 +25,7 @@
#include "FillConcentricInternal.hpp"
#include "FillCrossHatch.hpp"
#include "FillFloatingConcentric.hpp"
#include "Bridge.hpp"
// #define INFILL_DEBUG_OUTPUT
@ -60,6 +61,7 @@ Fill* Fill::new_from_type(const InfillPattern type)
case ipZigZag: return new FillZigZag();
case ipCrossZag: return new FillCrossZag();
case ipFloatingConcentric: return new FillFloatingConcentric();
case ipFiberSpiral: return new FillLine();
default: throw Slic3r::InvalidArgument("unknown type");
}
}

View File

@ -4655,7 +4655,7 @@ double GCode::get_path_speed(const ExtrusionPath &path)
// cap speed with max_volumetric_speed anyway (even if user is not using autospeed)
speed = std::min(speed, extrude_speed);
}
//speed = m_config.get_abs_value("default_print_speed");
return speed;
}
@ -5799,6 +5799,9 @@ std::string GCode::travel_to(const Point &point, ExtrusionRole role, std::string
// No extra movements emitted by avoid_crossing_perimeters, simply move to the end point with z change
const auto &dest2d = this->point_to_gcode(travel.points.back());
Vec3d dest3d(dest2d(0), dest2d(1), z == DBL_MAX ? m_nominal_z : z);
//zheli****************************************************************************
//*******************************************************************************
//auto dE = m_extruder->E();
gcode += m_writer.travel_to_xyz(dest3d, comment);
} else {
// Extra movements emitted by avoid_crossing_perimeters, lift the z to normal height at the beginning, then apply the z

View File

@ -551,6 +551,7 @@ std::string GCodeWriter::travel_to_xyz(const Vec3d &point, const std::string &co
m_lifted = 0.;
//BBS
this->set_current_position_clear(true);
//return this->travel_to_xy_test(to_2d(point));
return this->travel_to_xy(to_2d(point));
}
else {

View File

@ -381,6 +381,8 @@ std::string Preset::get_type_string(Preset::Type type)
return "physical_printer";
case Preset::Type::TYPE_INVALID:
return "invalid";
case Preset::Type::TYPE_CONFIG:
return PRESET_CONFIG_NAME;
default:
return "invalid";
}
@ -859,7 +861,7 @@ static std::vector<std::string> s_Preset_print_options {
#endif /* HAS_PRESSURE_EQUALIZER */
"inner_wall_speed", "outer_wall_speed", "sparse_infill_speed", "internal_solid_infill_speed",
"top_surface_speed", "support_speed", "support_object_xy_distance", "support_object_first_layer_gap","support_interface_speed",
"bridge_speed", "gap_infill_speed", "travel_speed", "travel_speed_z", "initial_layer_speed", "outer_wall_acceleration",
"bridge_speed", "gap_infill_speed", "travel_speed", "travel_speed_z", "initial_layer_speed", "outer_wall_acceleration","default_print_speed",
"initial_layer_acceleration", "top_surface_acceleration", "default_acceleration", "travel_acceleration", "initial_layer_travel_acceleration", "inner_wall_acceleration", "sparse_infill_acceleration",
"accel_to_decel_enable", "accel_to_decel_factor", "skirt_loops", "skirt_distance",
"skirt_height", "draft_shield",
@ -1058,6 +1060,9 @@ static std::vector<std::string> s_Preset_sla_printer_options {
"min_initial_exposure_time", "max_initial_exposure_time",
"inherits"
};
static std::vector<std::string> s_Preset_config_options{
"initial_layer_line_width","outer_wall_line_width","inner_wall_line_width","top_surface_line_width","sparse_infill_line_width","support_line_width","resolution","wall_sequence"
};
const std::vector<std::string>& Preset::print_options() { return s_Preset_print_options; }
const std::vector<std::string>& Preset::filament_options() { return s_Preset_filament_options; }
@ -1068,6 +1073,7 @@ const std::vector<std::string>& Preset::nozzle_options() { return print_
const std::vector<std::string>& Preset::sla_print_options() { return s_Preset_sla_print_options; }
const std::vector<std::string>& Preset::sla_material_options() { return s_Preset_sla_material_options; }
const std::vector<std::string>& Preset::sla_printer_options() { return s_Preset_sla_printer_options; }
const std::vector<std::string>& Preset::config_options() { return s_Preset_print_options; }
const std::vector<std::string>& Preset::printer_options()
{
@ -3116,6 +3122,7 @@ std::string PresetCollection::name() const
//case Preset::TYPE_SLA_PRINT: return L("SLA print");
//case Preset::TYPE_SLA_MATERIAL: return L("SLA material");
case Preset::TYPE_PRINTER: return L(PRESET_PRINTER_NAME);
case Preset::TYPE_CONFIG: return L(PRESET_CONFIG_NAME);
default: return "invalid";
}
}
@ -3129,6 +3136,7 @@ std::string PresetCollection::section_name() const
//case Preset::TYPE_SLA_PRINT: return PRESET_SLA_PRINT_NAME;
//case Preset::TYPE_SLA_MATERIAL: return PRESET_SLA_MATERIALS_NAME;
case Preset::TYPE_PRINTER: return PRESET_PRINTER_NAME;
case Preset::TYPE_CONFIG: return PRESET_CONFIG_NAME;
default: return "invalid";
}
}

View File

@ -26,11 +26,14 @@
#define PRESET_PROFILES_TEMOLATE_DIR "profiles_template"
#define PRESET_TEMPLATE_DIR "Template"
#define PRESET_CUSTOM_VENDOR "Custom"
#define PRESET_CONFIG_NAME "config"
//BBS: iot preset type strings
#define PRESET_IOT_PRINTER_TYPE "printer"
#define PRESET_IOT_FILAMENT_TYPE "filament"
#define PRESET_IOT_PRINT_TYPE "print"
#define PRESET_IOT_CONFIG_TYPE "config"
//BBS: add json support
@ -180,6 +183,7 @@ public:
TYPE_FILAMENT,
TYPE_SLA_MATERIAL,
TYPE_PRINTER,
TYPE_CONFIG,
TYPE_COUNT,
// This type is here to support PresetConfigSubstitutions for physical printers, however it does not belong to the Preset class,
// PhysicalPrinter class is used instead.
@ -340,6 +344,7 @@ public:
static const std::vector<std::string>& sla_printer_options();
static const std::vector<std::string>& sla_material_options();
static const std::vector<std::string>& sla_print_options();
static const std::vector<std::string>& config_options();
static void update_suffix_modified(const std::string& new_suffix_modified);
static const std::string& suffix_modified();

View File

@ -61,6 +61,7 @@ PresetBundle::PresetBundle()
, sla_materials(Preset::TYPE_SLA_MATERIAL, Preset::sla_material_options(), static_cast<const SLAMaterialConfig &>(SLAFullPrintConfig::defaults()))
, sla_prints(Preset::TYPE_SLA_PRINT, Preset::sla_print_options(), static_cast<const SLAPrintObjectConfig &>(SLAFullPrintConfig::defaults()))
, printers(Preset::TYPE_PRINTER, Preset::printer_options(), static_cast<const PrintRegionConfig &>(FullPrintConfig::defaults()), "Default Printer")
, configs(Preset::TYPE_CONFIG, Preset::config_options(), static_cast<const PrintRegionConfig&>(FullPrintConfig::defaults()), "Default Config")
, physical_printers(PhysicalPrinter::printer_options())
{
// The following keys are handled by the UI, they do not have a counterpart in any StaticPrintConfig derived classes,
@ -114,7 +115,7 @@ PresetBundle::PresetBundle()
this->filaments.select_preset(0);
this->sla_materials.select_preset(0);
this->printers.select_preset(0);
this->configs.select_preset(0);
this->project_config.apply_only(FullPrintConfig::defaults(), s_project_options);
}
@ -131,6 +132,7 @@ PresetBundle& PresetBundle::operator=(const PresetBundle &rhs)
sla_materials = rhs.sla_materials;
printers = rhs.printers;
physical_printers = rhs.physical_printers;
configs = rhs.configs;
filament_presets = rhs.filament_presets;
project_config = rhs.project_config;
@ -143,6 +145,7 @@ PresetBundle& PresetBundle::operator=(const PresetBundle &rhs)
filaments .update_vendor_ptrs_after_copy(this->vendors);
sla_materials.update_vendor_ptrs_after_copy(this->vendors);
printers .update_vendor_ptrs_after_copy(this->vendors);
configs.update_vendor_ptrs_after_copy(this->vendors);
return *this;
}
@ -156,6 +159,7 @@ void PresetBundle::reset(bool delete_files)
this->filaments .reset(delete_files);
this->sla_materials.reset(delete_files);
this->printers .reset(delete_files);
this->configs.reset(delete_files);
// BBS: filament_presets is load from project config, not handled here
//this->filament_presets.clear();
if (this->filament_presets.empty())
@ -165,6 +169,7 @@ void PresetBundle::reset(bool delete_files)
this->obsolete_presets.filaments.clear();
this->obsolete_presets.sla_materials.clear();
this->obsolete_presets.printers.clear();
this->obsolete_presets.configs.clear();
}
void PresetBundle::setup_directories()
@ -228,7 +233,8 @@ void PresetBundle::copy_files(const std::string& from)
// Store the print/filament/printer presets at the same location as the upstream Slic3r.
from_data_dir / PRESET_PRINT_NAME,
from_data_dir / PRESET_FILAMENT_NAME,
from_data_dir / PRESET_PRINTER_NAME
from_data_dir / PRESET_PRINTER_NAME,
from_data_dir / PRESET_CONFIG_NAME
};
// copy recursively all files
//BBS: change directoties by design
@ -287,6 +293,9 @@ Preset* PresetBundle::get_preset_differed_for_save(Preset& preset)
case Preset::TYPE_FILAMENT:
preset_collection = &(this->filaments);
break;
case Preset::TYPE_CONFIG:
preset_collection = &(this->configs);
break;
default:
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" invalid type %1%, return directly")%preset.type;
return nullptr;
@ -309,6 +318,9 @@ int PresetBundle::get_differed_values_to_update(Preset& preset, std::map<std::st
case Preset::TYPE_FILAMENT:
preset_collection = &(this->filaments);
break;
case Preset::TYPE_CONFIG:
preset_collection = &(this->configs);
break;
default:
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" invalid type %1%, return directly")%preset.type;
return -1;
@ -385,6 +397,12 @@ PresetsConfigSubstitutions PresetBundle::load_project_embedded_presets(std::vect
} catch (const std::runtime_error &err) {
errors_cummulative += err.what();
}
try {
this->configs.load_project_embedded_presets(project_presets, PRESET_CONFIG_NAME, substitutions, substitution_rule);
}
catch (const std::runtime_error& err) {
errors_cummulative += err.what();
}
//this->update_multi_material_filament_presets();
//this->update_compatible(PresetSelectCompatibleType::Never);
@ -410,6 +428,9 @@ std::vector<Preset*> PresetBundle::get_current_project_embedded_presets()
auto printer_presets = this->printers.get_project_embedded_presets();
if (!printer_presets.empty())
std::copy(printer_presets.begin(), printer_presets.end(), std::back_inserter(project_presets));
auto config_presets = this->configs.get_project_embedded_presets();
if (!config_presets.empty())
std::copy(config_presets.begin(), config_presets.end(), std::back_inserter(project_presets));
BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" finished, returned project_presets count %1%")%project_presets.size();
return project_presets;
@ -428,6 +449,7 @@ void PresetBundle::reset_project_embedded_presets()
bool printer_reselect = this->printers.reset_project_embedded_presets();
bool filament_reselect = this->filaments.reset_project_embedded_presets();
bool print_reselect = this->prints.reset_project_embedded_presets();
bool config_reselect = this->configs.reset_project_embedded_presets();
if (printer_reselect) {
if (!prefer_printer.empty())
@ -438,7 +460,7 @@ void PresetBundle::reset_project_embedded_presets()
//this->update_multi_material_filament_presets();
this->update_compatible(PresetSelectCompatibleType::Never);
}
else if (filament_reselect || print_reselect) {
else if (filament_reselect || print_reselect || config_reselect) {
//Preset& current_printer = this->printers.get_selected_preset();
/*if (filament_reselect) {
const std::vector<std::string> &prefered_filament_profiles = current_printer.config.option<ConfigOptionStrings>("default_filament_profile")->values;
@ -592,6 +614,14 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(std::string user, For
} catch (const std::runtime_error &err) {
errors_cummulative += err.what();
}
try {
std::string config_selected_preset_name = configs.get_selected_preset().name;
this->configs.load_presets(dir_user_presets, PRESET_CONFIG_NAME, substitutions, substitution_rule);
configs.select_preset_by_name(config_selected_preset_name, false);
}
catch (const std::runtime_error& err) {
errors_cummulative += err.what();
}
if (!errors_cummulative.empty()) throw Slic3r::RuntimeError(errors_cummulative);
this->update_multi_material_filament_presets();
this->update_compatible(PresetSelectCompatibleType::Never);
@ -608,7 +638,7 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(AppConfig &
// First load the vendor specific system presets.
PresetsConfigSubstitutions substitutions;
std::string errors_cummulative;
bool process_added = false, filament_added = false, machine_added = false;
bool process_added = false, filament_added = false, machine_added = false, config_added = false;
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" enter, substitution_rule %1%, preset toltal count %2%")%substitution_rule%my_presets.size();
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" print's selected_idx %1%, selected_name %2%") %prints.get_selected_idx() %prints.get_selected_preset_name();
@ -648,6 +678,10 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(AppConfig &
preset_collection = &(this->printers);
machine_added |= preset_collection->load_user_preset(name, value_map, substitutions, substitution_rule);
}
else if (type_iter->second == PRESET_IOT_CONFIG_TYPE) {
preset_collection = &(this->configs);
config_added |= preset_collection->load_user_preset(name, value_map, substitutions, substitution_rule);
}
else {
BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format("invalid type %1% for setting %2%") %type_iter->second %name;
continue;
@ -890,6 +924,7 @@ void PresetBundle::save_user_presets(AppConfig& config, std::vector<std::string>
this->prints.save_user_presets(dir_user_presets, PRESET_PRINT_NAME, need_to_delete_list);
this->filaments.save_user_presets(dir_user_presets, PRESET_FILAMENT_NAME, need_to_delete_list);
this->printers.save_user_presets(dir_user_presets, PRESET_PRINTER_NAME, need_to_delete_list);
this->configs.save_user_presets(dir_user_presets, PRESET_CONFIG_NAME, need_to_delete_list);
BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" finished");
}
@ -912,6 +947,7 @@ void PresetBundle::update_user_presets_directory(const std::string preset_folder
this->prints.update_user_presets_directory(dir_user_presets, PRESET_PRINT_NAME);
this->filaments.update_user_presets_directory(dir_user_presets, PRESET_FILAMENT_NAME);
this->printers.update_user_presets_directory(dir_user_presets, PRESET_PRINTER_NAME);
this->configs.update_user_presets_directory(dir_user_presets, PRESET_CONFIG_NAME);
BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" finished");
}
@ -1401,15 +1437,18 @@ std::vector<std::string> PresetBundle::merge_presets(PresetBundle &&other)
std::vector<std::string> duplicate_filaments = this->filaments .merge_presets(std::move(other.filaments), this->vendors);
std::vector<std::string> duplicate_sla_materials = this->sla_materials.merge_presets(std::move(other.sla_materials), this->vendors);
std::vector<std::string> duplicate_printers = this->printers .merge_presets(std::move(other.printers), this->vendors);
std::vector<std::string> duplicate_configs = this->configs.merge_presets(std::move(other.configs), this->vendors);
append(this->obsolete_presets.prints, std::move(other.obsolete_presets.prints));
append(this->obsolete_presets.sla_prints, std::move(other.obsolete_presets.sla_prints));
append(this->obsolete_presets.filaments, std::move(other.obsolete_presets.filaments));
append(this->obsolete_presets.sla_materials, std::move(other.obsolete_presets.sla_materials));
append(this->obsolete_presets.printers, std::move(other.obsolete_presets.printers));
append(this->obsolete_presets.configs, std::move(other.obsolete_presets.configs));
append(duplicate_prints, std::move(duplicate_sla_prints));
append(duplicate_prints, std::move(duplicate_filaments));
append(duplicate_prints, std::move(duplicate_sla_materials));
append(duplicate_prints, std::move(duplicate_printers));
append(duplicate_configs, std::move(duplicate_configs));
return duplicate_prints;
}
@ -1421,10 +1460,13 @@ void PresetBundle::update_system_maps()
this->sla_materials.update_map_system_profile_renamed();
this->printers .update_map_system_profile_renamed();
this->configs .update_map_system_profile_renamed();
this->prints .update_map_alias_to_profile_name();
this->sla_prints .update_map_alias_to_profile_name();
this->filaments .update_map_alias_to_profile_name();
this->sla_materials.update_map_alias_to_profile_name();
this->configs.update_map_alias_to_profile_name();
}
static inline std::string remove_ini_suffix(const std::string &name)
@ -1444,7 +1486,12 @@ void PresetBundle::load_installed_printers(const AppConfig &config)
for (auto &preset : printers)
preset.set_visible_from_appconfig(config);
}
void PresetBundle::load_installed_configs(const AppConfig& config)
{
this->update_system_maps();
for (auto& preset : configs)
preset.set_visible_from_appconfig(config);
}
const std::string& PresetBundle::get_preset_name_by_alias( const Preset::Type& preset_type, const std::string& alias) const
{
// there are not aliases for Printers profiles
@ -1454,6 +1501,7 @@ const std::string& PresetBundle::get_preset_name_by_alias( const Preset::Type& p
const PresetCollection& presets = preset_type == Preset::TYPE_PRINT ? prints :
preset_type == Preset::TYPE_SLA_PRINT ? sla_prints :
preset_type == Preset::TYPE_FILAMENT ? filaments :
preset_type == Preset::TYPE_CONFIG ? configs :
sla_materials;
return presets.get_preset_name_by_alias(alias);
@ -1488,7 +1536,8 @@ void PresetBundle::save_changes_for_preset(const std::string& new_name, Preset::
PresetCollection& presets = type == Preset::TYPE_PRINT ? prints :
type == Preset::TYPE_SLA_PRINT ? sla_prints :
type == Preset::TYPE_FILAMENT ? filaments :
type == Preset::TYPE_SLA_MATERIAL ? sla_materials : printers;
type == Preset::TYPE_SLA_MATERIAL ? sla_materials :
type == Preset::TYPE_CONFIG ? configs : printers;
// if we want to save just some from selected options
if (!unselected_options.empty()) {
@ -1604,6 +1653,7 @@ void PresetBundle::load_selections(AppConfig &config, const PresetPreferences& p
// Update visibility of filament and sla material presets
this->load_installed_filaments(config);
this->load_installed_sla_materials(config);
this->load_installed_configs(config);
// Parse the initial print / filament / printer profile names.
std::string initial_print_profile_name = remove_ini_suffix(config.get("presets", PRESET_PRINT_NAME));
@ -1611,6 +1661,7 @@ void PresetBundle::load_selections(AppConfig &config, const PresetPreferences& p
std::string initial_filament_profile_name = remove_ini_suffix(config.get("presets", PRESET_FILAMENT_NAME));
std::string initial_sla_material_profile_name = remove_ini_suffix(config.get("presets", PRESET_SLA_MATERIALS_NAME));
std::string initial_printer_profile_name = remove_ini_suffix(config.get("presets", PRESET_PRINTER_NAME));
std::string initial_config_profile_name = remove_ini_suffix(config.get("presets", PRESET_CONFIG_NAME));
// Activate print / filament / printer profiles from either the config,
// or from the preferred_model_id suggestion passed in by ConfigWizard.
@ -1641,6 +1692,7 @@ void PresetBundle::load_selections(AppConfig &config, const PresetPreferences& p
filaments.select_preset_by_name_strict(initial_filament_profile_name);
sla_prints.select_preset_by_name_strict(initial_sla_print_profile_name);
sla_materials.select_preset_by_name_strict(initial_sla_material_profile_name);
configs.select_preset_by_name_strict(initial_config_profile_name);
// Load the names of the other filament profiles selected for a multi-material printer.
// Load it even if the current printer technology is SLA.
@ -2404,6 +2456,7 @@ DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, std::optio
// Add the default filament preset to have the "filament_preset_id" defined.
out.apply(this->filaments.default_preset().config);
out.apply(this->printers.get_edited_preset().config);
out.apply(this->configs.get_edited_preset().config);
out.apply(this->project_config);
// BBS

View File

@ -166,6 +166,7 @@ public:
PresetCollection prints;
PresetCollection sla_prints;
PresetCollection filaments;
PresetCollection configs;
PresetCollection sla_materials;
PresetCollection& materials(PrinterTechnology pt) { return pt == ptFFF ? this->filaments : this->sla_materials; }
const PresetCollection& materials(PrinterTechnology pt) const { return pt == ptFFF ? this->filaments : this->sla_materials; }
@ -199,11 +200,12 @@ public:
std::vector<std::string> filaments;
std::vector<std::string> sla_materials;
std::vector<std::string> printers;
std::vector<std::string> configs;
};
ObsoletePresets obsolete_presets;
bool has_defauls_only() const
{ return prints.has_defaults_only() && filaments.has_defaults_only() && printers.has_defaults_only(); }
{ return prints.has_defaults_only() && filaments.has_defaults_only() && printers.has_defaults_only() && configs.has_defaults_only();}
DynamicPrintConfig full_config(bool apply_extruder = true, std::optional<std::vector<int>>filament_maps = std::nullopt) const;
// full_config() with the some "useless" config removed.
@ -287,6 +289,7 @@ public:
// based on the user configuration.
// If the "vendor" section is missing, enable all models and variants of the particular vendor.
void load_installed_printers(const AppConfig &config);
void load_installed_configs(const AppConfig& config);
const std::string& get_preset_name_by_alias(const Preset::Type& preset_type, const std::string& alias) const;

View File

@ -157,7 +157,9 @@ static t_config_enum_values s_keys_map_InfillPattern {
{ "lightning", ipLightning },
{ "crosshatch", ipCrossHatch},
{ "zigzag", ipZigZag },
{ "crosszag", ipCrossZag }
{ "crosszag", ipCrossZag },
//xiamian+
{ "fiberspiral", ipFiberSpiral }
};
CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(InfillPattern)
@ -1155,7 +1157,7 @@ void PrintConfigDef::init_fff_params()
def->enum_labels.emplace_back(L("No-brim"));
def->mode = comSimple;
def->set_default_value(new ConfigOptionEnum<BrimType>(btAutoBrim));
def->set_default_value(new ConfigOptionEnum<BrimType>(btOuterOnly));
def = this->add("brim_object_gap", coFloat);
def->label = L("Brim-object gap");
@ -1425,6 +1427,7 @@ void PrintConfigDef::init_fff_params()
def->enum_values.push_back("hilbertcurve");
def->enum_values.push_back("archimedeanchords");
def->enum_values.push_back("octagramspiral");
def->enum_values.push_back("fiberspiral");
def->enum_labels.push_back(L("Concentric"));
def->enum_labels.push_back(L("Rectilinear"));
def->enum_labels.push_back(L("Monotonic"));
@ -1433,6 +1436,7 @@ void PrintConfigDef::init_fff_params()
def->enum_labels.push_back(L("Hilbert Curve"));
def->enum_labels.push_back(L("Archimedean Chords"));
def->enum_labels.push_back(L("Octagram Spiral"));
def->enum_labels.push_back(L("Fiber Spiral"));
def->set_default_value(new ConfigOptionEnum<InfillPattern>(ipRectilinear));
def = this->add("bottom_surface_pattern", coEnum);
@ -2060,6 +2064,7 @@ void PrintConfigDef::init_fff_params()
def->enum_values.push_back("crosshatch");
def->enum_values.push_back("zigzag");
def->enum_values.push_back("crosszag");
def->enum_values.push_back("fiberspiral");
def->enum_labels.push_back(L("Concentric"));
def->enum_labels.push_back(L("Rectilinear"));
def->enum_labels.push_back(L("Grid"));
@ -2080,6 +2085,7 @@ void PrintConfigDef::init_fff_params()
def->enum_labels.push_back(L("Cross Hatch"));
def->enum_labels.push_back(L("Zig Zag"));
def->enum_labels.push_back(L("Cross Zag"));
def->enum_labels.push_back(L("Fiber Spiral"));
def->set_default_value(new ConfigOptionEnum<InfillPattern>(ipCubic));
def = this->add("top_surface_acceleration", coFloats);
@ -2224,6 +2230,14 @@ void PrintConfigDef::init_fff_params()
// "Note that this option only takes effect if no prime tower is generated in current plate.");
//def->set_default_value(new ConfigOptionBool(0));
def = this->add("default_print_speed", coFloat);
def->label = L("Default print speed");
//def->tooltip = L("Speed of initial layer except the solid infill part");
def->sidetext = L("mm/s");
def->min = 0;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(30));
def = this->add("initial_layer_speed", coFloats);
def->label = L("Initial layer");
def->tooltip = L("Speed of initial layer except the solid infill part");
@ -3613,7 +3627,7 @@ void PrintConfigDef::init_fff_params()
def->min = 0;
def->max = 10;
def->mode = comSimple;
def->set_default_value(new ConfigOptionInt(1));
def->set_default_value(new ConfigOptionInt(2));
def = this->add("slow_down_layer_time", coInts);
def->label = L("Layer time");
@ -5488,6 +5502,7 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va
} else if (opt_key == "support_material_enforce_layers") {
opt_key = "enforce_support_layers";
} else if ((opt_key == "initial_layer_print_height" ||
opt_key == "default_print_speed" ||
opt_key == "initial_layer_speed" ||
opt_key == "internal_solid_infill_speed" ||
opt_key == "top_surface_speed" ||

View File

@ -56,6 +56,8 @@ enum InfillPattern : int {
ipHilbertCurve, ipArchimedeanChords, ipOctagramSpiral, ipSupportCubic, ipSupportBase, ipConcentricInternal,
ipLightning, ipCrossHatch, ipZigZag, ipCrossZag,ipFloatingConcentric,
ipCount,
//xiamian+
ipFiberSpiral
};
enum EnsureVerticalThicknessLevel{
@ -1180,6 +1182,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
((ConfigOptionFloat, initial_layer_line_width))
((ConfigOptionFloat, initial_layer_print_height))
((ConfigOptionFloatsNullable, initial_layer_speed))
((ConfigOptionFloat, default_print_speed))
//BBS
((ConfigOptionFloatsNullable, initial_layer_infill_speed))
((ConfigOptionIntsNullable, nozzle_temperature_initial_layer))

View File

@ -47,9 +47,11 @@ void AMSMaterialsSetting::create()
m_button_confirm = new Button(this, _L("Confirm"));
m_btn_bg_green = StateColor(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
//std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_confirm->SetBackgroundColor(m_btn_bg_green);
m_button_confirm->SetBorderColor(wxColour(0, 174, 66));
//m_button_confirm->SetBorderColor(wxColour(0x9A5F21));
m_button_confirm->SetBorderColor(wxColour(0x9A5F21));
m_button_confirm->SetTextColor(wxColour("#FFFFFE"));
m_button_confirm->SetMinSize(AMS_MATERIALS_SETTING_BUTTON_SIZE);
m_button_confirm->SetCornerRadius(FromDIP(12));
@ -151,7 +153,8 @@ void AMSMaterialsSetting::create_panel_normal(wxWindow* parent)
// make the style the same with disable m_input_k_val, FIXME
m_readonly_filament = new TextInput(parent, wxEmptyString, "", "", wxDefaultPosition, AMS_MATERIALS_SETTING_COMBOX_WIDTH, wxTE_CENTRE | wxTE_PROCESS_ENTER);
m_readonly_filament->SetBorderColor(StateColor(std::make_pair(0xDBDBDB, (int)StateColor::Focused), std::make_pair(0x00AE42, (int)StateColor::Hovered),
//m_readonly_filament->SetBorderColor(StateColor(std::make_pair(0xDBDBDB, (int)StateColor::Focused), std::make_pair(0x00AE42, (int)StateColor::Hovered),
m_readonly_filament->SetBorderColor(StateColor(std::make_pair(0xDBDBDB, (int)StateColor::Focused), std::make_pair(0x215F9A, (int)StateColor::Hovered),
std::make_pair(0xDBDBDB, (int)StateColor::Normal)));
m_readonly_filament->SetFont(::Label::Body_14);
m_readonly_filament->SetLabelColor(AMS_MATERIALS_SETTING_GREY800);
@ -1182,7 +1185,8 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt)
}
else {
m_button_confirm->SetBackgroundColor(m_btn_bg_green);
m_button_confirm->SetBorderColor(wxColour(0, 174, 66));
//m_button_confirm->SetBorderColor(wxColour(0x9A5F21));
m_button_confirm->SetBorderColor(wxColour(0x9A5F21));
m_button_confirm->SetTextColor(wxColour("#FFFFFE"));
m_button_confirm->Enable(true);
}

View File

@ -2194,7 +2194,8 @@ void AmsReplaceMaterialDialog::create()
std::pair<wxColour, int>(wxColour(38, 46, 48), StateColor::Enabled));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
//StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_sizer->Add( 0, 0, 1, wxEXPAND, 0 );
m_main_sizer->Add(0,0,0, wxTOP, FromDIP(12));

View File

@ -51,7 +51,8 @@
#define AUFILE_GREY500 wxColour(158, 158, 158)
#define AUFILE_GREY300 wxColour(238, 238, 238)
#define AUFILE_GREY200 wxColour(248, 248, 248)
#define AUFILE_BRAND wxColour(0, 174, 66)
//#define AUFILE_BRAND wxColour(0x9A5F21)
#define AUFILE_BRAND wxColour(0x9A5F21)
#define AUFILE_BRAND_TRANSPARENT wxColour(215, 232, 222)
//#define AUFILE_PICTURES_SIZE wxSize(FromDIP(300), FromDIP(300))
//#define AUFILE_PICTURES_PANEL_SIZE wxSize(FromDIP(300), FromDIP(340))

View File

@ -71,7 +71,7 @@ BBLStatusBarPrint::BBLStatusBarPrint(wxWindow *parent, int id)
m_sizer_status_text = new wxBoxSizer(wxHORIZONTAL);
m_link_show_error = new Label(top_panel, _L("Check the reason"));
m_link_show_error->SetForegroundColour(wxColour(0x00ae42));
m_link_show_error->SetForegroundColour(wxColour(0x9A5F21));
m_link_show_error->SetFont(::Label::Head_13);
m_link_show_error->Bind(wxEVT_ENTER_WINDOW, [this](auto &e) { this->m_self->SetCursor(wxCURSOR_HAND); });
m_link_show_error->Bind(wxEVT_LEAVE_WINDOW, [this](auto &e) { this->m_self->SetCursor(wxCURSOR_ARROW); });

View File

@ -139,7 +139,8 @@ PingCodeBindDialog::PingCodeBindDialog(Plater* plater /*= nullptr*/)
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Disabled),
std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
//std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_bind->SetBackgroundColor(btn_bg_green);
m_button_bind->SetBorderColor(*wxWHITE);
m_button_bind->SetTextColor(wxColour("#FFFFFE"));
@ -480,7 +481,8 @@ PingCodeBindDialog::~PingCodeBindDialog() {
m_link_Terms_title->SetFont(Label::Head_13);
m_link_Terms_title->SetMaxSize(wxSize(FromDIP(450), -1));
m_link_Terms_title->Wrap(FromDIP(450));
m_link_Terms_title->SetForegroundColour(wxColour(0x00AE42));
//m_link_Terms_title->SetForegroundColour(wxColour(0x9A5F21));
m_link_Terms_title->SetForegroundColour(wxColour(0x9A5F21));
m_link_Terms_title->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
wxString txt = _L("Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab device, please read the termsand conditions.By clicking to agree to use your Bambu Lab device, you agree to abide by the Privacy Policy and Terms of Use(collectively, the \"Terms\"). If you do not comply with or agree to the Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services.");
ConfirmBeforeSendDialog confirm_dlg(this, wxID_ANY, _L("Terms and Conditions"), ConfirmBeforeSendDialog::ButtonStyle::ONLY_CONFIRM);
@ -499,7 +501,8 @@ PingCodeBindDialog::~PingCodeBindDialog() {
m_link_privacy_title->SetFont(Label::Head_13);
m_link_privacy_title->SetMaxSize(wxSize(FromDIP(450), -1));
m_link_privacy_title->Wrap(FromDIP(450));
m_link_privacy_title->SetForegroundColour(wxColour(0x00AE42));
//m_link_privacy_title->SetForegroundColour(wxColour(0x9A5F21));
m_link_privacy_title->SetForegroundColour(wxColour(0x9A5F21));
m_link_privacy_title->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
std::string url;
std::string country_code = Slic3r::GUI::wxGetApp().app_config->get_country_code();
@ -539,7 +542,8 @@ PingCodeBindDialog::~PingCodeBindDialog() {
m_link_notice_title->SetFont(Label::Head_13);
m_link_notice_title->SetMaxSize(wxSize(FromDIP(450), -1));
m_link_notice_title->Wrap(FromDIP(450));
m_link_notice_title->SetForegroundColour(wxColour(0x00AE42));
//m_link_notice_title->SetForegroundColour(wxColour(0x9A5F21));
m_link_notice_title->SetForegroundColour(wxColour(0x9A5F21));
m_link_notice_title->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); });
m_link_notice_title->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); });
m_link_notice_title->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
@ -678,7 +682,8 @@ PingCodeBindDialog::~PingCodeBindDialog() {
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Disabled),
std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
//std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_bind->SetBackgroundColor(btn_bg_green);
m_button_bind->SetBorderColor(*wxWHITE);
m_button_bind->SetTextColor(wxColour("#FFFFFE"));
@ -1032,9 +1037,11 @@ UnBindMachineDialog::UnBindMachineDialog(Plater *plater /*= nullptr*/)
m_sizer_button->Add(0, 0, 1, wxEXPAND, 5);
m_button_unbind = new Button(this, _L("Confirm"));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
//std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_unbind->SetBackgroundColor(btn_bg_green);
m_button_unbind->SetBorderColor(wxColour(0, 174, 66));
//m_button_unbind->SetBorderColor(wxColour(0x9A5F21));
m_button_unbind->SetBorderColor(wxColour(0x9A5F21));
m_button_unbind->SetTextColor(wxColour("#FFFFFE"));
m_button_unbind->SetSize(BIND_DIALOG_BUTTON_SIZE);
m_button_unbind->SetMinSize(BIND_DIALOG_BUTTON_SIZE);

View File

@ -85,7 +85,8 @@ BonjourDialog::BonjourDialog(wxWindow *parent, Slic3r::PrinterTechnology tech)
auto button_sizer = new wxBoxSizer(wxHORIZONTAL);
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
//std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor btn_bg_white(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed), std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered),
std::pair<wxColour, int>(*wxWHITE, StateColor::Normal));

View File

@ -94,10 +94,12 @@ HistoryWindow::HistoryWindow(wxWindow* parent, const std::vector<PACalibResult>&
Button * mew_btn = new Button(scroll_window, _L("New"));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
//std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
mew_btn->SetBackgroundColour(*wxWHITE);
mew_btn->SetBackgroundColor(btn_bg_green);
mew_btn->SetBorderColor(wxColour(0, 174, 66));
//mew_btn->SetBorderColor(wxColour(0x9A5F21));
mew_btn->SetBorderColor(wxColour(0x9A5F21));
mew_btn->SetTextColor(wxColour("#FFFFFE"));
mew_btn->SetMinSize(wxSize(FromDIP(100), FromDIP(24)));
mew_btn->SetMaxSize(wxSize(FromDIP(100), FromDIP(24)));
@ -108,7 +110,7 @@ HistoryWindow::HistoryWindow(wxWindow* parent, const std::vector<PACalibResult>&
scroll_sizer->AddSpacer(FromDIP(15));
m_extruder_switch_btn = new SwitchButton(scroll_window);
m_extruder_switch_btn->SetBackgroundColour(wxColour(0, 174, 66));
m_extruder_switch_btn->SetBackgroundColour(wxColour(0x9A5F21));
m_extruder_switch_btn->SetMinSize(wxSize(FromDIP(120), FromDIP(24)));
m_extruder_switch_btn->SetMaxSize(wxSize(FromDIP(120), FromDIP(24)));
m_extruder_switch_btn->SetLabels(_L("Left Nozzle"), _L("Right Nozzle"));
@ -395,10 +397,12 @@ void HistoryWindow::sync_history_data() {
auto edit_button = new Button(m_history_data_panel, _L("Edit"));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
//std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
edit_button->SetBackgroundColour(*wxWHITE);
edit_button->SetBackgroundColor(btn_bg_green);
edit_button->SetBorderColor(wxColour(0, 174, 66));
//edit_button->SetBorderColor(wxColour(0x9A5F21));
edit_button->SetBorderColor(wxColour(0x9A5F21));
edit_button->SetTextColor(wxColour("#FFFFFE"));
edit_button->SetMinSize(wxSize(-1, FromDIP(24)));
edit_button->SetCornerRadius(FromDIP(12));
@ -564,10 +568,12 @@ EditCalibrationHistoryDialog::EditCalibrationHistoryDialog(wxWindow
Button* save_btn = new Button(top_panel, _L("Save"));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
//std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
save_btn->SetBackgroundColour(*wxWHITE);
save_btn->SetBackgroundColor(btn_bg_green);
save_btn->SetBorderColor(wxColour(0, 174, 66));
//save_btn->SetBorderColor(wxColour(0x9A5F21));
save_btn->SetBorderColor(wxColour(0x9A5F21));
save_btn->SetTextColor(wxColour("#FFFFFE"));
save_btn->SetMinSize(wxSize(-1, FromDIP(24)));
save_btn->SetCornerRadius(FromDIP(12));
@ -824,10 +830,12 @@ NewCalibrationHistoryDialog::NewCalibrationHistoryDialog(wxWindow *parent, const
auto btn_sizer = new wxBoxSizer(wxHORIZONTAL);
Button * ok_btn = new Button(top_panel, _L("Ok"));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
//std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
ok_btn->SetBackgroundColour(*wxWHITE);
ok_btn->SetBackgroundColor(btn_bg_green);
ok_btn->SetBorderColor(wxColour(0, 174, 66));
//ok_btn->SetBorderColor(wxColour(0x9A5F21));
ok_btn->SetBorderColor(wxColour(0x9A5F21));
ok_btn->SetTextColor(wxColour("#FFFFFE"));
ok_btn->SetMinSize(wxSize(-1, FromDIP(24)));
ok_btn->SetCornerRadius(FromDIP(12));

View File

@ -149,7 +149,8 @@ CaliPageButton::CaliPageButton(wxWindow* parent, CaliPageActionType type, wxStri
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Disabled),
std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
//std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor btn_bg_white(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Disabled),
std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed),
@ -157,7 +158,8 @@ CaliPageButton::CaliPageButton(wxWindow* parent, CaliPageActionType type, wxStri
std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Normal));
StateColor btn_bd_green(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Disabled),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Enabled));
//std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Enabled));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Enabled));
StateColor btn_bd_white(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Disabled),
std::pair<wxColour, int>(wxColour(38, 46, 48), StateColor::Enabled));

View File

@ -565,7 +565,7 @@ void CalibrationPresetPage::create_selection_panel(wxWindow* parent)
m_btn_sync->SetCornerRadius(8);
StateColor btn_sync_bg_col(std::pair<wxColour, int>(wxColour(0xCECECE), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0xF8F8F8), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0xF8F8F8), StateColor::Normal));
StateColor btn_sync_bd_col(std::pair<wxColour, int>(wxColour(0x00AE42), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0x00AE42), StateColor::Hovered),
StateColor btn_sync_bd_col(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0xEEEEEE), StateColor::Normal));
m_btn_sync->SetBackgroundColor(btn_sync_bg_col);
m_btn_sync->SetBorderColor(btn_sync_bd_col);

View File

@ -33,6 +33,7 @@ public:
SP_FILAMENTS,
SP_MATERIALS,
SP_CUSTOM,
SP_CONFIGS
};
ConfigWizard(wxWindow *parent);

View File

@ -55,10 +55,12 @@ ConnectPrinterDialog::ConnectPrinterDialog(wxWindow *parent, wxWindowID id, cons
StateColor btn_bg(
std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal)
//std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal)
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal)
);
StateColor btn_bd(std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
//StateColor btn_bd(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor btn_bd(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor btn_text(std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Normal));

View File

@ -30,7 +30,8 @@
#define STATIC_TEXT_COLOUR wxColour("#363636")
#define PRINTER_LIST_COLOUR wxColour("#EEEEEE")
#define FILAMENT_OPTION_COLOUR wxColour("#D9D9D9")
#define SELECT_ALL_OPTION_COLOUR wxColour("#00AE42")
//#define SELECT_ALL_OPTION_COLOUR wxColour("#00AE42")
#define SELECT_ALL_OPTION_COLOUR wxColour("#009FF3")
#define DEFAULT_PROMPT_TEXT_COLOUR wxColour("#ACACAC")
namespace Slic3r {
@ -923,7 +924,8 @@ wxBoxSizer *CreateFilamentPresetDialog::create_button_item()
bSizer_button->Add(0, 0, 1, wxEXPAND, 0);
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_create = new Button(this, _L("Create"));
m_button_create->SetBackgroundColor(btn_bg_green);
@ -1911,7 +1913,8 @@ wxBoxSizer *CreatePrinterPresetDialog::create_hot_bed_stl_item(wxWindow *parent)
StateColor flush_bg_col(std::pair<wxColour, int>(wxColour(219, 253, 231), StateColor::Pressed), std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Normal));
StateColor flush_bd_col(std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Hovered),
//StateColor flush_bd_col(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Hovered),
StateColor flush_bd_col(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(172, 172, 172), StateColor::Normal));
m_button_bed_stl = new Button(parent, _L("Load stl"));
@ -1948,7 +1951,8 @@ wxBoxSizer *CreatePrinterPresetDialog::create_hot_bed_svg_item(wxWindow *parent)
StateColor flush_bg_col(std::pair<wxColour, int>(wxColour(219, 253, 231), StateColor::Pressed), std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Normal));
StateColor flush_bd_col(std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Hovered),
//StateColor flush_bd_col(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Hovered),
StateColor flush_bd_col(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(172, 172, 172), StateColor::Normal));
m_button_bed_svg = new Button(parent, _L("Load svg"));
@ -1996,7 +2000,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_page1_btns_item(wxWindow *parent)
bSizer_button->Add(0, 0, 1, wxEXPAND, 0);
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_OK = new Button(parent, _L("OK"));
m_button_OK->SetBackgroundColor(btn_bg_green);
@ -2667,7 +2671,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_page2_btns_item(wxWindow *parent)
bSizer_button->Add(0, 0, 1, wxEXPAND, 0);
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor btn_bg_white(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed), std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered),
std::pair<wxColour, int>(*wxWHITE, StateColor::Normal));
@ -3440,7 +3444,7 @@ CreatePresetSuccessfulDialog::CreatePresetSuccessfulDialog(wxWindow *parent, con
break;
}
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor btn_bg_white(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed), std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered),
std::pair<wxColour, int>(*wxWHITE, StateColor::Normal));
@ -4309,7 +4313,7 @@ wxBoxSizer *ExportConfigsDialog::create_button_item(wxWindow* parent)
bSizer_button->Add(0, 0, 1, wxEXPAND, 0);
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_ok = new Button(this, _L("OK"));
m_button_ok->SetBackgroundColor(btn_bg_green);
@ -4818,7 +4822,8 @@ wxBoxSizer *EditFilamentPresetDialog::create_add_filament_btn()
StateColor flush_fg_col(std::pair<wxColour, int>(wxColour(107, 107, 106), StateColor::Pressed), std::pair<wxColour, int>(wxColour(107, 107, 106), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(107, 107, 106), StateColor::Normal));
StateColor flush_bd_col(std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Hovered),
//StateColor flush_bd_col(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Hovered),
StateColor flush_bd_col(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(172, 172, 172), StateColor::Normal));
m_add_filament_btn->SetBackgroundColor(flush_bg_col);
@ -4878,7 +4883,7 @@ wxBoxSizer *EditFilamentPresetDialog::create_button_sizer()
bSizer_button->Add(0, 0, 1, wxEXPAND, 0);
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_ok_btn = new Button(this, _L("OK"));
m_ok_btn->SetBackgroundColor(btn_bg_green);
@ -5078,7 +5083,7 @@ wxBoxSizer *CreatePresetForPrinterDialog::create_button_sizer()
bSizer_button->Add(0, 0, 1, wxEXPAND, 0);
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_ok_btn = new Button(this, _L("OK"));
m_ok_btn->SetBackgroundColor(btn_bg_green);
@ -5224,11 +5229,11 @@ wxPanel *PresetTree::get_child_item(wxPanel *parent, std::shared_ptr<Preset> pre
StateColor flush_fg_col(std::pair<wxColour, int>(wxColour(107, 107, 106), StateColor::Pressed), std::pair<wxColour, int>(wxColour(107, 107, 106), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(107, 107, 106), StateColor::Normal));
StateColor flush_bd_col(std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Hovered),
StateColor flush_bd_col(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(172, 172, 172), StateColor::Normal));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
Button *edit_preset_btn = new Button(panel, _L("Edit Preset"));
edit_preset_btn->SetFont(Label::Body_10);

View File

@ -485,7 +485,8 @@ void DailyTipsPanel::render_controller_buttons(const ImVec2& pos, const ImVec2&
button_text = ImGui::PrevArrowBtnIcon;
if (ImGui::IsMouseHoveringRect(prev_button_pos, prev_button_pos + button_size, true))
{
button_text_color = ImColor(0, 174, 66, (int)(255 * m_fade_opacity));
//button_text_color = ImColor(33, 95, 154, (int)(255 * m_fade_opacity));
button_text_color = ImColor(33, 95, 154, (int)(255 * m_fade_opacity));
if (ImGui::IsMouseClicked(ImGuiMouseButton_Left))
retrieve_data_from_hint_database(HintDataNavigation::Prev);
}
@ -500,7 +501,8 @@ void DailyTipsPanel::render_controller_buttons(const ImVec2& pos, const ImVec2&
button_text = ImGui::NextArrowBtnIcon;
if (ImGui::IsMouseHoveringRect(next_button_pos, next_button_pos + button_size, true))
{
button_text_color = ImColor(0, 174, 66, (int)(255 * m_fade_opacity));
//button_text_color = ImColor(33, 95, 154, (int)(255 * m_fade_opacity));
button_text_color = ImColor(33, 95, 154, (int)(255 * m_fade_opacity));
if (ImGui::IsMouseClicked(ImGuiMouseButton_Left))
retrieve_data_from_hint_database(HintDataNavigation::Next);
}

View File

@ -172,10 +172,10 @@ void ExtrusionCalibration::create()
m_button_cali = new Button(m_step_1_panel, _L("Start calibration"));
m_btn_bg_green = StateColor(std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Disabled), std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_cali->SetBackgroundColor(m_btn_bg_green);
m_button_cali->SetFont(Label::Body_13);
m_button_cali->SetBorderColor({ std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Disabled), std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Enabled) });
m_button_cali->SetBorderColor({ std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Disabled), std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Enabled) });
m_button_cali->SetTextColor({ std::pair<wxColour, int>(wxColour(172, 172, 172), StateColor::Disabled), std::pair<wxColour, int>(EXTRUSION_CALIBRATION_GREY200, StateColor::Enabled) });
m_button_cali->SetCornerRadius(FromDIP(12));
m_button_cali->SetMinSize(wxSize(-1, FromDIP(24)));
@ -183,9 +183,9 @@ void ExtrusionCalibration::create()
m_cali_cancel = new Button(m_step_1_panel, _L("Cancel"));
m_btn_bg_green = StateColor(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_cali_cancel->SetBackgroundColor(m_btn_bg_green);
m_cali_cancel->SetBorderColor(wxColour(0, 174, 66));
m_cali_cancel->SetBorderColor(wxColour(0x9A5F21));
m_cali_cancel->SetTextColor(EXTRUSION_CALIBRATION_GREY200);
m_cali_cancel->SetMinSize(EXTRUSION_CALIBRATION_BUTTON_SIZE);
m_cali_cancel->SetCornerRadius(FromDIP(12));
@ -258,10 +258,10 @@ void ExtrusionCalibration::create()
// save button
m_button_save_result = new Button(m_step_2_panel, _L("Save"));
m_btn_bg_green = StateColor(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_save_result->SetBackgroundColor(m_btn_bg_green);
m_button_save_result->SetFont(Label::Body_13);
m_button_save_result->SetBorderColor(wxColour(0, 174, 66));
m_button_save_result->SetBorderColor(wxColour(0x9A5F21));
m_button_save_result->SetTextColor(EXTRUSION_CALIBRATION_GREY200);
m_button_save_result->SetMinSize(EXTRUSION_CALIBRATION_BUTTON_SIZE);
m_button_save_result->SetCornerRadius(FromDIP(12));

View File

@ -112,9 +112,9 @@ bool try_pop_up_before_slice(bool is_slice_all, Plater* plater_ref, PartPlate* p
static const StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
static const StateColor btn_bd_green(std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
static const StateColor btn_bd_green(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
static const StateColor btn_text_green(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Normal));

View File

@ -594,8 +594,10 @@ void GCodeViewer::SequentialView::GCodeWindow::render(float top, float bottom, f
return ret;
};
static const ImVec4 LINE_NUMBER_COLOR = { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f };
static const ImVec4 SELECTION_RECT_COLOR = { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f };
//static const ImVec4 LINE_NUMBER_COLOR = { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f };
static const ImVec4 LINE_NUMBER_COLOR = { 33.0f / 255.0f, 95.0f / 255.0f, 154.0f / 255.0f, 1.0f };
//static const ImVec4 SELECTION_RECT_COLOR = { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f };
static const ImVec4 SELECTION_RECT_COLOR = { 33.0f / 255.0f, 95.0f / 255.0f, 154.0f / 255.0f, 1.0f };
static const ImVec4 COMMAND_COLOR = m_is_dark ? ImVec4( 240.0f / 255.0f, 240.0f / 255.0f, 240.0f / 255.0f, 1.0f ) : ImVec4( 1.0f, 1.0f, 1.0f, 1.0f );
static const ImVec4 PARAMETERS_COLOR = m_is_dark ? ImVec4( 179.0f / 255.0f, 179.0f / 255.0f, 179.0f / 255.0f, 1.0f ) : ImVec4( 206.0f / 255.0f, 206.0f / 255.0f, 206.0f / 255.0f, 1.0f );
static const ImVec4 COMMENT_COLOR = m_is_dark ? ImVec4(129.0f / 255.0f, 129.0f / 255.0f, 129.0f / 255.0f, 1.0f) : ImVec4( 172.0f / 255.0f, 172.0f / 255.0f, 172.0f / 255.0f, 1.0f );
@ -4675,7 +4677,7 @@ void GCodeViewer::render_legend_color_arr_recommen(float window_padding)
auto link_text = [&](const std::string &label) {
ImVec2 wiki_part_size = ImGui::CalcTextSize(label.c_str());
ImColor HyperColor = ImColor(0, 174, 66, 255).Value;
ImColor HyperColor = ImColor(33, 95, 154, 255).Value;
ImGui::PushStyleColor(ImGuiCol_Text, HyperColor.Value);
imgui.text(label.c_str());
ImGui::PopStyleColor();
@ -4701,7 +4703,7 @@ void GCodeViewer::render_legend_color_arr_recommen(float window_padding)
auto link_text_set_to_optional = [&](const std::string &label) {
ImVec2 wiki_part_size = ImGui::CalcTextSize(label.c_str());
ImColor HyperColor = ImColor(0, 174, 66, 255).Value;
ImColor HyperColor = ImColor(33, 95, 154, 255).Value;
ImGui::PushStyleColor(ImGuiCol_Text, HyperColor.Value);
imgui.text(label.c_str());
ImGui::PopStyleColor();
@ -4729,7 +4731,7 @@ void GCodeViewer::render_legend_color_arr_recommen(float window_padding)
auto link_filament_group_wiki = [&](const std::string& label) {
ImVec2 wiki_part_size = ImGui::CalcTextSize(label.c_str());
ImColor HyperColor = ImColor(0, 174, 66, 255).Value;
ImColor HyperColor = ImColor(33, 95, 154, 255).Value;
ImGui::PushStyleColor(ImGuiCol_Text, HyperColor.Value);
imgui.text(label.c_str());
ImGui::PopStyleColor();

View File

@ -277,6 +277,7 @@ void GLCanvas3D::LayersEditing::render_variable_layer_height_dialog(const GLCanv
ImGuiWrapper& imgui = *wxGetApp().imgui();
const Size& cnv_size = canvas.get_canvas_size();
float zoom = (float)wxGetApp().plater()->get_camera().get_zoom();
// todo
float left_pos = canvas.m_main_toolbar.get_item("layersediting")->render_left_pos;
float x = 0.5 * cnv_size.get_width() + left_pos * zoom;

View File

@ -97,6 +97,7 @@ GLToolbarItem::GLToolbarItem(GLToolbarItem::EType type, const GLToolbarItem::Dat
, m_highlight_state(NotHighlighted)
{
render_left_pos = 0.0f;
render_top_pos = 0.0f;
}
void GLToolbarItem::set_state(EState state)
@ -1467,6 +1468,7 @@ void GLToolbar::render_horizontal(const GLCanvas3D& parent,GLToolbarItem::EType
left += separator_stride;
else
{
item->render_top_pos = top;
//BBS GUI refactor
item->render_left_pos = left;
if (!item->is_action_with_text_image()) {
@ -1522,6 +1524,8 @@ void GLToolbar::render_vertical(const GLCanvas3D& parent)
if (item->is_separator())
top -= separator_stride;
else {
item->render_left_pos = left;
item->render_top_pos = top;
unsigned int tex_id;
int tex_width, tex_height;
if (item->is_action_with_text_image()) {

View File

@ -184,6 +184,8 @@ public:
// remember left position for rendering menu
mutable float render_left_pos;
mutable float render_top_pos;
std::chrono::system_clock::time_point get_start_time_point() const { return start; }
GLToolbarItem(EType type, const Data& data);

View File

@ -374,6 +374,7 @@ void show_substitutions_info(const PresetsConfigSubstitutions& presets_config_su
case Preset::TYPE_FILAMENT: return _L("Filament");
// BBS: remove TYPE_SLA_MATERIAL
case Preset::TYPE_PRINTER: return _L("Machine");
case Preset::TYPE_CONFIG: return _L("Configuration");
// BBS: remove TYPE_PHYSICAL_PRINTER
default: assert(false); return wxString();
}

View File

@ -345,12 +345,15 @@ public:
wxRect title_rect(wxPoint(0, top_margin), wxPoint(split_width - text_padding, top_margin + title_height));
memDc.SetTextForeground(StateColor::darkModeColorFor(wxColour(38, 46, 48)));
memDc.SetFont(m_constant_text.title_font);
memDc.DrawLabel(m_constant_text.title, title_rect, wxALIGN_RIGHT | wxALIGN_BOTTOM);
//memDc.DrawLabel(m_constant_text.title, title_rect, wxALIGN_RIGHT | wxALIGN_BOTTOM);
memDc.DrawLabel(_L("Ui title"), title_rect, wxALIGN_CENTER_VERTICAL);
//BBS align bottom of title and version text
wxRect version_rect(wxPoint(split_width + text_padding, top_margin), wxPoint(width, top_margin + title_height - text_padding));
//wxRect version_rect(wxPoint(split_width + text_padding, top_margin), wxPoint(width, top_margin + title_height - text_padding));
wxRect version_rect(wxPoint(split_width + text_padding, top_margin + 10), wxPoint(width + 10, top_margin + title_height - text_padding));
memDc.SetFont(m_constant_text.version_font);
memDc.SetTextForeground(StateColor::darkModeColorFor(wxColor(134, 134, 134)));
memDc.DrawLabel(m_constant_text.version, version_rect, wxALIGN_LEFT | wxALIGN_BOTTOM);
//memDc.DrawLabel(m_constant_text.version, version_rect, wxALIGN_LEFT | wxALIGN_BOTTOM);
//memDc.DrawLabel(m_constant_text.version, version_rect, wxALIGN_TOP | wxALIGN_LEFT);
#if BBL_INTERNAL_TESTING
wxString versionText = BBL_INTERNAL_TESTING == 1 ? _L("Internal Version") : _L("Beta Version");
@ -367,7 +370,8 @@ public:
int logo_margin = FromDIP(72 * m_scale);
int logo_size = FromDIP(122 * m_scale);
int logo_width = FromDIP(94 * m_scale);
wxBitmap logo_bmp = *bmp_cache.load_svg("splash_logo", logo_size, logo_size);
//wxBitmap logo_bmp = *bmp_cache.load_svg("splash_logo", logo_size, logo_size);
wxBitmap logo_bmp = *bmp_cache.load_svg("machine_logo", logo_size, logo_size);
int logo_y = top_margin + title_rect.GetHeight() + logo_margin;
memDc.DrawBitmap(logo_bmp, (width - logo_width) / 2, logo_y, true);
@ -802,7 +806,7 @@ static const FileWildcards file_wildcards_by_type[FT_SIZE] = {
/* FT_MODEL */
{"Supported files"sv, {".3mf"sv, ".stl"sv, ".oltp"sv, ".stp"sv, ".step"sv, ".svg"sv, ".amf"sv, ".obj"sv}},
#endif
/* FT_PROJECT */ { "Project files"sv, { ".3mf"sv} },
/* FT_PROJECT */ { "Project files"sv, { ".3mf"sv, ".stl"sv} },
/* FT_GALLERY */ { "Known files"sv, { ".stl"sv, ".obj"sv } },
/* FT_INI */ { "INI files"sv, { ".ini"sv } },

View File

@ -648,7 +648,7 @@ void GLGizmoBrimEars::on_render_input_window(float x, float y, float bottom_limi
if (glb_cfg.opt_enum<BrimType>("brim_type") != btBrimEars) {
ImGui::SameLine();
auto link_text = [&]() {
ImColor HyperColor = m_link_text_hover ? ImColor(0, 240, 91).Value : ImColor(0, 174, 66).Value;
ImColor HyperColor = m_link_text_hover ? ImColor(0, 240, 91).Value : ImColor(33, 95, 154).Value;
ImGui::PushStyleColor(ImGuiCol_Text, ImGuiWrapper::to_ImVec4(ColorRGB::WARNING()));
float parent_width = ImGui::GetContentRegionAvail().x;
m_imgui->text_wrapped(_L("Warning: The brim type is not set to \"painted\",the brim ears will not take effect !"), parent_width);

View File

@ -2031,7 +2031,8 @@ void GLGizmoMeasure::show_face_face_assembly_common() {
m_imgui->disabled_begin(!(action.can_set_to_center_coincidence));
{
ImGui::PushItemWidth(set_to_center_coincidence_size);
ImGui::PushStyleColor(ImGuiCol_Button, m_is_dark_mode ? ImVec4(0 / 255.0, 174 / 255.0, 66 / 255.0, 1.0) : ImVec4(0 / 255.0, 174 / 255.0, 66 / 255.0, 1.0));
//ImGui::PushStyleColor(ImGuiCol_Button, m_is_dark_mode ? ImVec4(0 / 255.0, 174 / 255.0, 66 / 255.0, 1.0) : ImVec4(0 / 255.0, 174 / 255.0, 66 / 255.0, 1.0));
ImGui::PushStyleColor(ImGuiCol_Button, m_is_dark_mode ? ImVec4(33.0f / 255.0f, 95.0f / 255.0f, 154.0f / 255.0f, 1.0) : ImVec4(33.0f / 255.0f, 95.0f / 255.0f, 154.0f / 255.0f, 1.0));
ImGui::PushStyleColor(ImGuiCol_ButtonHovered,
m_is_dark_mode ? ImVec4(50 / 255.0f, 238 / 255.0f, 61 / 255.0f, 1.00f) : ImVec4(50 / 255.0f, 238 / 255.0f, 61 / 255.0f, 1.00f));
ImGui::PushStyleColor(ImGuiCol_ButtonActive,

View File

@ -247,13 +247,21 @@ void GLGizmoMeshBoolean::on_render_input_window(float x, float y, float bottom_l
if (selected || hovered) {
ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.f, 1.f, 1.f, 1.0f));
ImGui::PushStyleColor(ImGuiCol_Button, { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f });
/*ImGui::PushStyleColor(ImGuiCol_Button, { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f });
ImGui::PushStyleColor(ImGuiCol_ButtonActive, { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f });
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f });
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f });*/
//ImGui::PushStyleColor(ImGuiCol_Button, { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f });
ImGui::PushStyleColor(ImGuiCol_Button, { 33.0f / 255.0f, 95.0f / 255.0f, 154.0f / 255.0f, 1.0f });
//ImGui::PushStyleColor(ImGuiCol_ButtonActive, { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f });
ImGui::PushStyleColor(ImGuiCol_ButtonActive, { 33.0f / 255.0f, 95.0f / 255.0f, 154.0f / 255.0f, 1.0f });
//ImGui::PushStyleColor(ImGuiCol_ButtonHovered, { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f });
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, { 33.0f / 255.0f, 95.0f / 255.0f, 154.0f / 255.0f, 1.0f });
}
else {
ImGui::PushStyleColor(ImGuiCol_ButtonActive, { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f });
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f });
//ImGui::PushStyleColor(ImGuiCol_ButtonActive, { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f });
ImGui::PushStyleColor(ImGuiCol_ButtonActive, { 33.0f / 255.0f, 95.0f / 255.0f, 154.0f / 255.0f, 1.0f });
//ImGui::PushStyleColor(ImGuiCol_ButtonHovered, { 0, 174.0f / 255.0f, 66.0f / 255.0f, 1.0f });
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, { 33.0f / 255.0f, 95.0f / 255.0f, 154.0f / 255.0f, 1.0f });
}
bool res = ImGui::Button(label.c_str(), size_arg);

View File

@ -25,7 +25,8 @@ static const ImU32 BACKGROUND_COLOR_DARK = IM_COL32(65, 65, 71, 255);
static const ImU32 BACKGROUND_COLOR_LIGHT = IM_COL32(255, 255, 255, 255);
static const ImU32 GROOVE_COLOR_DARK = IM_COL32(45, 45, 49, 255);
static const ImU32 GROOVE_COLOR_LIGHT = IM_COL32(206, 206, 206, 255);
static const ImU32 BRAND_COLOR = IM_COL32(0, 174, 66, 255);
//static const ImU32 BRAND_COLOR = IM_COL32(0, 174, 66, 255);
static const ImU32 BRAND_COLOR = IM_COL32(33, 95, 154, 255);
static int m_tick_value = -1;

View File

@ -1349,6 +1349,8 @@ void MainFrame::create_preset_tabs()
//add_created_tab(new TabSLAPrint(m_param_panel));
//add_created_tab(new TabSLAMaterial(m_param_panel));
add_created_tab(new TabPrinter(m_param_dialog->panel()), "printer");
//todo
//add_created_tab(new TabConfig(m_param_dialog->panel()), "config");
m_param_panel->rebuild_panels();
m_param_dialog->panel()->rebuild_panels();
@ -1765,12 +1767,12 @@ wxBoxSizer* MainFrame::create_side_tools()
if(m_slice_option_pop_up)
delete m_slice_option_pop_up;
m_slice_option_pop_up = new SidePopup(this);
SideButton* slice_all_btn = new SideButton(m_slice_option_pop_up, _L("Slice all"), "");
slice_all_btn->SetCornerRadius(0);
//SideButton* slice_all_btn = new SideButton(m_slice_option_pop_up, _L("Slice all"), "");
//slice_all_btn->SetCornerRadius(0);
SideButton* slice_plate_btn = new SideButton(m_slice_option_pop_up, _L("Slice plate"), "");
slice_plate_btn->SetCornerRadius(0);
slice_all_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) {
/*slice_all_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) {
m_slice_btn->SetLabel(_L("Slice all"));
m_slice_select = eSliceAll;
m_slice_enable = get_enable_slice_status();
@ -1778,7 +1780,7 @@ wxBoxSizer* MainFrame::create_side_tools()
this->Layout();
if(m_slice_option_pop_up)
m_slice_option_pop_up->Dismiss();
});
});*/
slice_plate_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) {
m_slice_btn->SetLabel(_L("Slice plate"));
@ -1789,7 +1791,7 @@ wxBoxSizer* MainFrame::create_side_tools()
if(m_slice_option_pop_up)
m_slice_option_pop_up->Dismiss();
});
m_slice_option_pop_up->append_button(slice_all_btn);
//m_slice_option_pop_up->append_button(slice_all_btn);
m_slice_option_pop_up->append_button(slice_plate_btn);
m_slice_option_pop_up->Popup(m_slice_btn);
}
@ -1837,25 +1839,25 @@ wxBoxSizer* MainFrame::create_side_tools()
p->Dismiss();
});*/
p->append_button(send_gcode_btn);
//p->append_button(send_gcode_btn);
//p->append_button(upload_gcode_btn);
p->append_button(export_gcode_btn);
}
else {
//Bambu Studio Buttons
SideButton* print_plate_btn = new SideButton(p, _L("Print plate"), "");
print_plate_btn->SetCornerRadius(0);
//SideButton* print_plate_btn = new SideButton(p, _L("Print plate"), "");
//print_plate_btn->SetCornerRadius(0);
SideButton* send_to_printer_btn = new SideButton(p, _L("Send"), "");
send_to_printer_btn->SetCornerRadius(0);
//SideButton* send_to_printer_btn = new SideButton(p, _L("Send"), "");
//send_to_printer_btn->SetCornerRadius(0);
SideButton* export_sliced_file_btn = new SideButton(p, _L("Export plate sliced file"), "");
export_sliced_file_btn->SetCornerRadius(0);
//SideButton* export_sliced_file_btn = new SideButton(p, _L("Export plate sliced file"), "");
//export_sliced_file_btn->SetCornerRadius(0);
SideButton* export_all_sliced_file_btn = new SideButton(p, _L("Export all sliced file"), "");
export_all_sliced_file_btn->SetCornerRadius(0);
//SideButton* export_all_sliced_file_btn = new SideButton(p, _L("Export all sliced file"), "");
//export_all_sliced_file_btn->SetCornerRadius(0);
print_plate_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
/*print_plate_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
m_print_btn->SetLabel(_L("Print plate"));
m_print_select = ePrintPlate;
m_print_enable = get_enable_print_status();
@ -1911,17 +1913,26 @@ wxBoxSizer* MainFrame::create_side_tools()
m_print_btn->Enable(m_print_enable);
this->Layout();
p->Dismiss();
});*/
SideButton* export_gcode_btn = new SideButton(p, _L("Export G-code file"), "");
export_gcode_btn->SetCornerRadius(0);
export_gcode_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
m_print_btn->SetLabel(_L("Export G-code file"));
m_print_select = eExportGcode;
m_print_enable = get_enable_print_status();
m_print_btn->Enable(m_print_enable);
this->Layout();
p->Dismiss();
});
p->append_button(print_plate_btn);
/* p->append_button(print_plate_btn);
p->append_button(print_all_btn);
p->append_button(send_to_printer_btn);
p->append_button(send_to_printer_all_btn);
p->append_button(export_sliced_file_btn);
p->append_button(export_all_sliced_file_btn);
p->append_button(export_all_sliced_file_btn);*/
p->append_button(export_gcode_btn);
if (check_bbl_farm_client_installed()) {
/* if (check_bbl_farm_client_installed()) {
SideButton *send_to_multi_app_btn = new SideButton(p, _L("Send to Bambu Farm Manager Client"), "");
send_to_multi_app_btn->SetCornerRadius(0);
p->append_button(send_to_multi_app_btn);
@ -1949,7 +1960,7 @@ wxBoxSizer* MainFrame::create_side_tools()
p->Dismiss();
});
p->append_button(print_multi_machine_btn);
}
}*/
}
p->Popup(m_print_btn);
@ -2123,8 +2134,10 @@ void MainFrame::update_side_button_style()
m_slice_btn->SetBottomColour(wxColour(0x3B4446));*/
StateColor m_btn_bg_enable = StateColor(
std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(48, 221, 112), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal)
//std::pair<wxColour, int>(wxColour(48, 221, 112), StateColor::Hovered),
std::pair<wxColour, int>(0x0073BC, StateColor::Hovered),
//std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal)
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal)
);
m_slice_btn->SetTextLayout(SideButton::EHorizontalOrientation::HO_Left, FromDIP(15));
@ -3754,24 +3767,30 @@ void MainFrame::on_config_changed(DynamicPrintConfig* config) const
void MainFrame::set_print_button_to_default(PrintSelectType select_type)
{
if (select_type == PrintSelectType::ePrintPlate) {
m_print_btn->SetLabel(_L("Print plate"));
m_print_select = ePrintPlate;
if (m_print_enable)
m_print_enable = get_enable_print_status();
m_print_btn->Enable(m_print_enable);
this->Layout();
} else if (select_type == PrintSelectType::eSendGcode) {
m_print_btn->SetLabel(_L("Print"));
m_print_select = eSendGcode;
if (m_print_enable)
m_print_enable = get_enable_print_status() && can_send_gcode();
m_print_btn->Enable(m_print_enable);
this->Layout();
} else {
//unsupport
return;
}
//if (select_type == PrintSelectType::ePrintPlate) {
// m_print_btn->SetLabel(_L("Print plate"));
// m_print_select = ePrintPlate;
// if (m_print_enable)
// m_print_enable = get_enable_print_status();
// m_print_btn->Enable(m_print_enable);
// this->Layout();
//} else if (select_type == PrintSelectType::eSendGcode) {
// m_print_btn->SetLabel(_L("Print"));
// m_print_select = eSendGcode;
// if (m_print_enable)
// m_print_enable = get_enable_print_status() && can_send_gcode();
// m_print_btn->Enable(m_print_enable);
// this->Layout();
//} else {
// //unsupport
// return;
//}
m_print_btn->SetLabel(_L("Export G-code file"));
m_print_select = eExportGcode;
if (m_print_enable)
m_print_enable = get_enable_print_status();
m_print_btn->Enable(m_print_enable);
this->Layout();
}
void MainFrame::add_to_recent_projects(const wxString& filename)
@ -4035,6 +4054,8 @@ void MainFrame::update_side_preset_ui()
//BBS: update the preset
m_plater->sidebar().update_presets(Preset::TYPE_PRINTER);
m_plater->sidebar().update_presets(Preset::TYPE_FILAMENT);
//todo
//m_plater->sidebar().update_presets(Preset::TYPE_CONFIG);
//take off multi machine

View File

@ -152,11 +152,11 @@ Button* MsgDialog::add_button(wxWindowID btn_id, bool set_focus /*= false*/, con
StateColor btn_bg_green(
std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal)
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal)
);
StateColor btn_bd_green(
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal)
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal)
);
StateColor btn_text_green(
@ -606,7 +606,7 @@ wxBoxSizer *Newer3mfVersionDialog::get_btn_sizer()
wxBoxSizer *horizontal_sizer = new wxBoxSizer(wxHORIZONTAL);
horizontal_sizer->Add(0, 0, 1, wxEXPAND, 0);
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor btn_bg_white(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed), std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered),
std::pair<wxColour, int>(*wxWHITE, StateColor::Normal));
bool file_version_newer = (*m_file_version) > (*m_cloud_version);
@ -724,7 +724,7 @@ NetworkErrorDialog::NetworkErrorDialog(wxWindow* parent)
});
auto bt_enable = StateColor(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_confirm = new Button(this, _L("Confirm"));
m_button_confirm->SetBackgroundColor(bt_enable);

View File

@ -186,7 +186,7 @@ void MultiMachineItem::doRender(wxDC& dc)
}
else if (state_device > 2 && state_device < 7) {
dc.SetFont(Label::Body_12);
dc.SetTextForeground(wxColour(0, 174, 66));
dc.SetTextForeground(wxColour(0x9A5F21));
if (obj_->get_curr_stage().IsEmpty() && obj_->subtask_) {
//wxString layer_info = wxString::Format(_L("Layer: %d/%d"), obj_->curr_layer, obj_->total_layers);
wxString progress_info = wxString::Format("%d", obj_->subtask_->task_progress);
@ -199,8 +199,8 @@ void MultiMachineItem::doRender(wxDC& dc)
dc.SetBrush(wxBrush(wxColour(233,233,233)));
dc.DrawRoundedRectangle(left, FromDIP(30), FromDIP(DEVICE_LEFT_PRO_INFO), FromDIP(10), 2);
dc.SetPen(wxPen(wxColour(0, 174, 66)));
dc.SetBrush(wxBrush(wxColour(0, 174, 66)));
dc.SetPen(wxPen(wxColour(0x9A5F21)));
dc.SetBrush(wxBrush(wxColour(0x9A5F21)));
dc.DrawRoundedRectangle(left, FromDIP(30), FromDIP(DEVICE_LEFT_PRO_INFO) * (static_cast<float>(obj_->subtask_->task_progress) / 100.0f), FromDIP(10), 2);
}
else {
@ -226,7 +226,7 @@ void MultiMachineItem::doRender(wxDC& dc)
}
if (m_hover) {
dc.SetPen(wxPen(wxColour(0, 174, 66)));
dc.SetPen(wxPen(wxColour(0x9A5F21)));
dc.SetBrush(*wxTRANSPARENT_BRUSH);
dc.DrawRoundedRectangle(0, 0, size.x, size.y, 3);
}
@ -283,7 +283,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent)
auto m_btn_bg_enable = StateColor(
std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal)
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal)
);

View File

@ -36,7 +36,7 @@ MultiTaskItem::MultiTaskItem(wxWindow* parent, MachineObject* obj, int type)
auto m_btn_bg_enable = StateColor(
std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal)
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal)
);
m_button_resume = new Button(this, _L("Resume"));
@ -376,7 +376,7 @@ void MultiTaskItem::doRender(wxDC& dc)
DrawTextWithEllipsis(dc, get_state_device(), FromDIP(DEVICE_LEFT_PRO_INFO), left);
}
else if (state_device == 1) {
dc.SetTextForeground(wxColour(0, 174, 66));
dc.SetTextForeground(wxColour(0x9A5F21));
DrawTextWithEllipsis(dc, get_state_device(), FromDIP(DEVICE_LEFT_PRO_INFO), left);
}
else if (state_device == 2)
@ -386,7 +386,7 @@ void MultiTaskItem::doRender(wxDC& dc)
}
else if (state_device > 2 && state_device < 7) {
dc.SetFont(Label::Body_12);
dc.SetTextForeground(wxColour(0, 174, 66));
dc.SetTextForeground(wxColour(0x9A5F21));
if (obj_->get_curr_stage().IsEmpty()) {
//wxString layer_info = wxString::Format(_L("Layer: %d/%d"), obj_->curr_layer, obj_->total_layers);
wxString progress_info = wxString::Format("%d", obj_->subtask_->task_progress);
@ -398,8 +398,8 @@ void MultiTaskItem::doRender(wxDC& dc)
dc.SetBrush(wxBrush(wxColour(233, 233, 233)));
dc.DrawRoundedRectangle(left, FromDIP(30), FromDIP(TASK_LEFT_PRO_INFO), FromDIP(10), 2);
dc.SetPen(wxPen(wxColour(0, 174, 66)));
dc.SetBrush(wxBrush(wxColour(0, 174, 66)));
dc.SetPen(wxPen(wxColour(0x9A5F21)));
dc.SetBrush(wxBrush(wxColour(0x9A5F21)));
dc.DrawRoundedRectangle(left, FromDIP(30), FromDIP(TASK_LEFT_PRO_INFO) * (static_cast<float>(obj_->subtask_->task_progress) / 100.0f), FromDIP(10), 2);
}
else {
@ -422,8 +422,8 @@ void MultiTaskItem::doRender(wxDC& dc)
dc.SetBrush(wxBrush(wxColour(233, 233, 233)));
dc.DrawRoundedRectangle(left, FromDIP(30), FromDIP(TASK_LEFT_PRO_INFO), FromDIP(10), 2);
dc.SetPen(wxPen(wxColour(0, 174, 66)));
dc.SetBrush(wxBrush(wxColour(0, 174, 66)));
dc.SetPen(wxPen(wxColour(0x9A5F21)));
dc.SetBrush(wxBrush(wxColour(0x9A5F21)));
dc.DrawRoundedRectangle(left, FromDIP(30), FromDIP(TASK_LEFT_PRO_INFO) * (static_cast<float>(m_sending_percent) / 100.0f), FromDIP(10), 2);
}
/*else {
@ -449,7 +449,7 @@ void MultiTaskItem::doRender(wxDC& dc)
left += FromDIP(TASK_LEFT_SEND_TIME);
if (m_hover) {
dc.SetPen(wxPen(wxColour(0, 174, 66)));
dc.SetPen(wxPen(wxColour(0x9A5F21)));
dc.SetBrush(*wxTRANSPARENT_BRUSH);
dc.DrawRoundedRectangle(0, 0, size.x, size.y, 3);
}

View File

@ -157,7 +157,7 @@ void ButtonsListCtrl::SetSelection(int sel)
m_selection = sel;
StateColor bg_color = StateColor(
std::pair{wxColour(0, 174, 66), (int) StateColor::Hovered},
std::pair{wxColour(0x9A5F21), (int) StateColor::Hovered},
std::pair{wxColour(0,174, 66), (int) StateColor::Normal});
m_pageButtons[m_selection]->SetBackgroundColor(bg_color);

View File

@ -865,13 +865,13 @@ private:
// non-static so its not loaded too early. If static, the translations wont load correctly.
const std::vector<NotificationData> basic_notifications = {
NotificationData{NotificationType::Mouse3dDisconnected, NotificationLevel::RegularNotificationLevel, 10, _u8L("3D Mouse disconnected.")},
NotificationData{NotificationType::PresetUpdateAvailable, NotificationLevel::ImportantNotificationLevel, BBL_NOTICE_MAX_INTERVAL, _u8L("Configuration can update now."), _u8L("Detail."),
[](wxEvtHandler* evnthndlr) {
if (evnthndlr != nullptr)
wxPostEvent(evnthndlr, PresetUpdateAvailableClickedEvent(EVT_PRESET_UPDATE_AVAILABLE_CLICKED));
return true;
}
},
// NotificationData{NotificationType::PresetUpdateAvailable, NotificationLevel::ImportantNotificationLevel, BBL_NOTICE_MAX_INTERVAL, _u8L("Configuration can update now."), _u8L("Detail."),
// [](wxEvtHandler* evnthndlr) {
// if (evnthndlr != nullptr)
// wxPostEvent(evnthndlr, PresetUpdateAvailableClickedEvent(EVT_PRESET_UPDATE_AVAILABLE_CLICKED));
// return true;
// }
// },
NotificationData{NotificationType::EmptyColorChangeCode, NotificationLevel::PrintInfoNotificationLevel, 10,
std::string(_devL("value can not be empty when you add a G-code for color change.\nPlease check the \"Color Change G-code\" in \"Printer Settings > Custom G-code\"").mb_str())},
NotificationData{NotificationType::EmptyAutoColorChange, NotificationLevel::PrintInfoNotificationLevel, 10,

View File

@ -42,7 +42,7 @@ static const char g_min_cluster_color = 1;
static const char g_max_color = (int) EnforcerBlockerType::ExtruderMax;
const StateColor ok_btn_bg(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
const StateColor ok_btn_disable_bg(std::pair<wxColour, int>(wxColour(205, 201, 201), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(205, 201, 201), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(205, 201, 201), StateColor::Normal));
@ -72,7 +72,7 @@ wxBoxSizer* ObjColorDialog::create_btn_sizer(long flags,bool exist_error)
btn_sizer->AddStretchSpacer();
StateColor ok_btn_bd(
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal)
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal)
);
StateColor ok_btn_text(
std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Normal)
@ -91,10 +91,10 @@ wxBoxSizer* ObjColorDialog::create_btn_sizer(long flags,bool exist_error)
StateColor calc_btn_bg(
std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal)
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal)
);
StateColor calc_btn_bd(
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal)
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal)
);
StateColor calc_btn_text(
std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Normal)
@ -558,8 +558,8 @@ wxBoxSizer *ObjColorPanel::create_approximate_match_btn_sizer(wxWindow *parent)
{
auto btn_sizer = new wxBoxSizer(wxHORIZONTAL);
StateColor calc_btn_bg(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
StateColor calc_btn_bd(std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor calc_btn_bd(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor calc_btn_text(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Normal));
//create btn
m_quick_approximate_match_btn = new Button(parent, _L("Color match"));
@ -584,8 +584,8 @@ wxBoxSizer *ObjColorPanel::create_add_btn_sizer(wxWindow *parent)
{
auto btn_sizer = new wxBoxSizer(wxHORIZONTAL);
StateColor calc_btn_bg(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
StateColor calc_btn_bd(std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor calc_btn_bd(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor calc_btn_text(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Normal));
// create btn
m_quick_add_btn = new Button(parent, _L("Append"));
@ -610,8 +610,8 @@ wxBoxSizer *ObjColorPanel::create_reset_btn_sizer(wxWindow *parent)
{
auto btn_sizer = new wxBoxSizer(wxHORIZONTAL);
StateColor calc_btn_bg(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
StateColor calc_btn_bd(std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor calc_btn_bd(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor calc_btn_text(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Normal));
// create btn
m_quick_reset_btn = new Button(parent, _L("Reset"));

View File

@ -133,9 +133,9 @@ Button *TipsDialog::add_button(wxWindowID btn_id, const wxString &label, bool se
Button* btn = new Button(this, label, "", 0, 0, btn_id);
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor btn_bd_green(std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
StateColor btn_bd_green(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor btn_text_green(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Normal));
@ -276,21 +276,23 @@ ParamsPanel::ParamsPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos, c
m_top_panel->SetBackgroundColor2(0xF1F1F1);
m_process_icon = new ScalableButton(m_top_panel, wxID_ANY, "process");
m_process_icon->Hide();
m_title_label = new Label(m_top_panel, _L("Process"));
m_title_label->Hide();
//int width, height;
// BBS: new layout
m_mode_region = new SwitchButton(m_top_panel);
m_mode_region->SetMaxSize({em_unit(this) * 12, -1});
m_mode_region->SetLabels(_L("Global"), _L("Objects"));
//m_mode_region->Hide();
//m_mode_region->GetSize(&width, &height);
m_tips_arrow = new ScalableButton(m_top_panel, wxID_ANY, "tips_arrow");
m_tips_arrow->Hide();
m_title_view = new Label(m_top_panel, _L("Advance"));
m_mode_view = new SwitchButton(m_top_panel, wxID_ABOUT);
m_title_view->Hide();
m_mode_view->Hide();
// BBS: new layout
//m_search_btn = new ScalableButton(m_top_panel, wxID_ANY, "search", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true);
//m_search_btn->SetToolTip(format_wxstr(_L("Search in settings [%1%]"), "Ctrl+F"));
@ -299,11 +301,11 @@ ParamsPanel::ParamsPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos, c
m_compare_btn = new ScalableButton(m_top_panel, wxID_ANY, "compare", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true);
m_compare_btn->SetToolTip(_L("Compare presets"));
m_compare_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent e) { wxGetApp().mainframe->diff_dialog.show(); }));
m_compare_btn->Hide();
m_setting_btn = new ScalableButton(m_top_panel, wxID_ANY, "table", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true);
m_setting_btn->SetToolTip(_L("View all object's settings"));
m_setting_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent &) { wxGetApp().plater()->PopupObjectTable(-1, -1, {0, 0}); });
m_setting_btn->Hide();
m_highlighter.set_timer_owner(this, 0);
this->Bind(wxEVT_TIMER, [this](wxTimerEvent &)
{
@ -422,21 +424,21 @@ void ParamsPanel::create_layout()
if (m_top_panel) {
m_mode_sizer = new wxBoxSizer( wxHORIZONTAL );
m_mode_sizer->AddSpacer(FromDIP(10));
m_mode_sizer->Add(m_process_icon, 0, wxALIGN_CENTER);
m_mode_sizer->AddSpacer(FromDIP(10));
m_mode_sizer->Add( m_title_label, 0, wxALIGN_CENTER );
m_mode_sizer->AddStretchSpacer(2);
//m_mode_sizer->Add(m_process_icon, 0, wxALIGN_CENTER);
//m_mode_sizer->AddSpacer(FromDIP(10));
//m_mode_sizer->Add( m_title_label, 0, wxALIGN_CENTER );
//m_mode_sizer->AddStretchSpacer(2);
m_mode_sizer->Add(m_mode_region, 0, wxALIGN_CENTER);
m_mode_sizer->AddStretchSpacer(1);
m_mode_sizer->Add(m_tips_arrow, 0, wxALIGN_CENTER);
m_mode_sizer->AddStretchSpacer(12);
m_mode_sizer->Add( m_title_view, 0, wxALIGN_CENTER );
m_mode_sizer->AddSpacer(FromDIP(2));
m_mode_sizer->Add(m_mode_view, 0, wxALIGN_CENTER);
m_mode_sizer->AddSpacer(FromDIP(10));
m_mode_sizer->Add(m_setting_btn, 0, wxALIGN_CENTER);
m_mode_sizer->AddSpacer(FromDIP(12));
m_mode_sizer->Add(m_compare_btn, 0, wxALIGN_CENTER);
//m_mode_sizer->Add(m_tips_arrow, 0, wxALIGN_CENTER);
//m_mode_sizer->AddStretchSpacer(12);
//m_mode_sizer->Add( m_title_view, 0, wxALIGN_CENTER );
//m_mode_sizer->AddSpacer(FromDIP(2));
//m_mode_sizer->Add(m_mode_view, 0, wxALIGN_CENTER);
//m_mode_sizer->AddSpacer(FromDIP(10));
//m_mode_sizer->Add(m_setting_btn, 0, wxALIGN_CENTER);
//m_mode_sizer->AddSpacer(FromDIP(12));
//m_mode_sizer->Add(m_compare_btn, 0, wxALIGN_CENTER);
m_mode_sizer->AddSpacer(FromDIP(16));
//m_mode_sizer->Add( m_search_btn, 0, wxALIGN_CENTER );
//m_mode_sizer->AddSpacer(16);
@ -467,6 +469,9 @@ void ParamsPanel::create_layout()
if (m_tab_print_layer) {
m_left_sizer->Add(m_tab_print_layer, 0, wxEXPAND);
}
if (m_tab_config) {
m_left_sizer->Add(m_tab_config, 0, wxEXPAND);
}
if (m_tab_filament) {
//m_filament_sizer = new wxBoxSizer( wxVERTICAL );
@ -541,6 +546,9 @@ void ParamsPanel::refresh_tabs()
case Preset::TYPE_PRINTER:
m_tab_printer = tab;
break;
case Preset::TYPE_CONFIG:
m_tab_config = tab;
break;
default:
break;
}
@ -569,7 +577,7 @@ void ParamsPanel::OnActivate()
BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": first time opened, set current tab to print");
// BBS: open/close tab
//m_current_tab = m_tab_print;
set_active_tab(m_tab_print ? m_tab_print : m_tab_filament);
set_active_tab(m_tab_print ? m_tab_print : m_tab_filament ? m_tab_filament : m_tab_config);
}
Tab* cur_tab = dynamic_cast<Tab *> (m_current_tab);
if (cur_tab)
@ -647,7 +655,8 @@ void ParamsPanel::set_active_tab(wxPanel* tab)
{m_tab_print_layer, nullptr},
{m_tab_print_plate, nullptr},
{m_tab_filament, m_staticline_filament},
{m_tab_printer, m_staticline_printer}})) {
{m_tab_printer, m_staticline_printer},
{m_tab_config, m_staticline_config} })) {
if (!t.first) continue;
t.first->Show(tab == t.first);
if (!t.second) continue;
@ -656,7 +665,16 @@ void ParamsPanel::set_active_tab(wxPanel* tab)
}
m_left_sizer->Layout();
if (auto dialog = dynamic_cast<wxDialog*>(GetParent())) {
wxString title = cur_tab->type() == Preset::TYPE_FILAMENT ? _L("Filament settings") : _L("Printer settings");
wxString title;
if (cur_tab->type() == Preset::TYPE_FILAMENT) {
title = _L("Filament settings");
}
else if (cur_tab->type() == Preset::TYPE_PRINTER) {
title = _L("Printer settings");
}
else {
title = _L("Configuration settings");
}
dialog->SetTitle(title);
}
}
@ -709,7 +727,7 @@ void ParamsPanel::msw_rescale()
((SwitchButton* )m_mode_region)->Rescale();
if (m_mode_view)
((SwitchButton* )m_mode_view)->Rescale();
for (auto tab : {m_tab_print, m_tab_print_plate, m_tab_print_object, m_tab_print_part, m_tab_print_layer, m_tab_filament, m_tab_printer}) {
for (auto tab : {m_tab_print, m_tab_print_plate, m_tab_print_object, m_tab_print_part, m_tab_print_layer, m_tab_filament, m_tab_printer, m_tab_config}) {
if (tab) dynamic_cast<Tab*>(tab)->msw_rescale();
}
//((Button*)m_export_to_file)->Rescale();
@ -831,6 +849,11 @@ void ParamsPanel::delete_subwindows()
delete m_staticline_print_part;
m_staticline_print_part = nullptr;
}
if (m_staticline_config)
{
delete m_staticline_config;
m_staticline_config = nullptr;
}
if (m_staticline_print_object)
{

View File

@ -104,6 +104,8 @@ class ParamsPanel : public wxPanel
wxStaticLine* m_staticline_printer { nullptr };
//wxBoxSizer* m_printer_sizer { nullptr };
wxPanel* m_tab_printer { nullptr };
wxStaticLine* m_staticline_config{ nullptr };
wxPanel* m_tab_config{ nullptr };
//wxStaticLine* m_staticline_buttons { nullptr };
// BBS: new layout
wxBoxSizer* m_button_sizer { nullptr };

View File

@ -369,7 +369,7 @@ void PhysicalPrinterDialog::update_preset_input() {
}
if (m_valid_type == Valid &&
(m_preset_name == "Default Setting" || m_preset_name == "Default Filament" || m_preset_name == "Default Printer")) {
(m_preset_name == "Default Setting" || m_preset_name == "Default Filament" || m_preset_name == "Default Printer" || m_preset_name == "Default Config")) {
info_line = _L("Name is unavailable.");
m_valid_type = NoValid;
}

View File

@ -451,7 +451,7 @@ PlateSettingsDialog::PlateSettingsDialog(wxWindow* parent, const wxString& title
auto sizer_button = new wxBoxSizer(wxHORIZONTAL);
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor btn_bg_white(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed), std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered),
std::pair<wxColour, int>(*wxWHITE, StateColor::Normal));
@ -656,7 +656,7 @@ PlateNameEditDialog::PlateNameEditDialog(wxWindow *parent, wxWindowID id, const
auto sizer_button = new wxBoxSizer(wxHORIZONTAL);
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor btn_bg_white(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed), std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered),
std::pair<wxColour, int>(*wxWHITE, StateColor::Normal));

View File

@ -1534,8 +1534,8 @@ Sidebar::Sidebar(Plater *parent)
p->m_panel_printer_content = new wxPanel(p->scrolled, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
p->m_panel_printer_content->SetBackgroundColour(wxColour(255, 255, 255));
StateColor panel_bd_col(std::pair<wxColour, int>(wxColour(0x00AE42), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(0x00AE42), StateColor::Hovered),
StateColor panel_bd_col(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0xEEEEEE), StateColor::Normal));
p->panel_printer_preset = new StaticBox(p->m_panel_printer_content);
@ -1679,8 +1679,8 @@ Sidebar::Sidebar(Plater *parent)
std::pair<wxColour, int>(wxColour(0xF8F8F8), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0xF8F8F8), StateColor::Normal));
StateColor btn_sync_bd_col(
std::pair<wxColour, int>(wxColour(0x00AE42), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(0x00AE42), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0xEEEEEE), StateColor::Normal));
btn_sync->SetBackgroundColor(btn_sync_bg_col);
btn_sync->SetBorderColor(btn_sync_bd_col);
@ -1774,8 +1774,8 @@ Sidebar::Sidebar(Plater *parent)
std::pair<wxColour, int>(wxColour(107, 107, 106), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(107, 107, 106), StateColor::Normal));
StateColor flush_bd_col(std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Hovered),
StateColor flush_bd_col(std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(172, 172, 172), StateColor::Normal));
p->m_flushing_volume_btn->SetBackgroundColor(flush_bg_col);
@ -2208,6 +2208,10 @@ void Sidebar::update_all_preset_comboboxes()
p->combo_printer->update();
update_printer_thumbnail();
}
//todo
/*if (p->combo_config)
p->combo_config->update();*/
}
void Sidebar::update_presets(Preset::Type preset_type)
@ -2256,6 +2260,18 @@ void Sidebar::update_presets(Preset::Type preset_type)
}
break;
}
case Preset::TYPE_CONFIG:
//wxGetApp().mainframe->m_param_panel;
//p->combo_print->update();
{
/* Tab* config_tab = wxGetApp().get_tab(Preset::TYPE_CONFIG);
if (config_tab) {
config_tab->get_combo_box()->update();
}*/
// todo
//p->combo_config->update();
break;
}
case Preset::TYPE_SLA_PRINT:
;// p->combo_sla_print->update();
break;
@ -4406,7 +4422,8 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame)
panel_sizer->Add(preview, 1, wxEXPAND | wxALL, 0);
panel_sizer->Add(assemble_view, 1, wxEXPAND | wxALL, 0);
vsizer->Add(panel_sizer, 1, wxEXPAND | wxALL, 0);
hsizer->Add(vsizer, 1, wxEXPAND | wxALL, 0);
//hsizer->Add(vsizer, 1, wxEXPAND | wxALL, 0);
hsizer->Insert(0, vsizer, 1, wxEXPAND | wxALL, 0);
q->SetSizer(hsizer);
@ -11651,6 +11668,8 @@ void Plater::_calib_pa_pattern(const Calib_Params &params)
wxGetApp().get_tab(Preset::TYPE_PRINT)->update_dirty();
wxGetApp().get_tab(Preset::TYPE_PRINT)->reload_config();
wxGetApp().get_tab(Preset::TYPE_CONFIG)->update_dirty();
wxGetApp().get_tab(Preset::TYPE_CONFIG)->reload_config();
const DynamicPrintConfig full_config = wxGetApp().preset_bundle->full_config();
PresetBundle * preset_bundle = wxGetApp().preset_bundle;
@ -11706,6 +11725,8 @@ void Plater::_calib_pa_tower(const Calib_Params &params)
wxGetApp().get_tab(Preset::TYPE_PRINT)->reload_config();
wxGetApp().get_tab(Preset::TYPE_FILAMENT)->reload_config();
wxGetApp().get_tab(Preset::TYPE_PRINTER)->reload_config();
wxGetApp().get_tab(Preset::TYPE_CONFIG)->update_dirty();
wxGetApp().get_tab(Preset::TYPE_CONFIG)->reload_config();
auto new_height = std::ceil((params.end - params.start) / params.step) + 1;
auto obj_bb = model().objects[0]->bounding_box();
@ -11820,6 +11841,8 @@ void Plater::calib_flowrate(int pass)
wxGetApp().get_tab(Preset::TYPE_PRINT)->reload_config();
wxGetApp().get_tab(Preset::TYPE_FILAMENT)->reload_config();
wxGetApp().get_tab(Preset::TYPE_PRINTER)->reload_config();
wxGetApp().get_tab(Preset::TYPE_CONFIG)->update_dirty();
wxGetApp().get_tab(Preset::TYPE_CONFIG)->reload_config();
try {
json js;
@ -11873,6 +11896,8 @@ void Plater::calib_temp(const Calib_Params &params)
wxGetApp().get_tab(Preset::TYPE_FILAMENT)->update_dirty();
wxGetApp().get_tab(Preset::TYPE_PRINT)->reload_config();
wxGetApp().get_tab(Preset::TYPE_FILAMENT)->reload_config();
wxGetApp().get_tab(Preset::TYPE_CONFIG)->update_dirty();
wxGetApp().get_tab(Preset::TYPE_CONFIG)->reload_config();
// cut upper
auto obj_bb = model().objects[0]->bounding_box();
@ -11963,6 +11988,8 @@ void Plater::calib_max_vol_speed(const Calib_Params &params)
wxGetApp().get_tab(Preset::TYPE_PRINT)->reload_config();
wxGetApp().get_tab(Preset::TYPE_FILAMENT)->reload_config();
wxGetApp().get_tab(Preset::TYPE_PRINTER)->reload_config();
wxGetApp().get_tab(Preset::TYPE_CONFIG)->update_dirty();
wxGetApp().get_tab(Preset::TYPE_CONFIG)->reload_config();
// cut upper
auto obj_bb = obj->bounding_box();
@ -12070,6 +12097,8 @@ void Plater::calib_VFA(const Calib_Params &params)
wxGetApp().get_tab(Preset::TYPE_FILAMENT)->update_dirty();
wxGetApp().get_tab(Preset::TYPE_PRINT)->update_ui_from_settings();
wxGetApp().get_tab(Preset::TYPE_FILAMENT)->update_ui_from_settings();
wxGetApp().get_tab(Preset::TYPE_CONFIG)->update_dirty();
wxGetApp().get_tab(Preset::TYPE_CONFIG)->update_ui_from_settings();
// cut upper
auto obj_bb = model().objects[0]->bounding_box();
@ -12444,10 +12473,10 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename)
m_confirm = new Button(this, _L("OK"));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_confirm->SetBackgroundColor(btn_bg_green);
m_confirm->SetBorderColor(wxColour(0, 174, 66));
m_confirm->SetBorderColor(wxColour(0x9A5F21));
m_confirm->SetTextColor(wxColour("#FFFFFE"));
m_confirm->SetSize(PROJECT_DROP_DIALOG_BUTTON_SIZE);
m_confirm->SetMinSize(PROJECT_DROP_DIALOG_BUTTON_SIZE);

View File

@ -109,6 +109,11 @@ PresetComboBox::PresetComboBox(wxWindow* parent, Preset::Type preset_type, const
m_main_bitmap_name = "printer";
break;
}
case Preset::TYPE_CONFIG: {
m_collection = &m_preset_bundle->configs;
m_main_bitmap_name = "config";
break;
}
default: break;
}
@ -852,6 +857,15 @@ PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset
}
});
}
else if (m_type == Preset::TYPE_CONFIG) {
edit_btn = new ScalableButton(parent, wxID_ANY, "config");
edit_btn->SetToolTip(_L("Click to edit preset"));
edit_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent)
{
show_edit_menu();
});
}
else {
edit_btn = new ScalableButton(parent, wxID_ANY, "cog");
edit_btn->SetToolTip(_L("Click to edit preset"));
@ -1296,7 +1310,7 @@ void PlaterPresetComboBox::update()
}
}*/
if (m_type == Preset::TYPE_PRINTER || m_type == Preset::TYPE_FILAMENT || m_type == Preset::TYPE_SLA_MATERIAL) {
if (m_type == Preset::TYPE_PRINTER || m_type == Preset::TYPE_FILAMENT || m_type == Preset::TYPE_SLA_MATERIAL || m_type == Preset::TYPE_CONFIG) {
wxBitmap* bmp = get_bmp("edit_preset_list", wide_icons, "edit_uni");
assert(bmp);
@ -1304,6 +1318,8 @@ void PlaterPresetComboBox::update()
set_label_marker(Append(separator(L("Add/Remove filaments")), *bmp), LABEL_ITEM_WIZARD_FILAMENTS);
else if (m_type == Preset::TYPE_SLA_MATERIAL)
set_label_marker(Append(separator(L("Add/Remove materials")), *bmp), LABEL_ITEM_WIZARD_MATERIALS);
else if (m_type == Preset::TYPE_CONFIG)
set_label_marker(Append(separator(L("Add/Remove filaments")), *bmp), LABEL_ITEM_WIZARD_FILAMENTS);
else {
set_label_marker(Append(separator(L("Select/Remove printers(system presets)")), *bmp), LABEL_ITEM_WIZARD_PRINTERS);
set_label_marker(Append(separator(L("Create printer")), *bmp), LABEL_ITEM_WIZARD_ADD_PRINTERS);

View File

@ -48,7 +48,7 @@ public:
LABEL_ITEM_WIZARD_FILAMENTS,
LABEL_ITEM_WIZARD_MATERIALS,
LABEL_ITEM_WIZARD_ADD_PRINTERS,
LABEL_ITEM_WIZARD_CONFIGS,
LABEL_ITEM_MAX,
};

View File

@ -67,7 +67,7 @@ PrivacyUpdateDialog::PrivacyUpdateDialog(wxWindow* parent, wxWindowID id, const
auto sizer_button = new wxBoxSizer(wxHORIZONTAL);
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor btn_bg_white(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed), std::pair<wxColour, int>(wxColour(220, 220, 220), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Normal));

View File

@ -37,7 +37,7 @@
#define AUFILE_GREY500 wxColour(158, 158, 158)
#define AUFILE_GREY300 wxColour(238, 238, 238)
#define AUFILE_GREY200 wxColour(248, 248, 248)
#define AUFILE_BRAND wxColour(0, 174, 66)
#define AUFILE_BRAND wxColour(0x9A5F21)
#define AUFILE_BRAND_TRANSPARENT wxColour(215, 232, 222)
//#define AUFILE_PICTURES_SIZE wxSize(FromDIP(300), FromDIP(300))
//#define AUFILE_PICTURES_PANEL_SIZE wxSize(FromDIP(300), FromDIP(340))

View File

@ -95,7 +95,7 @@ PublishDialog::PublishDialog(Plater *plater)
std::pair<wxColour, int>(TEXT_LIGHT_GRAY, StateColor::Normal));
m_btn_cancel->SetFont(Label::Body_12);
m_btn_cancel->SetBackgroundColor(btn_bg_green);
m_btn_cancel->SetBorderColor(wxColour(0, 174, 66));
m_btn_cancel->SetBorderColor(wxColour(0x9A5F21));
m_btn_cancel->SetTextColor(text_color);
m_btn_cancel->SetSize(wxSize(FromDIP(60), FromDIP(20)));
m_btn_cancel->SetMinSize(wxSize(FromDIP(60), FromDIP(20)));

View File

@ -35,9 +35,9 @@ RecenterDialog::RecenterDialog(wxWindow* parent, wxWindowID id, const wxString&
m_button_confirm->SetMinSize(wxSize(-1, FromDIP(24)));
m_button_confirm->SetCornerRadius(FromDIP(12));
StateColor confirm_btn_bg(std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_confirm->SetBackgroundColor(confirm_btn_bg);
m_button_confirm->SetBorderColor(wxColour(0, 174, 66));
m_button_confirm->SetBorderColor(wxColour(0x9A5F21));
m_button_confirm->SetTextColor(*wxWHITE);
m_button_close = new Button(this, _L("Close"));

View File

@ -1562,7 +1562,7 @@ InputIpAddressDialog::InputIpAddressDialog(wxWindow *parent)
comfirm_last_enter_text = _L("3. Please obtain the device SN from the printer side; it is usually found in the device information on the printer screen.");
Label *wiki = new Label(this, ::Label::Body_13, _L("View wiki"), LB_AUTO_WRAP);
wiki->SetForegroundColour(wxColour(0, 174, 66));
wiki->SetForegroundColour(wxColour(0x9A5F21));
wiki->Bind(wxEVT_ENTER_WINDOW, [this](auto &e) {SetCursor(wxCURSOR_HAND);});
wiki->Bind(wxEVT_LEAVE_WINDOW, [this](auto &e) {SetCursor(wxCURSOR_ARROW);});
wiki->Bind(wxEVT_LEFT_DOWN, [this](auto &e) {

View File

@ -202,7 +202,7 @@ void SavePresetDialog::Item::update()
}
if (m_valid_type == Valid &&
(m_preset_name == "Default Setting" || m_preset_name == "Default Filament" || m_preset_name == "Default Printer")) {
(m_preset_name == "Default Setting" || m_preset_name == "Default Filament" || m_preset_name == "Default Printer" || m_preset_name == "Default Config")) {
info_line = _L("Name is unavailable.");
m_valid_type = NoValid;
}
@ -352,9 +352,9 @@ void SavePresetDialog::build(std::vector<Preset::Type> types, std::string suffix
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(144, 144, 144), StateColor::Disabled),
std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
StateColor btn_br_green(std::pair<wxColour, int>(wxColour(144, 144, 144), StateColor::Disabled),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_confirm->SetBackgroundColor(btn_bg_green);
m_confirm->SetBorderColor(btn_br_green);
m_confirm->SetTextColor(wxColour("#FFFFFE"));

View File

@ -330,7 +330,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
// if (m_print_type != PrintFromType::FROM_SDCARD_VIEW) {e.Skip();}
//});
m_btn_bg_enable = StateColor(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_refresh = new ScalableButton(printer_staticbox, wxID_ANY, "refresh_printer", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER,true);
m_button_refresh->Bind(wxEVT_BUTTON, &SelectMachineDialog::on_refresh, this);
@ -425,7 +425,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
m_sizer_autorefill = new wxBoxSizer(wxHORIZONTAL);
m_ams_backup_tip = new Label(m_scroll_area, _L("Auto Refill"));
m_ams_backup_tip->SetFont(::Label::Head_12);
m_ams_backup_tip->SetForegroundColour(wxColour(0x00AE42));
m_ams_backup_tip->SetForegroundColour(wxColour(0x9A5F21));
m_ams_backup_tip->SetBackgroundColour(*wxWHITE);
img_ams_backup = new wxStaticBitmap(m_scroll_area, wxID_ANY, create_scaled_bitmap("automatic_material_renewal", this, 16), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)), 0);
img_ams_backup->SetBackgroundColour(*wxWHITE);
@ -699,7 +699,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
m_statictext_finish = new wxStaticText(m_panel_finish, wxID_ANY, L("send completed"), wxDefaultPosition, wxDefaultSize, 0);
m_statictext_finish->Wrap(-1);
m_statictext_finish->SetForegroundColour(wxColour(0, 174, 66));
m_statictext_finish->SetForegroundColour(wxColour(0x9A5F21));
m_sizer_finish_h->Add(m_statictext_finish, 0, wxALIGN_CENTER | wxALL, FromDIP(5));
m_sizer_finish_v->Add(m_sizer_finish_h, 1, wxALIGN_CENTER, 0);
@ -2494,7 +2494,7 @@ void SelectMachineDialog::save_option_vals(MachineObject *obj) {
void SelectMachineDialog::Enable_Auto_Refill(bool enable)
{
if (enable) {
m_ams_backup_tip->SetForegroundColour(wxColour(0x00AE42));
m_ams_backup_tip->SetForegroundColour(wxColour(0x9A5F21));
}
else {
m_ams_backup_tip->SetForegroundColour(wxColour(0x90, 0x90, 0x90));

View File

@ -883,9 +883,9 @@ EditDevNameDialog::EditDevNameDialog(Plater *plater /*= nullptr*/)
m_button_confirm = new Button(this, _L("Confirm"));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_confirm->SetBackgroundColor(btn_bg_green);
m_button_confirm->SetBorderColor(wxColour(0, 174, 66));
m_button_confirm->SetBorderColor(wxColour(0x9A5F21));
m_button_confirm->SetTextColor(wxColour(255, 255, 255));
m_button_confirm->SetSize(wxSize(FromDIP(72), FromDIP(24)));
m_button_confirm->SetMinSize(wxSize(FromDIP(72), FromDIP(24)));

View File

@ -71,7 +71,7 @@ wxDECLARE_EVENT(EVT_BIND_MACHINE, wxCommandEvent);
#define SELECT_MACHINE_GREY900 wxColour(38, 46, 48)
#define SELECT_MACHINE_GREY600 wxColour(144, 144, 144)
#define SELECT_MACHINE_GREY400 wxColour(206, 206, 206)
#define SELECT_MACHINE_BRAND wxColour(0, 174, 66)
#define SELECT_MACHINE_BRAND wxColour(0x9A5F21)
#define SELECT_MACHINE_REMIND wxColour(255, 111, 0)
#define SELECT_MACHINE_LIGHT_GREEN wxColour(219, 253, 231)

View File

@ -208,7 +208,7 @@ void SendDeviceItem::doRender(wxDC& dc)
//device state
if (state_printable <= 2) {
dc.SetTextForeground(wxColour(0, 174, 66));
dc.SetTextForeground(wxColour(0x9A5F21));
}
else {
dc.SetTextForeground(wxColour(208, 27, 27));
@ -233,7 +233,7 @@ void SendDeviceItem::doRender(wxDC& dc)
}
if (m_hover) {
dc.SetPen(wxPen(wxColour(0, 174, 66)));
dc.SetPen(wxPen(wxColour(0x9A5F21)));
dc.SetBrush(*wxTRANSPARENT_BRUSH);
dc.DrawRoundedRectangle(0, 0, size.x, size.y, 3);
}
@ -1323,7 +1323,7 @@ wxPanel* SendMultiMachinePage::create_page()
auto m_btn_bg_enable = StateColor(
std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal)
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal)
);
m_button_add = new Button(main_page, _L("Add"));
@ -1384,7 +1384,7 @@ wxPanel* SendMultiMachinePage::create_page()
// add send button
btn_bg_enable = StateColor(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_send = new Button(main_page, _L("Send"));
m_button_send->SetBackgroundColor(btn_bg_enable);

View File

@ -258,7 +258,7 @@ SendToPrinterDialog::SendToPrinterDialog(Plater *plater)
m_sizer_printer->Add(m_comboBox_printer, 1, wxEXPAND | wxRIGHT, FromDIP(5));
btn_bg_enable = StateColor(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
m_button_refresh = new Button(this, _L("Refresh"));
m_button_refresh->SetBackgroundColor(btn_bg_enable);
@ -330,7 +330,7 @@ SendToPrinterDialog::SendToPrinterDialog(Plater *plater)
m_statictext_finish = new wxStaticText(m_panel_finish, wxID_ANY, L("send completed"), wxDefaultPosition, wxDefaultSize, 0);
m_statictext_finish->Wrap(-1);
m_statictext_finish->SetForegroundColour(wxColour(0, 174, 66));
m_statictext_finish->SetForegroundColour(wxColour(0x9A5F21));
m_sizer_finish_h->Add(m_statictext_finish, 0, wxALIGN_CENTER | wxALL, FromDIP(5));
m_sizer_finish_v->Add(m_sizer_finish_h, 1, wxALIGN_CENTER, 0);

View File

@ -366,7 +366,7 @@ void Slic3r::GUI::NotificationManager::SlicingProgressNotification::render_bar(c
ImGuiWrapper& imgui = *wxGetApp().imgui();
ImColor progress_color = ImColor(0, 174, 66, (int)(255 * m_current_fade_opacity));
ImColor progress_color = ImColor(33, 95, 154, (int)(255 * m_current_fade_opacity));
ImColor bg_color = ImColor(217, 217, 217, (int)(255 * m_current_fade_opacity));
ImVec2 lineStart = pos;

View File

@ -46,13 +46,13 @@ static const wxColour STATIC_BOX_LINE_COL = wxColour(238, 238, 238);
static const wxColour BUTTON_NORMAL1_COL = wxColour(238, 238, 238);
static const wxColour BUTTON_NORMAL2_COL = wxColour(206, 206, 206);
static const wxColour BUTTON_PRESS_COL = wxColour(172, 172, 172);
static const wxColour BUTTON_HOVER_COL = wxColour(0, 174, 66);
static const wxColour BUTTON_HOVER_COL = wxColour(0x9A5F21);
static const wxColour DISCONNECT_TEXT_COL = wxColour(171, 172, 172);
static const wxColour NORMAL_TEXT_COL = wxColour(48,58,60);
static const wxColour NORMAL_FAN_TEXT_COL = wxColour(107, 107, 107);
static const wxColour WARNING_INFO_BG_COL = wxColour(255, 111, 0);
static const wxColour STAGE_TEXT_COL = wxColour(0, 174, 66);
static const wxColour STAGE_TEXT_COL = wxColour(0x9A5F21);
static const wxColour GROUP_STATIC_LINE_COL = wxColour(206, 206, 206);
@ -715,12 +715,12 @@ void PrintingTaskPanel::create_panel(wxWindow* parent)
m_staticText_progress_percent = new wxStaticText(penel_text, wxID_ANY, "0", wxDefaultPosition, wxDefaultSize, 0);
m_staticText_progress_percent->SetFont(::Label::Head_18);
m_staticText_progress_percent->SetMaxSize(wxSize(-1, FromDIP(20)));
m_staticText_progress_percent->SetForegroundColour(wxColour(0, 174, 66));
m_staticText_progress_percent->SetForegroundColour(wxColour(0x9A5F21));
m_staticText_progress_percent_icon = new wxStaticText(penel_text, wxID_ANY, "%", wxDefaultPosition, wxDefaultSize, 0);
m_staticText_progress_percent_icon->SetFont(::Label::Body_11);
m_staticText_progress_percent_icon->SetMaxSize(wxSize(-1, FromDIP(13)));
m_staticText_progress_percent_icon->SetForegroundColour(wxColour(0, 174, 66));
m_staticText_progress_percent_icon->SetForegroundColour(wxColour(0x9A5F21));
sizer_percent->Add(m_staticText_progress_percent, 0, 0, 0);
@ -1705,7 +1705,7 @@ wxBoxSizer *StatusBasePanel::create_misc_control(wxWindow *parent)
StateColor(std::make_pair(DISCONNECT_TEXT_COL, (int)StateColor::Disabled), std::make_pair(NORMAL_FAN_TEXT_COL, (int)StateColor::Normal)));
m_switch_fan->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {
m_fan_panel->SetBackgroundColor(wxColour(0, 174, 66));
m_fan_panel->SetBackgroundColor(wxColour(0x9A5F21));
});
m_switch_fan->Bind(wxEVT_LEAVE_WINDOW, [this, parent](auto& e) {

View File

@ -123,7 +123,7 @@ StepMeshDialog::StepMeshDialog(wxWindow* parent, Slic3r::Step& file, double line
wxStaticText *tips = new wxStaticText(this, wxID_ANY, _L("View Wiki for more information"));
wxFont font(10, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false);
font.SetUnderlined(true);
tips->SetForegroundColour(StateColor::darkModeColorFor(wxColour(0, 174, 66)));
tips->SetForegroundColour(StateColor::darkModeColorFor(wxColour(0x9A5F21)));
tips->SetFont(font);
tips->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent& e) {
wxLaunchDefaultBrowser("https://wiki.bambulab.com/en/software/bambu-studio/step");

View File

@ -2101,7 +2101,7 @@ void SyncAmsInfoDialog::Enable_Auto_Refill(bool enable)
{
if (!m_ams_backup_tip) { return; }
if (enable) {
m_ams_backup_tip->SetForegroundColour(wxColour(0x00AE42));
m_ams_backup_tip->SetForegroundColour(wxColour(0x9A5F21));
} else {
m_ams_backup_tip->SetForegroundColour(wxColour(0x90, 0x90, 0x90));
}

View File

@ -14,7 +14,7 @@ EVT_PAINT(TabButton::paintEvent)
END_EVENT_TABLE()
static wxColour BORDER_HOVER_COL = wxColour(0, 174, 66);
static wxColour BORDER_HOVER_COL = wxColour(0x9A5F21);
const static wxColour TAB_BUTTON_BG = wxColour("#FEFFFF");
const static wxColour TAB_BUTTON_SEL = wxColour(219, 253, 213, 255);

View File

@ -1011,7 +1011,7 @@ void UnsavedChangesDialog::build(Preset::Type type, PresetCollection *dependent_
// Add Buttons
wxFont btn_font = this->GetFont().Scaled(1.4f);
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
auto add_btn = [this, m_sizer_button, btn_font, dependent_presets, btn_bg_green](Button **btn, int &btn_id, Action close_act, const wxString &label,
bool focus, bool process_enable = true) {
@ -1019,7 +1019,7 @@ void UnsavedChangesDialog::build(Preset::Type type, PresetCollection *dependent_
if (focus) {
(*btn)->SetBackgroundColor(btn_bg_green);
(*btn)->SetBorderColor(wxColour(0, 174, 66));
(*btn)->SetBorderColor(wxColour(0x9A5F21));
(*btn)->SetTextColor(wxColour("#FFFFFE"));
} else {
(*btn)->SetTextColor(wxColour(107, 107, 107));

View File

@ -11,7 +11,7 @@
namespace Slic3r {
namespace GUI {
static const wxColour TEXT_NORMAL_CLR = wxColour(0, 174, 66);
static const wxColour TEXT_NORMAL_CLR = wxColour(0x9A5F21);
static const wxColour TEXT_FAILED_CLR = wxColour(255, 111, 0);
static const std::unordered_map<wxString, wxString> ACCESSORY_DISPLAY_STR = {
@ -224,9 +224,12 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin
m_button_upgrade_firmware = new Button(this, _L("Update firmware"));
StateColor btn_bg(std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Disabled), std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered), std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Enabled),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
StateColor btn_bd(std::pair<wxColour, int>(wxColour(144, 144, 144), StateColor::Disabled), std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Enabled));
//std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered), std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Enabled),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered), std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Enabled),
//std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
//StateColor btn_bd(std::pair<wxColour, int>(wxColour(144, 144, 144), StateColor::Disabled), std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Enabled));
StateColor btn_bd(std::pair<wxColour, int>(wxColour(144, 144, 144), StateColor::Disabled), std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Enabled));
StateColor btn_text(std::pair<wxColour, int>(wxColour(144, 144, 144), StateColor::Disabled), std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Enabled));
m_button_upgrade_firmware->SetBackgroundColor(btn_bg);
m_button_upgrade_firmware->SetBorderColor(btn_bd);

View File

@ -14,7 +14,7 @@
#include <wx/dynarray.h>
#define AMS_CONTROL_BRAND_COLOUR wxColour(0, 174, 66)
#define AMS_CONTROL_BRAND_COLOUR wxColour(0x9A5F21)
#define AMS_CONTROL_GRAY700 wxColour(107, 107, 107)
#define AMS_CONTROL_GRAY800 wxColour(50, 58, 61)
#define AMS_CONTROL_GRAY500 wxColour(172, 172, 172)

View File

@ -9,7 +9,8 @@ StateColor blank_bg(StateColor(std::make_pair(wxColour("#FFFFFF"), (int)StateCol
static const wxColour BUTTON_BG_COL = wxColour("#EEEEEE");
static const wxColour BUTTON_IN_BG_COL = wxColour("#CECECE");
static const wxColour bd = wxColour(0, 174, 66);
//static const wxColour bd = wxColour(0x9A5F21);
static const wxColour bd = wxColour(0x9A5F21);
static const wxColour text_num_color = wxColour(0x898989);
static const wxColour BUTTON_PRESS_COL = wxColour(172, 172, 172);
static const double sqrt2 = std::sqrt(2);

View File

@ -31,7 +31,8 @@ Button::Button()
background_color = StateColor(
std::make_pair(0xF0F0F1, (int) StateColor::Disabled),
std::make_pair(0x37EE7C, (int) StateColor::Hovered | StateColor::Checked),
std::make_pair(0x00AE42, (int) StateColor::Checked),
//std::make_pair(0x00AE42, (int) StateColor::Checked),
std::make_pair(0x215F9A, (int)StateColor::Checked),
std::make_pair(*wxLIGHT_GREY, (int) StateColor::Hovered),
std::make_pair(*wxWHITE, (int) StateColor::Normal));
text_color = StateColor(

View File

@ -52,7 +52,8 @@ ComboBox::ComboBox(wxWindow *parent,
GetTextCtrl()->Hide();
TextInput::SetFont(Label::Body_14);
TextInput::SetBorderColor(StateColor(std::make_pair(0xDBDBDB, (int) StateColor::Disabled),
std::make_pair(0x00AE42, (int) StateColor::Hovered),
//std::make_pair(0x00AE42, (int) StateColor::Hovered),
std::make_pair(0x215F9A, (int)StateColor::Hovered),
std::make_pair(0xDBDBDB, (int) StateColor::Normal)));
TextInput::SetBackgroundColor(StateColor(std::make_pair(0xF0F0F1, (int) StateColor::Disabled),
std::make_pair(0xEDFAF2, (int) StateColor::Focused),

View File

@ -37,7 +37,8 @@ DropDown::DropDown(std::vector<Item> &items)
, state_handler(this)
, border_color(0xDBDBDB)
, text_color(0x363636)
, selector_border_color(std::make_pair(0x00AE42, (int) StateColor::Hovered),
//, selector_border_color(std::make_pair(0x00AE42, (int) StateColor::Hovered),
, selector_border_color(std::make_pair(0x215F9A, (int)StateColor::Hovered),
std::make_pair(*wxWHITE, (int) StateColor::Normal))
, selector_background_color(std::make_pair(0xEDFAF2, (int) StateColor::Checked),
std::make_pair(*wxWHITE, (int) StateColor::Normal))

View File

@ -375,7 +375,7 @@ FanControlNew::FanControlNew(wxWindow *parent, const AirDuctData &fan_data, int
sizer_control->Add(sizer_control_top, 0, wxEXPAND, 0);
m_static_status_name = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END | wxALIGN_CENTER_HORIZONTAL);
m_static_status_name->SetForegroundColour(wxColour(0x00AE42));
m_static_status_name->SetForegroundColour(wxColour(0x9A5F21));
m_static_status_name->SetBackgroundColour(wxColour(248, 248, 248));
m_static_status_name->SetFont(Label::Head_18);
m_static_status_name->SetMinSize(wxSize(FromDIP(100), -1));

View File

@ -27,7 +27,8 @@ EVT_PAINT(FanSwitchButton::paintEvent)
END_EVENT_TABLE()
static const wxColour DEFAULT_HOVER_COL = wxColour(0, 174, 66);
//static const wxColour DEFAULT_HOVER_COL = wxColour(0x9A5F21);
static const wxColour DEFAULT_HOVER_COL = wxColour(0x9A5F21);
static const wxColour DEFAULT_PRESS_COL = wxColour(238, 238, 238);
ImageSwitchButton::ImageSwitchButton(wxWindow *parent, ScalableBitmap &img_on, ScalableBitmap &img_off, long style)

View File

@ -45,7 +45,7 @@ void ProgressBar::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, w
auto m_progress_bk = new StaticBox(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
m_progress_bk->SetBackgroundColour(wxColour(238, 130, 238));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
std::pair<wxColour, int>(wxColour(0x9A5F21), StateColor::Normal));
wxBoxSizer *m_sizer_progress= new wxBoxSizer(wxHORIZONTAL);

View File

@ -30,7 +30,8 @@ public:
double m_radius = {7};
double m_proportion = {0};
wxColour m_progress_background_colour = {233, 233, 233};
wxColour m_progress_colour = {0, 174, 66};
//wxColour m_progress_colour = {0, 174, 66};
wxColour m_progress_colour = { 33, 95, 154 };
wxColour m_progress_colour_disable = {255, 111, 0};
wxString m_disable_text;

View File

@ -28,8 +28,10 @@ SideButton::SideButton(wxWindow* parent, wxString text, wxString icon, long stly
border_color.append(0x6B6B6B, StateColor::Disabled);
border_color.append(wxColour(23, 129, 63), StateColor::Pressed);
border_color.append(wxColour(48,221,112), StateColor::Hovered);
border_color.append(0x00AE42, StateColor::Normal);
//border_color.append(wxColour(48,221,112), StateColor::Hovered);
border_color.append(0x0073BC, StateColor::Hovered);
//border_color.append(0x00AE42, StateColor::Normal);
border_color.append(0x215F9A, StateColor::Normal);
border_color.setTakeFocusedAsHovered(false);
text_color.append(0xACACAC, StateColor::Disabled);
@ -39,8 +41,12 @@ SideButton::SideButton(wxWindow* parent, wxString text, wxString icon, long stly
background_color.append(0x6B6B6B, StateColor::Disabled);
background_color.append(wxColour(23, 129, 63), StateColor::Pressed);
background_color.append(wxColour(48, 221, 112), StateColor::Hovered);
background_color.append(0x00AE42, StateColor::Normal);
/*background_color.append(wxColour(48, 221, 112), StateColor::Hovered);
background_color.append(0x00AE42, StateColor::Normal);*/
//background_color.append(wxColour(48, 221, 112), StateColor::Hovered);
background_color.append(0x0073BC, StateColor::Hovered);
//background_color.append(0x00AE42, StateColor::Normal);
background_color.append(0x215F9A, StateColor::Normal);
background_color.setTakeFocusedAsHovered(false);
SetBottomColour(wxColour("#3B4446"));

View File

@ -528,8 +528,10 @@ void SideTools::show_status(int status)
else if ((status & (int)MonitorStatus::MONITOR_CONNECTING) != 0) {
m_hyperlink->Hide();
m_connection_info->SetLabel(_L("Connecting..."));
m_connection_info->SetBackgroundColor(0x00AE42);
m_connection_info->SetBorderColor(0x00AE42);
//m_connection_info->SetBackgroundColor(0x00AE42);
m_connection_info->SetBackgroundColor(0x9A5F21);
//m_connection_info->SetBorderColor(0x00AE42);
m_connection_info->SetBorderColor(0x9A5F21);
m_connection_info->Show();
m_more_button->Hide();
m_side_error_panel->Hide();

View File

@ -14,7 +14,8 @@
#define SIDE_TOOLS_GREY900 wxColour(38, 46, 48)
#define SIDE_TOOLS_GREY600 wxColour(144, 144, 144)
#define SIDE_TOOLS_GREY400 wxColour(206, 206, 206)
#define SIDE_TOOLS_BRAND wxColour(0, 174, 66)
//#define SIDE_TOOLS_BRAND wxColour(0x9A5F21)
#define SIDE_TOOLS_BRAND wxColour(0x9A5F21)
#define SIDE_TOOLS_LIGHT_GREEN wxColour(219, 253, 231)
enum WifiSignal {

View File

@ -26,7 +26,8 @@ SpinInput::SpinInput()
{
radius = 0;
border_width = 1;
border_color = StateColor(std::make_pair(0xDBDBDB, (int) StateColor::Disabled), std::make_pair(0x00AE42, (int) StateColor::Hovered),
//border_color = StateColor(std::make_pair(0xDBDBDB, (int) StateColor::Disabled), std::make_pair(0x00AE42, (int) StateColor::Hovered),
border_color = StateColor(std::make_pair(0xDBDBDB, (int)StateColor::Disabled), std::make_pair(0x0073BC, (int)StateColor::Hovered),
std::make_pair(0xDBDBDB, (int) StateColor::Normal));
background_color = StateColor(std::make_pair(0xF0F0F1, (int) StateColor::Disabled), std::make_pair(*wxWHITE, (int) StateColor::Normal));
}

View File

@ -23,7 +23,8 @@ StepCtrlBase::StepCtrlBase(wxWindow * parent,
, font_tip(Label::Body_14)
, clr_bar(0xACACAC)
, clr_step(0xACACAC)
, clr_text(std::make_pair(0x00AE42, (int) StateColor::Checked),
//, clr_text(std::make_pair(0x00AE42, (int) StateColor::Checked),
, clr_text(std::make_pair(0x215F9A, (int)StateColor::Checked),
std::make_pair(0x6B6B6B, (int) StateColor::Normal))
, clr_tip(0x828280)
{
@ -256,7 +257,8 @@ StepIndicator::StepIndicator(wxWindow *parent, wxWindowID id, const wxPoint &pos
clr_bar = 0xE1E1E1;
clr_step = StateColor(
std::make_pair(0xACACAC, (int) StateColor::Disabled),
std::make_pair(0x00AE42, 0));
//std::make_pair(0x00AE42, 0));
std::make_pair(0x215F9A, 0));
clr_text = StateColor(
std::make_pair(0xACACAC, (int) StateColor::Disabled),
std::make_pair(0x323A3D, (int) StateColor::Checked),
@ -404,7 +406,7 @@ void FilamentStepIndicator::doRender(wxDC& dc)
}
dc.SetFont(::Label::Head_16);
dc.SetTextForeground(wxColour(0, 174, 66));
dc.SetTextForeground(wxColour(0x9A5F21));
int circleX = 20;
int circleY = 20;
wxSize sz = dc.GetTextExtent(L"Loading");

View File

@ -21,7 +21,7 @@ SwitchButton::SwitchButton(wxWindow* parent, wxWindowID id)
, m_off(this, "toggle_off", 16)
, text_color(std::pair{0xfffffe, (int) StateColor::Checked}, std::pair{0x6B6B6B, (int) StateColor::Normal})
, track_color(0xD9D9D9)
, thumb_color(std::pair{0x00AE42, (int) StateColor::Checked}, std::pair{0xD9D9D9, (int) StateColor::Normal})
, thumb_color(std::pair{0x009FF3, (int) StateColor::Checked}, std::pair{0xD9D9D9, (int) StateColor::Normal})
{
SetBackgroundColour(StaticBox::GetParentBackgroundColor(parent));
Bind(wxEVT_TOGGLEBUTTON, [this](auto& e) { update(); e.Skip(); });
@ -251,7 +251,7 @@ void SwitchBoard::doRender(wxDC &dc)
/*left*/
if (switch_left) {
is_enable ? dc.SetBrush(wxBrush(wxColour(0, 174, 66))) : dc.SetBrush(disable_color);
is_enable ? dc.SetBrush(wxBrush(wxColour(0x9A5F21))) : dc.SetBrush(disable_color);
dc.DrawRoundedRectangle(0, 0, GetSize().x / 2, GetSize().y, 8);
}
@ -269,7 +269,7 @@ void SwitchBoard::doRender(wxDC &dc)
/*right*/
if (switch_right) {
if (is_enable) {dc.SetBrush(wxBrush(wxColour(0, 174, 66)));
if (is_enable) {dc.SetBrush(wxBrush(wxColour(0x9A5F21)));
} else {dc.SetBrush(disable_color);}
dc.DrawRoundedRectangle(GetSize().x / 2, 0, GetSize().x / 2, GetSize().y, 8);
}

View File

@ -305,7 +305,8 @@ void TabCtrl::doRender(wxDC& dc)
#else
dc.SetPen(wxPen(border_color.colorForStates(states), border_width));
dc.DrawLine(0, size.y - BS2, size.x, size.y - BS2);
wxColor c(0x42AE00);
//wxColor c(0x42AE00);
wxColor c(0x9A5F21);
dc.SetPen(wxPen(c, 1));
dc.SetBrush(c);
dc.DrawRoundedRectangle(x1 - radius, size.y - BS2 - border_width * 3, x2 + radius * 2 - x1, border_width * 3, radius);

View File

@ -25,7 +25,8 @@ TempInput::TempInput()
{
hover = false;
radius = 0;
border_color = StateColor(std::make_pair(*wxWHITE, (int) StateColor::Disabled), std::make_pair(0x00AE42, (int) StateColor::Focused), std::make_pair(0x00AE42, (int) StateColor::Hovered),
//border_color = StateColor(std::make_pair(*wxWHITE, (int) StateColor::Disabled), std::make_pair(0x00AE42, (int) StateColor::Focused), std::make_pair(0x00AE42, (int) StateColor::Hovered),
border_color = StateColor(std::make_pair(*wxWHITE, (int)StateColor::Disabled), std::make_pair(0x215F9A, (int)StateColor::Focused), std::make_pair(0x215F9A, (int)StateColor::Hovered),
std::make_pair(*wxWHITE, (int) StateColor::Normal));
background_color = StateColor(std::make_pair(*wxWHITE, (int) StateColor::Disabled), std::make_pair(*wxWHITE, (int) StateColor::Normal));
SetFont(Label::Body_12);
@ -426,8 +427,10 @@ void TempInput::render(wxDC &dc)
if (warning_mode) {
border_color = wxColour(255, 111, 0);
} else {
border_color = StateColor(std::make_pair(*wxWHITE, (int) StateColor::Disabled), std::make_pair(0x00AE42, (int) StateColor::Focused),
std::make_pair(0x00AE42, (int) StateColor::Hovered), std::make_pair(*wxWHITE, (int) StateColor::Normal));
//border_color = StateColor(std::make_pair(*wxWHITE, (int) StateColor::Disabled), std::make_pair(0x00AE42, (int) StateColor::Focused),
border_color = StateColor(std::make_pair(*wxWHITE, (int)StateColor::Disabled), std::make_pair(0x215F9A, (int)StateColor::Focused),
//std::make_pair(0x00AE42, (int) StateColor::Hovered), std::make_pair(*wxWHITE, (int) StateColor::Normal));
std::make_pair(0x215F9A, (int)StateColor::Hovered), std::make_pair(*wxWHITE, (int)StateColor::Normal));
}
dc.SetBrush(*wxTRANSPARENT_BRUSH);

View File

@ -25,7 +25,8 @@ TextInput::TextInput()
{
radius = 0;
border_width = 1;
border_color = StateColor(std::make_pair(0xDBDBDB, (int) StateColor::Disabled), std::make_pair(0x00AE42, (int) StateColor::Hovered),
//border_color = StateColor(std::make_pair(0xDBDBDB, (int) StateColor::Disabled), std::make_pair(0x00AE42, (int) StateColor::Hovered),
border_color = StateColor(std::make_pair(0xDBDBDB, (int)StateColor::Disabled), std::make_pair(0x215F9A, (int)StateColor::Hovered),
std::make_pair(0xDBDBDB, (int) StateColor::Normal));
background_color = StateColor(std::make_pair(0xF0F0F1, (int) StateColor::Disabled), std::make_pair(*wxWHITE, (int) StateColor::Normal));
SetFont(Label::Body_12);

View File

@ -108,8 +108,10 @@ PA_Calibration_Dlg::PA_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plater*
m_btnStart = new Button(this, _L("OK"));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(23, 129, 63), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(48, 221, 112), StateColor::Hovered),
std::pair<wxColour, int>(0x00AE42, StateColor::Normal));
//std::pair<wxColour, int>(wxColour(48, 221, 112), StateColor::Hovered),
std::pair<wxColour, int>(0x0073BC, StateColor::Hovered),
//std::pair<wxColour, int>(0x00AE42, StateColor::Normal));
std::pair<wxColour, int>(0x215F9A, StateColor::Normal));
m_btnStart->SetBackgroundColor(btn_bg_green);
m_btnStart->SetBorderColor(wxColour(0, 150, 136));
@ -317,8 +319,10 @@ Temp_Calibration_Dlg::Temp_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plat
v_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 5);
m_btnStart = new Button(this, _L("OK"));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(23, 129, 63), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(48, 221, 112), StateColor::Hovered),
std::pair<wxColour, int>(0x00AE42, StateColor::Normal));
//std::pair<wxColour, int>(wxColour(48, 221, 112), StateColor::Hovered),
std::pair<wxColour, int>(0x0073BC, StateColor::Hovered),
//std::pair<wxColour, int>(0x00AE42, StateColor::Normal));
std::pair<wxColour, int>(0x215F9A, StateColor::Normal));
m_btnStart->SetBackgroundColor(btn_bg_green);
m_btnStart->SetBorderColor(wxColour(0, 150, 136));
@ -489,8 +493,10 @@ MaxVolumetricSpeed_Test_Dlg::MaxVolumetricSpeed_Test_Dlg(wxWindow* parent, wxWin
v_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 5);
m_btnStart = new Button(this, _L("OK"));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(23, 129, 63), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(48, 221, 112), StateColor::Hovered),
std::pair<wxColour, int>(0x00AE42, StateColor::Normal));
//std::pair<wxColour, int>(wxColour(48, 221, 112), StateColor::Hovered),
std::pair<wxColour, int>(0x0073BC, StateColor::Hovered),
//std::pair<wxColour, int>(0x00AE42, StateColor::Normal));
std::pair<wxColour, int>(0x215F9A, StateColor::Normal));
m_btnStart->SetBackgroundColor(btn_bg_green);
m_btnStart->SetBorderColor(wxColour(0, 150, 136));
@ -594,8 +600,10 @@ VFA_Test_Dlg::VFA_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater)
v_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 5);
m_btnStart = new Button(this, _L("OK"));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(23, 129, 63), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(48, 221, 112), StateColor::Hovered),
std::pair<wxColour, int>(0x00AE42, StateColor::Normal));
//std::pair<wxColour, int>(wxColour(48, 221, 112), StateColor::Hovered),
std::pair<wxColour, int>(0x0073BC, StateColor::Hovered),
//std::pair<wxColour, int>(0x00AE42, StateColor::Normal));
std::pair<wxColour, int>(0x215F9A, StateColor::Normal));
m_btnStart->SetBackgroundColor(btn_bg_green);
m_btnStart->SetBorderColor(wxColour(0, 150, 136));
@ -700,8 +708,10 @@ Retraction_Test_Dlg::Retraction_Test_Dlg(wxWindow* parent, wxWindowID id, Plater
v_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 5);
m_btnStart = new Button(this, _L("OK"));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(23, 129, 63), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(48, 221, 112), StateColor::Hovered),
std::pair<wxColour, int>(0x00AE42, StateColor::Normal));
//std::pair<wxColour, int>(wxColour(48, 221, 112), StateColor::Hovered),
std::pair<wxColour, int>(0x0073BC, StateColor::Hovered),
//std::pair<wxColour, int>(0x00AE42, StateColor::Normal));
std::pair<wxColour, int>(0x215F9A, StateColor::Normal));
m_btnStart->SetBackgroundColor(btn_bg_green);
m_btnStart->SetBorderColor(wxColour(0, 150, 136));

View File

@ -609,6 +609,7 @@ bool CalibUtils::calib_flowrate(int pass, const CalibInfo &calib_info, wxString
DynamicPrintConfig print_config = calib_info.print_prest->config;
DynamicPrintConfig filament_config = calib_info.filament_prest->config;
DynamicPrintConfig printer_config = calib_info.printer_prest->config;
DynamicConfig config_config = calib_info.config_prest->config;
/// --- scale ---
// model is created for a 0.4 nozzle, scale z with nozzle size.

View File

@ -24,6 +24,7 @@ public:
Preset* printer_prest;
Preset* filament_prest;
Preset* print_prest;
Preset* config_prest;
BedType bed_type;
std::string dev_id;
std::string select_ams;