Commit Graph

173 Commits

Author SHA1 Message Date
SoftFever
ffda4282eb Add timelapse storage location selection 2026-07-16 16:59:16 +08:00
SoftFever
5cf7e27c23 Show combined nozzle mapping when a filament switch is installed 2026-07-16 16:35:11 +08:00
SoftFever
c7581e590c Warn when a filament will switch extruders mid-print 2026-07-16 14:58:58 +08:00
SoftFever
7cc572be47 Add PA-profile sharing toggle to the device send dialog 2026-07-16 02:47:47 +08:00
Noisyfox
246f2d32bf Merge branch 'main' into dev/ams-heat
# Conflicts:
#	src/libslic3r/Preset.cpp
#	src/libslic3r/PrintConfig.hpp
#	src/slic3r/GUI/DeviceCore/CMakeLists.txt
#	src/slic3r/GUI/DeviceCore/DevDefs.h
#	src/slic3r/GUI/DeviceCore/DevFilaSystem.cpp
#	src/slic3r/GUI/DeviceCore/DevFilaSystem.h
#	src/slic3r/GUI/DeviceCore/DevUtilBackend.cpp
#	src/slic3r/GUI/DeviceCore/DevUtilBackend.h
#	src/slic3r/GUI/DeviceManager.cpp
#	src/slic3r/GUI/DeviceManager.hpp
#	src/slic3r/GUI/SelectMachine.cpp
#	src/slic3r/GUI/SelectMachine.hpp
2026-07-14 10:10:19 +08:00
SoftFever
30aa7d9557 feat(gui): warn when the hotend rack inventory falls short of the sliced plate
Follow-up to the rack-aware pre-print checks: after the blocking checks
pass, warn (without disabling Send) when the plate needs more matching
hotends than the rack printer currently holds - suggesting rack setup,
a nozzle info refresh, or a re-slice to avoid filament waste - or when
the only matches rely on unreliable nozzle information.

Text-only warning rows; this message board has no refresh or
don't-show-again buttons.
2026-07-13 00:55:52 +08:00
SoftFever
2fecfc291f fix(gui): rack-aware pre-print nozzle checks in the send dialog
A print sliced for a nozzle that sits in the hotend rack (but is not
mounted) was blocked by the send dialog's mounted-nozzle diameter check,
even though the printer fetches the required nozzle itself (#14685).

Consolidate the three mounted-nozzle gates (_is_nozzle_data_valid,
is_nozzle_type_match, _is_same_nozzle_diameters) into a single
CheckErrorExtruderNozzleWithSlicing fed by s_get_slicing_extuder_nozzles,
which collects the plate's per-extruder nozzle requirements (hybrid
extruders contribute one entry per used sub-nozzle flow). The rack
extruder validates against its whole inventory (mounted + rack) with
guidance to calibrate the rack, refresh nozzle info, or re-slice, and
blocks when toolhead + rack are full (no free slot to stow a nozzle).
Other extruders keep the validity/flow/diameter checks against the
mounted nozzle.

Also add CheckErrorRackStatus, which holds Send while the printer is
still reading the rack hotend information, and judge material hardness
for the rack extruder per dispatch-mapped nozzle as a non-blocking
caution (mounted nozzles keep the blocking gate).
2026-07-13 00:55:16 +08:00
SoftFever
0d31325df0 feat: Filament Track Switch (H2-series O2L-FTS) support
The Filament Track Switch (H2-series accessory, product code O2L-FTS) feeds
every AMS to both extruders through a two-track switch. Port full support
across the device layer, project config, and GUI.

Device / config:
- Model the switch-aware AMS binding (the set of extruders an AMS can feed
  and which input track A/B feeds it), switch readiness, the O2L-FTS firmware
  module, and the fun2 capability bit for checking a slice against installed
  hardware.
- Register has_filament_switcher and enable_filament_dynamic_map as project
  config that persists with the project and restores from a saved 3mf, and
  force both back to false on every project/printer/CLI load path. Live
  device sync is the only thing that sets them true.

