Skip to content

feat: allow choosing another printer when printing files from printer storage - #11746

Open
jactan77 wants to merge 1 commit into
bambulab:masterfrom
jactan77:feat/sdcard-print-printer-switch
Open

feat: allow choosing another printer when printing files from printer storage#11746
jactan77 wants to merge 1 commit into
bambulab:masterfrom
jactan77:feat/sdcard-print-printer-switch

Conversation

@jactan77

@jactan77 jactan77 commented Jul 28, 2026

Copy link
Copy Markdown

Problem

When printing a file from a printer's storage (device page → files / print history → Print), the printer combobox in SelectMachineDialog is unconditionally disabled (FROM_SDCARD_VIEW mode). If the source printer is busy, the dialog shows "The printer is busy on other print job" and there is no way to print the job on another idle printer — the printer list cannot even be expanded.

Solution

  • The printer list stays enabled in FROM_SDCARD_VIEW mode (it is only disabled when the source printer's file system is not available).
  • Selecting the source printer keeps the existing behavior (start_sdcard_print, the printer prints its local file).
  • Selecting a different printer triggers a transfer: Studio downloads the .gcode.3mf from the source printer via PrinterFileSystem (progress + cancel supported in the dialog's status bar, previously downloaded files are reused), then sends it to the selected printer through the regular upload path — new PrintJob type from_sdcard_transfer (LAN FTP with cloud fallback), preserving the plate index, AMS mapping and print options.
  • The printer-model mismatch warning now also covers cross-printer sends.
  • MediaFilePanel passes the source printer's file system, file index and dev id to the dialog via a new Plater::set_sdcard_print_source().

Testing status

  • Builds cleanly on Linux (Ubuntu 24.04 docker flow, BuildLinux.sh -s); no new compiler warnings in the touched files.
  • The same-printer path is unchanged by design; the cross-printer path has been verified against a protocol-level printer simulator (MQTT/FTPS), not yet against real hardware — feedback from hardware testing is welcome.

… storage

Previously the printer combobox in SelectMachineDialog was unconditionally
disabled when printing a file from a printer's storage (FROM_SDCARD_VIEW),
so when the source printer was busy there was no way to print the job on
another idle printer.

Now the printer list stays enabled in this mode. When a different printer
is selected, Studio downloads the .gcode.3mf from the source printer
(via PrinterFileSystem, with progress and cancel support in the dialog)
and sends it to the selected printer through the regular upload path
(new PrintJob type "from_sdcard_transfer", LAN FTP with cloud fallback),
keeping the plate index, AMS mapping and print options. Sending to the
source printer itself keeps the existing sdcard-print behavior. The
printer-model mismatch warning now also covers cross-printer sends.
@jactan77
jactan77 force-pushed the feat/sdcard-print-printer-switch branch from 4eb47c7 to 2766dbd Compare July 28, 2026 19:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant