完成配置下拉框刷新。按钮颜色修改尝试。测试更多参数样式修改

This commit is contained in:
cjw 2025-02-23 17:11:22 +08:00
parent 1886e4aa59
commit b04c4bbf55
15 changed files with 7106 additions and 1028 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 28.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 1366 768" style="enable-background:new 0 0 1366 768;" xml:space="preserve">
<style type="text/css">
.st0{fill:#808080;}
</style>
<g>
<path class="st0" d="M15.09,8.38c1.62,0.13,3.09,0.19,4.41,0.19h9.09c1.37,0,2.87-0.06,4.5-0.19v2.16c-1-0.06-2.47-0.12-4.41-0.19
h-3.28v5.72h2.62c1.69,0,3.03-0.06,4.03-0.19v2.06c-1.38-0.12-2.66-0.19-3.84-0.19h-2.81v6.84h5.06c2,0,3.38-0.06,4.12-0.19v2.06
c-1.25-0.13-2.59-0.19-4.03-0.19H16.78c-1,0-2.19,0.06-3.56,0.19v-2.06c1.19,0.13,2.34,0.19,3.47,0.19h0.47c0-0.69,0-1.78,0-3.28
c0.06-4.25,0.03-6.66-0.09-7.22c1.56,0,2.37,0.09,2.44,0.28c0,0.06-0.03,0.16-0.09,0.28c-0.13,0.31-0.22,0.66-0.28,1.03
c0,4.94-0.03,7.91-0.09,8.91h4.41V10.34H19.5c-1.88,0.06-3.34,0.13-4.41,0.19V8.38z"/>
<path class="st0" d="M46.69,6.5c0.19,0.06,0.41,0.13,0.66,0.19c1.31,0.19,1.94,0.38,1.88,0.56c0,0.06-0.06,0.16-0.19,0.28
c-0.44,0.5-0.97,1.41-1.59,2.72h6.38c2.5,0,4.12-0.06,4.88-0.19v2.16c-0.56-0.06-2.19-0.12-4.88-0.19h-7.12
c-0.69,1.19-1.69,2.69-3,4.5c-0.19,0.25-0.31,0.44-0.38,0.56v8.62c0.06,1.81,0.09,2.69,0.09,2.62h-2.25
c0.12-0.69,0.19-1.63,0.19-2.81v-6.38c-1.44,1.44-2.5,2.41-3.19,2.91c-0.63-0.69-1.22-1.19-1.78-1.5c1.75-1.06,3.41-2.34,4.97-3.84
l-0.09-1.59c0.44,0,0.87,0.03,1.31,0.09c0.62-0.69,1.31-1.75,2.06-3.19h-2.06c-0.69,0-1.63,0.03-2.81,0.09c-0.81,0-1.38,0-1.69,0
V9.97c1.44,0.13,2.94,0.19,4.5,0.19h2.91C46.03,9.03,46.44,7.81,46.69,6.5z M49.78,13.62c1.37-0.06,2.16,0,2.34,0.19
c0,0.13-0.03,0.31-0.09,0.56c-0.13,0.31-0.19,0.69-0.19,1.12v2.25h1.97c0.75,0,2-0.03,3.75-0.09v2.06h-0.38
c-1.75-0.12-2.88-0.19-3.38-0.19h-1.97v5.81h2.34c2.25-0.06,3.66-0.12,4.22-0.19v1.88c-0.19,0-0.63,0-1.31,0
c-1.25-0.06-2.22-0.09-2.91-0.09h-7.03c-1.19,0-2.28,0.06-3.28,0.19v-1.97c0.44,0.06,1.5,0.09,3.19,0.09
c1.19,0.06,2.16,0.09,2.91,0.09v-5.81c-2.38,0-4.03,0.06-4.97,0.19v-2.06c1.5,0.06,3.16,0.09,4.97,0.09
C49.97,16.06,49.91,14.69,49.78,13.62z"/>
<path class="st0" d="M65.34,6.88c1.81,0.13,2.69,0.28,2.62,0.47c0,0.06-0.03,0.19-0.09,0.38c-0.19,0.31-0.31,0.63-0.38,0.94
c-0.06,0.88-0.09,1.88-0.09,3h1.78c1.5,0,2.66-0.09,3.47-0.28c-0.19,2.06-0.38,4.69-0.56,7.88c-0.25,4.44-0.47,6.69-0.66,6.75
c-0.56,0.69-1.91,1.09-4.03,1.22c-0.25-0.81-0.59-1.66-1.03-2.53c1.81,0.38,2.91,0.22,3.28-0.47c0.12-0.25,0.31-2.97,0.56-8.16
c0.12-1.31,0.19-2.22,0.19-2.72h-3.09c0,6.81-1.56,11.69-4.69,14.62c-0.44-0.56-1.03-1.09-1.78-1.59c3.06-2,4.62-6.34,4.69-13.03
h-0.47c-1.12,0-2.16,0.06-3.09,0.19v-2.06c1.06,0.13,2.03,0.19,2.91,0.19h0.66C65.59,10.41,65.53,8.81,65.34,6.88z M73.97,10.44
c0.5,0.19,1.19,0.28,2.06,0.28h3.66c0.69,0,1.41-0.06,2.16-0.19c-0.19,0.75-0.25,1.41-0.19,1.97v11.72c0,1.06,0.06,1.72,0.19,1.97
H79.5c0.12-0.19,0.19-0.84,0.19-1.97h-3.66c0,0.94,0.06,1.72,0.19,2.34h-2.25c0.12-0.69,0.19-1.47,0.19-2.34V12.5
C74.16,12,74.09,11.31,73.97,10.44z M79.69,12.41h-3.66v10.12h3.66V12.41z"/>
<path class="st0" d="M98.34,6.5c1.5,0.13,2.44,0.25,2.81,0.38c0,0.06-0.03,0.13-0.09,0.19c-0.44,0.31-0.66,0.84-0.66,1.59
c-0.06,1.12-0.09,2.38-0.09,3.75h3.47c0.75,0,1.53-0.03,2.34-0.09c0.38-0.06,0.62-0.09,0.75-0.09v1.97
c-0.69-0.12-1.72-0.19-3.09-0.19h-3.47c0.06,2.62,0.34,5.03,0.84,7.22c0.87-1.94,1.44-3.81,1.69-5.62
c1.06,0.38,1.91,0.75,2.53,1.12c0,0.06-0.06,0.13-0.19,0.19c-0.25,0.13-0.41,0.31-0.47,0.56c-0.13,0.25-0.28,0.59-0.47,1.03
c-0.88,2-1.63,3.5-2.25,4.5c1,1.69,1.84,2.69,2.53,3c0.38-0.06,0.56-0.75,0.56-2.06c0.5,0.63,1.09,1.09,1.78,1.41
c-0.5,1.94-1.03,2.97-1.59,3.09c-1.63-0.19-3.16-1.53-4.59-4.03c-0.56,0.81-1.94,2.12-4.12,3.94c-0.31-0.5-1.06-0.94-2.25-1.31
c1.88-0.81,3.75-2.22,5.62-4.22c-0.88-2.12-1.34-5.06-1.41-8.81h-6.94c0.94,0.25,1.41,0.47,1.41,0.66l-0.19,0.09
c-0.31,0.19-0.53,0.34-0.66,0.47c-0.19,0.31-0.41,0.63-0.66,0.94h2.62c1.69,0,2.72-0.03,3.09-0.09v1.69
c-0.25-0.06-1.25-0.09-3-0.09h-3.66l-2.16,2.72h3c0-0.94-0.06-1.72-0.19-2.34c1.69,0.13,2.53,0.25,2.53,0.38l-0.09,0.09
c-0.31,0.25-0.47,0.66-0.47,1.22v0.66h0.84c1.44,0,2.31-0.06,2.62-0.19v1.88c-0.31-0.12-1.19-0.19-2.62-0.19h-0.84v1.78
c1.25-0.12,2.53-0.31,3.84-0.56c-0.25,0.31-0.41,0.91-0.47,1.78c-0.63,0-1.75,0.09-3.38,0.28v1.31c0,0.69,0.06,1.31,0.19,1.88
h-2.16c0.12-0.56,0.19-1.19,0.19-1.88v-1.22c-2.75,0.31-4.56,0.56-5.44,0.75c-0.06-0.62-0.25-1.28-0.56-1.97
c0.75,0.19,2.75,0.13,6-0.19v-1.97H88.5c-0.69,0-1.28,0.16-1.78,0.47c-0.06-0.12-0.16-0.31-0.28-0.56
c-0.06-0.19-0.28-0.62-0.66-1.31c0.87-0.06,1.91-1,3.09-2.81h-0.56c-0.19,0-0.47,0-0.84,0c-0.63-0.06-1.09-0.03-1.41,0.09v-1.69
c0.38,0.06,1.19,0.09,2.44,0.09h1.12c0.5-0.69,0.87-1.41,1.12-2.16h-3.28c-0.5,0-1.06,0.03-1.69,0.09
c-0.38,0.06-0.63,0.09-0.75,0.09v-1.97c0.69,0.13,1.5,0.19,2.44,0.19h3.94v-1.88h-1.97c-0.75,0-1.56,0.06-2.44,0.19h-0.19V8.84
c0.5,0.13,1.34,0.19,2.53,0.19h2.06V8.66c0-0.25-0.03-0.53-0.09-0.84c0-0.62-0.03-1.03-0.09-1.22c1.12,0,1.94,0.09,2.44,0.28
l-0.09,0.09c-0.25,0.44-0.38,1-0.38,1.69v0.38h1.5c1.44,0,2.31-0.03,2.62-0.09v1.78c-0.13,0-0.38-0.03-0.75-0.09
c-0.69-0.06-1.28-0.09-1.78-0.09h-1.59v1.88h5.34c-0.06-0.69-0.09-1.69-0.09-3C98.37,8.22,98.34,7.25,98.34,6.5z M103.5,7.81
l1.97,2.53l-1.97,1.12c-0.75-1.44-1.34-2.34-1.78-2.72L103.5,7.81z"/>
<path class="st0" d="M121.12,7.91v1.88c-0.19-0.06-1.12-0.09-2.81-0.09h-0.66v2.62h1.41c0.75,0,1.41-0.03,1.97-0.09l-0.09,1.41v12
c0,0.75,0.03,1.19,0.09,1.31h-1.97c0.06-0.25,0.09-0.69,0.09-1.31h-7.12c0,0.87,0.03,1.44,0.09,1.69h-1.97
c0.12-0.44,0.19-1,0.19-1.69V14.19c0-0.87-0.03-1.5-0.09-1.88c0.31,0.06,0.97,0.09,1.97,0.09h1.41V9.69h-1.41
c-1.25,0-2.13,0.06-2.62,0.19V7.81c0.62,0.19,1.5,0.28,2.62,0.28h6.09C119.87,8.09,120.81,8.03,121.12,7.91z M113.62,13.62h-1.59
v5.72v1.69h7.12v-1.97c-1.69,0.13-2.62-0.12-2.81-0.75c0-2.06,0-3.62,0-4.69h-1.41c0,3.25-0.5,5.31-1.5,6.19
c-0.19-0.25-0.63-0.47-1.31-0.66C113.31,18.28,113.81,16.44,113.62,13.62z M112.03,22.25v2.16h7.12v-2.16H112.03z M116.34,9.69
h-1.41v2.72h1.41V9.69z M117.66,13.53c0,1.19,0,2.44,0,3.75c0,0.25,0.5,0.38,1.5,0.38v-4.12H117.66z M129.47,7.81
c-0.13,0.5-0.19,1.44-0.19,2.81v3.75c0,0.13,0,0.53,0,1.22c0.06,0.94,0.09,1.53,0.09,1.78h-1.88l0.09-0.94h-3.19v7.5v0.09
c-0.06,0.69,0.22,1.09,0.84,1.22c1.31,0.06,2.28,0,2.91-0.19c0.69-0.5,1-1.47,0.94-2.91c0.75,0.81,1.47,1.34,2.16,1.59
c-0.38,1.31-0.81,2.19-1.31,2.62c-0.44,0.31-1.28,0.5-2.53,0.56c-1.5,0.06-2.75-0.03-3.75-0.28c-0.75-0.25-1.12-0.69-1.12-1.31
V14.66c0.31,0,0.84,0.03,1.59,0.09c0.69,0,1.16,0,1.41,0h2.06V9.69h-2.44c-0.38,0-0.94,0.03-1.69,0.09c-0.56,0-0.97,0-1.22,0V7.81
c0.87,0.06,1.84,0.09,2.91,0.09h1.31C127.84,7.91,128.84,7.88,129.47,7.81z"/>
<path class="st0" d="M135.47,7.16c0.38,0.13,1.16,0.19,2.34,0.19h12.75c1.37,0,2.19-0.06,2.44-0.19c-0.13,0.5-0.19,1.28-0.19,2.34
v0.47c0,1.25,0.06,2.06,0.19,2.44c-0.38-0.12-1.16-0.19-2.34-0.19h-5.53l-0.19,1.41H150c1.56,0,2.75-0.09,3.56-0.28
c0.19,0,0.31,0,0.38,0v1.78h-0.19c-0.81-0.12-2.03-0.19-3.66-0.19h-5.25l-0.19,1.41h4.22c1.12,0,1.81-0.06,2.06-0.19
c-0.13,0.63-0.19,1.41-0.19,2.34v7.59h0.94c1.12,0,2.03-0.03,2.72-0.09h0.19v1.69h-0.09c-0.75-0.13-2-0.19-3.75-0.19h-13.31
c-1.63,0-2.94,0.06-3.94,0.19h-0.19V26h0.09c0.62,0.06,1.56,0.09,2.81,0.09h1.12v-7.78c0-1.12-0.06-1.84-0.19-2.16
c0.5,0.13,1.25,0.19,2.25,0.19h3.47l0.19-1.41h-5.25c-1.19,0-2.28,0.06-3.28,0.19c-0.19,0-0.31,0-0.38,0v-1.78h0.19
c1,0.19,2.19,0.28,3.56,0.28h5.34l0.19-1.41h-5.34c-1.38,0-2.25,0.06-2.62,0.19c0-0.06,0-0.25,0-0.56
c0.06-0.69,0.09-1.31,0.09-1.88V9.59C135.56,8.22,135.53,7.41,135.47,7.16z M137.25,8.75v1.97h3.56V8.75H137.25z M139.03,17.56
v1.22h10.03v-1.22H139.03z M139.03,19.91v1.31h10.03v-1.31H139.03z M139.03,22.34v1.31h10.03v-1.31H139.03z M139.03,24.78v1.31
h10.03v-1.31H139.03z M142.31,8.75v1.97h3.56V8.75H142.31z M147.47,8.75v1.97h3.56V8.75H147.47z"/>
<path class="st0" d="M160.59,23.47V26h-2.53v-2.53H160.59z"/>
<path class="st0" d="M167.25,23.47V26h-2.53v-2.53H167.25z"/>
<path class="st0" d="M173.91,23.47V26h-2.53v-2.53H173.91z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 28.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 1366 768" style="enable-background:new 0 0 1366 768;" xml:space="preserve">
<style type="text/css">
.st0{enable-background:new ;}
</style>
<g class="st0">
<path d="M30.12,40.75c10.75,0,19.06-0.06,24.94-0.19c-0.75,1.88-1.5,4.19-2.25,6.94c-6.88,0-11.75,0-14.62,0
c-3.5-0.13-6.81-0.25-9.94-0.38c-4.88-0.13-8.38-1.69-10.5-4.69c-2.75,2.62-4.69,4.69-5.81,6.19L9.12,40c1.5-1.25,3-2.44,4.5-3.56
V25.75H9.31v-7.31h11.81v17.62C22.87,39.06,25.87,40.63,30.12,40.75z M16.62,3.25c2.25,3.38,4.31,6.56,6.19,9.56l-6.56,3.56
c-0.38-0.62-0.88-1.5-1.5-2.62c-0.88-1.5-2.31-3.87-4.31-7.12L16.62,3.25z M31.62,20.31h4.5V16h7.31v4.31h9.19v6.38h-9.19v3.38
h10.69v6.56H43.44v3h-7.31v-3h-13.5v-6.56h13.5v-3.38H23.56v-6.38c1-1.62,2.06-3.56,3.19-5.81H23V8.12h6.75
c1-1.75,1.75-3.38,2.25-4.88L40.06,4c-0.38,0.63-0.81,1.5-1.31,2.62c-0.38,0.63-0.63,1.12-0.75,1.5h15.75v6.38H34.62
c-0.63,1-1.38,2.44-2.25,4.31C32,19.56,31.75,20.06,31.62,20.31z"/>
<path d="M64.62,16.75c0.75,0,1.5,0,2.25,0c0.25-0.5,0.56-1.19,0.94-2.06c0.5-1,0.87-1.75,1.12-2.25l5.44,2.62h9.56v-2.44H74V7h9.94
V3.44h7.5V7H101v5.62h-9.56v2.44h10.5v5.62l-1.31,6.94l-6.38-0.94l1.31-5.81h-18c2.25,0.63,4.75,1.31,7.5,2.06l-1.69,4.12
c-0.75-0.25-1.81-0.62-3.19-1.12c-2.38-0.87-4.31-1.56-5.81-2.06l1.5-3h-2.81v-2.44c-1.38,2.88-3.44,6.63-6.19,11.25
c1.5-0.25,3.06-0.44,4.69-0.56c0,0.38-0.06,0.81-0.19,1.31c-0.13,2.25-0.19,3.88-0.19,4.88c-2.75,0.13-5.44,0.38-8.06,0.75
c-0.75,0.13-1.69,0.25-2.81,0.38c0.38,0,0.12,0.06-0.75,0.19L57.69,31c1.5-1,2.75-2.25,3.75-3.75c0.75-1.25,1.5-2.62,2.25-4.12
c-2,0-3.63,0.19-4.88,0.56l-1.88-6.19c1.25-1,2.25-2.5,3-4.5c1.37-2.75,2.62-6,3.75-9.75l6.94,2.06
C68.5,9.81,66.5,13.63,64.62,16.75z M74,25.56c1.25,0.38,3,0.94,5.25,1.69c1.75,0.63,3.06,1.06,3.94,1.31l-1.5,3.38h3.56
c0.25-2.37,0.38-5.69,0.38-9.94h7.5c-0.25,4.75-0.44,8.06-0.56,9.94h9.75v5.81H91.44v0.19c4.62,1.75,8.31,3.25,11.06,4.5l-3.56,6
c-1.25-0.63-3-1.5-5.25-2.62c-2.5-1.12-4.44-2.06-5.81-2.81c-2.38,2.25-6.88,4.12-13.5,5.62c-0.5-1.12-1.25-2.56-2.25-4.31
c-1,0.12-2.44,0.31-4.31,0.56c-4.38,0.62-7.63,1.12-9.75,1.5l-0.94-6.75c4.5-0.38,9.5-0.94,15-1.69c0,1.5,0,2.94,0,4.31
c6-1,9.75-2.5,11.25-4.5H72.69v-5.81h7.5c-2.75-1-5.44-1.94-8.06-2.81L74,25.56z"/>
<path d="M124.62,6.62c8.37-0.38,16.25-0.87,23.62-1.5l1.5,7.12c-3,0.13-5.88,0.31-8.62,0.56v9.56h9.56v7.31h-9.56v18.56h-7.69
V29.69h-9c-0.13,1.88-0.19,3.63-0.19,5.25c-4.88,0.38-8.88,0.75-12,1.12c-1.38,0.25-2.75,0.5-4.12,0.75l-2.06-6.38
c1.5-0.75,2.75-1.88,3.75-3.38c0.38-0.5,0.94-1.25,1.69-2.25c0.38-0.62,0.69-1.12,0.94-1.5c-2.13,0.13-3.94,0.31-5.44,0.56l-2.06-6
c1-0.62,1.94-1.75,2.81-3.38c2.25-3.87,4.12-7.62,5.62-11.25l7.5,2.25c-0.38,0.63-0.94,1.5-1.69,2.62c-1.63,2.75-3.5,5.75-5.62,9
c0.87,0,1.88,0,3,0c1.12-1.75,2.12-3.44,3-5.06l6.75,3.19c-2.5,3.63-5.94,8.38-10.31,14.25c0.75,0,2-0.12,3.75-0.38
c2.12-0.25,3.62-0.44,4.5-0.56v-6.19h9.19v-9c-0.88,0.13-2.13,0.19-3.75,0.19c-1.63,0.13-2.88,0.19-3.75,0.19
c-0.13-0.75-0.31-1.94-0.56-3.56C125,8.56,124.75,7.38,124.62,6.62z M106.25,46.56l-1.12-6.75c1.37-0.12,4.19-0.44,8.44-0.94
c5.12-0.5,9-0.94,11.62-1.31c-0.13,2.38-0.19,4.56-0.19,6.56c-2.13,0.25-5.88,0.75-11.25,1.5C110.25,46,107.75,46.31,106.25,46.56z
"/>
<path d="M189.88,4.19c0.75,2.25,1.5,4.56,2.25,6.94h6v6H191v3.56h6.56v6H191v3.75h6.56v6H191v3.75h7.5v5.62h-20.06v2.62h-6.94
V25.75c-0.25,0.25-0.56,0.69-0.94,1.31c-0.5,0.5-0.88,0.94-1.12,1.31c-0.13-0.62-0.31-1.56-0.56-2.81
c-0.5-1.62-0.81-2.81-0.94-3.56c-1.63,2.62-3.31,5.13-5.06,7.5c2.12-0.25,4.19-0.44,6.19-0.56c-0.25,2.5-0.38,4.5-0.38,6
c-6.75,0.75-11,1.31-12.75,1.69l-2.06-5.81c1.75-1.25,2.94-2.44,3.56-3.56c0.25-0.5,0.69-1.19,1.31-2.06
c0.5-0.87,0.87-1.5,1.12-1.88c-1.63,0.13-3.25,0.31-4.88,0.56l-1.88-6.19c0.75-0.75,1.56-1.81,2.44-3.19
c1.88-3.12,3.75-6.87,5.62-11.25l6.94,2.25c-2.62,4.25-5.13,8.13-7.5,11.62c1,0,1.94-0.06,2.81-0.19c0.87-1.37,1.69-2.81,2.44-4.31
l4.31,2.44c1.75-4,3-7.94,3.75-11.81l7.69,1.12c-0.13,0.25-0.25,0.69-0.38,1.31c-0.75,2.38-1.38,4.19-1.88,5.44h5.44
c0-0.12-0.06-0.44-0.19-0.94c-0.38-1.25-1-3-1.88-5.25L189.88,4.19z M154.25,46.19l-0.94-6.75c2.75-0.25,6.81-0.75,12.19-1.5
c1.75-0.25,3.06-0.44,3.94-0.56c-0.13,2.62-0.13,4.81,0,6.56C165.19,44.44,160.12,45.19,154.25,46.19z M178.44,17.12v3.56h5.44
v-3.56H178.44z M178.44,26.69v3.75h5.44v-3.75H178.44z M178.44,36.44v3.75h5.44v-3.75H178.44z"/>
<path d="M242.56,31.56V37c-2.38,1.63-4.69,3.13-6.94,4.5c4,0.5,7.75,0.88,11.25,1.12c-0.88,1.62-1.69,3.44-2.44,5.44
c-9-1-15.25-2-18.75-3c-4.88,1.5-11.88,2.69-21,3.56c-1-2.25-1.88-4.12-2.62-5.62c4.25,0,9-0.38,14.25-1.12
c-0.75-0.5-1.88-1.25-3.38-2.25c-0.63-0.38-1.12-0.69-1.5-0.94c-1.5,1.12-3.38,2.31-5.62,3.56c-1.12-1.75-2.5-3.5-4.12-5.25
c5.25-2.5,8.75-4.88,10.5-7.12h-5.25V17.69c-0.38,0.25-0.94,0.63-1.69,1.12c-0.75,0.63-1.31,1.06-1.69,1.31
c-0.63-2.37-1.44-4.75-2.44-7.12c4.37-2.62,7.69-5.94,9.94-9.94l8.25,0.56c-0.13,0.25-0.31,0.56-0.56,0.94
c-0.5,0.75-0.88,1.25-1.12,1.5h27.75v5.81h-32.25c-0.5,0.5-1,1-1.5,1.5h31.12v16.5h-21.94c-0.13,0.13-0.38,0.38-0.75,0.75
c-0.25,0.38-0.5,0.69-0.75,0.94H242.56z M235.44,18.06h-21.19v1.88h21.19V18.06z M214.25,25.19h21.19v-1.88h-21.19V25.19z
M232.62,36.62h-13.69c2.25,1.25,4.5,2.19,6.75,2.81C228.06,38.69,230.38,37.75,232.62,36.62z"/>
<path d="M255.31,3.62h7.31v7.69h5.62v6.94h-5.62v4.5l1.88-1.88c1.12,1,2.62,2.31,4.5,3.94c0.87,1,1.56,1.69,2.06,2.06l-5.25,5.44
c-0.38-0.62-1.06-1.44-2.06-2.44c-0.5-0.62-0.88-1.06-1.12-1.31v19.88h-7.31V32.5c-1.25,2.75-2.81,5.38-4.69,7.88
c-0.5-4.75-1-8.37-1.5-10.88c2.37-3,4.44-6.75,6.19-11.25h-5.44v-6.94h5.44V3.62z M270.12,11.12h12.75v-7.5h7.5v7.5h4.12v7.31
h-4.12v22.31c0.12,4.88-2.19,7.31-6.94,7.31c-0.88,0-2.38,0.06-4.5,0.19c-2.13,0-3.56,0-4.31,0c-0.13-1-0.38-2.75-0.75-5.25
c-0.13-0.75-0.25-1.31-0.38-1.69c1.37,0.13,3.44,0.19,6.19,0.19c2.25,0.13,3.31-0.94,3.19-3.19V26.69
c-3.13,5.5-7.75,10.94-13.88,16.31c-1.88-2.25-3.63-4.19-5.25-5.81c7.12-5.5,12.44-11.75,15.94-18.75h-9.56V11.12z"/>
<path d="M298.25,11.31h5.25v-7.5h7.69v7.5h4.88v7.12h-4.88v5.62c0.75-0.12,1.75-0.25,3-0.38c1-0.25,1.69-0.38,2.06-0.38
c0,1,0.06,2.44,0.19,4.31c0,1.38,0,2.31,0,2.81c-1.5,0.38-3.25,0.75-5.25,1.12v9.94c0.12,4-1.75,6.12-5.62,6.38
c-1.12,0.12-3.31,0.19-6.56,0.19c-0.13-1-0.44-2.56-0.94-4.69c-0.25-1-0.44-1.75-0.56-2.25c0.38,0,0.94,0,1.69,0
c0.87,0.13,1.56,0.19,2.06,0.19c1.62,0.13,2.37-0.75,2.25-2.62v-5.62c-2,0.38-3.88,0.75-5.62,1.12l-0.94-7.88
c1-0.12,2.75-0.38,5.25-0.75c0.62-0.12,1.06-0.19,1.31-0.19v-6.94h-5.25V11.31z M317.38,6.25h25.12v7.31h-6.94v26.81
c0.25,4.88-2.38,7.37-7.88,7.5c-0.63,0-1.69,0-3.19,0c-2,0.12-3.56,0.19-4.69,0.19c-0.38-2.5-0.88-4.88-1.5-7.12
c2.25,0.13,4.37,0.19,6.38,0.19c2.12,0.13,3.12-0.94,3-3.19V13.56h-10.31V6.25z"/>
<path d="M367.06,10.38c-2.88,0.75-6.94,1.5-12.19,2.25v6.94h10.31v6.94h-10.31v8.44c1.12-0.25,3.06-0.69,5.81-1.31
c2.12-0.38,3.69-0.69,4.69-0.94c-0.13,2.75-0.13,5.25,0,7.5c-2.75,0.5-6.19,1.31-10.31,2.44c-1.25,0.25-2.69,0.69-4.31,1.31
l-0.19,0.19l-4.69-5.44c1.12-1.12,1.69-2.69,1.69-4.69V6.44c5.75-0.5,11.12-1.5,16.12-3L367.06,10.38z M367.62,6.25H389v28.88
c0.25,4.63-1.88,6.88-6.38,6.75c-0.63,0-1.81,0.06-3.56,0.19c-1.25,0-2.06,0-2.44,0c-0.13-1-0.38-2.62-0.75-4.88
c-0.25-1.25-0.44-2.19-0.56-2.81c0.38,0,1.12,0.06,2.25,0.19c1.12,0,1.81,0,2.06,0c1.37,0.13,2-0.56,1.88-2.06V13.19h-6.38v35.25
h-7.5V6.25z"/>
<path d="M413.94,48.44V29.69c-0.25,0-0.56,0-0.94,0c-0.38-1.62-1.12-3.69-2.25-6.19c0.25,0,0.62-0.06,1.12-0.19
c3.5-0.75,5.94-1.44,7.31-2.06c-1-1-1.88-2.12-2.62-3.38c-0.38,0.25-0.88,0.75-1.5,1.5c-0.38,0.38-0.63,0.63-0.75,0.75
c-0.25-0.5-0.69-1.25-1.31-2.25c-0.5-0.87-0.94-1.56-1.31-2.06v6.94h-3.75v3.94h3.94v6.19h-3.94v5.44
c1.37-0.25,2.81-0.44,4.31-0.56c0,2.88,0,5.13,0,6.75c-6.5,0.87-12.5,1.88-18,3l-1.12-7.31c0.12,0,0.31,0,0.56,0
c0.38-0.12,0.69-0.19,0.94-0.19V24.62h5.06v14.81c0.25,0,0.62-0.06,1.12-0.19c0.38,0,0.62,0,0.75,0v-16.5H395V4.94h16.69v8.62
c3.25-3.25,5.56-6.62,6.94-10.12l7.5,0.38c-0.13,0.38-0.44,1-0.94,1.88c-0.38,0.75-0.69,1.38-0.94,1.88H437v6.38
c-1.63,2.75-3.44,5.19-5.44,7.31c2,0.5,4.5,0.94,7.5,1.31c-1,2.5-1.69,4.69-2.06,6.56c-4.75-0.87-8.62-2.06-11.62-3.56
c-3,1.63-6.81,2.94-11.44,3.94h22.69v18.94h-7.12V46h-8.62v2.44H413.94z M401.38,16.38h3.94v-5.25h-3.94V16.38z M429.31,13.56
h-8.62c1.37,1.88,2.87,3.44,4.5,4.69C426.81,17,428.19,15.44,429.31,13.56z M420.88,35.88V40h8.62v-4.12H420.88z"/>
<path d="M453.12,48.25h-7.31V34.19c-0.75,0.75-1.63,1.5-2.62,2.25c-0.38-1.88-1.12-4.31-2.25-7.31c3.75-3.25,7.5-7.31,11.25-12.19
l5.25,3.19c8.37-2.5,13.75-5.12,16.12-7.88h-15.75V5.5h24.75v6.75c-1.38,2-3,3.75-4.88,5.25c1.25,0.63,3.06,1.5,5.44,2.62
c1.88,1,3.25,1.69,4.12,2.06l-4.12,5.44h1.31v6.75h-9.75v6.19h11.62v6.38h-31.5v-6.38H467v-6.19h-9.94v-6.75h25.31
c-3.75-2.25-7.25-4.19-10.5-5.81c-3.5,2-8.06,3.94-13.69,5.81c-0.25-0.5-0.56-1.19-0.94-2.06c-0.5-0.87-0.88-1.5-1.12-1.88
c-0.88,1.12-1.88,2.25-3,3.38V48.25z M452,3.81l5.62,4.69c-4,4.25-8.81,8.38-14.44,12.38c-0.63-2.62-1.31-5.25-2.06-7.88
C445.5,10,449.12,6.94,452,3.81z"/>
<path d="M495.12,3.62h6.75c0,2.25-0.06,4.63-0.19,7.12h4.5v6.56h-4.5c0,0.63-0.06,1.56-0.19,2.81c0,1,0,1.75,0,2.25h5.44v6.75
h-5.62c-0.13,0.38-0.19,0.81-0.19,1.31c2.25,1.75,4.69,3.81,7.31,6.19l-4.5,5.81c-1.12-1.37-2.56-2.94-4.31-4.69
c-0.88,3.25-2.94,6.94-6.19,11.06c-1.5-2-3.06-4-4.69-6c3.5-3.75,5.37-8.31,5.62-13.69h-5.06v-6.75h5.44c0-0.5,0-1.25,0-2.25
c0.12-1.25,0.19-2.19,0.19-2.81h-4.5v-6.56h4.5C494.94,8.25,495,5.88,495.12,3.62z M507.88,33.25V5.12h24.75v27.75h-6.75v-21
h-11.44v21c1.37-2.37,2.12-5.94,2.25-10.69c0-1,0.06-2.44,0.19-4.31c0-1.62,0-2.87,0-3.75h6.75c0,0.75,0,2,0,3.75
c-0.13,1.75-0.19,3.06-0.19,3.94c-0.13,3.88-0.5,6.75-1.12,8.62h2.81v9.19c0,1.5,0.44,2.19,1.31,2.06c1,0.13,1.56-0.56,1.69-2.06
c0.38-2,0.56-3.75,0.56-5.25c3,1.12,5.06,1.88,6.19,2.25c-0.38,1.88-0.75,4-1.12,6.38c-0.75,3.25-2.62,4.81-5.62,4.69h-3.75
c-3.63,0-5.44-2-5.44-6V38.5c-2.5,3.5-6.13,6.94-10.88,10.31c-0.38-0.38-0.88-1.06-1.5-2.06c-1.38-1.75-2.38-3-3-3.75
c5.62-3.38,9.19-6.62,10.69-9.75H507.88z"/>
<path d="M570.88,36.44h-6.38c-0.75,3-1.44,5.19-2.06,6.56c-1.63,3.38-3.81,5.06-6.56,5.06c-3.25,0.12-5.88-1.63-7.88-5.25
c-0.38-0.75-0.75-1.56-1.12-2.44c-1.88,1.38-3.94,2.56-6.19,3.56c-0.38-0.5-0.88-1.31-1.5-2.44c-0.88-1.62-1.63-2.94-2.25-3.94
c0.5-0.25,1.25-0.69,2.25-1.31c2.62-1.37,4.44-2.44,5.44-3.19c-0.5-3-0.88-6.69-1.12-11.06l-5.44,0.56l-0.75-6.75l5.81-0.56
c-0.13-4-0.31-7.94-0.56-11.81h7.31c0,2.13,0.12,5.62,0.38,10.5c-0.25-3.62-0.25-3.44,0,0.56l11.44-1.12l0.75,6.56l-12,1.31
c0.25,2.62,0.44,4.88,0.56,6.75c1.88-1.88,3.75-4.06,5.62-6.56l6,3.75c-3.25,4.25-6.56,7.81-9.94,10.69c0.38,1.12,0.81,2.13,1.31,3
c0.5,1,1,1.5,1.5,1.5c0.62,0,1.12-0.62,1.5-1.88c0.5-1.75,0.94-3.62,1.31-5.62c1.62,0.75,3.56,1.63,5.81,2.62V9.25h6.75V36.44z
M554.56,4.19c3,1.88,5.25,3.31,6.75,4.31l-4.5,5.06c-0.5-0.38-1.19-0.94-2.06-1.69c-1.63-1.25-3-2.37-4.12-3.38L554.56,4.19z
M573.88,3.81h7.31v37.12c0.25,4.5-2.06,6.69-6.94,6.56c-1,0.12-2.31,0.19-3.94,0.19c-1.5,0.12-2.75,0.19-3.75,0.19
c-0.38-2.38-0.94-4.81-1.69-7.31c2.37,0.13,4.37,0.19,6,0.19c2.12,0.13,3.12-0.69,3-2.44V3.81z"/>
<path d="M592.81,24.44h2.62v-7.12h5.62v7.12h4.12v6.19h-4.12V34c0.5-0.12,1.31-0.19,2.44-0.19c1-0.12,1.75-0.19,2.25-0.19
c-0.13,2.25-0.19,4.44-0.19,6.56c-0.5,0-1.25,0.06-2.25,0.19c-1,0-1.75,0.06-2.25,0.19v7.5h-7.12v-6.75c-1,0.13-2.5,0.25-4.5,0.38
c-1.63,0.25-2.88,0.38-3.75,0.38l-0.38-6.94c3-0.25,5.87-0.44,8.62-0.56v-3.94h-8.06v-6.19c1-3,1.94-6.12,2.81-9.38h-3.19V8.69
h4.69c0.38-1.62,0.75-3.38,1.12-5.25l7.31,0.38c-0.13,0.63-0.38,1.63-0.75,3c-0.25,0.88-0.44,1.5-0.56,1.88h7.88v6.38h-9.75
c-0.25,1.12-0.75,2.81-1.5,5.06C593.44,22.13,593.06,23.56,592.81,24.44z M620.19,18.25c0,0.5-0.06,1.31-0.19,2.44
c-0.13,2.38-0.25,4-0.38,4.88c1.12,6.75,4.94,12.19,11.44,16.31c-1,1-2.31,2.75-3.94,5.25c-0.25,0.38-0.44,0.69-0.56,0.94
c-4.88-3.38-8.13-7.19-9.75-11.44c-1.12,3.88-4.31,7.94-9.56,12.19c-0.5-0.63-1.31-1.69-2.44-3.19s-1.94-2.5-2.44-3
c6.12-3.75,9.56-9.06,10.31-15.94c0-0.38,0.06-0.94,0.19-1.69c0.25-2.75,0.38-5,0.38-6.75H620.19z M629.94,9.25v6.56L627.31,25
l-6.38-1.69l2.44-7.31h-10.31c-0.13,0.25-0.31,0.69-0.56,1.31c-1.38,3.38-2.5,6-3.38,7.88c-2-1.37-4.12-2.62-6.38-3.75
c3.12-5.25,5.31-11.25,6.56-18l7.31,0.94c-0.13,0.5-0.38,1.25-0.75,2.25c-0.25,1.25-0.5,2.13-0.75,2.62H629.94z"/>
<path d="M645.12,48.25h-7.31V28.19c-0.25,0.38-0.75,1-1.5,1.88c-0.88,1.38-1.56,2.38-2.06,3c-0.13-0.75-0.25-1.94-0.38-3.56
c-0.38-3.25-0.63-5.62-0.75-7.12c3.12-5,5.81-11.25,8.06-18.75l7.31,2.06c-1.12,3-2.25,6-3.38,9V48.25z M645.5,24.25
c2.12-4.5,3.87-10.5,5.25-18l7.31,1.5c-0.38,1.88-0.75,3.63-1.12,5.25h3.56V3.62h7.69V13h9.38v7.31h-9.38V28h10.69v7.31h-10.69
v13.12h-7.69V35.31h-14.06V28h14.06v-7.69h-5.44c-0.75,2.25-1.5,4.38-2.25,6.38c-0.63-0.25-1.63-0.56-3-0.94
C647.81,25.13,646.37,24.62,645.5,24.25z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 28.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 1366 768" style="enable-background:new 0 0 1366 768;" xml:space="preserve">
<style type="text/css">
.st0{fill:#808080;}
</style>
<g>
<path class="st0" d="M14.76,8.21l-5.44,14.7h-1.9L2.08,8.21H4l4.07,11.66c0.13,0.38,0.23,0.81,0.3,1.3h0.04
c0.05-0.41,0.17-0.85,0.34-1.32L12.9,8.21H14.76z"/>
<path class="st0" d="M28.12,22.91h-1.68v-12.7c-0.13,0.13-0.32,0.28-0.57,0.45c-0.25,0.17-0.53,0.33-0.84,0.5s-0.64,0.32-0.98,0.46
s-0.68,0.26-1.01,0.34v-1.7c0.37-0.1,0.76-0.24,1.17-0.42c0.41-0.17,0.82-0.37,1.22-0.58c0.4-0.22,0.78-0.44,1.13-0.68
c0.36-0.24,0.66-0.47,0.92-0.69h0.64V22.91z"/>
<path class="st0" d="M34.3,23.14c-0.31,0-0.58-0.11-0.81-0.34s-0.33-0.5-0.33-0.81s0.11-0.59,0.33-0.82
c0.22-0.23,0.49-0.34,0.81-0.34c0.32,0,0.59,0.11,0.82,0.34c0.23,0.23,0.34,0.5,0.34,0.82s-0.11,0.58-0.34,0.81
S34.62,23.14,34.3,23.14z"/>
<path class="st0" d="M38.33,22.67v-1.62c0.82,0.46,1.69,0.7,2.6,0.7c1.33,0,2.37-0.54,3.11-1.61c0.74-1.07,1.11-2.6,1.11-4.57
c-0.01,0.01-0.03,0.01-0.04,0c-0.63,1.26-1.72,1.9-3.28,1.9c-1.26,0-2.29-0.43-3.1-1.28s-1.21-1.96-1.21-3.3
c0-1.44,0.44-2.61,1.33-3.53c0.88-0.92,2.02-1.38,3.4-1.38c1.45,0,2.58,0.57,3.39,1.72c0.81,1.15,1.21,2.81,1.21,5
c0,2.71-0.53,4.81-1.58,6.28s-2.52,2.2-4.39,2.2C39.91,23.16,39.06,23,38.33,22.67z M42.11,9.39c-0.81,0-1.49,0.31-2.04,0.92
c-0.54,0.61-0.82,1.39-0.82,2.33c0,1.03,0.27,1.84,0.8,2.44s1.25,0.89,2.16,0.89c0.79,0,1.46-0.27,2.02-0.81
c0.55-0.54,0.83-1.2,0.83-1.98c0-1.11-0.27-2.02-0.82-2.73S42.98,9.39,42.11,9.39z"/>
<path class="st0" d="M50.18,23.14c-0.31,0-0.58-0.11-0.81-0.34s-0.33-0.5-0.33-0.81s0.11-0.59,0.33-0.82
c0.22-0.23,0.49-0.34,0.81-0.34c0.32,0,0.59,0.11,0.82,0.34c0.23,0.23,0.34,0.5,0.34,0.82S51.22,22.57,51,22.8
S50.5,23.14,50.18,23.14z"/>
<path class="st0" d="M62.8,8.74l-5.82,14.17h-1.74l5.51-13.19h-7.41V8.21h9.47V8.74z"/>
<path class="st0" d="M66.05,23.14c-0.31,0-0.58-0.11-0.81-0.34s-0.33-0.5-0.33-0.81s0.11-0.59,0.33-0.82
c0.22-0.23,0.49-0.34,0.81-0.34c0.32,0,0.59,0.11,0.82,0.34c0.23,0.23,0.34,0.5,0.34,0.82s-0.11,0.58-0.34,0.81
S66.37,23.14,66.05,23.14z"/>
<path class="st0" d="M70,22.55v-1.78c1,0.65,2.03,0.97,3.07,0.97s1.88-0.29,2.51-0.88s0.95-1.37,0.95-2.34
c0-0.96-0.32-1.72-0.97-2.26s-1.58-0.81-2.79-0.81c-0.41,0-1.18,0.04-2.31,0.12V8.21h7.12v1.52h-5.53v4.31
c0.45-0.03,0.87-0.04,1.25-0.04c1.57,0,2.79,0.39,3.65,1.18c0.86,0.79,1.29,1.87,1.29,3.25c0,1.42-0.46,2.57-1.39,3.44
s-2.2,1.3-3.81,1.3C71.68,23.16,70.67,22.96,70,22.55z"/>
<path class="st0" d="M87.55,12.06c0-0.45-0.07-0.84-0.21-1.18c-0.14-0.33-0.33-0.61-0.57-0.84c-0.24-0.22-0.53-0.39-0.86-0.5
s-0.68-0.16-1.07-0.16c-0.33,0-0.65,0.04-0.96,0.13s-0.62,0.21-0.92,0.37c-0.3,0.16-0.58,0.35-0.86,0.56
c-0.28,0.22-0.53,0.46-0.77,0.73v-1.8c0.47-0.46,1-0.81,1.58-1.05c0.58-0.24,1.3-0.36,2.14-0.36c0.6,0,1.16,0.09,1.67,0.26
c0.51,0.17,0.96,0.43,1.33,0.76s0.67,0.75,0.89,1.24c0.21,0.49,0.32,1.06,0.32,1.69c0,0.58-0.07,1.11-0.2,1.58
c-0.13,0.47-0.34,0.92-0.61,1.33s-0.61,0.82-1.02,1.2s-0.89,0.77-1.45,1.17c-0.69,0.49-1.26,0.91-1.71,1.26
c-0.45,0.35-0.8,0.68-1.07,0.98c-0.26,0.3-0.45,0.61-0.55,0.91c-0.11,0.3-0.16,0.65-0.16,1.05h7.32v1.51h-9.07v-0.73
c0-0.63,0.07-1.18,0.21-1.66s0.36-0.93,0.68-1.36s0.73-0.86,1.24-1.29c0.51-0.43,1.13-0.92,1.87-1.46c0.53-0.38,0.98-0.75,1.34-1.1
c0.36-0.35,0.65-0.7,0.87-1.05s0.37-0.7,0.47-1.06C87.51,12.85,87.55,12.47,87.55,12.06z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -391,6 +391,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;
@ -409,6 +412,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())
@ -419,7 +423,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;
@ -577,8 +581,7 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(std::string user, For
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) {
}catch (const std::runtime_error& err) {
errors_cummulative += err.what();
}
if (!errors_cummulative.empty()) throw Slic3r::RuntimeError(errors_cummulative);
@ -1396,15 +1399,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;
}
@ -1415,11 +1421,14 @@ void PresetBundle::update_system_maps()
this->filaments .update_map_system_profile_renamed();
this->sla_materials.update_map_system_profile_renamed();
this->printers .update_map_system_profile_renamed();
//xiamian+
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)
@ -1439,6 +1448,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
{
@ -1449,6 +1464,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);
@ -1480,10 +1496,13 @@ const int PresetBundle::get_required_hrc_by_filament_type(const std::string& fil
void PresetBundle::save_changes_for_preset(const std::string& new_name, Preset::Type type,
const std::vector<std::string>& unselected_options, bool save_to_project)
{
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;
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 :
type == Preset::TYPE_CONFIG ? configs :
printers;
// if we want to save just some from selected options
if (!unselected_options.empty()) {
@ -1589,6 +1608,7 @@ void PresetBundle::load_selections(AppConfig &config, const PresetPreferences& p
BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": enter, preferred printer_model_id %1%")%preferred_selection.printer_model_id;
// Update visibility of presets based on application vendor / model / variant configuration.
this->load_installed_printers(config);
this->load_installed_configs(config);
// Update visibility of filament and sla material presets
this->load_installed_filaments(config);
@ -1631,6 +1651,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.
@ -4043,6 +4064,7 @@ void PresetBundle::set_default_suppressed(bool default_suppressed)
sla_prints.set_default_suppressed(default_suppressed);
sla_materials.set_default_suppressed(default_suppressed);
printers.set_default_suppressed(default_suppressed);
configs.set_default_suppressed(default_suppressed);
}
} // namespace Slic3r

View File

@ -227,6 +227,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;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -414,6 +414,9 @@ void ParamsPanel::create_layout()
// m_left_sizer->Add( m_filament_sizer, 1, wxEXPAND, 5 );
m_left_sizer->Add( m_tab_filament, 0, wxEXPAND );
}
if (m_tab_config) {
m_left_sizer->Add(m_tab_config, 0, wxEXPAND);
}
if (m_tab_printer) {
//m_printer_sizer = new wxBoxSizer( wxVERTICAL );
@ -481,6 +484,10 @@ void ParamsPanel::refresh_tabs()
case Preset::TYPE_PRINTER:
m_tab_printer = tab;
break;
case Preset::TYPE_CONFIG:
m_tab_config = tab;
//m_tab_config = NULL;
break;
default:
break;
}
@ -509,7 +516,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)
@ -587,7 +594,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;
@ -658,7 +666,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();
@ -799,6 +807,12 @@ void ParamsPanel::delete_subwindows()
m_staticline_printer = nullptr;
}
if (m_staticline_config)
{
delete m_staticline_config;
m_staticline_config = nullptr;
}
if (m_export_to_file)
{
delete m_export_to_file;

View File

@ -1382,6 +1382,17 @@ 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();
}*/
p->combo_config->update();
break;
}
case Preset::TYPE_SLA_PRINT:
;// p->combo_sla_print->update();
break;
@ -1538,6 +1549,7 @@ void Sidebar::msw_rescale()
// //p->combo_printer
// } )
// combo->msw_rescale();
p->combo_config->msw_rescale();
p->combo_printer->msw_rescale();
for (PlaterPresetComboBox* combo : p->combos_filament)
combo->msw_rescale();