GUI:
- Sidebar sync activates the switch from live device state, attributes each
  AMS to the extruder its input track feeds, shows a floating status icon
  (ready / not-calibrated), and surfaces a one-time tip / not-calibrated
  warning.
- Send dialog gains a non-blocking slice-vs-hardware mismatch warning and a
  blocking error when a slice needs dynamic nozzle mapping but the switch is
  missing or not set up.
- AMS load/unload guards, AMS-view routing glyph + un-calibrated banner +
  hidden external-spool road, and mapping-popup external-spool lockout.
- Filament pickers collapse the per-extruder split into a single deduplicated
  "AMS filaments" group with a smart-assign toggle when the switch is ready.
- Firmware-upgrade panel lists the O2L-FTS accessory and its version.
- Device-provided filament-change steps (ams.cfs) drive the change-step
  display when firmware sends them, including the three switch steps.
- "Load current filament" asks which extruder to feed via a
  FeedDirectionDialog when the switch is calibrated.

Inert without the accessory: every path is gated on the switch being
installed (MQTT aux bit 29, default off) or ready, both project flags default
false, and the per-extruder AMS attribution is byte-identical, so AMS state,
the send/load UI, and sliced g-code are unchanged for every printer that does
not report a Filament Track Switch.
2026-07-09 18:57:05 +08:00
SoftFever
28b7127150 feat(gui): multi-nozzle UI for H2C/A2L
Multi-nozzle sync widget, AMS rack-nozzle mapping popup, calibration rework, send-dialog nozzle mapping and extruder-count UI. Includes the fix to persist the AMS sync badge on filament cards (H2C/A2L and direct-sync printers).
2026-07-09 01:16:26 +08:00
changyu.chen
1b93f35565 FIX: print warning when ams drying
jira: [STUDIO-16505]

