ENH:refactoring the modules of amscontrol

JIRA:[amscontrol 2.0]

Change-Id: Ica66500506cfe89f2eac3ae0a58fb7ff30d1da9a
This commit is contained in:
tao wang 2024-07-05 17:06:56 +08:00 committed by lane.wei
parent 3167e34e60
commit b78fa4c11c
19 changed files with 5860 additions and 1319 deletions

View File

@ -0,0 +1,10 @@
<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_16544_39500)">
<path d="M9.10925 1.25195V3.25195C9.10925 3.66758 8.77488 4.00195 8.35925 4.00195C7.94363 4.00195 7.60925 3.66758 7.60925 3.25195V1.25195C7.60925 0.836328 7.94363 0.501953 8.35925 0.501953C8.77488 0.501953 9.10925 0.836328 9.10925 1.25195ZM14.0155 3.90508L12.5999 5.3207C12.3061 5.61445 11.8311 5.61445 11.5405 5.3207C11.2499 5.02695 11.2468 4.55195 11.5405 4.26133L12.9561 2.8457C13.2499 2.55195 13.7249 2.55195 14.0155 2.8457C14.3061 3.13945 14.3093 3.61445 14.0155 3.90508ZM3.76238 2.8457L5.178 4.26133C5.47175 4.55508 5.47175 5.03008 5.178 5.3207C4.88425 5.61133 4.40925 5.61445 4.11863 5.3207L2.703 3.90508C2.40925 3.61133 2.40925 3.13633 2.703 2.8457C2.99675 2.55508 3.47175 2.55195 3.76238 2.8457ZM1.10925 7.75195H3.10925C3.52488 7.75195 3.85925 8.08633 3.85925 8.50195C3.85925 8.91758 3.52488 9.25195 3.10925 9.25195H1.10925C0.693628 9.25195 0.359253 8.91758 0.359253 8.50195C0.359253 8.08633 0.693628 7.75195 1.10925 7.75195ZM13.6093 7.75195H15.6093C16.0249 7.75195 16.3593 8.08633 16.3593 8.50195C16.3593 8.91758 16.0249 9.25195 15.6093 9.25195H13.6093C13.1936 9.25195 12.8593 8.91758 12.8593 8.50195C12.8593 8.08633 13.1936 7.75195 13.6093 7.75195ZM5.178 12.7457L3.76238 14.1582C3.46863 14.452 2.99363 14.452 2.703 14.1582C2.41238 13.8645 2.40925 13.3895 2.703 13.0988L4.11863 11.6832C4.41238 11.3895 4.88738 11.3895 5.178 11.6832C5.46863 11.977 5.47175 12.452 5.178 12.7426V12.7457ZM12.603 11.6863L14.0155 13.0988C14.3093 13.3926 14.3093 13.8676 14.0155 14.1582C13.7218 14.4488 13.2468 14.452 12.9561 14.1582L11.5405 12.7426C11.2468 12.4488 11.2468 11.9738 11.5405 11.6832C11.8343 11.3926 12.3093 11.3895 12.5999 11.6832L12.603 11.6863ZM9.10925 13.752V15.752C9.10925 16.1676 8.77488 16.502 8.35925 16.502C7.94363 16.502 7.60925 16.1676 7.60925 15.752V13.752C7.60925 13.3363 7.94363 13.002 8.35925 13.002C8.77488 13.002 9.10925 13.3363 9.10925 13.752ZM10.3593 8.50195C10.3593 7.97152 10.1485 7.46281 9.77347 7.08774C9.39839 6.71267 8.88969 6.50195 8.35925 6.50195C7.82882 6.50195 7.32011 6.71267 6.94504 7.08774C6.56997 7.46281 6.35925 7.97152 6.35925 8.50195C6.35925 9.03239 6.56997 9.54109 6.94504 9.91617C7.32011 10.2912 7.82882 10.502 8.35925 10.502C8.88969 10.502 9.39839 10.2912 9.77347 9.91617C10.1485 9.54109 10.3593 9.03239 10.3593 8.50195ZM4.85925 8.50195C4.85925 7.5737 5.228 6.68346 5.88438 6.02708C6.54076 5.3707 7.43099 5.00195 8.35925 5.00195C9.28751 5.00195 10.1777 5.3707 10.8341 6.02708C11.4905 6.68346 11.8593 7.5737 11.8593 8.50195C11.8593 9.43021 11.4905 10.3204 10.8341 10.9768C10.1777 11.6332 9.28751 12.002 8.35925 12.002C7.43099 12.002 6.54076 11.6332 5.88438 10.9768C5.228 10.3204 4.85925 9.43021 4.85925 8.50195Z" fill="#323A3D"/>
</g>
<defs>
<clipPath id="clip0_16544_39500">
<rect width="16" height="16" fill="white" transform="translate(0.359131 0.501953)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,5 @@
<svg width="27" height="26" viewBox="0 0 27 26" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M25.5392 5.44511L14.3271 1.08594L3.87256 5.44511M25.5392 5.44511L14.3271 11.4578M25.5392 5.44511V9.83594M14.3271 11.4578L3.87256 5.44511M14.3271 11.4578V14.8359M3.87256 5.44511V18.9736L14.3271 24.8359M14.3271 24.8359L25.5392 18.9736V9.83594M14.3271 24.8359V14.8359M14.3271 14.8359L25.5392 9.83594" stroke="#323A3D" stroke-linecap="round"/>
<ellipse cx="4.4974" cy="12.5436" rx="2.70833" ry="3.54167" stroke="#00AE42"/>
<ellipse cx="3.2474" cy="12.5436" rx="2.70833" ry="3.54167" fill="white" stroke="#00AE42"/>
</svg>

After

Width:  |  Height:  |  Size: 623 B

View File

@ -0,0 +1,3 @@
<svg width="17" height="25" viewBox="0 0 17 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.9106 0.0214844H0.910583V24.0215H16.9106V0.0214844ZM8.91058 5.02148C7.25373 5.02148 5.91058 6.36463 5.91058 8.02148V14.0215C5.91058 15.6783 7.25373 17.0215 8.91058 17.0215C10.5674 17.0215 11.9106 15.6783 11.9106 14.0215V8.02148C11.9106 6.36463 10.5674 5.02148 8.91058 5.02148Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 448 B

View File

@ -0,0 +1,7 @@
<svg width="99" height="101" viewBox="0 0 99 101" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M97.2412 19.5068L51.022 1.53711L7.92566 19.5068M97.2412 19.5068L51.022 44.2925M97.2412 19.5068V37.6069M51.022 44.2925L7.92566 19.5068M51.022 44.2925V58.2182M7.92566 19.5068V75.2747L51.022 99.4407M51.022 99.4407L97.2412 75.2747V37.6069M51.022 99.4407V58.2182M51.022 58.2182L97.2412 37.6069" stroke="#323A3D" stroke-width="2" stroke-linecap="round"/>
<ellipse cx="10.9947" cy="41.3381" rx="6.9975" ry="9.15057" stroke="#00AE42"/>
<ellipse cx="7.76507" cy="41.3381" rx="6.9975" ry="9.15057" fill="white" stroke="#00AE42"/>
<ellipse cx="10.9946" cy="63.3713" rx="6.9975" ry="9.15057" stroke="#909090"/>
<ellipse cx="7.76495" cy="63.3713" rx="6.9975" ry="9.15057" fill="white" stroke="#909090"/>
</svg>

After

Width:  |  Height:  |  Size: 805 B

View File