View File

@ -966,7 +966,8 @@ void Tab::update_changed_tree_ui()
}
}
if (page->title() == "Dependencies") {
if (m_type == Slic3r::Preset::TYPE_PRINTER) {
//xiamian+
if (m_type == Slic3r::Preset::TYPE_PRINTER || m_type == Slic3r::Preset::TYPE_CONFIG) {
sys_page = m_presets->get_selected_preset_parent() != nullptr;
modified_page = false;
} else {
@ -1923,304 +1924,271 @@ void TabPrint::build()
m_presets = &m_preset_bundle->prints;
load_initial_data();
auto page = add_options_page(L("Quality"), "empty");
auto optgroup = page->new_optgroup("", L"param_layer_height");
optgroup->append_single_option_line("layer_height", "layer-height");
//optgroup->append_single_option_line("initial_layer_print_height", "layer-height");
auto page = add_options_page(L("Quality"), "empty");
//xiamian-
//auto page = add_options_page(L("Quality"), "empty");
//auto optgroup = page->new_optgroup(L("Layer height"), L"param_layer_height");
auto optgroup = page->new_optgroup("", L"param_layer_height");
//optgroup->append_single_option_line("layer_height", "layer-height");
//optgroup->append_single_option_line("initial_layer_print_height", "layer-height");
//xiamian-
//optgroup = page->new_optgroup(L("Line width"), L"param_line_width");
//optgroup->append_single_option_line("line_width","parameter/line-width");
//optgroup->append_single_option_line("initial_layer_line_width","parameter/line-width");
//optgroup->append_single_option_line("outer_wall_line_width","parameter/line-width");
//optgroup->append_single_option_line("inner_wall_line_width","parameter/line-width");
//optgroup->append_single_option_line("top_surface_line_width","parameter/line-width");
//optgroup->append_single_option_line("sparse_infill_line_width","parameter/line-width");
//optgroup->append_single_option_line("internal_solid_infill_line_width","parameter/line-width");
//optgroup->append_single_option_line("support_line_width","parameter/line-width");
//xiamian-
//optgroup = page->new_optgroup(L("Seam"), L"param_seam");
//optgroup->append_single_option_line("seam_position", "Seam");
optgroup->append_single_option_line("seam_gap", "Seam");
//optgroup->append_single_option_line("seam_slope_type");
optgroup->append_single_option_line("seam_slope_conditional");
optgroup->append_single_option_line("scarf_angle_threshold");
optgroup->append_single_option_line("seam_slope_start_height");
optgroup->append_single_option_line("seam_slope_entire_loop");
optgroup->append_single_option_line("seam_slope_min_length");
optgroup->append_single_option_line("seam_slope_steps");
optgroup->append_single_option_line("seam_slope_inner_walls");
optgroup->append_single_option_line("wipe_speed", "Seam");
//xiamian-
//optgroup = page->new_optgroup(L("Precision"), L"param_precision");
//optgroup->append_single_option_line("slice_closing_radius");
//optgroup->append_single_option_line("resolution","acr-move");
//optgroup->append_single_option_line("enable_arc_fitting", "acr-move");
//optgroup->append_single_option_line("xy_hole_compensation", "xy-hole-contour-compensation");
//optgroup->append_single_option_line("xy_contour_compensation", "xy-hole-contour-compensation");
//optgroup->append_single_option_line("elefant_foot_compensation", "parameter/elephant-foot");
//optgroup->append_single_option_line("precise_z_height");
//xiamian-
//optgroup = page->new_optgroup(L("Ironing"), L"param_ironing");
//optgroup->append_single_option_line("ironing_type", "parameter/ironing");
optgroup->append_single_option_line("ironing_pattern");
optgroup->append_single_option_line("ironing_speed");
optgroup->append_single_option_line("ironing_flow");
optgroup->append_single_option_line("ironing_spacing");
optgroup->append_single_option_line("ironing_direction");
//xiamian-
//optgroup = page->new_optgroup(L("Wall generator"), L"param_wall");
optgroup->append_single_option_line("wall_generator", "wall-generator");
optgroup->append_single_option_line("wall_transition_angle");
optgroup->append_single_option_line("wall_transition_filter_deviation");
optgroup->append_single_option_line("wall_transition_length");
optgroup->append_single_option_line("wall_distribution_count");
optgroup->append_single_option_line("min_bead_width");
optgroup->append_single_option_line("min_feature_size");
//xiamian-
//optgroup = page->new_optgroup(L("Advanced"), L"param_advanced");
optgroup->append_single_option_line("wall_sequence");
//optgroup->append_single_option_line("is_infill_first");
//optgroup->append_single_option_line("bridge_flow","parameter/bridge");
//optgroup->append_single_option_line("thick_bridges","parameter/bridge");
//optgroup->append_single_option_line("top_solid_infill_flow_ratio");
//optgroup->append_single_option_line("initial_layer_flow_ratio");
//optgroup->append_single_option_line("top_one_wall_type");
//optgroup->append_single_option_line("top_area_threshold");
//optgroup->append_single_option_line("only_one_wall_first_layer");
//optgroup->append_single_option_line("detect_overhang_wall");
//optgroup->append_single_option_line("smooth_speed_discontinuity_area");
//optgroup->append_single_option_line("smooth_coefficient");
//optgroup->append_single_option_line("reduce_crossing_wall");
//optgroup->append_single_option_line("max_travel_detour_distance");
//optgroup = page->new_optgroup(L("Line width"), L"param_line_width");
//optgroup->append_single_option_line("line_width", "parameter/line-width");
//optgroup->append_single_option_line("initial_layer_line_width", "parameter/line-width");
//optgroup->append_single_option_line("outer_wall_line_width", "parameter/line-width");
//optgroup->append_single_option_line("inner_wall_line_width", "parameter/line-width");
//optgroup->append_single_option_line("top_surface_line_width", "parameter/line-width");
//optgroup->append_single_option_line("sparse_infill_line_width", "parameter/line-width");
//optgroup->append_single_option_line("internal_solid_infill_line_width", "parameter/line-width");
//optgroup->append_single_option_line("support_line_width", "parameter/line-width");
optgroup->append_single_option_line("support_base_pattern_spacing", "support#base-pattern");
optgroup->append_single_option_line("support_interface_top_layers", "support#base-pattern");
optgroup->append_single_option_line("support_interface_bottom_layers", "support#base-pattern");
optgroup->append_single_option_line("support_interface_spacing", "support#base-pattern");
//optgroup = page->new_optgroup(L("Seam"), L"param_seam");
//optgroup->append_single_option_line("seam_position", "Seam");
//optgroup->append_single_option_line("seam_gap", "Seam");
//optgroup->append_single_option_line("seam_slope_type");
//optgroup->append_single_option_line("seam_slope_conditional");
//optgroup->append_single_option_line("scarf_angle_threshold");
//optgroup->append_single_option_line("seam_slope_start_height");
//optgroup->append_single_option_line("seam_slope_entire_loop");
//optgroup->append_single_option_line("seam_slope_min_length");
//optgroup->append_single_option_line("seam_slope_steps");
//optgroup->append_single_option_line("seam_slope_inner_walls");
//optgroup->append_single_option_line("wipe_speed", "Seam");
//optgroup = page->new_optgroup(L("Precision"), L"param_precision");
//optgroup->append_single_option_line("slice_closing_radius");
//optgroup->append_single_option_line("resolution", "acr-move");
//optgroup->append_single_option_line("enable_arc_fitting", "acr-move");
//optgroup->append_single_option_line("xy_hole_compensation", "xy-hole-contour-compensation");
//optgroup->append_single_option_line("xy_contour_compensation", "xy-hole-contour-compensation");
//optgroup->append_single_option_line("elefant_foot_compensation", "parameter/elephant-foot");
//optgroup->append_single_option_line("precise_z_height");
//optgroup = page->new_optgroup(L("Ironing"), L"param_ironing");
//optgroup->append_single_option_line("ironing_type", "parameter/ironing");
//optgroup->append_single_option_line("ironing_pattern");
//optgroup->append_single_option_line("ironing_speed");
//optgroup->append_single_option_line("ironing_flow");
//optgroup->append_single_option_line("ironing_spacing");
//optgroup->append_single_option_line("ironing_direction");
//optgroup = page->new_optgroup(L("Wall generator"), L"param_wall");
//optgroup->append_single_option_line("wall_generator", "wall-generator");
optgroup->append_single_option_line("wall_transition_angle");
optgroup->append_single_option_line("wall_transition_filter_deviation");
optgroup->append_single_option_line("wall_transition_length");
optgroup->append_single_option_line("wall_distribution_count");
optgroup->append_single_option_line("min_bead_width");
optgroup->append_single_option_line("min_feature_size");
//optgroup = page->new_optgroup(L("Advanced"), L"param_advanced");
//optgroup->append_single_option_line("wall_sequence");
//optgroup->append_single_option_line("is_infill_first");
//optgroup->append_single_option_line("bridge_flow", "parameter/bridge");
//optgroup->append_single_option_line("thick_bridges", "parameter/bridge");
//optgroup->append_single_option_line("top_solid_infill_flow_ratio");
//optgroup->append_single_option_line("initial_layer_flow_ratio");
optgroup->append_single_option_line("top_one_wall_type");
optgroup->append_single_option_line("top_area_threshold");
optgroup->append_single_option_line("only_one_wall_first_layer");
optgroup->append_single_option_line("detect_overhang_wall");
//optgroup->append_single_option_line("smooth_speed_discontinuity_area");
//optgroup->append_single_option_line("smooth_coefficient");
//optgroup->append_single_option_line("reduce_crossing_wall");
optgroup->append_single_option_line("max_travel_detour_distance");
page = add_options_page(L("Strength"), "empty");
//xiamian+
optgroup = page->new_optgroup("", L"param_wall");
//xiamian-
//optgroup = page->new_optgroup(L("Walls"), L"param_wall");
//optgroup->append_single_option_line("wall_loops","wall-generator");
optgroup->append_single_option_line("detect_thin_wall","wall-generator");
optgroup = page->new_optgroup("", L"param_wall");
optgroup->append_single_option_line("wall_loops", "wall-generator");
//optgroup->append_single_option_line("detect_thin_wall", "wall-generator");
//optgroup = page->new_optgroup(L("Top/bottom shells"), L"param_shell");
optgroup->append_single_option_line("interface_shells");
optgroup->append_single_option_line("top_surface_pattern", "fill-patterns#Infill of the top surface and bottom surface");
//optgroup->append_single_option_line("top_shell_layers");
//optgroup->append_single_option_line("top_shell_thickness");
optgroup->append_single_option_line("bottom_surface_pattern", "fill-patterns#Infill of the top surface and bottom surface");
//optgroup->append_single_option_line("bottom_shell_layers");
//optgroup->append_single_option_line("bottom_shell_thickness");
optgroup->append_single_option_line("internal_solid_infill_pattern");
//optgroup = page->new_optgroup(L("Top/bottom shells"), L"param_shell");
optgroup->append_single_option_line("interface_shells");
//optgroup->append_single_option_line("top_surface_pattern", "fill-patterns#Infill of the top surface and bottom surface");
optgroup->append_single_option_line("top_shell_layers");
optgroup->append_single_option_line("top_shell_thickness");
//optgroup->append_single_option_line("bottom_surface_pattern", "fill-patterns#Infill of the top surface and bottom surface");
optgroup->append_single_option_line("bottom_shell_layers");
optgroup->append_single_option_line("bottom_shell_thickness");
//optgroup->append_single_option_line("internal_solid_infill_pattern");
//optgroup = page->new_optgroup(L("Sparse infill"), L"param_infill");
//optgroup->append_single_option_line("sparse_infill_density");
optgroup->append_single_option_line("sparse_infill_pattern", "fill-patterns#infill types and their properties of sparse");
//optgroup->append_single_option_line("sparse_infill_anchor");
//optgroup->append_single_option_line("sparse_infill_anchor_max");
optgroup->append_single_option_line("filter_out_gap_fill");
//optgroup = page->new_optgroup(L("Sparse infill"), L"param_infill");
optgroup->append_single_option_line("sparse_infill_density");
//optgroup->append_single_option_line("sparse_infill_pattern", "fill-patterns#infill types and their properties of sparse");
//optgroup->append_single_option_line("sparse_infill_anchor");
//optgroup->append_single_option_line("sparse_infill_anchor_max");
//optgroup->append_single_option_line("filter_out_gap_fill");
//optgroup = page->new_optgroup(L("Advanced"), L"param_advanced");
//optgroup->append_single_option_line("infill_wall_overlap","parameter/strength-advance-settings");
//optgroup->append_single_option_line("infill_direction","parameter/strength-advance-settings");
optgroup->append_single_option_line("bridge_angle","parameter/strength-advance-settings");
optgroup->append_single_option_line("minimum_sparse_infill_area","parameter/strength-advance-settings");
optgroup->append_single_option_line("infill_combination","parameter/strength-advance-settings");
//optgroup->append_single_option_line("detect_narrow_internal_solid_infill","parameter/strength-advance-settings");
//optgroup->append_single_option_line("ensure_vertical_shell_thickness","parameter/strength-advance-settings");
//optgroup->append_single_option_line("internal_bridge_support_thickness","parameter/strength-advance-settings");
//optgroup = page->new_optgroup(L("Advanced"), L"param_advanced");
//optgroup->append_single_option_line("infill_wall_overlap", "parameter/strength-advance-settings");
//optgroup->append_single_option_line("infill_direction", "parameter/strength-advance-settings");
//optgroup->append_single_option_line("bridge_angle", "parameter/strength-advance-settings");
//optgroup->append_single_option_line("minimum_sparse_infill_area", "parameter/strength-advance-settings");
//optgroup->append_single_option_line("infill_combination", "parameter/strength-advance-settings");
//optgroup->append_single_option_line("detect_narrow_internal_solid_infill", "parameter/strength-advance-settings");
//optgroup->append_single_option_line("ensure_vertical_shell_thickness", "parameter/strength-advance-settings");
//optgroup->append_single_option_line("internal_bridge_support_thickness","parameter/strength-advance-settings");
page = add_options_page(L("Speed"), "empty");
//xiamian+
optgroup = page->new_optgroup("", L"param_speed",15);
//xiamian-
//optgroup = page->new_optgroup(L("Initial layer speed"), L"param_speed_first", 15);
optgroup->append_single_option_line("default_print_speed");
optgroup->append_single_option_line("initial_layer_speed");
optgroup->append_single_option_line("initial_layer_infill_speed");
//optgroup = page->new_optgroup(L("Other layers speed"), L"param_speed", 15);
optgroup->append_single_option_line("outer_wall_speed");
optgroup->append_single_option_line("inner_wall_speed");
//optgroup->append_single_option_line("small_perimeter_speed");
//optgroup->append_single_option_line("small_perimeter_threshold");
optgroup->append_single_option_line("sparse_infill_speed");
optgroup->append_single_option_line("internal_solid_infill_speed");
optgroup->append_single_option_line("top_surface_speed");
//optgroup->append_single_option_line("enable_overhang_speed", "slow-down-for-overhang");
//Line line = { L("Overhang speed"), L("This is the speed for various overhang degrees. Overhang degrees are expressed as a percentage of line width. 0 speed means no slowing down for the overhang degree range and wall speed is used") };
//line.label_path = "slow-down-for-overhang";
//line.append_option(optgroup->get_option("overhang_1_4_speed"));
//line.append_option(optgroup->get_option("overhang_2_4_speed"));
//line.append_option(optgroup->get_option("overhang_3_4_speed"));
//line.append_option(optgroup->get_option("overhang_4_4_speed"));
//optgroup->append_line(line);
//optgroup->append_single_option_line("overhang_totally_speed");
optgroup->append_single_option_line("bridge_speed");
optgroup->append_single_option_line("gap_infill_speed");
optgroup->append_single_option_line("support_speed");
optgroup->append_single_option_line("support_interface_speed");
optgroup = page->new_optgroup("", L"param_speed_first", 15);
//optgroup->append_single_option_line("initial_layer_speed");
//optgroup->append_single_option_line("initial_layer_infill_speed");
//optgroup = page->new_optgroup(L("Travel speed"), L"param_travel_speed", 15);
optgroup->append_single_option_line("travel_speed");
//optgroup = page->new_optgroup(L("Other layers speed"), L"param_speed", 15);
//optgroup->append_single_option_line("outer_wall_speed");
//optgroup->append_single_option_line("inner_wall_speed");
//optgroup->append_single_option_line("small_perimeter_speed");
//optgroup->append_single_option_line("small_perimeter_threshold");
//optgroup->append_single_option_line("sparse_infill_speed");
//optgroup->append_single_option_line("internal_solid_infill_speed");
//optgroup->append_single_option_line("top_surface_speed");
//optgroup->append_single_option_line("enable_overhang_speed", "slow-down-for-overhang");
//Line line = { L("Overhang speed"), L("This is the speed for various overhang degrees. Overhang degrees are expressed as a percentage of line width. 0 speed means no slowing down for the overhang degree range and wall speed is used") };
//line.label_path = "slow-down-for-overhang";
//line.append_option(optgroup->get_option("overhang_1_4_speed"));
//line.append_option(optgroup->get_option("overhang_2_4_speed"));
//line.append_option(optgroup->get_option("overhang_3_4_speed"));
//line.append_option(optgroup->get_option("overhang_4_4_speed"));
//optgroup->append_line(line);
//optgroup->append_single_option_line("overhang_totally_speed");
//optgroup->append_single_option_line("bridge_speed");
//optgroup->append_single_option_line("gap_infill_speed");
//optgroup->append_single_option_line("support_speed");
//optgroup->append_single_option_line("support_interface_speed");
//optgroup = page->new_optgroup(L("Acceleration"), L"param_acceleration", 15);
optgroup->append_single_option_line("default_acceleration");
//optgroup->append_single_option_line("initial_layer_acceleration");
//optgroup->append_single_option_line("outer_wall_acceleration");
//optgroup->append_single_option_line("inner_wall_acceleration");
//optgroup->append_single_option_line("top_surface_acceleration");
//optgroup->append_single_option_line("sparse_infill_acceleration");
//optgroup->append_single_option_line("accel_to_decel_enable");
//optgroup->append_single_option_line("accel_to_decel_factor");
//optgroup = page->new_optgroup(L("Travel speed"), L"param_travel_speed", 15);
//optgroup->append_single_option_line("travel_speed");
//optgroup = page->new_optgroup(L("Jerk(XY)"), L"param_acceleration", 15);
optgroup->append_single_option_line("default_jerk");
optgroup->append_single_option_line("outer_wall_jerk");
optgroup->append_single_option_line("inner_wall_jerk");
optgroup->append_single_option_line("infill_jerk");
optgroup->append_single_option_line("top_surface_jerk");
optgroup->append_single_option_line("initial_layer_jerk");
optgroup->append_single_option_line("travel_jerk");
//optgroup = page->new_optgroup(L("Acceleration"), L"param_acceleration", 15);
//optgroup->append_single_option_line("default_acceleration");
//optgroup->append_single_option_line("initial_layer_acceleration");
//optgroup->append_single_option_line("outer_wall_acceleration");
//optgroup->append_single_option_line("inner_wall_acceleration");
//optgroup->append_single_option_line("top_surface_acceleration");
//optgroup->append_single_option_line("sparse_infill_acceleration");
//optgroup->append_single_option_line("accel_to_decel_enable");
//optgroup->append_single_option_line("accel_to_decel_factor");
#ifdef HAS_PRESSURE_EQUALIZER
optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope_positive");
optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope_negative");
#endif /* HAS_PRESSURE_EQUALIZER */
//optgroup = page->new_optgroup(L("Jerk(XY)"), L"param_acceleration", 15);
optgroup->append_single_option_line("default_jerk");
optgroup->append_single_option_line("outer_wall_jerk");
optgroup->append_single_option_line("inner_wall_jerk");
optgroup->append_single_option_line("infill_jerk");
optgroup->append_single_option_line("top_surface_jerk");
optgroup->append_single_option_line("initial_layer_jerk");
optgroup->append_single_option_line("travel_jerk");
//#ifdef HAS_PRESSURE_EQUALIZER
// optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope_positive");
// optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope_negative");
//#endif /* HAS_PRESSURE_EQUALIZER */
page = add_options_page(L("Support"), "support");
//xiamian+
optgroup = page->new_optgroup("", L"param_support");
//ximian-
//optgroup = page->new_optgroup(L("Support"), L"param_support");
//optgroup->append_single_option_line("enable_support", "support");
optgroup->append_single_option_line("support_type", "support#support-types");
optgroup->append_single_option_line("support_style", "support#support-styles");
optgroup->append_single_option_line("support_threshold_angle", "support#threshold-angle");
optgroup->append_single_option_line("support_on_build_plate_only");
optgroup->append_single_option_line("support_critical_regions_only");
optgroup->append_single_option_line("support_remove_small_overhang");
//optgroup->append_single_option_line("enforce_support_layers");
optgroup->append_single_option_line("enable_support", "support");
optgroup->append_single_option_line("support_type", "support#support-types");
optgroup->append_single_option_line("support_style", "support#support-styles");
optgroup->append_single_option_line("support_threshold_angle", "support#threshold-angle");
optgroup->append_single_option_line("support_on_build_plate_only");
optgroup->append_single_option_line("support_critical_regions_only");
optgroup->append_single_option_line("support_remove_small_overhang");
//optgroup->append_single_option_line("enforce_support_layers");
//optgroup = page->new_optgroup(L("Raft"), L"param_raft");
optgroup->append_single_option_line("raft_layers");
optgroup->append_single_option_line("raft_contact_distance");
optgroup->append_single_option_line("raft_first_layer_density");
//optgroup = page->new_optgroup(L("Raft"), L"param_raft");
//optgroup->append_single_option_line("raft_layers");
//optgroup->append_single_option_line("raft_contact_distance");
//optgroup->append_single_option_line("raft_first_layer_density");
//optgroup = page->new_optgroup(L("Support filament"), L"param_support_filament");
optgroup->append_single_option_line("support_filament", "support#support-filament");
optgroup->append_single_option_line("support_interface_filament", "support#support-filament");
optgroup->append_single_option_line("support_interface_not_for_body", "support#support-filament");
//optgroup = page->new_optgroup(L("Support filament"), L"param_support_filament");
//optgroup->append_single_option_line("support_filament", "support#support-filament");
//optgroup->append_single_option_line("support_interface_filament", "support#support-filament");
//optgroup->append_single_option_line("support_interface_not_for_body", "support#support-filament");
//optgroup = page->new_optgroup(L("Options for support material and raft"));
//optgroup = page->new_optgroup(L("Options for support material and raft"));
//BBS
//optgroup = page->new_optgroup(L("Advanced"), L"param_advanced");
optgroup->append_single_option_line("raft_first_layer_expansion"); // not only for raft, but for support too
optgroup->append_single_option_line("tree_support_wall_count");
//optgroup->append_single_option_line("support_top_z_distance", "support#top-z-distance");
//optgroup->append_single_option_line("support_bottom_z_distance", "support#bottom-z-distance");
optgroup->append_single_option_line("support_base_pattern", "support#base-pattern");
//optgroup->append_single_option_line("support_base_pattern_spacing", "support#base-pattern");
//optgroup->append_single_option_line("support_angle");
//optgroup->append_single_option_line("support_interface_top_layers", "support#base-pattern");
//optgroup->append_single_option_line("support_interface_bottom_layers", "support#base-pattern");
optgroup->append_single_option_line("support_interface_pattern", "support#base-pattern");
//optgroup->append_single_option_line("support_interface_spacing", "support#base-pattern");
optgroup->append_single_option_line("support_bottom_interface_spacing");
//optgroup->append_single_option_line("support_expansion", "support#base-pattern");
//optgroup->append_single_option_line("support_interface_loop_pattern");
//BBS
//optgroup = page->new_optgroup(L("Advanced"), L"param_advanced");
//optgroup->append_single_option_line("raft_first_layer_expansion"); // not only for raft, but for support too
//optgroup->append_single_option_line("tree_support_wall_count");
//optgroup->append_single_option_line("support_top_z_distance", "support#top-z-distance");
//optgroup->append_single_option_line("support_bottom_z_distance", "support#bottom-z-distance");
//optgroup->append_single_option_line("support_base_pattern", "support#base-pattern");
//optgroup->append_single_option_line("support_base_pattern_spacing", "support#base-pattern");
//optgroup->append_single_option_line("support_angle");
//optgroup->append_single_option_line("support_interface_top_layers", "support#base-pattern");
//optgroup->append_single_option_line("support_interface_bottom_layers", "support#base-pattern");
//optgroup->append_single_option_line("support_interface_pattern", "support#base-pattern");
//optgroup->append_single_option_line("support_interface_spacing", "support#base-pattern");
//optgroup->append_single_option_line("support_bottom_interface_spacing");
//optgroup->append_single_option_line("support_expansion", "support#base-pattern");
//optgroup->append_single_option_line("support_interface_loop_pattern");
optgroup->append_single_option_line("support_object_xy_distance", "support");
//optgroup->append_single_option_line("support_object_first_layer_gap", "support");
optgroup->append_single_option_line("bridge_no_support", "support#base-pattern");
optgroup->append_single_option_line("max_bridge_length", "support#base-pattern");
optgroup->append_single_option_line("independent_support_layer_height", "support");
//optgroup->append_single_option_line("support_object_xy_distance", "support");
//optgroup->append_single_option_line("support_object_first_layer_gap", "support");
//optgroup->append_single_option_line("bridge_no_support", "support#base-pattern");
//optgroup->append_single_option_line("max_bridge_length", "support#base-pattern");
//optgroup->append_single_option_line("independent_support_layer_height", "support");
//optgroup = page->new_optgroup(L("Tree Support"), L"param_advanced");
optgroup->append_single_option_line("tree_support_branch_distance", "support#tree-support-only-options");
optgroup->append_single_option_line("tree_support_branch_diameter", "support#tree-support-only-options");
optgroup->append_single_option_line("tree_support_branch_angle", "support#tree-support-only-options");
//xiamian+
page = add_options_page(L("Configuration"), "empty");
optgroup = page->new_optgroup("", L"param_layer_height");
optgroup->append_single_option_line("wall_loops", "wall-generator");
optgroup->append_single_option_line("layer_height", "layer-height");
optgroup->append_single_option_line("seam_position", "Seam");
optgroup->append_single_option_line("top_shell_layers");
optgroup->append_single_option_line("top_shell_thickness");
optgroup->append_single_option_line("bottom_shell_layers");
optgroup->append_single_option_line("bottom_shell_thickness");
optgroup->append_single_option_line("sparse_infill_density");
optgroup->append_single_option_line("enable_support", "support");
//optgroup = page->new_optgroup(L("Tree Support"), L"param_advanced");
//optgroup->append_single_option_line("tree_support_branch_distance", "support#tree-support-only-options");
//optgroup->append_single_option_line("tree_support_branch_diameter", "support#tree-support-only-options");
//optgroup->append_single_option_line("tree_support_branch_angle", "support#tree-support-only-options");
page = add_options_page(L("Others"), "advanced");
//xiamian+
optgroup = page->new_optgroup("", L"param_adhension");
//xiamian-
//optgroup = page->new_optgroup(L("Bed adhension"), L"param_adhension");
//optgroup->append_single_option_line("skirt_loops");
//optgroup->append_single_option_line("skirt_height");
//optgroup->append_single_option_line("skirt_distance");
//optgroup->append_single_option_line("draft_shield");
//optgroup->append_single_option_line("brim_type", "auto-brim");
//optgroup->append_single_option_line("brim_width", "auto-brim#manual");
//optgroup->append_single_option_line("brim_object_gap", "auto-brim#brim-object-gap");
//optgroup->append_single_option_line("skirt_loops");
//optgroup->append_single_option_line("skirt_height");
//optgroup->append_single_option_line("skirt_distance");
//optgroup->append_single_option_line("draft_shield");
//optgroup->append_single_option_line("brim_type", "auto-brim");
//optgroup->append_single_option_line("brim_width", "auto-brim#manual");
//optgroup->append_single_option_line("brim_object_gap", "auto-brim#brim-object-gap");
//optgroup = page->new_optgroup(L("Prime tower"), L"param_tower");
//optgroup->append_single_option_line("enable_prime_tower","parameter/prime-tower");
//optgroup->append_single_option_line("prime_tower_width","parameter/prime-tower");
//optgroup->append_single_option_line("prime_volume","parameter/prime-tower");
//optgroup->append_single_option_line("prime_tower_brim_width","parameter/prime-tower");
//optgroup = page->new_optgroup(L("Prime tower"), L"param_tower");
//optgroup->append_single_option_line("enable_prime_tower", "parameter/prime-tower");
//optgroup->append_single_option_line("prime_tower_width", "parameter/prime-tower");
//optgroup->append_single_option_line("prime_volume", "parameter/prime-tower");
//optgroup->append_single_option_line("prime_tower_brim_width", "parameter/prime-tower");
//optgroup = page->new_optgroup(L("Flush options"), L"param_flush");
//optgroup->append_single_option_line("flush_into_infill", "reduce-wasting-during-filament-change#wipe-into-infill");
//optgroup->append_single_option_line("flush_into_objects", "reduce-wasting-during-filament-change#wipe-into-object");
//optgroup->append_single_option_line("flush_into_support", "reduce-wasting-during-filament-change#wipe-into-support-enabled-by-default");
//optgroup = page->new_optgroup(L("Flush options"), L"param_flush");
//optgroup->append_single_option_line("flush_into_infill", "reduce-wasting-during-filament-change#wipe-into-infill");
//optgroup->append_single_option_line("flush_into_objects", "reduce-wasting-during-filament-change#wipe-into-object");
//optgroup->append_single_option_line("flush_into_support", "reduce-wasting-during-filament-change#wipe-into-support-enabled-by-default");
//optgroup = page->new_optgroup(L("Special mode"), L"param_special");
optgroup->append_single_option_line("slicing_mode");
optgroup->append_single_option_line("print_sequence", "sequent-print");
optgroup->append_single_option_line("spiral_mode", "spiral-vase");
optgroup->append_single_option_line("spiral_mode_smooth", "spiral-vase#smooth");
optgroup->append_single_option_line("spiral_mode_max_xy_smoothing", "spiral-vase#max-xy-smoothing");
optgroup->append_single_option_line("timelapse_type", "Timelapse");
//optgroup = page->new_optgroup(L("Special mode"), L"param_special");
//optgroup->append_single_option_line("slicing_mode");
//optgroup->append_single_option_line("print_sequence", "sequent-print");
//optgroup->append_single_option_line("spiral_mode", "spiral-vase");
//optgroup->append_single_option_line("spiral_mode_smooth", "spiral-vase#smooth");
//optgroup->append_single_option_line("spiral_mode_max_xy_smoothing", "spiral-vase#max-xy-smoothing");
//optgroup->append_single_option_line("timelapse_type", "Timelapse");
optgroup->append_single_option_line("fuzzy_skin", "parameter/fuzzy-skin");
optgroup->append_single_option_line("fuzzy_skin_point_distance");
optgroup->append_single_option_line("fuzzy_skin_thickness");
//optgroup->append_single_option_line("fuzzy_skin", "parameter/fuzzy-skin");
//optgroup->append_single_option_line("fuzzy_skin_point_distance");
//optgroup->append_single_option_line("fuzzy_skin_thickness");
//optgroup = page->new_optgroup(L("Advanced"), L"advanced");
// optgroup->append_single_option_line("mmu_segmented_region_max_width");
optgroup->append_single_option_line("mmu_segmented_region_interlocking_depth");
//optgroup = page->new_optgroup(L("Advanced"), L"advanced");
// optgroup->append_single_option_line("mmu_segmented_region_max_width");
optgroup->append_single_option_line("mmu_segmented_region_interlocking_depth");
//optgroup = page->new_optgroup(L("G-code output"), L"param_gcode");
optgroup->append_single_option_line("reduce_infill_retraction");
optgroup->append_single_option_line("gcode_add_line_number");
optgroup->append_single_option_line("exclude_object");
Option option = optgroup->get_option("filename_format");
option.opt.full_width = true;
optgroup->append_single_option_line(option);
optgroup = page->new_optgroup(L("G-code output"), L"param_gcode");
optgroup->append_single_option_line("reduce_infill_retraction");
optgroup->append_single_option_line("gcode_add_line_number");
optgroup->append_single_option_line("exclude_object");
Option option = optgroup->get_option("filename_format");
option.opt.full_width = true;
optgroup->append_single_option_line(option);
optgroup = page->new_optgroup(L("Post-processing scripts"), L"param_gcode", 0);
option = optgroup->get_option("post_process");
option.opt.full_width = true;
option.opt.is_code = true;
option.opt.height = 15;
optgroup->append_single_option_line(option);
optgroup = page->new_optgroup(L("Post-processing scripts"), L"param_gcode", 0);
option = optgroup->get_option("post_process");
option.opt.full_width = true;
option.opt.is_code = true;
option.opt.height = 15;
optgroup->append_single_option_line(option);
optgroup = page->new_optgroup(L("Notes"),"note");
optgroup->label_width = 0;
option = optgroup->get_option("process_notes");
option.opt.full_width = true;
option.opt.height = 25;
optgroup->append_single_option_line(option);
optgroup = page->new_optgroup(L("Notes"), "note");
optgroup->label_width = 0;
option = optgroup->get_option("process_notes");
option.opt.full_width = true;
option.opt.height = 25;
optgroup->append_single_option_line(option);
#if 0
//page = add_options_page(L("Dependencies"), "advanced.png");
@ -3184,7 +3152,7 @@ void TabFilament::build()
line.append_option(optgroup->get_option("complete_print_exhaust_fan_speed"));
optgroup->append_line(line);
//BBS
add_filament_overrides_page();
// add_filament_overrides_page();
#if 0
//page = add_options_page(L("Advanced"), "advanced");
// optgroup = page->new_optgroup(L("Wipe tower parameters"));
@ -4281,48 +4249,152 @@ void TabPrinter::update_fff()
void TabPrinter::update_sla()
{ ; }
void TabConfig::build() {
m_presets = &m_preset_bundle->configs;
load_initial_data();
auto page = add_options_page(L("Quality"), "spool");
auto optgroup = page->new_optgroup("", L"param_layer_height");
optgroup->append_single_option_line("initial_layer_print_height", "layer-height");
//auto page = add_options_page(L("Qualityttttttt"), "empty");
//auto optgroup = page->new_optgroup("", L"param_layer_height");
//optgroup->append_single_option_line("initial_layer_print_height", "layer-height");
//optgroup->append_single_option_line("initial_layer_line_width");
//optgroup->append_single_option_line("outer_wall_line_width", "parameter/line-width");
//optgroup->append_single_option_line("inner_wall_line_width", "parameter/line-width");
//optgroup->append_single_option_line("top_surface_line_width", "parameter/line-width");
//optgroup->append_single_option_line("sparse_infill_line_width", "parameter/line-width");
//optgroup->append_single_option_line("support_line_width", "parameter/line-width");
//optgroup->append_single_option_line("resolution", "acr-move");
//optgroup->append_single_option_line("enable_arc_fitting", "acr-move");
//optgroup->append_single_option_line("wall_generator", "wall-generator");
//optgroup->append_single_option_line("wall_sequence");
optgroup->append_single_option_line("initial_layer_line_width");
optgroup->append_single_option_line("outer_wall_line_width", "parameter/line-width");
optgroup->append_single_option_line("inner_wall_line_width", "parameter/line-width");
optgroup->append_single_option_line("top_surface_line_width", "parameter/line-width");
optgroup->append_single_option_line("sparse_infill_line_width", "parameter/line-width");
optgroup->append_single_option_line("support_line_width", "parameter/line-width");
/*page = add_options_page(L("Strength"), "empty");
optgroup = page->new_optgroup("", L"param_wall");
optgroup->append_single_option_line("detect_thin_wall", "wall-generator");*/
optgroup->append_single_option_line("seam_gap", "Seam");
optgroup->append_single_option_line("seam_slope_conditional");
optgroup->append_single_option_line("scarf_angle_threshold");
optgroup->append_single_option_line("seam_slope_start_height");
optgroup->append_single_option_line("seam_slope_entire_loop");
optgroup->append_single_option_line("seam_slope_min_length");
optgroup->append_single_option_line("seam_slope_steps");
optgroup->append_single_option_line("seam_slope_inner_walls");
optgroup->append_single_option_line("wipe_speed", "Seam");
auto page = add_options_page(L("Filament"), "spool");
//BBS
auto optgroup = page->new_optgroup(L("Basic information"), L"param_information");
// Set size as all another fields for a better alignment
//Option option = optgroup->get_option("filament_type");
optgroup->append_single_option_line("resolution", "acr-move");
optgroup->append_single_option_line("enable_arc_fitting", "acr-move");
page = add_options_page(L("Cooling"), "empty");
optgroup->append_single_option_line("ironing_pattern");
optgroup->append_single_option_line("ironing_speed");
optgroup->append_single_option_line("ironing_flow");
optgroup->append_single_option_line("ironing_spacing");
optgroup->append_single_option_line("ironing_direction");
//line = { "", "" };
//line.full_width = 1;
//line.widget = [this](wxWindow* parent) {
// return description_line_widget(parent, &m_cooling_description_line);
//};
//optgroup->append_line(line);
optgroup = page->new_optgroup(L("Cooling for specific layer"), L"param_cooling");
optgroup->append_single_option_line("wall_generator", "wall-generator");
optgroup->append_single_option_line("wall_transition_angle");
optgroup->append_single_option_line("wall_transition_filter_deviation");
optgroup->append_single_option_line("wall_transition_length");
optgroup->append_single_option_line("wall_distribution_count");
optgroup->append_single_option_line("min_bead_width");
optgroup->append_single_option_line("min_feature_size");
page = add_options_page(L("Advanced"), "advanced");
optgroup = page->new_optgroup(L("Filament start G-code"), L"param_gcode", 0);
optgroup->append_single_option_line("wall_sequence");
optgroup->append_single_option_line("top_one_wall_type");
optgroup->append_single_option_line("top_area_threshold");
optgroup->append_single_option_line("only_one_wall_first_layer");
optgroup->append_single_option_line("detect_overhang_wall");
optgroup->append_single_option_line("max_travel_detour_distance");
optgroup->append_single_option_line("support_base_pattern_spacing", "support#base-pattern");
optgroup->append_single_option_line("support_interface_top_layers", "support#base-pattern");
optgroup->append_single_option_line("support_interface_bottom_layers", "support#base-pattern");
//you cuo wu -- zan ding
//optgroup->append_single_option_line("support_interface_spacing", "support#base-pattern");
page = add_options_page(L("Strength"), "empty");
optgroup = page->new_optgroup("", L"param_wall");
optgroup->append_single_option_line("top_surface_pattern", "fill-patterns#Infill of the top surface and bottom surface");
optgroup->append_single_option_line("bottom_surface_pattern", "fill-patterns#Infill of the top surface and bottom surface");
optgroup->append_single_option_line("internal_solid_infill_pattern");
optgroup->append_single_option_line("sparse_infill_pattern", "fill-patterns#infill types and their properties of sparse");
optgroup->append_single_option_line("filter_out_gap_fill");
optgroup->append_single_option_line("bridge_angle", "parameter/strength-advance-settings");
optgroup->append_single_option_line("minimum_sparse_infill_area", "parameter/strength-advance-settings");
optgroup->append_single_option_line("infill_combination", "parameter/strength-advance-settings");
page = add_options_page(L("Speed"), "empty");
optgroup = page->new_optgroup("", L"param_speed_first", 15);
optgroup->append_single_option_line("default_print_speed");
optgroup->append_single_option_line("initial_layer_speed");
optgroup->append_single_option_line("initial_layer_infill_speed");
optgroup->append_single_option_line("outer_wall_speed");
optgroup->append_single_option_line("inner_wall_speed");
optgroup->append_single_option_line("sparse_infill_speed");
optgroup->append_single_option_line("internal_solid_infill_speed");
optgroup->append_single_option_line("top_surface_speed");
optgroup->append_single_option_line("bridge_speed");
optgroup->append_single_option_line("gap_infill_speed");
optgroup->append_single_option_line("support_speed");
optgroup->append_single_option_line("support_interface_speed");
optgroup->append_single_option_line("travel_speed");
optgroup->append_single_option_line("default_acceleration");
optgroup->append_single_option_line("accel_to_decel_enable");
optgroup->append_single_option_line("accel_to_decel_factor");
/* optgroup->append_single_option_line("default_jerk");
optgroup->append_single_option_line("outer_wall_jerk");
optgroup->append_single_option_line("inner_wall_jerk");
optgroup->append_single_option_line("infill_jerk");
optgroup->append_single_option_line("top_surface_jerk");
optgroup->append_single_option_line("initial_layer_jerk");
optgroup->append_single_option_line("travel_jerk");*/
page = add_options_page(L("Support"), "support");
optgroup = page->new_optgroup("", L"param_support");
optgroup->append_single_option_line("support_type", "support#support-types");
optgroup->append_single_option_line("support_style", "support#support-styles");
optgroup->append_single_option_line("support_threshold_angle", "support#threshold-angle");
optgroup->append_single_option_line("support_on_build_plate_only");
optgroup->append_single_option_line("support_critical_regions_only");
optgroup->append_single_option_line("support_remove_small_overhang");
optgroup->append_single_option_line("raft_layers");
optgroup->append_single_option_line("raft_contact_distance");
optgroup->append_single_option_line("raft_first_layer_density");
optgroup->append_single_option_line("support_filament", "support#support-filament");
optgroup->append_single_option_line("support_interface_filament", "support#support-filament");
optgroup->append_single_option_line("support_interface_not_for_body", "support#support-filament");
optgroup->append_single_option_line("raft_first_layer_expansion"); // not only for raft, but for support too
optgroup->append_single_option_line("tree_support_wall_count");
optgroup->append_single_option_line("support_base_pattern", "support#base-pattern");
optgroup->append_single_option_line("support_interface_pattern", "support#base-pattern");
optgroup->append_single_option_line("support_bottom_interface_spacing");
optgroup->append_single_option_line("support_object_xy_distance", "support");
optgroup->append_single_option_line("bridge_no_support", "support#base-pattern");
optgroup->append_single_option_line("max_bridge_length", "support#base-pattern");
optgroup->append_single_option_line("independent_support_layer_height", "support");
optgroup->append_single_option_line("tree_support_branch_distance", "support#tree-support-only-options");
optgroup->append_single_option_line("tree_support_branch_diameter", "support#tree-support-only-options");
optgroup->append_single_option_line("tree_support_branch_angle", "support#tree-support-only-options");
page = add_options_page(L("Others"), "advanced");
optgroup = page->new_optgroup("", L"param_adhension");
optgroup->append_single_option_line("slicing_mode");
optgroup->append_single_option_line("fibre_feed_rate");
optgroup->append_single_option_line("print_sequence", "sequent-print");
optgroup->append_single_option_line("spiral_mode", "spiral-vase");
optgroup->append_single_option_line("spiral_mode_smooth", "spiral-vase#smooth");
optgroup->append_single_option_line("spiral_mode_max_xy_smoothing", "spiral-vase#max-xy-smoothing");
optgroup->append_single_option_line("timelapse_type", "Timelapse");
optgroup->append_single_option_line("fuzzy_skin", "parameter/fuzzy-skin");
optgroup->append_single_option_line("fuzzy_skin_point_distance");
optgroup->append_single_option_line("fuzzy_skin_thickness");
}
void TabConfig::reload_config()
{
//this->compatible_widget_reload(m_compatible_printers);
@ -4333,8 +4405,8 @@ void TabConfig::update_description_lines()
{
Tab::update_description_lines();
//if (!m_active_page)
// return;
if (!m_active_page)
return;
//if (m_active_page->title() == "Cooling" && m_cooling_description_line)
// m_cooling_description_line->SetText(from_u8(PresetHints::cooling_description(m_presets->get_edited_preset())));
@ -4348,15 +4420,16 @@ void TabConfig::toggle_options() {
bool is_BBL_printer = false;
if (m_preset_bundle) {
is_BBL_printer =
m_preset_bundle->configs.get_edited_preset().is_bbl_vendor_preset(
m_preset_bundle);
is_BBL_printer = m_preset_bundle->configs.get_edited_preset().is_bbl_vendor_preset(m_preset_bundle);
}
if (m_active_page->title() == "Quality") {
/* const Preset& preset = m_preset_bundle->configs.get_edited_preset();
bool is_BBL = preset.is_system;*/
//if (m_active_page->title() == "Quality") {
//toggle_line("printable_area", !is_configed_by_BBL);//all printer can entry and view data
//toggle_option("single_extruder_multi_material", have_multiple_extruders);
//BBS: gcode_flavore of BBL printer can't be edited and changed
toggle_option("gcode_flavor", !is_BBL_printer);
//toggle_option("gcode_flavor", !is_BBL_printer);
//toggle_option("thumbnail_size", !is_BBL_printer);
//toggle_option("printer_structure", !is_BBL_printer);
//toggle_option("use_relative_e_distances", !is_BBL_printer);
@ -4370,21 +4443,37 @@ void TabConfig::toggle_options() {
////BBS: extruder clearance of BBL printer can't be edited.
//for (auto el : { "extruder_clearance_max_radius", "extruder_clearance_height_to_rod", "extruder_clearance_height_to_lid" })
// toggle_option(el, !is_BBL_printer);
}
//}
if (m_active_page->title() == "Strength") {
//toggle_line("time_lapse_gcode", m_preset_bundle->configs.get_edited_preset().config.opt_enum<PrinterStructure>("printer_structure") == PrinterStructure::psI3);
/* if (m_active_page->title() == "Strength") {
toggle_line("time_lapse_gcode", m_preset_bundle->configs.get_edited_preset().config.opt_enum<PrinterStructure>("printer_structure") == PrinterStructure::psI3);
toggle_option("thumbnail_size", !is_BBL_printer);
}
}*/
}
void TabConfig::update() {
//m_update_cnt++;
//update_description_lines();
////BBS: GUI refactor
////Layout();
//m_parent->Layout();
m_update_cnt++;
update_description_lines();
//BBS: GUI refactor
//Layout();
m_parent->Layout();
toggle_options();
m_update_cnt--;
if (m_update_cnt == 0)
wxGetApp().mainframe->on_config_changed(m_config);
}
void TabConfig::clear_pages() {
Tab::clear_pages();
}
void Tab::update_ui_items_related_on_parent_preset(const Preset* selected_preset_parent)
{
@ -4816,7 +4905,7 @@ bool Tab::select_preset(std::string preset_name, bool delete_current /*=false*/,
if (current_dirty || delete_current || print_tab || printer_tab)
m_preset_bundle->update_compatible(
update_compatible_type(technology_changed, print_tab, (print_tab ? this : wxGetApp().get_tab(Preset::TYPE_PRINT))->m_show_incompatible_presets),
update_compatible_type(technology_changed, false, wxGetApp().get_tab(Preset::TYPE_FILAMENT)->m_show_incompatible_presets));
update_compatible_type(technology_changed, false, wxGetApp().get_tab(Preset::TYPE_FILAMENT)->m_show_incompatible_presets));
// Initialize the UI from the current preset.
if (printer_tab)
static_cast<TabPrinter*>(this)->update_pages();

View File

@ -0,0 +1,336 @@
#include "Button.hpp"
#include "Label.hpp"
#include <wx/dcclient.h>
#include <wx/dcgraph.h>
BEGIN_EVENT_TABLE(Button, StaticBox)
EVT_LEFT_DOWN(Button::mouseDown)
EVT_LEFT_UP(Button::mouseReleased)
EVT_MOUSE_CAPTURE_LOST(Button::mouseCaptureLost)
EVT_KEY_DOWN(Button::keyDownUp)
EVT_KEY_UP(Button::keyDownUp)
// catch paint events
EVT_PAINT(Button::paintEvent)
END_EVENT_TABLE()
/*
* Called by the system of by wxWidgets when the panel needs
* to be redrawn. You can also trigger this call by
* calling Refresh()/Update().
*/
Button::Button()
: paddingSize(10, 8)
{
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(0x009FF3, (int) StateColor::Checked),
std::make_pair(*wxLIGHT_GREY, (int) StateColor::Hovered),
std::make_pair(*wxWHITE, (int) StateColor::Normal));
text_color = StateColor(
std::make_pair(*wxLIGHT_GREY, (int) StateColor::Disabled),
std::make_pair(*wxBLACK, (int) StateColor::Normal));
}
Button::Button(wxWindow* parent, wxString text, wxString icon, long style, int iconSize, wxWindowID btn_id)
: Button()
{
Create(parent, text, icon, style, iconSize, btn_id);
}
bool Button::Create(wxWindow* parent, wxString text, wxString icon, long style, int iconSize, wxWindowID btn_id)
{
StaticBox::Create(parent, btn_id, wxDefaultPosition, wxDefaultSize, style);
state_handler.attach({&text_color});
state_handler.update_binds();
//BBS set default font
SetFont(Label::Body_14);
wxWindow::SetLabel(text);
if (!icon.IsEmpty()) {
//BBS set button icon default size to 20
this->active_icon = ScalableBitmap(this, icon.ToStdString(), iconSize > 0 ? iconSize : 20);
}
messureSize();
return true;
}
void Button::SetLabel(const wxString& label)
{
wxWindow::SetLabel(label);
messureSize();
Refresh();
}
bool Button::SetFont(const wxFont& font)
{
wxWindow::SetFont(font);
messureSize();
Refresh();
return true;
}
void Button::SetIcon(const wxString& icon)
{
if (!icon.IsEmpty()) {
//BBS set button icon default size to 20
this->active_icon = ScalableBitmap(this, icon.ToStdString(), this->active_icon.px_cnt());
}
else
{
this->active_icon = ScalableBitmap();
}
Refresh();
}
void Button::SetInactiveIcon(const wxString &icon)
{
if (!icon.IsEmpty()) {
// BBS set button icon default size to 20
this->inactive_icon = ScalableBitmap(this, icon.ToStdString(), this->active_icon.px_cnt());
} else {
this->inactive_icon = ScalableBitmap();
}
Refresh();
}
void Button::SetMinSize(const wxSize& size)
{
minSize = size;
messureSize();
}
void Button::SetPaddingSize(const wxSize& size)
{
paddingSize = size;
messureSize();
}
void Button::SetTextColor(StateColor const& color)
{
text_color = color;
state_handler.update_binds();
Refresh();
}
void Button::SetTextColorNormal(wxColor const &color)
{
text_color.setColorForStates(color, 0);
Refresh();
}
bool Button::Enable(bool enable)
{
bool result = wxWindow::Enable(enable);
if (result) {
wxCommandEvent e(EVT_ENABLE_CHANGED);
e.SetEventObject(this);
GetEventHandler()->ProcessEvent(e);
}
return result;
}
void Button::SetCanFocus(bool canFocus) { this->canFocus = canFocus; }
void Button::SetValue(bool state)
{
if (GetValue() == state) return;
state_handler.set_state(state ? StateHandler::Checked : 0, StateHandler::Checked);
}
bool Button::GetValue() const { return state_handler.states() & StateHandler::Checked; }
void Button::SetCenter(bool isCenter)
{
this->isCenter = isCenter;
}
void Button::Rescale()
{
if (this->active_icon.bmp().IsOk())
this->active_icon.msw_rescale();
if (this->inactive_icon.bmp().IsOk())
this->inactive_icon.msw_rescale();
messureSize();
}
void Button::paintEvent(wxPaintEvent& evt)
{
// depending on your system you may need to look at double-buffered dcs
wxPaintDC dc(this);
render(dc);
}
/*
* Here we do the actual rendering. I put it in a separate
* method so that it can work no matter what type of DC
* (e.g. wxPaintDC or wxClientDC) is used.
*/
void Button::render(wxDC& dc)
{
StaticBox::render(dc);
int states = state_handler.states();
wxSize size = GetSize();
dc.SetBrush(*wxTRANSPARENT_BRUSH);
// calc content size
wxSize szIcon;
wxSize szContent = textSize.GetSize();
ScalableBitmap icon;
if (m_selected || ((states & (int)StateColor::State::Hovered) != 0))
icon = active_icon;
else
icon = inactive_icon;
int padding = 5;
if (icon.bmp().IsOk()) {
if (szContent.y > 0) {
//BBS norrow size between text and icon
szContent.x += padding;
}
szIcon = icon.GetBmpSize();
szContent.x += szIcon.x;
if (szIcon.y > szContent.y)
szContent.y = szIcon.y;
if (szContent.x > size.x) {
int d = std::min(padding, szContent.x - size.x);
padding -= d;
szContent.x -= d;
}
}
// move to center
wxRect rcContent = { {0, 0}, size };
if (isCenter) {
wxSize offset = (size - szContent) / 2;
if (offset.x < 0) offset.x = 0;
rcContent.Deflate(offset.x, offset.y);
}
// start draw
wxPoint pt = rcContent.GetLeftTop();
if (icon.bmp().IsOk()) {
pt.y += (rcContent.height - szIcon.y) / 2;
dc.DrawBitmap(icon.bmp(), pt);
//BBS norrow size between text and icon
pt.x += szIcon.x + padding;
pt.y = rcContent.y;
}
auto text = GetLabel();
if (!text.IsEmpty()) {
if (pt.x + textSize.width > size.x)
text = wxControl::Ellipsize(text, dc, wxELLIPSIZE_END, size.x - pt.x);
pt.y += (rcContent.height - textSize.height) / 2;
dc.SetTextForeground(text_color.colorForStates(states));
#if 0
dc.SetBrush(*wxLIGHT_GREY);
dc.SetPen(wxPen(*wxLIGHT_GREY));
dc.DrawRectangle(pt, textSize.GetSize());
#endif
#ifdef __WXOSX__
pt.y -= textSize.x / 2;
#endif
dc.DrawText(text, pt);
}
}
void Button::messureSize()
{
wxClientDC dc(this);
dc.GetTextExtent(GetLabel(), &textSize.width, &textSize.height, &textSize.x, &textSize.y);
wxSize szContent = textSize.GetSize();
if (this->active_icon.bmp().IsOk()) {
if (szContent.y > 0) {
//BBS norrow size between text and icon
szContent.x += 5;
}
wxSize szIcon = this->active_icon.GetBmpSize();
szContent.x += szIcon.x;
if (szIcon.y > szContent.y)
szContent.y = szIcon.y;
}
wxSize size = szContent + paddingSize * 2;
if (minSize.GetHeight() > 0)
size.SetHeight(minSize.GetHeight());
if (minSize.GetWidth() > size.GetWidth())
wxWindow::SetMinSize(minSize);
else
wxWindow::SetMinSize(size);
}
void Button::mouseDown(wxMouseEvent& event)
{
event.Skip();
pressedDown = true;
if (canFocus)
SetFocus();
if (!HasCapture())
CaptureMouse();
}
void Button::mouseReleased(wxMouseEvent& event)
{
event.Skip();
if (pressedDown) {
pressedDown = false;
if (HasCapture())
ReleaseMouse();
if (wxRect({0, 0}, GetSize()).Contains(event.GetPosition()))
sendButtonEvent();
}
}
void Button::mouseCaptureLost(wxMouseCaptureLostEvent &event)
{
wxMouseEvent evt;
mouseReleased(evt);
}
void Button::keyDownUp(wxKeyEvent &event)
{
if (event.GetKeyCode() == WXK_SPACE || event.GetKeyCode() == WXK_RETURN) {
wxMouseEvent evt(event.GetEventType() == wxEVT_KEY_UP ? wxEVT_LEFT_UP : wxEVT_LEFT_DOWN);
event.SetEventObject(this);
GetEventHandler()->ProcessEvent(evt);
return;
}
if (event.GetEventType() == wxEVT_KEY_DOWN &&
(event.GetKeyCode() == WXK_TAB || event.GetKeyCode() == WXK_LEFT || event.GetKeyCode() == WXK_RIGHT
|| event.GetKeyCode() == WXK_UP || event.GetKeyCode() == WXK_DOWN))
HandleAsNavigationKey(event);
else
event.Skip();
}
void Button::sendButtonEvent()
{
wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, GetId());
event.SetEventObject(this);
GetEventHandler()->ProcessEvent(event);
}
#ifdef __WIN32__
WXLRESULT Button::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
{
if (nMsg == WM_GETDLGCODE) { return DLGC_WANTMESSAGE; }
if (nMsg == WM_KEYDOWN) {
wxKeyEvent event(CreateKeyEvent(wxEVT_KEY_DOWN, wParam, lParam));
switch (wParam) {
case WXK_RETURN: { // WXK_RETURN key is handled by default button
GetEventHandler()->ProcessEvent(event);
return 0;
}
}
}
return wxWindow::MSWWindowProc(nMsg, wParam, lParam);
}
#endif
bool Button::AcceptsFocus() const { return canFocus; }

View File

@ -0,0 +1,157 @@
#include "SwitchButton.hpp"
#include "Label.hpp"
#include "StaticBox.hpp"
#include "../wxExtensions.hpp"
#include "../Utils/MacDarkMode.hpp"
#include <wx/dcclient.h>
#include <wx/dcgraph.h>
#include <wx/dcmemory.h>
SwitchButton::SwitchButton(wxWindow* parent, wxWindowID id)
: wxBitmapToggleButton(parent, id, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE | wxBU_EXACTFIT)
, m_on(this, "toggle_on", 16)
, 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{0x009FF3, (int) StateColor::Checked}, std::pair{0xD9D9D9, (int) StateColor::Normal})
{
SetBackgroundColour(StaticBox::GetParentBackgroundColor(parent));
Bind(wxEVT_TOGGLEBUTTON, [this](auto& e) { update(); e.Skip(); });
SetFont(Label::Body_12);
Rescale();
}
void SwitchButton::SetLabels(wxString const& lbl_on, wxString const& lbl_off)
{
labels[0] = lbl_on;
labels[1] = lbl_off;
Rescale();
}
void SwitchButton::SetTextColor(StateColor const& color)
{
text_color = color;
}
void SwitchButton::SetTextColor2(StateColor const &color)
{
text_color2 = color;
}
void SwitchButton::SetTrackColor(StateColor const& color)
{
track_color = color;
}
void SwitchButton::SetThumbColor(StateColor const& color)
{
thumb_color = color;
}
void SwitchButton::SetValue(bool value)
{
if (value != GetValue())
wxBitmapToggleButton::SetValue(value);
update();
}
void SwitchButton::Rescale()
{
if (labels[0].IsEmpty()) {
m_on.msw_rescale();
m_off.msw_rescale();
}
else {
SetBackgroundColour(StaticBox::GetParentBackgroundColor(GetParent()));
#ifdef __WXOSX__
auto scale = Slic3r::GUI::mac_max_scaling_factor();
int BS = (int) scale;
#else
constexpr int BS = 1;
#endif
wxSize thumbSize;
wxSize trackSize;
wxClientDC dc(this);
#ifdef __WXOSX__
dc.SetFont(dc.GetFont().Scaled(scale));
#endif
wxSize textSize[2];
{
textSize[0] = dc.GetTextExtent(labels[0]);
textSize[1] = dc.GetTextExtent(labels[1]);
}
float fontScale = 0;
{
thumbSize = textSize[0];
auto size = textSize[1];
if (size.x > thumbSize.x) thumbSize.x = size.x;
else size.x = thumbSize.x;
thumbSize.x += BS * 12;
thumbSize.y += BS * 6;
trackSize.x = thumbSize.x + size.x + BS * 10;
trackSize.y = thumbSize.y + BS * 2;
auto maxWidth = GetMaxWidth();
#ifdef __WXOSX__
maxWidth *= scale;
#endif
if (trackSize.x > maxWidth) {
fontScale = float(maxWidth) / trackSize.x;
thumbSize.x -= (trackSize.x - maxWidth) / 2;
trackSize.x = maxWidth;
}
}
for (int i = 0; i < 2; ++i) {
wxMemoryDC memdc(&dc);
#ifdef __WXMSW__
wxBitmap bmp(trackSize.x, trackSize.y);
memdc.SelectObject(bmp);
memdc.SetBackground(wxBrush(GetBackgroundColour()));
memdc.Clear();
#else
wxImage image(trackSize);
image.InitAlpha();
memset(image.GetAlpha(), 0, trackSize.GetWidth() * trackSize.GetHeight());
wxBitmap bmp(std::move(image));
memdc.SelectObject(bmp);
#endif
memdc.SetFont(dc.GetFont());
if (fontScale) {
memdc.SetFont(dc.GetFont().Scaled(fontScale));
textSize[0] = memdc.GetTextExtent(labels[0]);
textSize[1] = memdc.GetTextExtent(labels[1]);
}
auto state = i == 0 ? StateColor::Enabled : (StateColor::Checked | StateColor::Enabled);
{
#ifdef __WXMSW__
wxGCDC dc2(memdc);
#else
wxDC &dc2(memdc);
#endif
dc2.SetBrush(wxBrush(track_color.colorForStates(state)));
dc2.SetPen(wxPen(track_color.colorForStates(state)));
dc2.DrawRoundedRectangle(wxRect({0, 0}, trackSize), trackSize.y / 2);
dc2.SetBrush(wxBrush(thumb_color.colorForStates(StateColor::Checked | StateColor::Enabled)));
dc2.SetPen(wxPen(thumb_color.colorForStates(StateColor::Checked | StateColor::Enabled)));
dc2.DrawRoundedRectangle(wxRect({ i == 0 ? BS : (trackSize.x - thumbSize.x - BS), BS}, thumbSize), thumbSize.y / 2);
}
memdc.SetTextForeground(text_color.colorForStates(state ^ StateColor::Checked));
memdc.DrawText(labels[0], {BS + (thumbSize.x - textSize[0].x) / 2, BS + (thumbSize.y - textSize[0].y) / 2});
memdc.SetTextForeground(text_color2.count() == 0 ? text_color.colorForStates(state) : text_color2.colorForStates(state));
memdc.DrawText(labels[1], {trackSize.x - thumbSize.x - BS + (thumbSize.x - textSize[1].x) / 2, BS + (thumbSize.y - textSize[1].y) / 2});
memdc.SelectObject(wxNullBitmap);
#ifdef __WXOSX__
bmp = wxBitmap(bmp.ConvertToImage(), -1, scale);
#endif
(i == 0 ? m_off : m_on).bmp() = bmp;
}
}
SetSize(m_on.GetBmpSize());
update();
}
void SwitchButton::update()
{
SetBitmap((GetValue() ? m_on : m_off).bmp());
}