Change-Id: I47b98643a7d941c594eb4d90c08f48a7880c947e
(cherry picked from commit bdc833d49440c73a56cf10b723fb02d33d1c3a98)
2026-07-07 17:51:51 +08:00
Noisyfox
f58a1f350a feat: add drying-while-printing warning in SelectMachine dialog
Port from BambuStudio commit c8f70c6ca. Shows a warning when AMS
is actively drying during print job preparation, alerting users that
the drying temperature will be lowered during printing.
2026-07-07 17:50:20 +08:00
SoftFever
e3b4c6df84 Fix AMS overwrite sync showing filaments in wrong order (#14335) (#14408)
Syncing the filament list from AMS with the "Overwriting" option
  displayed the AMS filaments in the wrong (reversed) order in the
  preview, even though the filament mapping that was actually applied
  was correct. Reported on macOS with a Bambu X1C.

  The preview depends on MaterialHash being iterated in material-index
  order. MaterialHash is a WX_DECLARE_HASH_MAP, which under OrcaSlicer's
  current wxWidgets 3.3 build (wxUSE_STD_CONTAINERS=1) resolves to
  std::unordered_map; its iteration order is unspecified and on macOS
  (libc++) comes out reversed, which scrambled the preview. The same
  code is unaffected in BambuStudio because its older wxWidgets build
  still uses wx's own key-ordered hash table, so this only became
  visible after the wx upgrade.

  Fixes #14335
2026-06-26 01:20:38 +08:00
Noisyfox
fb1f4a7d24 Automatically select external spool if it's the only installed filament (#13356)
* Clean up code

* Filament mapping select ext slot automatically when no AMS filament inserted (OrcaSlicer/OrcaSlicer#13103)

* Show warning if external filament type does not match the one in sliced file
2026-05-09 13:14:27 +08:00
yw4z
0bee82cee5 Hyperlink class (#9947)
### FIXES
• 3mf file version check dialog opens bambu releases page instead Orca

### CODE COMPARISON

<img width="112" height="36" alt="Screenshot-20251128125737" src="https://github.com/user-attachments/assets/73718a18-8159-43d5-bb80-0eb90d59a8f6" />

**wxHyperlinkCtrl**
• System decides what colors to use. so blue color is visible even with colors set
• No need to use SetCursor()
```
auto wiki_url = "https://github.com/OrcaSlicer/OrcaSlicer/wiki/Built-in-placeholders-variables";
wxHyperlinkCtrl* wiki = new wxHyperlinkCtrl(this, wxID_ANY, _L("Wiki Guide"), wiki_url);
wiki->SetToolTip(wiki_url); // required to showing navigation point to user
wiki->SetFont(Label::Body_14); // not works properly
wiki->SetVisitedColour(wxColour("#009687")); // not works properly
wiki->SetHoverColour(  wxColour("#26A69A")); // not works properly
wiki->SetNormalColour( wxColour("#009687")); // not works properly
```

<img width="132" height="39" alt="Screenshot-20251128125847" src="https://github.com/user-attachments/assets/f6818dc0-5078-498a-bf09-1fd36e81ebe5" />

**wxStaticText**
• Works reliably on colors and fonts
• All event has to defined manually
```
wxStaticText* wiki = new wxStaticText(this, wxID_ANY, _L("Wiki Guide"));
auto wiki_url = "https://github.com/OrcaSlicer/OrcaSlicer/wiki/Built-in-placeholders-variables";
wiki->SetToolTip(wiki_url); // required to showing navigation point to user
wiki->SetForegroundColour(wxColour("#009687"));
wiki->SetCursor(wxCURSOR_HAND);
wxFont font = Label::Body_14;
font.SetUnderlined(true);
wiki->SetFont(font);
wiki->Bind(wxEVT_LEFT_DOWN   ,[this, wiki_url](wxMouseEvent e) {wxLaunchDefaultBrowser(wiki_url);});
wiki->Bind(wxEVT_ENTER_WINDOW,[this, wiki    ](wxMouseEvent e) {SetForegroundColour(wxColour("#26A69A"));});
wiki->Bind(wxEVT_LEAVE_WINDOW,[this, wiki    ](wxMouseEvent e) {SetForegroundColour(wxColour("#009687"));});
```

<img width="132" height="39" alt="Screenshot-20251128125847" src="https://github.com/user-attachments/assets/f6818dc0-5078-498a-bf09-1fd36e81ebe5" />

**HyperLink**
• Fully automated and single line solution
• Colors can be controllable from one place
• Works reliably on colors and fonts
• Reduces duplicate code
```
HyperLink* wiki = new HyperLink(this, _L("Wiki Guide"), "https://github.com/OrcaSlicer/OrcaSlicer/wiki/Built-in-placeholders-variables");
wiki->SetFont(Label::Body_14) // OPTIONAL default is Label::Body_14;
```


### CHANGES
• Unifies all hyperlinks with same style and makes them controllable from one place
• Replaces all wxHyperlink with simple custom class. Problem with wxHyperlink it mostly rendered as blue even color set
• Reduces duplicate code
• Adds wiki links for calibration dialogs
• Probably will add "Wiki Guide" to more dialogs overtime

<img width="349" height="238" alt="Screenshot-20251127212007" src="https://github.com/user-attachments/assets/69da2732-ea35-44de-8ebc-97a01f86328f" />

<img width="355" height="459" alt="Screenshot-20251127212021" src="https://github.com/user-attachments/assets/c0df40f8-c15d-47fa-b31a-cf8d8b337472" />

<img width="442" height="382" alt="Screenshot-20251127212046" src="https://github.com/user-attachments/assets/5d94242b-6364-4b0a-8b2f-a1f482199bd1" />

<img width="225" height="241" alt="Screenshot-20250824171339" src="https://github.com/user-attachments/assets/39ca6af3-6f8a-42ee-bf1d-c13d0f54bb63" />

<img width="442" height="639" alt="Screenshot-20251127212403" src="https://github.com/user-attachments/assets/c1c580f8-3e1b-42f0-aa8e-bac41c2ff76b" />

<img width="476" height="286" alt="Screenshot-20251127212515" src="https://github.com/user-attachments/assets/28b130ce-c7c0-4ada-9842-ff7154c00c21" />

<img width="1460" height="245" alt="Screenshot-20251127212541" src="https://github.com/user-attachments/assets/3fca2649-9cd3-4aea-9153-b2f508fdfefe" />

<img width="401" height="291" alt="Screenshot-20251127213243" src="https://github.com/user-attachments/assets/82b4ec1f-6074-4018-9efa-a1b6b819ae28" />
2026-01-03 23:06:57 +08:00
milk
b2dd9aa196 FIX:reslove polish translation cover other select use tooltips
jira:[STUDIO-15128]

Change-Id: I148eaa6245b18359597c3b96f205639ae66bbc8a
(cherry picked from commit 3eb422faaf99956001941839c4dd2b55235d3053)
(cherry picked from commit 4a65fef5dc7cf3cfe312d7ed3706d9ff5b6ee58d)
2025-10-30 14:56:49 +08:00
xin.zhang
6ebb3b8215 ENH: update the PrintOption tooltip style
jira: [STUDIO-14409]
Change-Id: I790257dea5de6aa9ed24ed21cd5f0ce1a61ad719
(cherry picked from commit d16d8efb21677b1ca2b6d928fc4ee2f1aca83ecb)
2025-10-28 15:29:50 +08:00
xin.zhang
fedcfc4ea5 ENH: support extension tool; support check extension tool
JIRA: [STUDIO-14122] [STUDIO-14162]
Change-Id: I147d335420fcc7c9a190f570863e38e138cdadcf
(cherry picked from commit db83b9fb6c6399d917b27b74cc573d668737c705)
2025-10-28 15:29:47 +08:00
xin.zhang
4a787f6ff8 ENH: clean codes about device
JIRA: [STUDIO-13609]
Change-Id: I591de7033360b9570600006cfbce2148a8d031d5
(cherry picked from commit e9c774be8f4c89b8dafa14ef56913612fb68bd0c)
2025-10-02 09:30:48 +08:00
haolin.tian
d6e87fc0b7 ENH: delete useless function, delay start_device_subscribe after mqtt_connect called
jira: [STUDIO-13135]

Change-Id: Ibce80b043d08f6c1c7baa6611c3cfa2f0c85f2f5
(cherry picked from commit c2ff073525937fb571ea8d3bfae55231adaa691d)
2025-09-30 09:11:39 +08:00
Noisyfox
d4273b4f70 Fix compile error 2025-09-29 23:19:53 +08:00
hemai
a7ad18e66e ENH: support multi-color with external
Jira: [STUDIO-12520]
Change-Id: I34c88b6a84514a0e56e65723f91d1a2940128e8d
(cherry picked from commit b8879ec648e038080628190fc363251229bbd5ee)
2025-09-28 17:13:54 +08:00
xin.zhang
a339677d08 NEW: add some filament check supports for printers
JIRA: [STUDIO-12604]
Change-Id: Ic0e7b517319621907c3c6b8ad82dbcf881c780e8
(cherry picked from commit 55a8c98e9125cdacc801ecebfd82acdcc3e8e7f7)
2025-09-25 16:38:56 +08:00
xin.zhang
d121f6e7ab ENH: update dark mode supports of print option
jira: [STUDIO-12188]
Change-Id: I0d38bcab502415dd733d9b58835e1e50dd00bd22
(cherry picked from commit 2b8edfccc866af927f8c791521eecde182946cee)
2025-09-23 17:25:53 +08:00
milk
f0825f2c2d ENH:The print page needs to support multiple alert messages
jira: [STUDIO-10756]

Change-Id: I61edceef2f6bcf30bb87aec41593009af30831fa
(cherry picked from commit 2a7da8456c1dbc96daf875bb0c21a1aa4905852a)
2025-09-23 17:10:55 +08:00
xin.zhang
60005def4c ENH: update some GUI styles
jira: [STUDIO-12074]
Change-Id: I01bbf66577040d837c1768749b43500221e54fcb
(cherry picked from commit b813cb04dd438319c331d1b7ff533120bf65bd4a)
2025-09-21 18:03:18 +08:00
xin.zhang
56088f22d6 ENH: update the size control of print option item
jira: [STUDIO-11972]
Change-Id: Ie45c0493098e233a3c45ae037c8a2d475a04ddf9
(cherry picked from commit 11989e6af095564f7375e99b2ed88f66f6ca6985)
2025-09-21 18:01:40 +08:00
xin.zhang
54c402aec6 ENH: support nozzle info, support new popup style
jira: [STUDIO-11974]
Change-Id: I8d80338d5b90bcca824ea46be2066f1bfb7aa10a
(cherry picked from commit 8c8b8d63b97e8f6a8423456f88e9a5e0e3d9f7ab)
2025-09-21 16:31:30 +08:00
xin.zhang
75aabc349a ENH: use icon when can not connect printer
jira: [STUDIO-11973]
Change-Id: I17e927c4b5f061cd66ed0b6015f43358e673ef9b
(cherry picked from commit 1bc83e42a77bb066610f6865c29481ee50dd1a23)
2025-09-21 16:26:12 +08:00
xin.zhang
32061b6772 ENH: update the print options layout
jira: [STUDIO-11972]
Change-Id: Idb15ad586d6c517f6f65ea940719d3c99230ab60
(cherry picked from commit 572721071356ecb69eff4c89c19c5ec3e37aa12c)
2025-09-21 13:48:06 +08:00
xin.zhang
5f947afb97 REF: new class PrinterInfoBox
jira: [STUDIO-11680]
Change-Id: Ie42f6420caab7ab3c9ca00512ff8c61c742f7481
(cherry picked from commit 67aca43fa13ffa7a4f5ae487560d087997f45fb3)
2025-09-21 13:48:04 +08:00
xin.zhang
1ca002a744 FIX: the display problem of wxHyperlink on MAC15
jira: [STUDIO-11043]
Change-Id: Ibc796e22d4dbee7f94d134f5b8444637f6e1390d
(cherry picked from commit cf3ae1bd1acd17622762fc9275f92c7525649f52)
2025-09-21 13:48:04 +08:00
tao wang
dc56608d13 NEW:add pre print checker
jira:[none]

Change-Id: Ic1469d30dff30e1eba92d8bfacf58d0f0b789157
(cherry picked from commit 8cfa735c6cac432a2b97dea7703e810f8eef6d04)
2025-09-21 13:48:03 +08:00
xin.zhang
97b45219b9 FIX: use the last_select_machine
jira: [STUDIO-11576]
Change-Id: Iaf8531ef7704c08f5cf853cc4d25acd711db4b8e
(cherry picked from commit b24b5af3773acb3e291ef106e51c4a180fd84da9)
2025-09-21 13:48:02 +08:00
xin.zhang
49559a6946 FIX: update the text
jira: [STUDIO-11676]
Change-Id: I7c5139fd3f81d0b1f83aef938e7ac248a0ed3887
(cherry picked from commit b609a45079c9674820d45f075fe365657f04e581)
2025-09-21 13:48:02 +08:00
xin.zhang
35353fb210 ENH: update send print dialog options GUI style
jira: [STUDIO-11444]
Change-Id: I16f6e93edf09dc84786a0f7e6a14c9d0734542b8
(cherry picked from commit 6e9f2ecb5b1471e4e7432ca681b6e5b293929a46)
2025-09-21 13:47:57 +08:00
tao wang
0082c51fc0 ENH:delete useless tips
jira:[STUDIO-11355]

Change-Id: If55b29d6b83d734c1d421dd9d61a01d202bda274
(cherry picked from commit 28c6abe8b1a71fa81350caaa5cfb0b23de0c86a5)
2025-09-21 13:47:57 +08:00
xin.zhang
afede91818 FIX: save and restore the options; update codes
jira: [STUDIO-11261]
Change-Id: I08977f17366e6b340e4af9e9a23fa5c2b856c8ea
(cherry picked from commit 8382561c7c430f452e1348a3da05f6712da780a9)
2025-09-21 13:47:53 +08:00
xin.zhang
618716b544 ENH: show why can not set timelapse
jira: [STUDIO-11109]
Change-Id: Id6347a6b0e5f6ead0a5ad534790b42adf9f01c4a
(cherry picked from commit 9a80a45a82f5db6f85fadbde977529d39d8036b1)
2025-09-21 13:47:52 +08:00
xin.zhang
94fed58ff9 ENH: update Send to print dialog
jira: [STUDIO-11230][STUDIO-11260][STUDIO-11259]
Change-Id: I6fdbeebf2a491f354c122eb35e5858bd6e72591c
(cherry picked from commit f3992d3e9420e0bd4987c6ca4cfe96f9f35bdcd1)
2025-09-21 13:47:52 +08:00
zhou.xu
2d3d68c922 ENH:When the AMS option is turned on or off, update the correct thumbnail
jira: none
Change-Id: Ia001e4baa7de72ab077cf0fb76c45d4cb8bac088
(cherry picked from commit 89aa62f8b4cd11fa10a898956f1c57ae1ef64a70)
2025-09-21 13:47:50 +08:00
xin.zhang
1aee0189d4 ENH: split the status
jira: [STUDIO-10949]
Change-Id: Ic93ae9d13dff2f5d72aef4e0f5a1250581224a18
(cherry picked from commit cc5b696d8dcf3838ac5324cdd11297e04ce1c8e6)
2025-09-18 17:08:22 +08:00
xin.zhang
5fc2af6707 ENH: check if the custom k value will be used, and show warning
jira: [STUDIO-10970]
Change-Id: If67ef695340e6bed38604d92ea86a4b0d5e57bdf
(cherry picked from commit 8b775f5c2e6c5c11baceb3c8292b41c59b98e0d0)
2025-09-18 16:17:22 +08:00
zhimin.zeng
1cbb0f817d ENH: some tpu filaments are not support auto cali
jira: none
Change-Id: I253e5c5936bc5fb90612f385e358b3015bdabf2e
(cherry picked from commit f38d8f959fabd36e4971c9b58eac193eb30fcd8f)
2025-09-18 10:42:33 +08:00
xin.zhang
198c78cac9 FIX: the DPI issue
jira: [STUDIO-9238]
Change-Id: I8ab364402358b8b21e6768ecdd0da9cfe6541777
(cherry picked from commit 6dda5f3e523e79485cd0f10c333849fbaa3e0851)
2025-09-17 23:07:08 +08:00
xin.zhang
872f0342bb FIX: Cannot send the print job when the printer is not at FDM mode
jira: [STUDIO-10571]
Change-Id: I20c02b79d09400dce2089856fde98d0cd50713ff
(cherry picked from commit d327fa91781bbc568b26ba147f9dd9f625ff1022)
2025-09-17 23:07:01 +08:00
tao wang
6f6c82a0b5 FIX:fixed disabling switch option in dark mode
jira:[STUDIO-10545]

Change-Id: I63a6ace601edc6a84dcf37ad1c241d9dc4a0b4d6
(cherry picked from commit e146f07b88c17f1d3f2690bda6603c33080c750a)
2025-09-17 17:37:27 +08:00
xin.zhang
84fa72a8bb FIX: the nozzle data check
jira: [STUDIO-10528]
Change-Id: I5a20d52a92f4e6620239753a66fb5febcad19f39
(cherry picked from commit 679ec788e57932c2088b5b08f75128a93f0e0123)
2025-09-17 15:06:27 +08:00
xin.zhang
691d357606 FIX: disable editing while sending print job
jira: [STUDIO-10362]
Change-Id: Ie017db650699c64b751430a2bac2f9680626a750
(cherry picked from commit 79d626271cd1c7448e2cba5351b28d75652a710d)
2025-09-17 10:56:24 +08:00
xin.zhang
00181ad03e FIX: update some text
jira: [STUDIO-10352]
Change-Id: I33b02a811970002b5f05ee2e519eb722b19e7051
(cherry picked from commit 16729c9283f5adfc4100c8dc3db68f2bcb968670)
2025-09-17 09:30:07 +08:00
tao wang
074a9c1bba ENH:update options ui when printer does not match
jira:[STUDIO-9973]

Change-Id: Icca959d732f98e34b0a83fc2971c70b64d393d75
(cherry picked from commit e7454fa47d09c529db3262faf19e2e2f22bdb5d7)
2025-09-16 22:07:26 +08:00