Commit Graph
30676 Commits
Author SHA1 Message Date
SoftFever dfb102f68d Merge branch 'main' into dev/ffmpeg-player 2026-08-29 22:44:08 +08:00
Ian Chua d9fa43f1d7 fix: add opc support for ota workflow 2026-08-28 19:40:31 +08:00
Kris Austin db29f570bd build: clear 50 warnings - pessimizing moves and null checks that cannot fail (#15408)
* build: remove std::move that blocks copy elision

std::move wrapped around a temporary, or around a local being returned,
stops the compiler constructing it in place. Each edit is the fix clang
suggests, which is to delete the std::move call and keep its argument.

Three of the 39 sites save a move, the two return std::move(local) in
Print.cpp and TreeSupport.cpp:2749. The rest are equivalent either way
and match how the codebase already writes this elsewhere.

Clears 39 -Wpessimizing-move warnings.

* build: drop null checks on references and this

A reference cannot be bound to null and this cannot be null, so the
compiler folds these conditions to true and drops the guard. Seven are
if (&bitmap && bitmap.IsOk()), where IsOk() already does the work; two
test this directly. The guarded code runs either way, so removing the
dead operand changes nothing.

Clears 11 -Wundefined-bool-conversion warnings.
2026-08-28 08:05:59 -03:00
cc390f11ee feat(build): build the missing dependencies from the main CMake configure (#15373)
* fix(deps): build the dependencies from scratch with clang-cl

Six dependencies fail once the superbuild compiles them with clang-cl instead
of cl:

- OpenSSL never goes through CMake. Its VC-WIN64A makefile only works with cl,
  and an unquoted clang-cl path with spaces produces no .obj files at all, so
  the lib step dies with LNK1181. Pin the upstream toolchain.
- Boost.Container's bundled dlmalloc passes int* to the Interlocked API. cl
  warns, clang rejects it.
- curl 7.75's configure probes rely on C laxness clang rejects. The results
  flip and nonblock.c ends up in the AmigaOS IoctlSocket branch.
- OCCT installs RelWithDebInfo into bini/libi while find_package looks in lib.
  It also prepends -Wl,-s to the shared linker flags for every Clang build,
  which the MSVC-style linker gets as an argument it does not know. Both
  patched hunks sit inside if (MSVC) in the OCCT sources.
- wxWidgets lands in lib/clang_x64_lib, so wxWidgetsConfig.cmake falls back to
  the layout that exists instead of assuming vc_x64_lib. It tries the derived
  path first, so a cl-built tree consumed by clang-cl keeps resolving the way
  it does today. The patch step also resets the one file it touches, so it can
  run again after an interrupted build or after the patch itself changed.
- wxInspector goes through FindwxWidgets, which only searches lib/vc*_lib
  because _WX_TOOL is hardcoded to vc. It now gets the root and lib dir
  derived the same way wxWidgetsConfig.cmake derives them.

Eigen is the seventh, and it breaks on the generator rather than the compiler.
Its test, lapack and blas/testing subdirectories all call
enable_language(Fortran), and they default to ON because the dependency
configures as its own top-level project. Whether that hurts depends on what
CMake finds: the Visual Studio generator supports no Fortran and finds nothing,
clang-cl sits next to the LLVM toolset's flang and works, while MSVC with Ninja
finds Strawberry Perl's MinGW gfortran, which this build already requires for
OpenSSL, and hands it the MSVC-style /machine:x64 that MinGW's ld reads as a
missing input file. The configure dies there and takes every dependency still
in flight with it. Only the headers are consumed here, so the three subprojects
are off.

* fix(deps): honor the superbuild's generator and compiler in sub-builds

orcaslicer_add_cmake_project pinned every dependency sub-build to the Visual
Studio generator whenever MSVC was true, which is also true for clang-cl. That
generator selects its compiler by toolset and ignores the CMAKE_C_COMPILER and
CMAKE_CXX_COMPILER this file already forwards, so the dependencies were built
with cl.exe no matter which generator or compiler the superbuild was given.

Key the three affected decisions on the generator instead: which generator the
sub-builds use, whether CMAKE_BUILD_TYPE is forwarded, and /m versus -j. A
Visual Studio superbuild is unchanged, so the default path and CI behave
exactly as they do today.

build_release_vs.bat now accepts -l to select clang-cl, alongside the existing
-x for Ninja, so the generator and the compiler can be chosen independently. On
the Visual Studio generator -l reaches the slicer only, through the ClangCL
toolset, because the dependency sub-builds have no toolset to inherit; a deps
build in that combination says so rather than quietly using MSVC.

* fix(deps): use upstream wxWidgets compiler layout fix

The compiler-prefix layout fix now comes from SoftFever/Orca-deps-wxWidgets#7, so remove the duplicated local patch and apply step.

* fix(deps): stop Assimp enabling ccache on the RC rule

ASSIMP_BUILD_USE_CCACHE defaults on and applies the launcher through the
global RULE_LAUNCH_COMPILE property, so it wraps the resource-compiler rule
as well. Under Ninja that rule goes through cmcldeps, which does not survive
being launched by ccache, and the build fails with clang-cl reporting /fo as
a missing file.

The superbuild already forwards CMAKE_<LANG>_COMPILER_LAUNCHER, which CMake
applies per language and so keeps clear of the RC rule.

---------

Co-authored-by: SoftFever <103989404+SoftFever@users.noreply.github.com>
Co-authored-by: raistlin7447 <kris.austin@gmail.com>
2026-08-28 18:13:14 +08:00
Lam Wei Lun a62db72e02 Publish 3MF: import-side hardening and test coverage
Validate mixed-filament definitions during the published material pass: definitions whose components reference slots that do not exist or hold other mixed filaments, or that carry fewer than two components, are reported through the shared skipped_keys channel instead of shipping a mix the GUI integrity check would only flag later.

Fix the slot-limit exhaustion report being silently dropped: it wrote to published_config->skipped_keys, which the pass's final move-assignment from the local vector clobbers. All rejections now go through the local.

Remove the unreachable persist branch from add_detached_preset: no caller passes save_to_project=false, so the parameter is gone and the copy is always project-embedded.

Tests: cover the exhaustion path, the new definition validation, the identity-tier matching matrix (including substitute reporting), the structural-key denylist, whole-vector size-mismatch skips, relocation payload degradation, the "(Published 2)" uniquify chain, mixed blend colours staying out of shared preset configs, and duplicate-slot last-wins. Also fix the legacy-3mf scenario passing vacuously behind an if-guarded assertion. All existing published/3mf tests pass unchanged.
2026-08-28 15:24:03 +08:00
Lam Wei Lun 1c09ef14a5 Update translations. Update warning messages to be more user friendly. Update gradient color chips in publish dialog 2026-08-28 12:57:00 +08:00
Lam Wei Lun 25b008ba3e Merge main 2026-08-28 10:38:36 +08:00
Lam Wei Lun 28b325805b Fixed issues with remapping mixed filaments when importing published 3MF 2026-08-28 10:37:54 +08:00
Ray Siyang TANG 1f9259f682 Assign setting_ids for INSLOGIC filament profiles 2026-08-28 09:47:58 +08:00
inslogic3d 39fb82e0ec Update INSLOGIC filament library entries 2026-08-28 09:20:33 +08:00
inslogic3d 9fba297cd7 Add INSLOGIC printer-specific filament profiles
Add the remaining INSLOGIC filament profiles for Bambu P1/X1, Bambu P2S, and Prusa CORE One.
2026-08-28 09:15:09 +08:00
inslogic3d e5ce0d1c96 Add INSLOGIC PLA Pro filament profile 2026-08-28 09:13:10 +08:00
inslogic3d 3696199d7d Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PLA Pro @base.json 2026-08-28 09:08:20 +08:00
inslogic3d e23b00e8d2 Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PLA Pro @Prusa CORE One.json 2026-08-28 09:08:12 +08:00
inslogic3d 571c6f3eb7 Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PLA Pro @P1-X1.json 2026-08-28 09:08:06 +08:00
inslogic3d 40270881d8 Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PLA Pro @BBL P2S.json 2026-08-28 09:07:57 +08:00
inslogic3d db31cb3cae Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PETG Pro @base.json 2026-08-28 09:07:50 +08:00
inslogic3d a15c86287a Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PETG Pro @Prusa CORE One.json 2026-08-28 09:07:43 +08:00
inslogic3d 98a4d3ad5e Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PETG Pro @P1-X1.json 2026-08-28 09:07:34 +08:00
inslogic3d b4b2de07e2 Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PETG Pro @BBL P2S.json 2026-08-28 09:07:27 +08:00
inslogic3d cc7c76874f Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PA6-CF @base.json 2026-08-28 09:07:20 +08:00
inslogic3d 0d11db52d1 Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PA6-CF @Prusa CORE One.json 2026-08-28 09:07:12 +08:00
inslogic3d 99c75d53da Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PA6-CF @P1-X1.json 2026-08-28 09:07:05 +08:00
inslogic3d 67217d8d0a Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PA6-CF @BBL P2S.json 2026-08-28 09:06:57 +08:00
inslogic3d 982be37632 Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PA6-66 @base.json 2026-08-28 09:06:50 +08:00
inslogic3d 5a7c062a44 Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PA6-66 @Prusa CORE One.json 2026-08-28 09:06:43 +08:00
inslogic3d 132f8e4650 Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PA6-66 @P1-X1.json 2026-08-28 09:06:34 +08:00
inslogic3d 7a2a9c3ac1 Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PA6-66 @BBL P2S.json 2026-08-28 09:05:49 +08:00
Kris Austin 6d1584844e fix: STEP part names with accented characters import as numbers (clears 6 warnings) (#15406) 2026-08-27 19:06:06 -03:00
schneider007 6fdd4945c1 Fix bug: centroid calculation (#15399) 2026-08-27 08:16:34 -03:00
Kris AustinandRodrigo Faselli cbd1bf2c37 build: clear 295 more -Woverloaded-virtual warnings in GUI widgets (#15394)
build: clear 295 -Woverloaded-virtual warnings in GUI widgets

Turns three hidden base virtuals into real overrides, clearing 295 of
the 553 -Woverloaded-virtual warnings and taking a full clang-cl build
from 1,264 to 969. Part of #15374.

Search.hpp: SearchDialog::Popup and SearchObjectDialog::Popup took a
wxPoint that neither body ever read, hiding the virtual
wxPopupTransientWindow::Popup(wxWindow*). Both bodies clear the input,
call the base, set focus and refill the list, and SearchObjectDialog
also guards re-entry, so hiding meant none of that ran when the window
was popped through a base pointer. They now override and forward focus.

LabeledStaticBox::SetFont and ScrolledWindow::SetBackgroundColour hid
their base virtuals the same way, so the label metrics recompute and
the child colour propagation only ran for callers holding the concrete
type. Both now override.

Marking a member override makes clang flag every other unmarked
override in the same class, so seven sibling declarations needed the
keyword too. Left unmarked they were worth 481 warnings, which would
have made this a net loss.

MSWDismissUnfocusedPopup is declared only inside #ifdef __WXMSW__ in
wx/popupwin.h, so off Windows there is no base virtual to override and
the keyword would not compile. Both the declarations and the definitions
are guarded, which is how wxWidgets itself declares MSWWindowProc in
wx/nativewin.h and how this repo already handles it in BBLTopbar,
MainFrame, Button, ComboBox and TabCtrl.

ScrolledWindow's constructor left m_userPanel and m_scroll_win
uninitialised unless the style requested a vertical scrollbar, while
SetBackgroundColour dereferences both. No caller hits that today since
every instantiation passes wxVSCROLL, but the override widens who can
reach them, so they are now initialised alongside their siblings.

Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2026-08-27 08:06:50 -03:00
inslogic3d f14d77b001 Add printer-specific INSLOGIC filament profiles
Add 16 INSLOGIC filament profiles with separate configurations for Bambu P1S/X1, Bambu P2S, and Prusa CORE One.
2026-08-27 18:50:16 +08:00
inslogic3d edf60d708b Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PLA Pro @System.json 2026-08-27 18:48:56 +08:00
inslogic3d 97512e113f Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PETG Pro @System.json 2026-08-27 18:48:49 +08:00
inslogic3d cf5e028abc Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PA6-CF @System.json 2026-08-27 18:48:40 +08:00
inslogic3d 4540cf1648 Delete resources/profiles/OrcaFilamentLibrary/filament/INSLOGIC/INSLOGIC PA6-66 @System.json 2026-08-27 18:48:34 +08:00
inslogic3d c0cd36891a Register INSLOGIC filament profiles 2026-08-27 18:21:59 +08:00
inslogic3d c771da5ea5 Add INSLOGIC filament profiles 2026-08-27 18:01:51 +08:00
inslogic3d b7cb1e3ba5 Add INSLOGIC PA6-66 filament configuration
Added JSON configuration for INSLOGIC PA6-66 filament with various parameters including temperatures and flow ratios.
2026-08-27 17:59:59 +08:00
Lam Wei Lun 23b98e2ca5 Initial commit for warning popup when required filaments are not selected for mixed filaments 2026-08-27 17:04:27 +08:00
Ian Chua f9c415fc41 Merge branch 'main' into feat/plugin-auditing 2026-08-27 14:52:20 +08:00
Ian Chua 4c71ec4770 feat(plugin): storage API (#14923)
# Description

Exposes the filepath for the current plugin's directory via
```python
orca.host.plugin.storage
```
Tested with:

[test_storage_api_any.py](https://github.com/user-attachments/files/30333105/test_storage_api_any.py)

<!--
> A guide for users on how to download the artifacts from this PR.
-->

[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-08-27 14:52:09 +08:00
Ian Chua 3ab5157a49 Merge branch 'main' into feat/plugin-storage-api 2026-08-27 14:52:00 +08:00
Lam Wei Lun 20e5a7e042 Merge main 2026-08-27 14:11:41 +08:00
Lam Wei Lun 76d9b8bac0 Publish 3MF: support mixed filaments and per-extruder slot selection
- Publish mixed-filament slots as whole units: serialize the filament_mixed_* definition into project_config on import, grow the receiver's parallel arrays in lockstep, and report unappliable definitions as skipped instead of dropping them silently

- Per-extruder printer selection: one inner tab per extruder, rows keyed by full "#N" ids; single-extruder receivers collapse variants onto their slot (first applied, rest skipped), multi-extruder receivers override element-wise

- New per-slot "Enable" toggle gating what gets published; enabling a mix auto-enables + Full Publishes its components

- Mixed page previews: fixed-size ratio bar, ternary triangle (3 components) and Material Ratio vs Model Height graph (gradients), always visible regardless of Enable

- Tab strip shows full swatch compositions with adjustable spacing; barycentric helpers shared via FilamentBitmapUtils
2026-08-27 13:17:19 +08:00
Noisyfox 213161b7cd Merge branch 'main' into dev/ffmpeg-player 2026-08-27 08:44:57 +08:00
Kris Austin 142c63ab0e build: clear 143 -Woverloaded-virtual warnings in GUI widgets (#15377) 2026-08-26 19:14:30 -03:00
Noisyfox dbcb196f4e Merge branch 'main' into dev/ffmpeg-player 2026-08-26 21:47:20 +08:00
SoftFever 5552ed6cf1 Keep mixed-color filaments intact when the extruder count changes (#15385)
* Keep mixed-color filaments intact when the extruder count changes

The extruder-count spinner resized the filament arrays in bulk at the tail,
which is where mixed-color slots live, so a new filament landed behind the
mix and the sidebar skipped a slot number. It now adds and removes one slot
at a time through the same calls the sidebar's +/- buttons use, so a new
slot opens ahead of the mixed tail and a removal renumbers object filament
ids, painted facets, custom g-code and mixed components rather than
clamping them away.

Drops the vector overload of set_num_filaments(), which this leaves without
callers.
2026-08-26 19:06:33 +08:00
Ian BassiandRodrigo Faselli 9dc9b42475 Pass closure state to fuzzy skin (#15378)
Update perimeter traversal to pass each extrusion's closed/open state into `apply_fuzzy_skin`. This lets fuzzy skin logic distinguish contours from closed loops when processing perimeters.

Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2026-08-26 07:39:23 -03:00