@ -0,0 +1,4 @@
<svg width="44" height="25" viewBox="0 0 44 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.5 12.7871H29.5V15.0488C29.5 16.7057 28.1569 18.0488 26.5 18.0488C24.8431 18.0488 23.5 16.7057 23.5 15.0488V12.7871H20.5V15.0488C20.5 16.7057 19.1569 18.0488 17.5 18.0488C15.8431 18.0488 14.5 16.7057 14.5 15.0488V12.7871H11.5V15.0488C11.5 16.7057 10.1569 18.0488 8.5 18.0488C6.84315 18.0488 5.5 16.7057 5.5 15.0488V12.7871H0V24.7871H44V12.7871H38.5V15.0488C38.5 16.7057 37.1569 18.0488 35.5 18.0488C33.8431 18.0488 32.5 16.7057 32.5 15.0488V12.7871Z" fill="#CECECE"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M2 5.97093C2 3.10799 4.32088 0.787109 7.18382 0.787109H36.8162C39.6791 0.787109 42 3.10799 42 5.97093V12.7871H38.5V9.04883C38.5 7.39197 37.1569 6.04883 35.5 6.04883C33.8431 6.04883 32.5 7.39197 32.5 9.04883V12.7871H29.5V9.04883C29.5 7.39197 28.1569 6.04883 26.5 6.04883C24.8431 6.04883 23.5 7.39197 23.5 9.04883V12.7871H20.5V9.04883C20.5 7.39197 19.1569 6.04883 17.5 6.04883C15.8431 6.04883 14.5 7.39197 14.5 9.04883V12.7871H11.5V9.04883C11.5 7.39197 10.1569 6.04883 8.5 6.04883C6.84315 6.04883 5.5 7.39197 5.5 9.04883V12.7871H2V5.97093Z" fill="#EEEEEE"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,16 @@
<svg width="14" height="37" viewBox="0 0 14 37" fill="none" xmlns="http://www.w3.org/2000/svg">
<ellipse cx="3.76332" cy="0.530725" rx="3.76332" ry="0.530725" transform="matrix(-1 0 0 1 11.7084 4.24609)" fill="#6F6F6F"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.12828 0H10.4539V4.63809V4.6386H10.4539C10.4513 4.78906 9.26009 4.91095 7.7911 4.91095C6.3221 4.91095 5.13094 4.78906 5.12828 4.6386H5.12828V4.63809V0Z" fill="#C7C7C7"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.42848 4.59961H13.381V26.1824H0.83657V7.19152C0.83657 5.76005 1.99701 4.59961 3.42848 4.59961ZM7.94506 22.1618C5.63569 22.1618 3.76359 20.2897 3.76359 17.9803C3.76359 15.6709 5.63569 13.7988 7.94506 13.7988C10.2544 13.7988 12.1265 15.6709 12.1265 17.9803C12.1265 20.2897 10.2544 22.1618 7.94506 22.1618Z" fill="#B9B9B9"/>
<rect width="3.76332" height="3.89198" rx="1.88166" transform="matrix(-1 0 0 1 9.6178 0.707031)" fill="#AAAAAA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.381 6.28872C10.0637 6.28872 7.60823 7.10403 6.79517 7.51168L3.86814 5.58989C3.54291 5.47342 2.79489 5.31036 2.40462 5.58989C2.01435 5.86942 2.0794 6.40519 2.1607 6.63814L3.86814 8.55993V13.4518L1.91678 14.8494L1.67286 22.0124V23.4101V24.4584C2.32332 24.4584 3.673 24.5282 3.86814 24.8078C4.06327 25.0873 3.94944 25.3901 3.86814 25.5066H5.81949V24.9825H13.381V6.28872ZM7.94506 22.1618C5.63569 22.1618 3.76359 20.2897 3.76359 17.9803C3.76359 15.6709 5.63569 13.7988 7.94506 13.7988C10.2544 13.7988 12.1265 15.6709 12.1265 17.9803C12.1265 20.2897 10.2544 22.1618 7.94506 22.1618Z" fill="#DDDDDD"/>
<path d="M11.7086 10.4368V7.7832L7.52715 8.84465L9.74087 10.9676L11.7086 10.4368Z" fill="#818181"/>
<path d="M8.78137 11.2287L6.52338 9.55273H6.27249V12.7371H6.77427L8.78137 11.2287Z" fill="#818181"/>
<rect width="7.52665" height="4.59962" rx="1.03676" transform="matrix(-1 0 0 1 12.5446 29.3672)" fill="#5F5F5F"/>
<rect width="3.76332" height="9.19924" transform="matrix(-1 0 0 1 6.27258 26.1816)" fill="#696969"/>
<rect width="5.85406" height="3.53817" transform="matrix(-1 0 0 1 11.7086 25.8281)" fill="#919191"/>
<path d="M11.7086 35.7359V33.9668H6.27271V35.7359L7.26105 36.4435H10.7203L11.7086 35.7359Z" fill="#6C6C6C"/>
<path d="M9.30419 36.7972L9.6178 36.4434H8.36336L8.67697 36.7972H9.30419Z" fill="#CFCFCF"/>
<rect width="3.76332" height="9.90687" rx="1.03676" transform="matrix(-1 0 0 1 3.76379 26.1816)" fill="#797979"/>
<path d="M4.28197 17.9803C4.28197 20.0034 5.92199 21.6434 7.94506 21.6434C9.96812 21.6434 11.6081 20.0034 11.6081 17.9803C11.6081 15.9572 9.96812 14.3172 7.94506 14.3172C5.92199 14.3172 4.28197 15.9572 4.28197 17.9803Z" stroke="#00AE42" stroke-width="1.03676"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1,16 @@
<svg width="15" height="38" viewBox="0 0 15 38" fill="none" xmlns="http://www.w3.org/2000/svg">
<ellipse cx="6.13826" cy="5.07369" rx="3.76332" ry="0.530725" fill="#6F6F6F"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.95504 0.296875H3.62939V4.93497V4.93547H3.6294C3.63205 5.08594 4.82322 5.20783 6.29222 5.20783C7.76121 5.20783 8.95238 5.08594 8.95503 4.93547H8.95504V4.93497V0.296875Z" fill="#C7C7C7"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.6548 4.89648H0.702332V26.4793H13.2467V7.4884C13.2467 6.05692 12.0863 4.89648 10.6548 4.89648ZM6.13826 22.4586C8.44762 22.4586 10.3197 20.5865 10.3197 18.2772C10.3197 15.9678 8.44762 14.0957 6.13826 14.0957C3.8289 14.0957 1.95679 15.9678 1.95679 18.2772C1.95679 20.5865 3.8289 22.4586 6.13826 22.4586Z" fill="#B9B9B9"/>
<rect x="4.46552" y="1.00391" width="3.76332" height="3.89198" rx="1.88166" fill="#AAAAAA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.702332 6.5856C4.01963 6.5856 6.47508 7.4009 7.28815 7.80855L10.2152 5.88677C10.5404 5.77029 11.2884 5.60723 11.6787 5.88677C12.069 6.1663 12.0039 6.70207 11.9226 6.93501L10.2152 8.8568V13.7486L12.1665 15.1463L12.4104 22.3093V23.707V24.7552C11.76 24.7552 10.4103 24.8251 10.2152 25.1046C10.02 25.3842 10.1339 25.687 10.2152 25.8035H8.26382V25.2794H0.702332V6.5856ZM6.13826 22.4586C8.44762 22.4586 10.3197 20.5865 10.3197 18.2772C10.3197 15.9678 8.44762 14.0957 6.13826 14.0957C3.8289 14.0957 1.95679 15.9678 1.95679 18.2772C1.95679 20.5865 3.8289 22.4586 6.13826 22.4586Z" fill="#DDDDDD"/>
<path d="M2.37469 10.7337V8.08008L6.55616 9.14153L4.34245 11.2644L2.37469 10.7337Z" fill="#818181"/>
<path d="M5.30194 11.5256L7.55993 9.84961H7.81082V13.034H7.30905L5.30194 11.5256Z" fill="#818181"/>
<rect x="1.53876" y="29.6641" width="7.52665" height="4.59962" rx="1.03676" fill="#5F5F5F"/>
<rect x="7.81073" y="26.4785" width="3.76332" height="9.19924" fill="#696969"/>
<rect x="2.37469" y="26.125" width="5.85406" height="3.53817" fill="#919191"/>
<path d="M2.37469 36.0328V34.2637H7.81061V36.0328L6.82226 36.7404H3.36304L2.37469 36.0328Z" fill="#6C6C6C"/>
<path d="M4.77913 37.0941L4.46552 36.7402H5.71996L5.40635 37.0941H4.77913Z" fill="#CFCFCF"/>
<rect x="10.3195" y="26.4785" width="3.76332" height="9.90687" rx="1.03676" fill="#797979"/>
<path d="M9.80135 18.2772C9.80135 20.3002 8.16132 21.9403 6.13826 21.9403C4.11519 21.9403 2.47517 20.3002 2.47517 18.2772C2.47517 16.2541 4.11519 14.6141 6.13826 14.6141C8.16132 14.6141 9.80135 16.2541 9.80135 18.2772Z" stroke="#00AE42" stroke-width="1.03676"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,14 @@
<svg width="19" height="37" viewBox="0 0 19 37" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="11.2701" y="27.3223" width="5.68421" height="8.52632" fill="#404040"/>
<rect width="5.68421" height="8.52632" transform="matrix(-1 0 0 1 7.48071 27.3223)" fill="#404040"/>
<rect x="14.1122" y="26.8496" width="4.26316" height="9.94737" rx="2" fill="#515151"/>
<rect width="4.26316" height="9.94737" rx="2" transform="matrix(-1 0 0 1 4.63861 26.8496)" fill="#515151"/>
<path d="M6.53333 35.1722V33.4805H12.6912V35.1722L11.5716 35.8489H7.65294L6.53333 35.1722Z" fill="#333333"/>
<path d="M9.257 36.3233L8.90173 35.8496H10.3228L9.96752 36.3233H9.257Z" fill="#CFCFCF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.37543 5.5332C1.71857 5.5332 0.375427 6.87635 0.375427 8.5332V25.7437C0.375427 27.4006 1.71857 28.7437 3.37543 28.7437H15.3754C17.0323 28.7437 18.3754 27.4006 18.3754 25.7437V8.5332C18.3754 6.87635 17.0323 5.5332 15.3754 5.5332H3.37543ZM11.2702 19.2714C13.6247 19.2714 15.5333 17.4687 15.5333 15.2451C15.5333 13.0214 13.6247 11.2188 11.2702 11.2188C8.9157 11.2188 7.00702 13.0214 7.00702 15.2451C7.00702 17.4687 8.9157 19.2714 11.2702 19.2714Z" fill="#D9D9D9"/>
<path d="M11.2702 20.2714C14.1223 20.2714 16.5333 18.0741 16.5333 15.2451C16.5333 12.416 14.1223 10.2188 11.2702 10.2188C8.41804 10.2188 6.00702 12.416 6.00702 15.2451C6.00702 18.0741 8.41804 20.2714 11.2702 20.2714Z" stroke="#00AE42" stroke-width="2"/>
<rect x="5.11224" y="28.7441" width="8.52632" height="4.73684" fill="#1D1C1C"/>
<ellipse cx="9.3754" cy="6.20864" rx="4.26316" ry="0.601214" fill="#383938"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.5663 0.796875H6.53333V6.05156L6.53346 6.05156C6.53346 6.22227 7.88399 6.36066 9.54995 6.36066C11.2159 6.36066 12.5664 6.22227 12.5664 6.05156C12.5664 6.05057 12.5664 6.04958 12.5663 6.04859V0.796875Z" fill="#9C9C9C"/>
<rect x="7.48071" y="1.59766" width="4.26316" height="4.40891" rx="2.13158" fill="#848484"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,4 @@
<svg width="20" height="25" viewBox="0 0 20 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7 12.7871H0V24.7871H20V12.7871H13V15.0488C13 16.7057 11.6569 18.0488 10 18.0488C8.34315 18.0488 7 16.7057 7 15.0488V12.7871Z" fill="#CECECE"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.18382 0.787109C4.32088 0.787109 2 3.10799 2 5.97093V12.7871H7V9.04883C7 7.39197 8.34315 6.04883 10 6.04883C11.6569 6.04883 13 7.39197 13 9.04883V12.7871H18V5.97093C18 3.10799 15.6791 0.787109 12.8162 0.787109H7.18382Z" fill="#EEEEEE"/>
</svg>

After

Width:  |  Height:  |  Size: 584 B

View File

@ -58,6 +58,8 @@ set(SLIC3R_GUI_SOURCES
GUI/Widgets/TempInput.hpp
GUI/Widgets/AMSControl.cpp
GUI/Widgets/AMSControl.hpp
GUI/Widgets/AMSItem.cpp
GUI/Widgets/AMSItem.hpp
GUI/Widgets/FanControl.cpp
GUI/Widgets/FanControl.hpp
GUI/Widgets/Scrollbar.cpp

View File

@ -584,9 +584,10 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
}
else {
//todo
tar_tray = 0;
}
obj->command_ams_filament_settings(255, tar_tray, ams_filament_id, ams_setting_id, std::string(col_buf), m_filament_type, nozzle_temp_min_int, nozzle_temp_max_int);
obj->command_ams_filament_settings(ams_id, tar_tray, ams_filament_id, ams_setting_id, std::string(col_buf), m_filament_type, nozzle_temp_min_int, nozzle_temp_max_int);
}
else {
obj->command_ams_filament_settings(ams_id, tray_id, ams_filament_id, ams_setting_id, std::string(col_buf), m_filament_type, nozzle_temp_min_int, nozzle_temp_max_int);

View File

@ -626,12 +626,12 @@ void CalibrationPresetPage::create_filament_list_panel(wxWindow* parent)
auto ams_items_sizer = new wxBoxSizer(wxHORIZONTAL);
for (int i = 0; i < 4; i++) {
AMSinfo temp_info = AMSinfo{ std::to_string(i), std::vector<Caninfo>{} };
auto amsitem = new AMSItem(m_multi_ams_panel, wxID_ANY, temp_info);
auto amsitem = new AMSPreview(m_multi_ams_panel, wxID_ANY, temp_info);
amsitem->Bind(wxEVT_LEFT_DOWN, [this, amsitem](wxMouseEvent& e) {
on_switch_ams(amsitem->m_amsinfo.ams_id);
e.Skip();
});
m_ams_item_list.push_back(amsitem);
m_ams_preview_list.push_back(amsitem);
ams_items_sizer->Add(amsitem, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(6));
}
multi_ams_sizer->Add(ams_items_sizer, 0);
@ -914,8 +914,8 @@ void CalibrationPresetPage::on_select_tray(wxCommandEvent& event)
void CalibrationPresetPage::on_switch_ams(std::string ams_id)
{
for (auto i = 0; i < m_ams_item_list.size(); i++) {
AMSItem* item = m_ams_item_list[i];
for (auto i = 0; i < m_ams_preview_list.size(); i++) {
AMSPreview* item = m_ams_preview_list[i];
if (item->m_amsinfo.ams_id == ams_id) {
item->OnSelected();
}
@ -1711,8 +1711,8 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj)
}
}
for (auto i = 0; i < m_ams_item_list.size(); i++) {
AMSItem* item = m_ams_item_list[i];
for (auto i = 0; i < m_ams_preview_list.size(); i++) {
AMSPreview* item = m_ams_preview_list[i];
if (ams_info.size() > 1) {
if (i < ams_info.size()) {
item->Update(ams_info[i]);

View File

@ -293,7 +293,7 @@ protected:
FilamentComboBox* m_virtual_tray_comboBox;
std::vector<AMSItem*> m_ams_item_list;
std::vector<AMSPreview*> m_ams_preview_list;
// for update filament combobox, key : tray_id
std::map<int, DynamicPrintConfig> filament_ams_list;

View File

@ -851,6 +851,9 @@ StatusBasePanel::StatusBasePanel(wxWindow *parent, wxWindowID id, const wxPoint
: wxScrolledWindow(parent, id, pos, size, wxHSCROLL | wxVSCROLL)
{
this->SetScrollRate(5, 5);
Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
if (!dev) return;
obj = dev->get_selected_machine();
init_bitmaps();
@ -1155,7 +1158,7 @@ wxBoxSizer *StatusBasePanel::create_temp_axis_group(wxWindow *parent)
content_sizer->Add(extruder_sizer, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(12));
box->SetSizer(content_sizer);
sizer->Add(box, 0, wxEXPAND | wxALL, FromDIP(9));
sizer->Add(box, 0, wxEXPAND | wxALL, FromDIP(0));
return sizer;
}
@ -1566,7 +1569,7 @@ wxBoxSizer *StatusBasePanel::create_ams_group(wxWindow *parent)
m_ams_control = new AMSControl(m_ams_control_box, wxID_ANY);
//m_ams_control->SetMinSize(wxSize(FromDIP(510), FromDIP(286)));
m_ams_control->SetDoubleBuffered(true);
sizer_box->Add(m_ams_control, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, FromDIP(10));
sizer_box->Add(m_ams_control, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, FromDIP(3));
m_ams_control_box->SetBackgroundColour(*wxWHITE);
m_ams_control_box->SetSizer(sizer_box);
@ -1592,6 +1595,7 @@ void StatusBasePanel::show_ams_group(bool show)
}
}
void StatusPanel::update_camera_state(MachineObject* obj)
{
if (!obj) return;
@ -1752,6 +1756,7 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co
Bind(EVT_AMS_ON_SELECTED, &StatusPanel::on_ams_selected, this);
Bind(EVT_AMS_ON_FILAMENT_EDIT, &StatusPanel::on_filament_edit, this);
Bind(EVT_VAMS_ON_FILAMENT_EDIT, &StatusPanel::on_ext_spool_edit, this);
//Bind(EVT_VAMS_ON_FILAMENT_EDIT, &StatusPanel::on_filament_edit, this);
Bind(EVT_AMS_GUIDE_WIKI, &StatusPanel::on_ams_guide, this);
Bind(EVT_AMS_RETRY, &StatusPanel::on_ams_retry, this);
Bind(EVT_FAN_CHANGED, &StatusPanel::on_fan_changed, this);
@ -2620,14 +2625,37 @@ void StatusPanel::update_ams(MachineObject *obj)
if (m_filament_setting_dlg) m_filament_setting_dlg->update();
std::vector<AMSinfo> ams_info;
ams_info.clear();
for (auto ams = obj->amsList.begin(); ams != obj->amsList.end(); ams++) {
AMSinfo info;
info.ams_id = ams->first;
if (ams->second->is_exists && info.parse_ams_info(obj, ams->second, obj->ams_calibrate_remain_flag, obj->is_support_ams_humidity)) ams_info.push_back(info);
if (ams->second->is_exists && info.parse_ams_info(obj, ams->second, obj->ams_calibrate_remain_flag, obj->is_support_ams_humidity)) {
ams_info.push_back(info);
}
}
std::vector<AMSinfo> ext_info;
ext_info.clear();
for (auto slot : obj->vt_slot) {
AMSinfo info;
info.ReadExtInfo(slot);
ext_info.push_back(info);
}
std::string dev_id = obj->dev_id;
//if (obj->ams_exist_bits != last_ams_exist_bits || obj->tray_exist_bits != last_tray_exist_bits || obj->tray_is_bbl_bits != last_tray_is_bbl_bits ||
// obj->tray_read_done_bits != last_read_done_bits || obj->ams_version != last_ams_version) {
// m_ams_control->UpdateAms(ams_info, false);
// // select current ams
// //if (!obj->m_ams_id.empty()) m_ams_control->SwitchAms(obj->m_ams_id);
// last_tray_exist_bits = obj->tray_exist_bits;
// last_ams_exist_bits = obj->ams_exist_bits;
// last_tray_is_bbl_bits = obj->tray_is_bbl_bits;
// last_read_done_bits = obj->tray_read_done_bits;
// last_ams_version = obj->ams_version;
//}
// must select a current can
m_ams_control->UpdateAms(ams_info, false);
m_ams_control->UpdateAms(ams_info, ext_info, dev_id, false);
last_tray_exist_bits = obj->tray_exist_bits;
last_ams_exist_bits = obj->ams_exist_bits;
@ -3676,9 +3704,17 @@ void StatusPanel::on_filament_edit(wxCommandEvent &event)
if (obj) {
m_filament_setting_dlg->obj = obj;
std::string ams_id = m_ams_control->GetCurentAms();
std::string ams_id;
int ams_id_int = 0;
int tray_id_int = 0;
int tray_id = event.GetInt();
if (tray_id == VIRTUAL_TRAY_MAIN_ID || tray_id == VIRTUAL_TRAY_DEPUTY_ID) {
ams_id = std::to_string(tray_id);
}
else{
ams_id = std::to_string(tray_id / 4);
}
if (ams_id.compare(std::to_string(VIRTUAL_TRAY_MAIN_ID)) == 0) {
tray_id_int = VIRTUAL_TRAY_MAIN_ID;
m_filament_setting_dlg->ams_id = ams_id_int;
@ -3690,10 +3726,10 @@ void StatusPanel::on_filament_edit(wxCommandEvent &event)
m_filament_setting_dlg->Move(wxPoint(current_position_x, current_position_y));
m_filament_setting_dlg->Popup(wxEmptyString, wxEmptyString, wxEmptyString, wxEmptyString, k_val, n_val);
} else {
std::string tray_id = event.GetString().ToStdString(); // m_ams_control->GetCurrentCan(ams_id);
//std::string tray_id = event.GetString().ToStdString(); // m_ams_control->GetCurrentCan(ams_id);
try {
ams_id_int = atoi(ams_id.c_str());
tray_id_int = atoi(tray_id.c_str());
ams_id_int = tray_id / 4;
tray_id_int = tray_id % 4;
m_filament_setting_dlg->ams_id = ams_id_int;
m_filament_setting_dlg->tray_id = tray_id_int;
@ -3703,9 +3739,9 @@ void StatusPanel::on_filament_edit(wxCommandEvent &event)
std::string temp_min;
wxString k_val;
wxString n_val;
auto it = obj->amsList.find(ams_id);
auto it = obj->amsList.find(std::to_string(ams_id_int));
if (it != obj->amsList.end()) {
auto tray_it = it->second->trayList.find(tray_id);
auto tray_it = it->second->trayList.find(std::to_string(tray_id));
if (tray_it != it->second->trayList.end()) {
k_val = wxString::Format("%.3f", tray_it->second->k);
n_val = wxString::Format("%.3f", tray_it->second->n);
@ -3758,7 +3794,10 @@ void StatusPanel::on_ext_spool_edit(wxCommandEvent &event)
current_position_y = current_position_y + m_filament_setting_dlg->GetSize().GetHeight() > drect ? drect - m_filament_setting_dlg->GetSize().GetHeight() : current_position_y;
if (obj) {
int tray_id = event.GetInt();
int ams_id = tray_id / 4;
m_filament_setting_dlg->obj = obj;
m_filament_setting_dlg->ams_id = ams_id;
try {
m_filament_setting_dlg->tray_id = VIRTUAL_TRAY_MAIN_ID;
std::string sn_number;

View File

@ -440,6 +440,7 @@ public:
~StatusBasePanel();
MachineObject* obj{ nullptr };
void init_bitmaps();
wxBoxSizer *create_monitoring_page();
wxBoxSizer *create_machine_control_page(wxWindow *parent);
@ -647,7 +648,6 @@ public:
STATE_COUNT = 4
};
MachineObject *obj {nullptr};
BBLSubTask * last_subtask{nullptr};
std::string last_profile_id;
std::string last_task_id;

File diff suppressed because it is too large Load Diff

View File

@ -5,6 +5,7 @@
#include "StaticBox.hpp"
#include "StepCtrl.hpp"
#include "Button.hpp"
#include "AMSItem.hpp"
#include "../DeviceManager.hpp"
#include "slic3r/GUI/Event.hpp"
#include "slic3r/GUI/AmsMappingPopup.hpp"
@ -13,652 +14,117 @@
#include <wx/animate.h>
#include <wx/dynarray.h>
#define AMS_CONTROL_BRAND_COLOUR wxColour(0, 174, 66)
#define AMS_CONTROL_GRAY700 wxColour(107, 107, 107)
#define AMS_CONTROL_GRAY800 wxColour(50, 58, 61)
#define AMS_CONTROL_GRAY500 wxColour(172, 172, 172)
#define AMS_CONTROL_DISABLE_COLOUR wxColour(206, 206, 206)
#define AMS_CONTROL_DISABLE_TEXT_COLOUR wxColour(144, 144, 144)
#define AMS_CONTROL_WHITE_COLOUR wxColour(255, 255, 255)
#define AMS_CONTROL_BLACK_COLOUR wxColour(0, 0, 0)
#define AMS_CONTROL_DEF_BLOCK_BK_COLOUR wxColour(238, 238, 238)
#define AMS_CONTROL_DEF_LIB_BK_COLOUR wxColour(248, 248, 248)
#define AMS_EXTRUDER_DEF_COLOUR wxColour(234, 234, 234)
#define AMS_CONTROL_MAX_COUNT 4
#define AMS_CONTRO_CALIBRATION_BUTTON_SIZE wxSize(FromDIP(150), FromDIP(28))
// enum AMSRoadMode{
// AMS_ROAD_MODE_LEFT,
// AMS_ROAD_MODE_LEFT_RIGHT,
// AMS_ROAD_MODE_END,
//};
namespace Slic3r { namespace GUI {
enum AMSModel {
NO_AMS = 0,
GENERIC_AMS = 1,
EXTRA_AMS = 2
};
enum ActionButton {
ACTION_BTN_CALI = 0,
ACTION_BTN_LOAD = 1,
ACTION_BTN_UNLOAD = 2,
ACTION_BTN_COUNT = 3
};
enum class AMSRoadMode : int {
AMS_ROAD_MODE_LEFT,
AMS_ROAD_MODE_LEFT_RIGHT,
AMS_ROAD_MODE_END,
AMS_ROAD_MODE_END_ONLY,
AMS_ROAD_MODE_NONE,
AMS_ROAD_MODE_NONE_ANY_ROAD,
AMS_ROAD_MODE_VIRTUAL_TRAY
};
enum class AMSPassRoadMode : int {
AMS_ROAD_MODE_NONE,
AMS_ROAD_MODE_LEFT,
AMS_ROAD_MODE_LEFT_RIGHT,
AMS_ROAD_MODE_END_TOP,
AMS_ROAD_MODE_END_RIGHT,
AMS_ROAD_MODE_END_BOTTOM,
};
enum class AMSAction : int {
AMS_ACTION_NONE,
AMS_ACTION_LOAD,
AMS_ACTION_UNLOAD,
AMS_ACTION_CALI,
AMS_ACTION_PRINTING,
AMS_ACTION_NORMAL,
AMS_ACTION_NOAMS,
};
enum class AMSPassRoadSTEP : int {
AMS_ROAD_STEP_NONE,
AMS_ROAD_STEP_1, // lib -> extrusion
AMS_ROAD_STEP_2, // extrusion->buffer
AMS_ROAD_STEP_3, // extrusion
AMS_ROAD_STEP_COMBO_LOAD_STEP1,
AMS_ROAD_STEP_COMBO_LOAD_STEP2,
AMS_ROAD_STEP_COMBO_LOAD_STEP3,
};
enum class AMSPassRoadType : int {
AMS_ROAD_TYPE_NONE,
AMS_ROAD_TYPE_LOAD,
AMS_ROAD_TYPE_UNLOAD,
};
enum class AMSCanType : int {
AMS_CAN_TYPE_NONE,
AMS_CAN_TYPE_BRAND,
AMS_CAN_TYPE_THIRDBRAND,
AMS_CAN_TYPE_EMPTY,
AMS_CAN_TYPE_VIRTUAL,
};
enum FilamentStep {
STEP_IDLE,
STEP_HEAT_NOZZLE,
STEP_CUT_FILAMENT,
STEP_PULL_CURR_FILAMENT,
STEP_PUSH_NEW_FILAMENT,
STEP_PURGE_OLD_FILAMENT,
STEP_FEED_FILAMENT,
STEP_CONFIRM_EXTRUDED,
STEP_CHECK_POSITION,
STEP_COUNT,
};
enum FilamentStepType {
STEP_TYPE_LOAD = 0,
STEP_TYPE_UNLOAD = 1,
STEP_TYPE_VT_LOAD = 2,
};
#define AMS_ITEM_CUBE_SIZE wxSize(FromDIP(14), FromDIP(14))
#define AMS_ITEM_SIZE wxSize(FromDIP(82), FromDIP(27))
#define AMS_ITEM_HUMIDITY_SIZE wxSize(FromDIP(120), FromDIP(27))
#define AMS_CAN_LIB_SIZE wxSize(FromDIP(58), FromDIP(75))
#define AMS_CAN_ROAD_SIZE wxSize(FromDIP(66), FromDIP(70))
#define AMS_CAN_ITEM_HEIGHT_SIZE FromDIP(27)
#define AMS_CANS_SIZE wxSize(FromDIP(284), FromDIP(196))
#define AMS_CANS_WINDOW_SIZE wxSize(FromDIP(264), FromDIP(196))
#define AMS_STEP_SIZE wxSize(FromDIP(172), FromDIP(196))
#define AMS_REFRESH_SIZE wxSize(FromDIP(30), FromDIP(30))
#define AMS_EXTRUDER_SIZE wxSize(FromDIP(86), FromDIP(72))
#define AMS_EXTRUDER_BITMAP_SIZE wxSize(FromDIP(36), FromDIP(55))
struct Caninfo
{
std::string can_id;
wxString material_name;
wxColour material_colour = {*wxWHITE};
AMSCanType material_state;
int ctype=0;
int material_remain = 100;
int cali_idx = -1;
std::string filament_id;
float k = 0.0f;
float n = 0.0f;
std::vector<wxColour> material_cols;
bool operator==(const Caninfo &other) const
{
return can_id == other.can_id &&
material_name == other.material_name &&
material_colour == other.material_colour &&
material_state == other.material_state &&
ctype == other.ctype &&
material_remain == other.material_remain &&
cali_idx == other.cali_idx &&
filament_id == other.filament_id &&
k == other.k &&
n == other.n &&
material_cols == other.material_cols;
}
};
struct AMSinfo
{
public:
std::string ams_id;
std::vector<Caninfo> cans;
std::string current_can_id;
AMSPassRoadSTEP current_step;
AMSAction current_action;
int curreent_filamentstep;
int ams_humidity = 0;
bool operator==(const AMSinfo &other) const
{
return ams_id == other.ams_id && cans == other.cans &&
current_can_id == other.current_can_id && current_step == other.current_step && current_action == other.current_action &&
curreent_filamentstep == other.curreent_filamentstep && ams_humidity == other.ams_humidity;
}
bool parse_ams_info(MachineObject* obj, Ams *ams, bool remain_flag = false, bool humidity_flag = false);
};
/*************************************************
Description:AMSrefresh
**************************************************/
#define AMS_REFRESH_PLAY_LOADING_TIMER 100
class AMSrefresh : public wxWindow
{
public:
AMSrefresh();
AMSrefresh(wxWindow *parent, wxString number, Caninfo info, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
AMSrefresh(wxWindow *parent, int number, Caninfo info, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
~AMSrefresh();
void PlayLoading();
void StopLoading();
void create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size);
void on_timer(wxTimerEvent &event);
void OnEnterWindow(wxMouseEvent &evt);
void OnLeaveWindow(wxMouseEvent &evt);
void OnClick(wxMouseEvent &evt);
void post_event(wxCommandEvent &&event);
void paintEvent(wxPaintEvent &evt);
void Update(std::string ams_id, Caninfo info);
void msw_rescale();
void set_disable_mode(bool disable) { m_disable_mode = disable; }
Caninfo m_info;
protected:
wxTimer *m_playing_timer= {nullptr};
int m_rotation_angle = 0;
bool m_play_loading = {false};
bool m_selected = {false};
std::string m_ams_id;
std::string m_can_id;
ScalableBitmap m_bitmap_normal;
ScalableBitmap m_bitmap_selected;
ScalableBitmap m_bitmap_ams_rfid_0;
ScalableBitmap m_bitmap_ams_rfid_1;
ScalableBitmap m_bitmap_ams_rfid_2;
ScalableBitmap m_bitmap_ams_rfid_3;
ScalableBitmap m_bitmap_ams_rfid_4;
ScalableBitmap m_bitmap_ams_rfid_5;
ScalableBitmap m_bitmap_ams_rfid_6;
ScalableBitmap m_bitmap_ams_rfid_7;
std::vector<ScalableBitmap> m_rfid_bitmap_list;
wxString m_refresh_id;
wxBoxSizer * m_size_body;
virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
bool m_disable_mode{ false };
};
/*************************************************
Description:AMSextruder
**************************************************/
class AMSextruderImage: public wxWindow
{
public:
void TurnOn(wxColour col);
void TurnOff();
void msw_rescale();
void paintEvent(wxPaintEvent &evt);
void render(wxDC &dc);
bool m_turn_on = {false};
wxColour m_colour;
ScalableBitmap m_ams_extruder;
void doRender(wxDC &dc);
AMSextruderImage(wxWindow *parent, wxWindowID id, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
~AMSextruderImage();
};
class AMSextruder : public wxWindow
{
public:
void TurnOn(wxColour col);
void TurnOff();
void create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size);
void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
void OnAmsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
void msw_rescale();
void has_ams(bool hams) {m_has_vams = hams; Refresh();};
void no_ams_mode(bool mode) {m_none_ams_mode = mode; Refresh();};
bool m_none_ams_mode{true};
bool m_has_vams{false};
bool m_vams_loading{false};
bool m_ams_loading{false};
wxColour m_current_colur;
wxBoxSizer * m_bitmap_sizer{nullptr};
wxPanel * m_bitmap_panel{nullptr};
AMSextruderImage *m_amsSextruder{nullptr};
ScalableBitmap monitor_ams_extruder;
AMSextruder(wxWindow *parent, wxWindowID id, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
~AMSextruder();
};
class AMSVirtualRoad : public wxWindow
{
public:
AMSVirtualRoad(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
~AMSVirtualRoad();
private:
bool m_has_vams{ true };
bool m_vams_loading{ false };
wxColour m_current_color;
public:
void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
void SetHasVams(bool hvams) { m_has_vams = hvams; };
void create(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size);
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
void msw_rescale();
};
/*************************************************
Description:AMSLib
**************************************************/
class AMSLib : public wxWindow
{
public:
AMSLib(wxWindow *parent, Caninfo info);
void create(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
public:
wxColour GetLibColour();
Caninfo m_info;
MachineObject* m_obj = {nullptr};
int m_can_index = 0;
AMSModel m_ams_model;
void Update(Caninfo info, bool refresh = true);
void UnableSelected() { m_unable_selected = true; };
void EableSelected() { m_unable_selected = false; };
void OnSelected();
void UnSelected();
bool is_selected() {return m_selected;};
void post_event(wxCommandEvent &&event);
void show_kn_value(bool show) { m_show_kn = show; };
void support_cali(bool sup) { m_support_cali = sup; Refresh(); };
virtual bool Enable(bool enable = true);
void set_disable_mode(bool disable) { m_disable_mode = disable; }
void msw_rescale();
void on_pass_road(bool pass);
protected:
wxStaticBitmap *m_edit_bitmp = {nullptr};
wxStaticBitmap *m_edit_bitmp_light = {nullptr};
ScalableBitmap m_bitmap_editable;
ScalableBitmap m_bitmap_editable_light;
ScalableBitmap m_bitmap_readonly;
ScalableBitmap m_bitmap_readonly_light;
ScalableBitmap m_bitmap_transparent;
ScalableBitmap m_bitmap_extra_tray_left;
ScalableBitmap m_bitmap_extra_tray_right;
ScalableBitmap m_bitmap_extra_tray_left_hover;
ScalableBitmap m_bitmap_extra_tray_right_hover;
ScalableBitmap m_bitmap_extra_tray_left_selected;
ScalableBitmap m_bitmap_extra_tray_right_selected;
bool m_unable_selected = {false};
bool m_enable = {false};
bool m_selected = {false};
bool m_hover = {false};
bool m_show_kn = {false};
bool m_support_cali = {false};
bool transparent_changed = {false};
double m_radius = {4};
wxColour m_border_color;
wxColour m_road_def_color;
wxColour m_lib_color;
bool m_disable_mode{ false };
bool m_pass_road{false};
void on_enter_window(wxMouseEvent &evt);
void on_leave_window(wxMouseEvent &evt);
void on_left_down(wxMouseEvent &evt);
void paintEvent(wxPaintEvent &evt);
void render(wxDC &dc);
void render_extra_text(wxDC& dc);
void render_generic_text(wxDC& dc);
void doRender(wxDC& dc);
void render_extra_lib(wxDC& dc);
void render_generic_lib(wxDC& dc);
};
/*************************************************
Description:AMSRoad
**************************************************/
class AMSRoad : public wxWindow
{
public:
AMSRoad();
AMSRoad(wxWindow *parent, wxWindowID id, Caninfo info, int canindex, int maxcan, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
void create(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
public:
AMSinfo m_amsinfo;
Caninfo m_info;
int m_canindex = {0};
AMSRoadMode m_rode_mode = {AMSRoadMode::AMS_ROAD_MODE_LEFT_RIGHT};
std::vector<AMSPassRoadMode> m_pass_rode_mode = {AMSPassRoadMode::AMS_ROAD_MODE_NONE};
bool m_selected = {false};
int m_passroad_width = {6};
double m_radius = {4};
wxColour m_road_def_color;
wxColour m_road_color;
void Update(AMSinfo amsinfo, Caninfo info, int canindex, int maxcan);
std::vector<ScalableBitmap> ams_humidity_img;
int m_humidity = { 0 };
bool m_show_humidity = { false };
bool m_vams_loading{false};
AMSModel m_ams_model;
void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
void SetPassRoadColour(wxColour col);
void SetMode(AMSRoadMode mode);
void OnPassRoad(std::vector<AMSPassRoadMode> prord_list);
void UpdatePassRoad(int tag_index, AMSPassRoadType type, AMSPassRoadSTEP step);
void paintEvent(wxPaintEvent &evt);
void render(wxDC &dc);
void doRender(wxDC &dc);
};
/*************************************************
Description:AMSItem
**************************************************/
class AMSItem : public wxWindow
{
public:
AMSItem();
AMSItem(wxWindow *parent, wxWindowID id, AMSinfo amsinfo, const wxSize cube_size = wxSize(14, 14), const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
bool m_open = {false};
void Open();
void Close();
void Update(AMSinfo amsinfo);
void create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size);
void OnEnterWindow(wxMouseEvent &evt);
void OnLeaveWindow(wxMouseEvent &evt);
void OnSelected();
void UnSelected();
virtual bool Enable(bool enable = true);
AMSinfo m_amsinfo;
protected:
wxSize m_cube_size;
wxColour m_background_colour = {AMS_CONTROL_DEF_BLOCK_BK_COLOUR};
int m_padding = {7};
int m_space = {5};
bool m_hover = {false};
bool m_selected = {false};
ScalableBitmap* m_ts_bitmap_cube;
void paintEvent(wxPaintEvent &evt);
void render(wxDC &dc);
void doRender(wxDC &dc);
virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
};
/*************************************************
Description:AmsCans
**************************************************/
class Canrefreshs
{
public:
wxString canID;
AMSrefresh *canrefresh;
};
class CanLibs
{
public:
wxString canID;
AMSLib * canLib;
};
class CanRoads
{
public:
wxString canID;
AMSRoad *canRoad;
};
WX_DEFINE_ARRAY(Canrefreshs *, CanrefreshsHash);
WX_DEFINE_ARRAY(CanLibs *, CanLibsHash);
WX_DEFINE_ARRAY(CanRoads *, CansRoadsHash);
class AmsCans : public wxWindow
{
public:
AmsCans();
AmsCans(wxWindow *parent, AMSinfo info, AMSModel model);
void Update(AMSinfo info);
void create(wxWindow *parent);
void AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* sizer);
void SetDefSelectCan();
void SelectCan(std::string canid);
void PlayRridLoading(wxString canid);
void StopRridLoading(wxString canid);
void msw_rescale();
void show_sn_value(bool show);
void SetAmsStepExtra(wxString canid, AMSPassRoadType type, AMSPassRoadSTEP step);
void SetAmsStep(wxString canid, AMSPassRoadType type, AMSPassRoadSTEP step);
void SetAmsStep(std::string can_id);
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
wxColour GetTagColr(wxString canid);
std::string GetCurrentCan();
public:
ScalableBitmap m_bitmap_extra_framework;
int m_canlib_selection = { -1 };
int m_selection = { 0 };
int m_can_count = { 0 };
AMSModel m_ams_model;
std::string m_canlib_id;
std::string m_road_canid;
wxColour m_road_colour;
CanLibsHash m_can_lib_list;
CansRoadsHash m_can_road_list;
CanrefreshsHash m_can_refresh_list;
AMSinfo m_info;
wxBoxSizer * sizer_can = {nullptr};
wxBoxSizer * sizer_can_middle = {nullptr};
wxBoxSizer * sizer_can_left = {nullptr};
wxBoxSizer * sizer_can_right = {nullptr};
AMSPassRoadSTEP m_step = {AMSPassRoadSTEP ::AMS_ROAD_STEP_NONE};
};
/*************************************************
Description:AMSControl
**************************************************/
class AmsCansWindow
{
public:
wxString amsIndex;
AmsCans *amsCans;
bool m_disable_mode{ false };
void set_disable_mode(bool disable) {
m_disable_mode = disable;
for (auto can_lib : amsCans->m_can_lib_list) {
can_lib->canLib->set_disable_mode(disable);
}
for (auto can_refresh : amsCans->m_can_refresh_list) {
can_refresh->canrefresh->set_disable_mode(disable);
}
}
};
class AmsItems
{
public:
wxString amsIndex;
AMSItem *amsItem;
};
class AMSextruders
{
public:
wxString amsIndex;
AMSextruder *amsextruder;
};
WX_DEFINE_ARRAY(AmsCansWindow *, AmsCansHash);
WX_DEFINE_ARRAY(AmsItems *, AmsItemsHash);
WX_DEFINE_ARRAY(AMSextruders *, AMSextrudersHash);
class AMSControl : public wxSimplebook
{
public:
AMSControl(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
~AMSControl();
void on_retry();
void init_scaled_buttons();
protected:
std::string m_current_ams;
std::string m_current_slot;
std::string m_current_show_ams;
std::map<std::string, int> m_ams_selection;
AmsItemsHash m_ams_item_list;
std::map<std::string, AMSPreview*> m_ams_preview_list;
std::vector<AMSinfo> m_ams_info;
AmsCansHash m_ams_cans_list;
AmsCansHash m_ams_generic_cans_list;
AmsCansHash m_ams_extra_cans_list;
std::vector<AMSinfo> m_ext_info;
std::map<std::string, AmsItem*> m_ams_item_list;
//std::map<std::string, AmsItem*> m_ams_generic_item_list;
//std::map<std::string, AmsItem*> m_ams_extra_item_list;
//std::map<std::string, Ams*> m_ams_list;
int m_nozzle_num = 1;
std::string m_dev_id;
std::vector<std::vector<std::string>> m_item_ids{ {}, {} };
std::vector<std::pair<string, string>> pair_id;
AMSextruder *m_extruder{nullptr};
AMSRoadDownPart* m_down_road{ nullptr };
/*items*/
wxBoxSizer* m_sizer_ams_items{nullptr};
wxWindow* m_panel_items_left {nullptr};
wxWindow* m_panel_items_right{nullptr};
wxBoxSizer* m_sizer_items_left{nullptr};
wxBoxSizer* m_sizer_items_right{nullptr};
/*ams */
wxBoxSizer *m_sizer_ams_body{nullptr};
wxBoxSizer* m_sizer_ams_area_left{nullptr};
wxBoxSizer* m_sizer_ams_area_right{nullptr};
wxBoxSizer* m_sizer_down_road{ nullptr };
/*option*/
wxBoxSizer *m_sizer_ams_option{nullptr};
wxBoxSizer* m_sizer_option_left{nullptr};
wxBoxSizer* m_sizer_option_mid{nullptr};
wxBoxSizer* m_sizer_option_right{nullptr};
AMSextruder *m_extruder = {nullptr};
AmsIntroducePopup m_ams_introduce_popup;
wxSimplebook *m_simplebook_right = {nullptr};
wxSimplebook *m_simplebook_calibration = {nullptr};
wxSimplebook *m_simplebook_amsitems = {nullptr};
wxSimplebook *m_simplebook_ams = {nullptr};
//wxSimplebook *m_simplebook_right{nullptr};
wxSimplebook *m_simplebook_ams_left{nullptr};
wxSimplebook *m_simplebook_ams_right{ nullptr };
wxPanel *m_panel_down_road{ nullptr };
int m_left_page_index = 0;
int m_right_page_index = 0;
wxSimplebook *m_simplebook_generic_cans= {nullptr};
wxSimplebook *m_simplebook_extra_cans = {nullptr};
//wxSimplebook* m_simplebook_generic_cans_left{ nullptr };
//wxSimplebook* m_simplebook_extra_cans_left {nullptr};
//wxSimplebook* m_simplebook_generic_cans_right{ nullptr };
//wxSimplebook* m_simplebook_extra_cans_right{ nullptr };
wxSimplebook *m_simplebook_bottom = {nullptr};
wxSimplebook *m_simplebook_bottom{nullptr};
wxStaticText *m_tip_right_top = {nullptr};
Label *m_tip_load_info = {nullptr};
wxStaticText *m_text_calibration_percent = {nullptr};
wxWindow * m_none_ams_panel = {nullptr};
wxWindow * m_panel_top = {nullptr};
wxWindow * m_amswin = {nullptr};
wxBoxSizer* m_vams_sizer = {nullptr};
wxBoxSizer* m_sizer_vams_tips = {nullptr};
wxStaticText *m_tip_right_top{nullptr};
Label *m_tip_load_info{nullptr};
wxWindow * m_amswin{nullptr};
wxBoxSizer* m_vams_sizer{nullptr};
wxBoxSizer* m_sizer_vams_tips{nullptr};
bool m_auto_reill_show = {false};
Label* m_ams_backup_tip = {nullptr};
Label* m_ams_tip = {nullptr};
Label* m_ams_tip {nullptr};
Caninfo m_vams_info;
StaticBox* m_panel_virtual = {nullptr};
AMSLib* m_vams_lib = {nullptr};
AMSRoad* m_vams_road = {nullptr};
AMSVirtualRoad* m_vams_extra_road = {nullptr};
StaticBox* m_panel_virtual {nullptr};
AMSLib* m_vams_lib {nullptr};
AMSRoad* m_vams_road {nullptr};
AMSVirtualRoad* m_vams_extra_road {nullptr};
StaticBox * m_panel_can = {nullptr};
wxBoxSizer *m_sizer_top = {nullptr};
wxBoxSizer *m_sizer_cans = {nullptr};
wxBoxSizer *m_sizer_right_tip = {nullptr};
wxBoxSizer* m_sizer_ams_tips = {nullptr};
::StepIndicator *m_filament_load_step = {nullptr};
::StepIndicator *m_filament_unload_step = {nullptr};
::StepIndicator *m_filament_vt_load_step = {nullptr};
Button *m_button_extruder_feed = {nullptr};
Button *m_button_extruder_back = {nullptr};
wxStaticBitmap* m_button_ams_setting = {nullptr};
wxStaticBitmap* m_img_ams_backup = {nullptr};
wxStaticBitmap* m_img_amsmapping_tip = {nullptr};
wxStaticBitmap* m_img_vams_tip = {nullptr};
wxBoxSizer *m_sizer_right_tip {nullptr};
wxBoxSizer* m_sizer_ams_tips {nullptr};
::StepIndicator *m_filament_load_step {nullptr};
::StepIndicator *m_filament_unload_step {nullptr};
::StepIndicator *m_filament_vt_load_step {nullptr};
Button *m_button_extruder_feed {nullptr};
Button *m_button_extruder_back {nullptr};
Button *m_button_auto_refill{ nullptr };
wxStaticBitmap* m_button_ams_setting {nullptr};
wxStaticBitmap* m_img_ams_backup {nullptr};
wxStaticBitmap* m_img_amsmapping_tip {nullptr};
wxStaticBitmap* m_img_vams_tip {nullptr};
ScalableBitmap m_button_ams_setting_normal;
ScalableBitmap m_button_ams_setting_hover;
ScalableBitmap m_button_ams_setting_press;
Button *m_button_guide = {nullptr};
Button *m_button_retry = {nullptr};
wxWindow* m_button_area = {nullptr};
Button *m_button_guide {nullptr};
Button *m_button_retry {nullptr};
wxHyperlinkCtrl *m_hyperlink = {nullptr};
AmsHumidityTipPopup m_Humidity_tip_popup;
std::string m_last_ams_id;
std::string m_last_tray_id;
std::string m_last_ams_id = "-1";
std::string m_last_tray_id = "-1";
public:
std::string GetCurentAms();
@ -669,6 +135,7 @@ public:
AMSModel m_ams_model{AMSModel::NO_AMS};
AMSModel m_ext_model{AMSModel::NO_AMS};
AMSModel m_is_none_ams_mode{AMSModel::NO_AMS};
bool m_single_nozzle_no_ams = { true };
void SetAmsModel(AMSModel mode, AMSModel ext_mode) {m_ams_model = mode; m_ext_model = ext_mode;};
@ -677,12 +144,6 @@ public:
void EnterGenericAMSMode();
void EnterExtraAMSMode();
void EnterCalibrationMode(bool read_to_calibration);
void ExitcClibrationMode();
void SetClibrationpercent(int percent);
void SetClibrationLink(wxString link);
void PlayRridLoading(wxString amsid, wxString canid);
void StopRridLoading(wxString amsid, wxString canid);
@ -690,11 +151,22 @@ public:
void ShowFilamentTip(bool hasams = true);
void UpdateStepCtrl(bool is_extrusion_exist);
void UpdatePassRoad(string ams_id, AMSPassRoadType type, AMSPassRoadSTEP step);
void CreateAms();
void UpdateAms(std::vector<AMSinfo> info, bool is_reset = true);
void AddAms(AMSinfo info);
void AddAmsItems(AMSinfo info);
void AddExtraAms(AMSinfo info);
void CreateAmsNew();
void CreateAmsSingleNozzle();
void ClearAms();
void UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo> ext_info, std::string dev_id, bool is_reset = true, bool test = false);
void ReadExtInfo(MachineObject* obj);
void AddAms(AMSinfo info, bool left = true);
//void AddExtAms(int ams_id);
void AddAmsPreview(AMSinfo info, AMSModel type);
//void AddExtraAms(AMSinfo info);
void AddAms(std::vector<AMSinfo>single_info, bool left = true);
void AddAmsPreview(std::vector<AMSinfo>single_info);
//void AddExtraAms(std::vector<AMSinfo>single_info);
void SetExtruder(bool on_off, bool is_vams, std::string ams_now, wxColour col);
void SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadType type, AMSPassRoadSTEP step);
void SwitchAms(std::string ams_id);
@ -702,6 +174,7 @@ public:
void msw_rescale();
void on_filament_load(wxCommandEvent &event);
void on_filament_unload(wxCommandEvent &event);
void auto_refill(wxCommandEvent& event);
void on_ams_setting_click(wxMouseEvent &event);
void on_extrusion_cali(wxCommandEvent &event);
void on_ams_setting_click(wxCommandEvent &event);
@ -719,28 +192,12 @@ public:
void post_event(wxEvent&& event);
virtual bool Enable(bool enable = true);
void parse_object(MachineObject* obj);
public:
std::string m_current_senect;
std::string m_current_select;
};
wxDECLARE_EVENT(EVT_AMS_EXTRUSION_CALI, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_LOAD, SimpleEvent);
wxDECLARE_EVENT(EVT_AMS_UNLOAD, SimpleEvent);
wxDECLARE_EVENT(EVT_AMS_SETTINGS, SimpleEvent);
wxDECLARE_EVENT(EVT_AMS_FILAMENT_BACKUP, SimpleEvent);
wxDECLARE_EVENT(EVT_AMS_REFRESH_RFID, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_ON_SELECTED, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_ON_FILAMENT_EDIT, wxCommandEvent);
wxDECLARE_EVENT(EVT_VAMS_ON_FILAMENT_EDIT, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_CLIBRATION_AGAIN, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_CLIBRATION_CANCEL, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_GUIDE_WIKI, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_RETRY, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_SHOW_HUMIDITY_TIPS, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_UNSELETED_VAMS, wxCommandEvent);
wxDECLARE_EVENT(EVT_CLEAR_SPEED_CONTROL, wxCommandEvent);
}} // namespace Slic3r::GUI
#endif // !slic3r_GUI_amscontrol_hpp_

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,728 @@
#ifndef slic3r_GUI_AMSITEM_hpp_
#define slic3r_GUI_AMSITEM_hpp_
#include "../wxExtensions.hpp"
#include "StaticBox.hpp"
#include "StepCtrl.hpp"
#include "Button.hpp"
#include "../DeviceManager.hpp"
#include "slic3r/GUI/Event.hpp"
#include "slic3r/GUI/AmsMappingPopup.hpp"
#include <wx/simplebook.h>
#include <wx/hyperlink.h>
#include <wx/animate.h>
#include <wx/dynarray.h>
#define AMS_CONTROL_BRAND_COLOUR wxColour(0, 174, 66)
#define AMS_CONTROL_GRAY700 wxColour(107, 107, 107)
#define AMS_CONTROL_GRAY800 wxColour(50, 58, 61)
#define AMS_CONTROL_GRAY500 wxColour(172, 172, 172)
#define AMS_CONTROL_DISABLE_COLOUR wxColour(206, 206, 206)
#define AMS_CONTROL_DISABLE_TEXT_COLOUR wxColour(144, 144, 144)
#define AMS_CONTROL_WHITE_COLOUR wxColour(255, 255, 255)
#define AMS_CONTROL_BLACK_COLOUR wxColour(0, 0, 0)
#define AMS_CONTROL_DEF_BLOCK_BK_COLOUR wxColour(238, 238, 238)
#define AMS_CONTROL_DEF_LIB_BK_COLOUR wxColour(248, 248, 248)
#define AMS_EXTRUDER_DEF_COLOUR wxColour(234, 234, 234)
#define AMS_CONTROL_MAX_COUNT 4
#define AMS_CONTRO_CALIBRATION_BUTTON_SIZE wxSize(FromDIP(150), FromDIP(28))
#define AMS_CONTROL_DEF_HUMIDITY_BK_COLOUR wxColour(238, 238, 238)
namespace Slic3r { namespace GUI {
enum AMSModel {
NO_AMS = 0, //ext
GENERIC_AMS = 1,
EXTRA_AMS = 2, //ams-lite
N3F_AMS = 3,
SINGLE_AMS = 4 //n3s
};
enum ActionButton {
ACTION_BTN_CALI = 0,
ACTION_BTN_LOAD = 1,
ACTION_BTN_UNLOAD = 2,
ACTION_BTN_COUNT = 3
};
enum class AMSRoadMode : int {
AMS_ROAD_MODE_LEFT,
AMS_ROAD_MODE_LEFT_RIGHT,
AMS_ROAD_MODE_END,
AMS_ROAD_MODE_END_ONLY,
AMS_ROAD_MODE_NONE,
AMS_ROAD_MODE_NONE_ANY_ROAD,
AMS_ROAD_MODE_VIRTUAL_TRAY
};
enum class AMSRoadDownPartLoad : int {
AMS_ROAD_MODE_LEFT,
AMS_ROAD_MODE_RIGHT,
AMS_ROAD_MODE_NONE
};
enum class AMSRoadShowMode : int {
AMS_ROAD_MODE_FOUR,
AMS_ROAD_MODE_DOUBLE,
AMS_ROAD_MODE_SINGLE,
AMS_ROAD_MODE_NONE
};
enum class AMSPassRoadMode : int {
AMS_ROAD_MODE_NONE,
AMS_ROAD_MODE_LEFT,
AMS_ROAD_MODE_LEFT_RIGHT,
AMS_ROAD_MODE_END_TOP,
AMS_ROAD_MODE_END_RIGHT,
AMS_ROAD_MODE_END_BOTTOM,
};
enum class AMSAction : int {
AMS_ACTION_NONE,
AMS_ACTION_LOAD,
AMS_ACTION_UNLOAD,
AMS_ACTION_CALI,
AMS_ACTION_PRINTING,
AMS_ACTION_NORMAL,
AMS_ACTION_NOAMS,
};
enum class AMSPassRoadSTEP : int {
AMS_ROAD_STEP_NONE = 0,
AMS_ROAD_STEP_1 = 1, // lib -> extrusion
AMS_ROAD_STEP_2 = 2, // extrusion->buffer
AMS_ROAD_STEP_3 = 4, // extrusion
AMS_ROAD_STEP_COMBO_LOAD_STEP1,
AMS_ROAD_STEP_COMBO_LOAD_STEP2,
AMS_ROAD_STEP_COMBO_LOAD_STEP3,
};
enum class AMSPassRoadType : int {
AMS_ROAD_TYPE_NONE,
AMS_ROAD_TYPE_LOAD,
AMS_ROAD_TYPE_UNLOAD,
};
enum class AMSCanType : int {
AMS_CAN_TYPE_NONE,
AMS_CAN_TYPE_BRAND,
AMS_CAN_TYPE_THIRDBRAND,
AMS_CAN_TYPE_EMPTY,
AMS_CAN_TYPE_VIRTUAL,
};
enum FilamentStep {
STEP_IDLE,
STEP_HEAT_NOZZLE,
STEP_CUT_FILAMENT,
STEP_PULL_CURR_FILAMENT,
STEP_PUSH_NEW_FILAMENT,
STEP_PURGE_OLD_FILAMENT,
STEP_FEED_FILAMENT,
STEP_CONFIRM_EXTRUDED,
STEP_CHECK_POSITION,
STEP_COUNT,
};
enum FilamentStepType {
STEP_TYPE_LOAD = 0,
STEP_TYPE_UNLOAD = 1,
STEP_TYPE_VT_LOAD = 2,
};
#define AMS_ITEM_CUBE_SIZE wxSize(FromDIP(8), FromDIP(14))
#define AMS_PREVIEW_SIZE wxSize(FromDIP(82), FromDIP(27))
#define AMS_ITEM_SIZE wxSize(FromDIP(78), FromDIP(184))
#define AMS_ITEM_FOUR_SIZE wxSize(FromDIP(44), FromDIP(24))
#define AMS_ITEM_SINGLE_SIZE wxSize(FromDIP(20), FromDIP(24))
#define AMS_ITEM_HUMIDITY_SIZE wxSize(FromDIP(120), FromDIP(27))
#define AMS_CAN_LIB_SIZE wxSize(FromDIP(52), FromDIP(80))
#define AMS_CAN_ROAD_SIZE wxSize(FromDIP(264), FromDIP(50))
#define AMS_ITEMS_PANEL_SIZE wxSize(FromDIP(264), FromDIP(27))
//#define AMS_CANS_SIZE wxSize(FromDIP(284), FromDIP(184))
//#define AMS_CANS_WINDOW_SIZE wxSize(FromDIP(264), FromDIP(196))
#define AMS_STEP_SIZE wxSize(FromDIP(172), FromDIP(196))
#define AMS_REFRESH_SIZE wxSize(FromDIP(25), FromDIP(25))
#define AMS_EXTRUDER_SIZE wxSize(FromDIP(29), FromDIP(37))
#define AMS_EXTRUDER_BITMAP_SIZE wxSize(FromDIP(13), FromDIP(37))
#define AMS_BODY_SIZE wxSize(FromDIP(36), FromDIP(55))
#define AMS_DOWN_ROAD_SIZE wxSize(FromDIP(568), FromDIP(10))
#define AMS_HUMIDITY_SIZE wxSize(FromDIP(93), FromDIP(26))
struct Caninfo
{
std::string can_id;
wxString material_name;
wxColour material_colour = {*wxWHITE};
AMSCanType material_state;
int ctype=0;
int material_remain = 100;
float k = 0.0f;
float n = 0.0f;
std::vector<wxColour> material_cols;
};
struct AMSinfo
{
public:
std::string ams_id;
std::vector<Caninfo> cans;
int nozzle_id = 0;
std::string current_can_id;
AMSPassRoadSTEP current_step;
AMSAction current_action;
int curreent_filamentstep;
int ams_humidity = 0;
AMSModel ams_type = AMSModel::GENERIC_AMS;
bool parse_ams_info(MachineObject* obj, Ams *ams, bool remain_flag = false, bool humidity_flag = false);
void ReadExtInfo(AmsTray tray);
};
/*************************************************
Description:AMSExtText
**************************************************/
class AMSExtText : public wxWindow
{
public:
void msw_rescale();
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
AMSExtText(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
~AMSExtText();
};
/*************************************************
Description:AMSrefresh
**************************************************/
#define AMS_REFRESH_PLAY_LOADING_TIMER 100
class AMSrefresh : public wxWindow
{
public:
AMSrefresh();
AMSrefresh(wxWindow *parent, wxString number, Caninfo info, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
AMSrefresh(wxWindow *parent, int number, Caninfo info, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
~AMSrefresh();
void PlayLoading();
void StopLoading();
void create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size);
void on_timer(wxTimerEvent &event);
void OnEnterWindow(wxMouseEvent &evt);
void OnLeaveWindow(wxMouseEvent &evt);
void OnClick(wxMouseEvent &evt);
void post_event(wxCommandEvent &&event);
void paintEvent(wxPaintEvent &evt);
void Update(std::string ams_id, Caninfo info);
void msw_rescale();
void set_disable_mode(bool disable) { m_disable_mode = disable; }
Caninfo m_info;
protected:
wxTimer *m_playing_timer= {nullptr};
int m_rotation_angle = 0;
bool m_play_loading = {false};
bool m_selected = {false};
std::string m_ams_id;
std::string m_can_id;
ScalableBitmap m_bitmap_normal;
ScalableBitmap m_bitmap_selected;
ScalableBitmap m_bitmap_ams_rfid_0;
ScalableBitmap m_bitmap_ams_rfid_1;
ScalableBitmap m_bitmap_ams_rfid_2;
ScalableBitmap m_bitmap_ams_rfid_3;
ScalableBitmap m_bitmap_ams_rfid_4;
ScalableBitmap m_bitmap_ams_rfid_5;
ScalableBitmap m_bitmap_ams_rfid_6;
ScalableBitmap m_bitmap_ams_rfid_7;
std::vector<ScalableBitmap> m_rfid_bitmap_list;
wxString m_refresh_id;
wxBoxSizer * m_size_body;
virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
bool m_disable_mode{ false };
};
/*************************************************
Description:AMSextruder
**************************************************/
class AMSextruderImage: public wxWindow
{
public:
void OnAmsLoading(bool load, wxColour col);
void TurnOff();
void update(bool show_state) { m_show_state = show_state; };
void msw_rescale();
void paintEvent(wxPaintEvent &evt);
void render(wxDC &dc);
bool m_show_state = {false};
wxColour m_colour;
ScalableBitmap m_ams_extruder;
string m_file_name;
bool m_ams_loading{ false };
void doRender(wxDC &dc);
AMSextruderImage(wxWindow *parent, wxWindowID id, string file_name, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
~AMSextruderImage();
};
//AMSExtImage upon ext lib
class AMSExtImage : public wxWindow
{
public:
void msw_rescale();
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
ScalableBitmap m_ams_ext;
void doRender(wxDC& dc);
AMSExtImage(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
~AMSExtImage();
};
class AMSextruder : public wxWindow
{
public:
void TurnOn(wxColour col);
void TurnOff();
void create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size);
void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
void OnAmsLoading(bool load, int nozzle_id = 0, wxColour col = AMS_CONTROL_GRAY500);
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
void msw_rescale();
void has_ams(bool hams) {m_has_vams = hams; Refresh();};
void no_ams_mode(bool mode) {m_none_ams_mode = mode; Refresh();};
void update(int nozzle_num) { m_nozzle_num = nozzle_num; };
bool m_none_ams_mode{true};
bool m_has_vams{false};
bool m_vams_loading{false};
bool m_ams_loading{false};
wxColour m_current_colur;
int m_nozzle_num{ 1 };
wxBoxSizer * m_bitmap_sizer{nullptr};
wxPanel * m_bitmap_panel{nullptr};
//AMSextruderImage *m_amsSextruder{nullptr};
AMSextruderImage* m_left_extruder;
AMSextruderImage* m_right_extruder;
AMSextruder(wxWindow *parent, wxWindowID id, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
~AMSextruder();
};
class AMSVirtualRoad : public wxWindow
{
public:
AMSVirtualRoad(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
~AMSVirtualRoad();
private:
bool m_has_vams{ true };
bool m_vams_loading{ false };
wxColour m_current_color;
public:
void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
void SetHasVams(bool hvams) { m_has_vams = hvams; };
void create(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size);
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
void msw_rescale();
};
/*************************************************
Description:AMSLib
**************************************************/
class AMSLib : public wxWindow
{
public:
AMSLib(wxWindow *parent, std::string ams_idx, Caninfo info);
~AMSLib();
void create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
public:
wxColour GetLibColour();
Caninfo m_info;
MachineObject* m_obj = { nullptr };
std::string m_ams_id;
std::string m_slot_id;
int m_can_index = 0;
bool transparent_changed = { false };
AMSModel m_ams_model;
void Update(Caninfo info, std::string ams_idx, bool refresh = true);
void UnableSelected() { m_unable_selected = true; };
void EableSelected() { m_unable_selected = false; };
void OnSelected();
void UnSelected();
bool is_selected() {return m_selected;};
void post_event(wxCommandEvent &&event);
void show_kn_value(bool show) { m_show_kn = show; };
void support_cali(bool sup) { m_support_cali = sup; Refresh(); };
virtual bool Enable(bool enable = true);
void set_disable_mode(bool disable) { m_disable_mode = disable; }
void msw_rescale();
void on_pass_road(bool pass);
protected:
wxStaticBitmap *m_edit_bitmp = {nullptr};
wxStaticBitmap *m_edit_bitmp_light = {nullptr};
ScalableBitmap m_bitmap_editable;
ScalableBitmap m_bitmap_editable_light;
ScalableBitmap m_bitmap_readonly;
ScalableBitmap m_bitmap_readonly_light;
ScalableBitmap m_bitmap_transparent;
ScalableBitmap m_bitmap_transparent_def;
ScalableBitmap m_bitmap_extra_tray_left;
ScalableBitmap m_bitmap_extra_tray_right;
ScalableBitmap m_bitmap_extra_tray_left_hover;
ScalableBitmap m_bitmap_extra_tray_right_hover;
ScalableBitmap m_bitmap_extra_tray_left_selected;
ScalableBitmap m_bitmap_extra_tray_right_selected;
bool m_unable_selected = {false};
bool m_enable = {false};
bool m_selected = {false};
bool m_hover = {false};
bool m_show_kn = {false};
bool m_support_cali = {false};
double m_radius = {4};
wxColour m_border_color;
wxColour m_road_def_color;
wxColour m_lib_color;
bool m_disable_mode{ false };
bool m_pass_road{false};
void on_enter_window(wxMouseEvent &evt);
void on_leave_window(wxMouseEvent &evt);
void on_left_down(wxMouseEvent &evt);
void paintEvent(wxPaintEvent &evt);
void render(wxDC &dc);
void render_extra_text(wxDC& dc);
void render_generic_text(wxDC& dc);
void doRender(wxDC& dc);
void render_extra_lib(wxDC& dc);
void render_generic_lib(wxDC& dc);
};
/*************************************************
Description:AMSRoad
**************************************************/
class AMSRoad : public wxWindow
{
public:
AMSRoad();
AMSRoad(wxWindow *parent, wxWindowID id, Caninfo info, int canindex, int maxcan, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
void create(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
public:
AMSinfo m_amsinfo;
Caninfo m_info;
int m_canindex = {0};
AMSRoadMode m_rode_mode = {AMSRoadMode::AMS_ROAD_MODE_LEFT_RIGHT};
std::vector<AMSPassRoadMode> m_pass_rode_mode = {AMSPassRoadMode::AMS_ROAD_MODE_NONE};
bool m_selected = {false};
int m_passroad_width = {6};
double m_radius = {4};
wxColour m_road_def_color;
wxColour m_road_color;
void Update(AMSinfo amsinfo, Caninfo info, int canindex, int maxcan);
std::vector<ScalableBitmap> ams_humidity_img;
int m_humidity = { 0 };
bool m_show_humidity = { false };
bool m_vams_loading{false};
AMSModel m_ams_model;
void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
void SetPassRoadColour(wxColour col);
void SetMode(AMSRoadMode mode);
void OnPassRoad(std::vector<AMSPassRoadMode> prord_list);
void UpdatePassRoad(int tag_index, AMSPassRoadType type, AMSPassRoadSTEP step);
void paintEvent(wxPaintEvent &evt);
void render(wxDC &dc);
void doRender(wxDC &dc);
};
/*************************************************
Description:AMSRoadUpPart
**************************************************/
class AMSRoadUpPart : public wxWindow
{
public:
AMSRoadUpPart();
AMSRoadUpPart(wxWindow* parent, wxWindowID id, AMSinfo info, AMSModel mode, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
void create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
public:
AMSinfo m_amsinfo;
Caninfo m_info;
int m_load_slot_index = { 0 };
int m_load_ams_index = { 0 };
//AMSRoadMode m_rode_mode = { AMSRoadMode::AMS_ROAD_MODE_LEFT_RIGHT };
std::vector<AMSPassRoadMode> m_pass_rode_mode = { AMSPassRoadMode::AMS_ROAD_MODE_NONE };
AMSRoadShowMode m_road_mode = { AMSRoadShowMode::AMS_ROAD_MODE_FOUR };
AMSPassRoadSTEP m_load_step = { AMSPassRoadSTEP::AMS_ROAD_STEP_NONE };
bool m_selected = { false };
int m_passroad_width = { 6 };
double m_radius = { 4 };
wxColour m_road_def_color;
wxColour m_road_color;
void Update(AMSinfo amsinfo, Caninfo info);
std::vector<ScalableBitmap> ams_humidity_img;
int m_humidity = { 0 };
bool m_show_humidity = { false };
bool m_vams_loading{ false };
AMSModel m_ams_model;
void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
void SetPassRoadColour(wxColour col);
void SetMode(AMSRoadShowMode mode);
void OnPassRoad(std::vector<AMSPassRoadMode> prord_list);
void UpdatePassRoad(std::string ams_index, std::string slot_index, AMSPassRoadType type, AMSPassRoadSTEP step);
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
};
/*************************************************
Description:AMSRoadDownPart
**************************************************/
class AMSRoadDownPart : public wxWindow
{
public:
AMSRoadDownPart();
AMSRoadDownPart(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
void create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
public:
AMSinfo m_amsinfo;
Caninfo m_info;
int m_canindex = { 0 };
int m_nozzle_num = { 1 };
AMSRoadShowMode m_single_ext_rode_mode = { AMSRoadShowMode::AMS_ROAD_MODE_FOUR };
AMSRoadShowMode m_left_rode_mode = { AMSRoadShowMode::AMS_ROAD_MODE_FOUR };
AMSRoadShowMode m_right_rode_mode = { AMSRoadShowMode::AMS_ROAD_MODE_FOUR };
bool m_selected = { false };
bool m_single_nozzle_no_ams = { false };
int m_left_road_length = { -1 };
int m_right_road_length = { -1 };
int m_passroad_width = { 6 };
double m_radius = { 4 };
wxColour m_road_def_color;
AMSPassRoadType m_pass_road_type = { AMSPassRoadType::AMS_ROAD_TYPE_NONE };
AMSPassRoadSTEP m_pass_road_step = { AMSPassRoadSTEP::AMS_ROAD_STEP_NONE };
wxColour m_road_color;
//void Update(AMSRoadDownPartMode nozzle, AMSRoadShowMode left_mode, AMSRoadShowMode right_mode, int left_len, int right_len);
void UpdateLeft(int nozzle_num, AMSRoadShowMode mode);
void UpdateRight(int nozzle_num, AMSRoadShowMode mode);
std::vector<ScalableBitmap> ams_humidity_img;
int m_humidity = { 0 };
bool m_show_humidity = { false };
bool m_vams_loading{ false };
AMSModel m_ams_model;
void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
void SetPassRoadColour(wxColour col);
void SetMode(AMSRoadDownPartLoad mode);
void SetShowMode(AMSRoadShowMode left_mode, AMSRoadShowMode right_mode);
void OnPassRoad(std::vector<AMSPassRoadMode> prord_list);
void UpdatePassRoad(string can_id, bool left, int len, AMSinfo info, AMSPassRoadSTEP step);
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
};
/*************************************************
Description:AMSPreview
**************************************************/
class AMSPreview : public wxWindow
{
public:
AMSPreview();
AMSPreview(wxWindow *parent, wxWindowID id, AMSinfo amsinfo, AMSModel itemType = AMSModel::GENERIC_AMS, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
bool m_open = {false};
void Open();
void Close();
void Update(AMSinfo amsinfo);
void create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size);
void OnEnterWindow(wxMouseEvent &evt);
void OnLeaveWindow(wxMouseEvent &evt);
void OnSelected();
void UnSelected();
virtual bool Enable(bool enable = true);
AMSinfo m_amsinfo;
protected:
wxSize m_cube_size;
wxColour m_background_colour = { AMS_CONTROL_DEF_LIB_BK_COLOUR };
float m_padding = { 4.0 };
float m_space = { 9.4 };
bool m_hover = {false};
bool m_selected = {false};
AMSModel m_ams_item_type = AMSModel::GENERIC_AMS;
ScalableBitmap* m_ts_bitmap_cube;
ScalableBitmap* m_four_slot_bitmap;
ScalableBitmap* m_single_slot_bitmap;
ScalableBitmap* m_ext_bitmap;
void paintEvent(wxPaintEvent &evt);
void render(wxDC &dc);
void doRender(wxDC &dc);
virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
};
/*************************************************
Description:AMSHumidity
**************************************************/
class AMSHumidity : public wxWindow
{
public:
AMSHumidity();
AMSHumidity(wxWindow* parent, wxWindowID id, AMSinfo info, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
void create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
public:
AMSinfo m_amsinfo;
int m_canindex = { 0 };
bool m_selected = { false };
double m_radius = { 12 };
void Update(AMSinfo amsinfo);
std::vector<ScalableBitmap> ams_humidity_img;
ScalableBitmap ams_sun_img;
int m_humidity = { 0 };
bool m_show_humidity = { false };
bool m_vams_loading{ false };
AMSModel m_ams_model;
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
};
/*************************************************
Description:AmsItem
**************************************************/
class AmsItem : public wxWindow
{
public:
AmsItem();
AmsItem(wxWindow *parent, AMSinfo info, AMSModel model);
~AmsItem();
void Update(AMSinfo info);
void create(wxWindow *parent);
void AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* sizer);
void SetDefSelectCan();
void SelectCan(std::string canid);
void PlayRridLoading(wxString canid);
void StopRridLoading(wxString canid);
void msw_rescale();
void show_sn_value(bool show);
void SetAmsStepExtra(wxString canid, AMSPassRoadType type, AMSPassRoadSTEP step);
void SetAmsStep(std::string amsid, std::string canid, AMSPassRoadType type, AMSPassRoadSTEP step);
void SetAmsStep(std::string can_id);
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
wxColour GetTagColr(wxString canid);
std::string GetCurrentCan();
public:
ScalableBitmap m_bitmap_extra_framework;
int m_canlib_selection = { -1 };
int m_selection = { 0 };
int m_can_count = { 0 };
AMSModel m_ams_model;
std::string m_canlib_id;
std::string m_road_canid;
wxColour m_road_colour;
std::map<std::string, AMSLib*> m_can_lib_list;
//std::map<std::string, AMSRoad*> m_can_road_list;
AMSRoadUpPart* m_panel_road;
std::map<std::string, AMSrefresh*> m_can_refresh_list;
AMSHumidity* m_humidity;
AMSinfo m_info;
wxBoxSizer * sizer_can = {nullptr};
wxBoxSizer * sizer_humidity = { nullptr };
wxBoxSizer * sizer_item = { nullptr };
wxBoxSizer * sizer_can_middle = {nullptr};
wxBoxSizer * sizer_can_left = {nullptr};
wxBoxSizer * sizer_can_right = {nullptr};
AMSPassRoadSTEP m_step = {AMSPassRoadSTEP ::AMS_ROAD_STEP_NONE};
};
wxDECLARE_EVENT(EVT_AMS_EXTRUSION_CALI, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_LOAD, SimpleEvent);
wxDECLARE_EVENT(EVT_AMS_UNLOAD, SimpleEvent);
wxDECLARE_EVENT(EVT_AMS_SETTINGS, SimpleEvent);
wxDECLARE_EVENT(EVT_AMS_FILAMENT_BACKUP, SimpleEvent);
wxDECLARE_EVENT(EVT_AMS_REFRESH_RFID, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_ON_SELECTED, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_ON_FILAMENT_EDIT, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_CLIBRATION_AGAIN, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_CLIBRATION_CANCEL, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_GUIDE_WIKI, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_RETRY, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_SHOW_HUMIDITY_TIPS, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_UNSELETED_VAMS, wxCommandEvent);
wxDECLARE_EVENT(EVT_CLEAR_SPEED_CONTROL, wxCommandEvent);
wxDECLARE_EVENT(EVT_VAMS_ON_FILAMENT_EDIT, wxCommandEvent);
}} // namespace Slic3r::GUI
#endif // !slic3r_GUI_amscontrol_hpp_