Merge branch 'main' into feature/auto-update
@@ -48,7 +48,7 @@ PROJECT_NAME = OrcaSlicer
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 1.6.3
|
||||
PROJECT_NUMBER = latest
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
@@ -68,7 +68,7 @@ PROJECT_LOGO = ./resources/images/OrcaSlicer_32px.png
|
||||
# entered, it will be relative to the location where doxygen was started. If
|
||||
# left blank the current directory will be used.
|
||||
|
||||
OUTPUT_DIRECTORY = ../
|
||||
OUTPUT_DIRECTORY = .
|
||||
|
||||
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096
|
||||
# sub-directories (in 2 levels) under the output directory of each output format
|
||||
@@ -1059,7 +1059,11 @@ EXCLUDE_SYMLINKS = NO
|
||||
# Note that the wildcards are matched against the file with absolute path, so to
|
||||
# exclude all test directories for example use the pattern */test/*
|
||||
|
||||
EXCLUDE_PATTERNS =
|
||||
EXCLUDE_PATTERNS = */deps/*
|
||||
EXCLUDE_PATTERNS = */build/*
|
||||
EXCLUDE_PATTERNS = */deps_src/*
|
||||
|
||||
|
||||
|
||||
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
|
||||
# (namespaces, classes, functions, etc.) that should be excluded from the
|
||||
@@ -1286,7 +1290,7 @@ GENERATE_HTML = YES
|
||||
# The default directory is: html.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
||||
HTML_OUTPUT = OrcaSlicer_Dev_Document
|
||||
HTML_OUTPUT = internal_docs
|
||||
|
||||
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
|
||||
# generated HTML page (for example: .htm, .php, .asp).
|
||||
@@ -1565,7 +1569,7 @@ TOC_EXPAND = NO
|
||||
# protocol see https://www.sitemaps.org
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
||||
SITEMAP_URL =
|
||||
SITEMAP_URL = internals.orcaslicer.com
|
||||
|
||||
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
|
||||
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
|
||||
|
||||
@@ -82,113 +82,109 @@ jobs:
|
||||
build-deps-only: ${{ inputs.build-deps-only || false }}
|
||||
force-build: ${{ github.event_name == 'schedule' }}
|
||||
secrets: inherit
|
||||
|
||||
# TODO: Re-enable after auto-update testing is complete (depends on build_linux)
|
||||
# unit_tests:
|
||||
# name: Unit Tests
|
||||
# runs-on: ubuntu-24.04
|
||||
# needs: build_linux
|
||||
# if: ${{ !cancelled() && success() }}
|
||||
# steps:
|
||||
# - name: Checkout
|
||||
# uses: actions/checkout@v6
|
||||
# with:
|
||||
# sparse-checkout: |
|
||||
# .github
|
||||
# scripts
|
||||
# tests
|
||||
# - name: Apt-Install Dependencies
|
||||
# uses: ./.github/actions/apt-install-deps
|
||||
# - name: Restore Test Artifact
|
||||
# uses: actions/download-artifact@v6
|
||||
# with:
|
||||
# name: ${{ github.sha }}-tests
|
||||
# - uses: lukka/get-cmake@latest
|
||||
# with:
|
||||
# cmakeVersion: "~3.28.0" # use most recent 3.28.x version
|
||||
# - name: Unpackage and Run Unit Tests
|
||||
# timeout-minutes: 20
|
||||
# run: |
|
||||
# tar -xvf build_tests.tar
|
||||
# scripts/run_unit_tests.sh
|
||||
# - name: Upload Test Logs
|
||||
# uses: actions/upload-artifact@v5
|
||||
# if: ${{ failure() }}
|
||||
# with:
|
||||
# name: unit-test-logs
|
||||
# path: build/tests/**/*.log
|
||||
# - name: Publish Test Results
|
||||
# if: always()
|
||||
# uses: EnricoMi/publish-unit-test-result-action/linux@v2
|
||||
# with:
|
||||
# files: "ctest_results.xml"
|
||||
|
||||
# TODO: Re-enable after auto-update testing is complete
|
||||
# flatpak:
|
||||
# name: "Flatpak"
|
||||
# container:
|
||||
# image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48
|
||||
# options: --privileged
|
||||
# volumes:
|
||||
# - /usr/local/lib/android:/usr/local/lib/android
|
||||
# - /usr/share/dotnet:/usr/share/dotnet
|
||||
# - /opt/ghc:/opt/ghc1
|
||||
# - /usr/local/share/boost:/usr/local/share/boost1
|
||||
# - /opt/hostedtoolcache:/opt/hostedtoolcache1
|
||||
# strategy:
|
||||
# fail-fast: false
|
||||
# matrix:
|
||||
# variant:
|
||||
# - arch: x86_64
|
||||
# runner: ubuntu-24.04
|
||||
# - arch: aarch64
|
||||
# runner: ubuntu-24.04-arm
|
||||
# # Don't run scheduled builds on forks:
|
||||
# if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
|
||||
# runs-on: ${{ matrix.variant.runner }}
|
||||
# env:
|
||||
# date:
|
||||
# ver:
|
||||
# ver_pure:
|
||||
# steps:
|
||||
# - name: "Remove unneeded stuff to free disk space"
|
||||
# run:
|
||||
# rm -rf /usr/local/lib/android/* /usr/share/dotnet/* /opt/ghc1/* "/usr/local/share/boost1/*" /opt/hostedtoolcache1/*
|
||||
# - uses: actions/checkout@v6
|
||||
# - name: Get the version and date
|
||||
# run: |
|
||||
# ver_pure=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2)
|
||||
# if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||
# ver="PR-${{ github.event.number }}"
|
||||
# git_commit_hash="${{ github.event.pull_request.head.sha }}"
|
||||
# else
|
||||
# ver=V$ver_pure
|
||||
# git_commit_hash=""
|
||||
# fi
|
||||
# echo "ver=$ver" >> $GITHUB_ENV
|
||||
# echo "ver_pure=$ver_pure" >> $GITHUB_ENV
|
||||
# echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
|
||||
# echo "git_commit_hash=$git_commit_hash" >> $GITHUB_ENV
|
||||
# shell: bash
|
||||
# - uses: flatpak/flatpak-github-actions/flatpak-builder@master
|
||||
# with:
|
||||
# bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||
# manifest-path: scripts/flatpak/io.github.softfever.OrcaSlicer.yml
|
||||
# cache: true
|
||||
# arch: ${{ matrix.variant.arch }}
|
||||
# upload-artifact: false
|
||||
# - name: Upload artifacts Flatpak
|
||||
# uses: actions/upload-artifact@v5
|
||||
# with:
|
||||
# name: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||
# path: '/__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak'
|
||||
# - name: Deploy Flatpak to nightly release
|
||||
# if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main'
|
||||
# uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
# with:
|
||||
# upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
# release_id: 137995723
|
||||
# asset_path: /__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||
# asset_name: OrcaSlicer-Linux-flatpak_nightly_${{ matrix.variant.arch }}.flatpak
|
||||
# asset_content_type: application/octet-stream
|
||||
# max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
||||
unit_tests:
|
||||
name: Unit Tests
|
||||
runs-on: ubuntu-24.04
|
||||
needs: build_linux
|
||||
if: ${{ !cancelled() && success() }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github
|
||||
scripts
|
||||
tests
|
||||
- name: Apt-Install Dependencies
|
||||
uses: ./.github/actions/apt-install-deps
|
||||
- name: Restore Test Artifact
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: ${{ github.sha }}-tests
|
||||
- uses: lukka/get-cmake@latest
|
||||
with:
|
||||
cmakeVersion: "~3.28.0" # use most recent 3.28.x version
|
||||
- name: Unpackage and Run Unit Tests
|
||||
timeout-minutes: 20
|
||||
run: |
|
||||
tar -xvf build_tests.tar
|
||||
scripts/run_unit_tests.sh
|
||||
- name: Upload Test Logs
|
||||
uses: actions/upload-artifact@v6
|
||||
if: ${{ failure() }}
|
||||
with:
|
||||
name: unit-test-logs
|
||||
path: build/tests/**/*.log
|
||||
- name: Publish Test Results
|
||||
if: always()
|
||||
uses: EnricoMi/publish-unit-test-result-action/linux@v2
|
||||
with:
|
||||
files: "ctest_results.xml"
|
||||
flatpak:
|
||||
name: "Flatpak"
|
||||
container:
|
||||
image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48
|
||||
options: --privileged
|
||||
volumes:
|
||||
- /usr/local/lib/android:/usr/local/lib/android
|
||||
- /usr/share/dotnet:/usr/share/dotnet
|
||||
- /opt/ghc:/opt/ghc1
|
||||
- /usr/local/share/boost:/usr/local/share/boost1
|
||||
- /opt/hostedtoolcache:/opt/hostedtoolcache1
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
variant:
|
||||
- arch: x86_64
|
||||
runner: ubuntu-24.04
|
||||
- arch: aarch64
|
||||
runner: ubuntu-24.04-arm
|
||||
# Don't run scheduled builds on forks:
|
||||
if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
|
||||
runs-on: ${{ matrix.variant.runner }}
|
||||
env:
|
||||
date:
|
||||
ver:
|
||||
ver_pure:
|
||||
steps:
|
||||
- name: "Remove unneeded stuff to free disk space"
|
||||
run:
|
||||
rm -rf /usr/local/lib/android/* /usr/share/dotnet/* /opt/ghc1/* "/usr/local/share/boost1/*" /opt/hostedtoolcache1/*
|
||||
- uses: actions/checkout@v6
|
||||
- name: Get the version and date
|
||||
run: |
|
||||
ver_pure=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2)
|
||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||
ver="PR-${{ github.event.number }}"
|
||||
git_commit_hash="${{ github.event.pull_request.head.sha }}"
|
||||
else
|
||||
ver=V$ver_pure
|
||||
git_commit_hash=""
|
||||
fi
|
||||
echo "ver=$ver" >> $GITHUB_ENV
|
||||
echo "ver_pure=$ver_pure" >> $GITHUB_ENV
|
||||
echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
|
||||
echo "git_commit_hash=$git_commit_hash" >> $GITHUB_ENV
|
||||
shell: bash
|
||||
- uses: flatpak/flatpak-github-actions/flatpak-builder@master
|
||||
with:
|
||||
bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||
manifest-path: scripts/flatpak/io.github.softfever.OrcaSlicer.yml
|
||||
cache: true
|
||||
arch: ${{ matrix.variant.arch }}
|
||||
upload-artifact: false
|
||||
- name: Upload artifacts Flatpak
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||
path: '/__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak'
|
||||
- name: Deploy Flatpak to nightly release
|
||||
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main'
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
with:
|
||||
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
release_id: 137995723
|
||||
asset_path: /__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||
asset_name: OrcaSlicer-Linux-flatpak_nightly_${{ matrix.variant.arch }}.flatpak
|
||||
asset_content_type: application/octet-stream
|
||||
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
||||
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
# So building XOR cache loading.
|
||||
# We use `lookup-only` to skip pulling cache.
|
||||
- name: load cached deps
|
||||
uses: actions/cache/restore@v4
|
||||
uses: actions/cache/restore@v5
|
||||
id: cache-load
|
||||
with:
|
||||
path: ${{ env.DEPS_PATH }}
|
||||
@@ -97,7 +97,7 @@ jobs:
|
||||
|
||||
- name: Upload OrcaSlicer_dep director(ies) for use later
|
||||
if: ${{ !cancelled() && ! env.ACT}}
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: ${{ env.ARTIFACT_NAME }}
|
||||
path: ${{ env.DEPS_PATH }}
|
||||
@@ -106,7 +106,7 @@ jobs:
|
||||
|
||||
- name: Save cache from main branch
|
||||
if: ${{ !cancelled() && github.ref == 'refs/heads/main' && steps.cache-load.outputs.cache-hit != 'true' }}
|
||||
uses: actions/cache/save@v4
|
||||
uses: actions/cache/save@v5
|
||||
with:
|
||||
path: ${{ env.DEPS_PATH }}
|
||||
key: ${{ steps.cache-load.outputs.cache-primary-key }}
|
||||
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
lfs: 'true'
|
||||
|
||||
- name: Download deps artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: ${{ inputs.artifact-name }}
|
||||
path: ${{ inputs.artifact-path }}
|
||||
@@ -225,7 +225,7 @@ jobs:
|
||||
|
||||
- name: Upload artifacts mac
|
||||
if: inputs.os == 'macos-14'
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: OrcaSlicer_Mac_universal_${{ env.ver }}
|
||||
path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||
@@ -240,7 +240,7 @@ jobs:
|
||||
|
||||
- name: Upload OrcaSlicer_profile_validator DMG mac
|
||||
if: inputs.os == 'macos-14'
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: OrcaSlicer_profile_validator_Mac_universal_DMG_${{ env.ver }}
|
||||
path: ${{ github.workspace }}/OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
|
||||
@@ -307,28 +307,28 @@ jobs:
|
||||
|
||||
- name: Upload artifacts Win zip
|
||||
if: inputs.os == 'windows-latest'
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: OrcaSlicer_Windows_${{ env.ver }}_portable
|
||||
path: ${{ github.workspace }}/build/OrcaSlicer
|
||||
|
||||
- name: Upload artifacts Win installer
|
||||
if: inputs.os == 'windows-latest'
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: OrcaSlicer_Windows_${{ env.ver }}
|
||||
path: ${{ github.workspace }}/build/OrcaSlicer*.exe
|
||||
|
||||
- name: Upload artifacts Win PDB
|
||||
if: inputs.os == 'windows-latest'
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: PDB
|
||||
path: ${{ github.workspace }}/build/src/Release/Debug_PDB_${{ env.ver }}_for_developers_only.7z
|
||||
|
||||
- name: Upload OrcaSlicer_profile_validator Win
|
||||
if: inputs.os == 'windows-latest'
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: OrcaSlicer_profile_validator_Windows_${{ env.ver }}
|
||||
path: ${{ github.workspace }}/build/src/Release/OrcaSlicer_profile_validator.exe
|
||||
@@ -388,7 +388,7 @@ jobs:
|
||||
# and doesn't preserve file permissions
|
||||
- name: Upload Test Artifact
|
||||
if: inputs.os == 'ubuntu-24.04'
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: ${{ github.sha }}-tests
|
||||
overwrite: true
|
||||
@@ -410,7 +410,7 @@ jobs:
|
||||
env:
|
||||
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
|
||||
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: OrcaSlicer_Linux_ubuntu_${{ env.ubuntu-ver }}_${{ env.ver }}
|
||||
path: './build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage'
|
||||
@@ -419,7 +419,7 @@ jobs:
|
||||
if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
|
||||
env:
|
||||
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: OrcaSlicer_profile_validator_Linux_ubuntu_${{ env.ubuntu-ver }}_${{ env.ver }}
|
||||
path: './build/src/Release/OrcaSlicer_profile_validator'
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
name: Generate Doxygen Documentation
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * 1' # Every Monday at midnight UTC
|
||||
workflow_dispatch: # Manual trigger
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build-and-deploy:
|
||||
name: Build and Deploy Docs
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 60
|
||||
# Only run on main branch of the main repository
|
||||
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main'
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: thejerrybao/setup-swap-space@v1
|
||||
with:
|
||||
swap-space-path: /swapfile
|
||||
swap-size-gb: 8
|
||||
remove-existing-swap-files: true
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Install Doxygen and Graphviz
|
||||
run: |
|
||||
set -euo pipefail
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y doxygen graphviz
|
||||
|
||||
- name: Generate documentation
|
||||
run: |
|
||||
set -euo pipefail
|
||||
# Override DOT_NUM_THREADS to avoid parallel dot race condition bug
|
||||
sed -i 's/^DOT_NUM_THREADS.*/DOT_NUM_THREADS = 1/' .doxygen
|
||||
doxygen .doxygen
|
||||
# Verify documentation was generated
|
||||
if [ ! -f "internal_docs/index.html" ]; then
|
||||
echo "Error: Documentation generation failed - index.html not found"
|
||||
exit 1
|
||||
fi
|
||||
- name: Install Rclone
|
||||
run: |
|
||||
set -euo pipefail
|
||||
sudo -v
|
||||
curl -fsSL https://rclone.org/install.sh | sudo bash
|
||||
|
||||
- name: optimize
|
||||
run: |
|
||||
set -euo pipefail
|
||||
rm -f internal_docs/Nodes.xml internal_docs/Tokens.xml
|
||||
find internal_docs -name "*.map" -type f -delete || true
|
||||
find internal_docs -name "*.md5" -type f -delete || true
|
||||
|
||||
- name: upload
|
||||
# We configure rclone dynamically using environment variables
|
||||
run: |
|
||||
set -euo pipefail
|
||||
# Remove existing config if it exists to avoid conflicts
|
||||
rclone config delete cloudflare 2>/dev/null || true
|
||||
rclone config create cloudflare s3 \
|
||||
provider Cloudflare \
|
||||
access_key_id ${{ secrets.R2_ACCESS_KEY_ID }} \
|
||||
secret_access_key ${{ secrets.R2_SECRET_ACCESS_KEY }} \
|
||||
endpoint ${{ secrets.R2_ENDPOINT }}
|
||||
|
||||
rclone sync internal_docs/ cloudflare:orcaslicer-internals \
|
||||
--progress \
|
||||
--transfers 512 \
|
||||
--checkers 512
|
||||
|
||||
echo "Documentation upload completed successfully"
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
steps:
|
||||
- name: Cache shellcheck download
|
||||
id: cache-shellcheck-v0_11
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: ~/shellcheck
|
||||
key: ${{ runner.os }}-shellcheck-v0_11
|
||||
|
||||
@@ -42,3 +42,4 @@ deps_src/build/
|
||||
test.js
|
||||
/.cache/
|
||||
.clangd
|
||||
internal_docs/
|
||||
|
||||
@@ -44,19 +44,19 @@ If you come across any of these in search results, please <b>report them</b> as
|
||||
|
||||
# Main features
|
||||
|
||||
- **[Advanced Calibration Tools](https://github.com/OrcaSlicer/OrcaSlicer/wiki/Calibration)**
|
||||
- **[Advanced Calibration Tools](https://www.orcaslicer.com/wiki/Calibration)**
|
||||
Comprehensive suite: temperature towers, flow rate, retraction & more for optimal performance.
|
||||
- **[Precise Wall](https://github.com/OrcaSlicer/OrcaSlicer/wiki/quality_settings_precision#precise-wall) and [Seam Control](https://github.com/OrcaSlicer/OrcaSlicer/wiki/quality_settings_seam)**
|
||||
- **[Precise Wall](https://www.orcaslicer.com/wiki/quality_settings_precision#precise-wall) and [Seam Control](https://www.orcaslicer.com/wiki/quality_settings_seam)**
|
||||
Adjust outer wall spacing and apply scarf seams to enhance print accuracy.
|
||||
- **[Sandwich Mode](https://github.com/OrcaSlicer/OrcaSlicer/wiki/quality_settings_wall_and_surfaces#innerouterinner) and [Polyholes](https://github.com/OrcaSlicer/OrcaSlicer/wiki/quality_settings_precision#polyholes) Support**
|
||||
Use varied infill [patterns](https://github.com/OrcaSlicer/OrcaSlicer/wiki/strength_settings_patterns) and accurate hole shapes for improved clarity.
|
||||
- **[Overhang](https://github.com/OrcaSlicer/OrcaSlicer/wiki/quality_settings_overhangs) and [Support Optimization](https://github.com/OrcaSlicer/OrcaSlicer/wiki#support-settings)**
|
||||
- **[Sandwich Mode](https://www.orcaslicer.com/wiki/quality_settings_wall_and_surfaces#innerouterinner) and [Polyholes](https://www.orcaslicer.com/wiki/quality_settings_precision#polyholes) Support**
|
||||
Use varied infill [patterns](https://www.orcaslicer.com/wiki/strength_settings_patterns) and accurate hole shapes for improved clarity.
|
||||
- **[Overhang](https://www.orcaslicer.com/wiki/quality_settings_overhangs) and [Support Optimization](https://www.orcaslicer.com/wiki#support-settings)**
|
||||
Modify geometry for printable overhangs with precise support placement.
|
||||
- **[Granular Controls and Customization](https://github.com/OrcaSlicer/OrcaSlicer/wiki#process-settings)**
|
||||
- **[Granular Controls and Customization](https://www.orcaslicer.com/wiki#process-settings)**
|
||||
Fine-tune print speed, layer height, pressure, and temperature with precision.
|
||||
- **Network Printer Support**
|
||||
Seamless integration with Klipper, PrusaLink, and OctoPrint for remote control.
|
||||
- **[Mouse Ear Brims](https://github.com/OrcaSlicer/OrcaSlicer/wiki/others_settings_brim) & [Adaptive Bed Mesh](https://github.com/OrcaSlicer/OrcaSlicer/wiki/printer_basic_information_adaptive_bed_mesh)**
|
||||
- **[Mouse Ear Brims](https://www.orcaslicer.com/wiki/others_settings_brim) & [Adaptive Bed Mesh](https://www.orcaslicer.com/wiki/printer_basic_information_adaptive_bed_mesh)**
|
||||
Automatic brims and adaptive mesh calibration ensure consistent adhesion.
|
||||
- **User-Friendly Interface**
|
||||
Intuitive drag-and-drop design with pre-made profiles for popular printers.
|
||||
@@ -68,10 +68,10 @@ If you come across any of these in search results, please <b>report them</b> as
|
||||
|
||||
# Wiki
|
||||
|
||||
The [wiki](https://github.com/OrcaSlicer/OrcaSlicer/wiki) aims to provide a detailed explanation of the slicer settings, including how to maximize their use and how to calibrate and set up your printer.
|
||||
The [wiki](https://www.orcaslicer.com/wiki) aims to provide a detailed explanation of the slicer settings, including how to maximize their use and how to calibrate and set up your printer.
|
||||
|
||||
- **[Access the wiki here](https://github.com/OrcaSlicer/OrcaSlicer/wiki)**
|
||||
- **[Contribute to the wiki](https://github.com/OrcaSlicer/OrcaSlicer/wiki/How-to-wiki)**
|
||||
- **[Access the wiki here](https://www.orcaslicer.com/wiki)**
|
||||
- **[Contribute to the wiki](https://www.orcaslicer.com/wiki/How-to-wiki)**
|
||||
|
||||
# Download
|
||||
|
||||
@@ -144,7 +144,7 @@ winget install --id=SoftFever.OrcaSlicer -e
|
||||
|
||||
# How to Compile
|
||||
|
||||
All updated build instructions for Windows, macOS, and Linux are now available on the official [OrcaSlicer Wiki - How to build](https://github.com/OrcaSlicer/OrcaSlicer/wiki/How-to-build) page.
|
||||
All updated build instructions for Windows, macOS, and Linux are now available on the official [OrcaSlicer Wiki - How to build](https://www.orcaslicer.com/wiki/How-to-build) page.
|
||||
|
||||
Please refer to the wiki to ensure you're following the latest and most accurate steps for your platform.
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
include(GNUInstallDirs)
|
||||
orcaslicer_add_cmake_project(Qhull
|
||||
URL "https://github.com/qhull/qhull/archive/v8.0.1.zip"
|
||||
URL_HASH SHA256=5287f5edd6a0372588f5d6640799086a4033d89d19711023ef8229dd9301d69b
|
||||
URL "https://github.com/qhull/qhull/archive/v8.0.2.zip"
|
||||
URL_HASH SHA256=a378e9a39e718e289102c20d45632f873bfdc58a7a5f924246ea4b176e185f1e
|
||||
CMAKE_ARGS
|
||||
-DINCLUDE_INSTALL_DIR=${CMAKE_INSTALL_INCLUDEDIR}
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
add_debug_dep(dep_Qhull)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
@@ -11,6 +11,9 @@
|
||||
"nozzle_diameter": [
|
||||
"0.4"
|
||||
],
|
||||
"nozzle_volume": [
|
||||
"156"
|
||||
],
|
||||
"retract_before_wipe": [
|
||||
"0%"
|
||||
],
|
||||
@@ -132,7 +135,7 @@
|
||||
"0"
|
||||
],
|
||||
"parking_pos_retraction": [
|
||||
"25"
|
||||
"0"
|
||||
],
|
||||
"retract_when_changing_layer": [
|
||||
"0"
|
||||
@@ -141,7 +144,10 @@
|
||||
"0"
|
||||
],
|
||||
"high_current_on_filament_swap": [
|
||||
"1"
|
||||
"0"
|
||||
],
|
||||
"enable_filament_ramming": [
|
||||
"0"
|
||||
],
|
||||
"z_hop_types": "Spiral Lift"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
"nozzle_diameter": [
|
||||
"0.4"
|
||||
],
|
||||
"nozzle_volume": [
|
||||
"156"
|
||||
],
|
||||
"retract_before_wipe": [
|
||||
"0%"
|
||||
],
|
||||
@@ -132,7 +135,7 @@
|
||||
"0"
|
||||
],
|
||||
"parking_pos_retraction": [
|
||||
"25"
|
||||
"0"
|
||||
],
|
||||
"retract_when_changing_layer": [
|
||||
"0"
|
||||
@@ -141,7 +144,10 @@
|
||||
"0"
|
||||
],
|
||||
"high_current_on_filament_swap": [
|
||||
"1"
|
||||
"0"
|
||||
],
|
||||
"enable_filament_ramming": [
|
||||
"0"
|
||||
],
|
||||
"z_hop_types": "Spiral Lift"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
"nozzle_diameter": [
|
||||
"0.4"
|
||||
],
|
||||
"nozzle_volume": [
|
||||
"156"
|
||||
],
|
||||
"retract_before_wipe": [
|
||||
"0%"
|
||||
],
|
||||
@@ -132,7 +135,7 @@
|
||||
"0"
|
||||
],
|
||||
"parking_pos_retraction": [
|
||||
"25"
|
||||
"0"
|
||||
],
|
||||
"retract_when_changing_layer": [
|
||||
"0"
|
||||
@@ -141,7 +144,10 @@
|
||||
"0"
|
||||
],
|
||||
"high_current_on_filament_swap": [
|
||||
"1"
|
||||
"0"
|
||||
],
|
||||
"enable_filament_ramming": [
|
||||
"0"
|
||||
],
|
||||
"z_hop_types": "Spiral Lift"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,9 @@
|
||||
"printer_variant": "0.4",
|
||||
"nozzle_diameter": [
|
||||
"0.4"
|
||||
],
|
||||
"nozzle_volume": [
|
||||
"156"
|
||||
],
|
||||
"retract_before_wipe": [
|
||||
"0%"
|
||||
@@ -132,7 +135,7 @@
|
||||
"0"
|
||||
],
|
||||
"parking_pos_retraction": [
|
||||
"25"
|
||||
"0"
|
||||
],
|
||||
"retract_when_changing_layer": [
|
||||
"0"
|
||||
@@ -141,7 +144,10 @@
|
||||
"0"
|
||||
],
|
||||
"high_current_on_filament_swap": [
|
||||
"1"
|
||||
"0"
|
||||
],
|
||||
"enable_filament_ramming": [
|
||||
"0"
|
||||
],
|
||||
"z_hop_types": "Spiral Lift"
|
||||
}
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 408 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
@@ -4,6 +4,9 @@
|
||||
"from": "system",
|
||||
"inherits": "fdm_openeye_common",
|
||||
"instantiation": "true",
|
||||
"adaptive_bed_mesh_margin": "10",
|
||||
"bed_mesh_max": "211,211",
|
||||
"bed_mesh_min": "1.5,7",
|
||||
"layer_change_gcode": "SET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}\n_MMU_UPDATE_HEIGHT",
|
||||
"machine_end_gcode": "MMU_END\nEND_PRINT",
|
||||
"machine_load_filament_time": "30",
|
||||
@@ -24,8 +27,8 @@
|
||||
"30"
|
||||
],
|
||||
"machine_pause_gcode": "PAUSE",
|
||||
"machine_start_gcode": "SET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nMMU_START_SETUP INITIAL_TOOL={initial_tool} TOTAL_TOOLCHANGES=!total_toolchanges! REFERENCED_TOOLS=!referenced_tools! TOOL_COLORS=!colors! TOOL_TEMPS=!temperatures! TOOL_MATERIALS=!materials! FILAMENT_NAMES=!filament_names! PURGE_VOLUMES=!purge_volumes!\nMMU_START_CHECK\nSTART_PRINT BED_TEMP=[bed_temperature_initial_layer] EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TYPE=\"{curr_bed_type}\"\n; Enter YOUR exist start_print macro call here (minus purging logic because tool may not be loaded yet)\nMMU_START_LOAD_INITIAL_TOOL\n; Optionally add YOUR additional start logic (like purging) here to run just prior to start\nSTART_PRINT_SECONDARY\nSET_PRINT_STATS_INFO TOTAL_LAYER={total_layer_count} ; For pause at layer functionality and better print stats",
|
||||
"machine_unload_filament_time": "30",
|
||||
"machine_start_gcode": "SET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nMMU_START_SETUP INITIAL_TOOL={initial_tool} TOTAL_TOOLCHANGES=!total_toolchanges! REFERENCED_TOOLS=!referenced_tools! TOOL_COLORS=!colors! TOOL_TEMPS=!temperatures! TOOL_MATERIALS=!materials! FILAMENT_NAMES=!filament_names! PURGE_VOLUMES=!purge_volumes!\nMMU_START_CHECK\nSTART_PRINT BED_TEMP=[bed_temperature_initial_layer] EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TYPE=\"{curr_bed_type}\" MESH_MIN={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} MESH_MAX={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE_MARGIN={adaptive_bed_mesh_margin}\n; Enter YOUR exist start_print macro call here (minus purging logic because tool may not be loaded yet)\nMMU_START_LOAD_INITIAL_TOOL\n; Optionally add YOUR additional start logic (like purging) here to run just prior to start\nSTART_PRINT_SECONDARY\nSET_PRINT_STATS_INFO TOTAL_LAYER={total_layer_count} ; For pause at layer functionality and better print stats",
|
||||
"machine_unload_filament_time": "30",
|
||||
"name": "OpenEYE Peacock V2 0.4 nozzle",
|
||||
"nozzle_diameter": [
|
||||
"0.4"
|
||||
@@ -45,4 +48,4 @@
|
||||
],
|
||||
"setting_id": "GM001",
|
||||
"type": "machine"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,8 +124,8 @@
|
||||
"0"
|
||||
],
|
||||
"machine_pause_gcode": "PAUSE",
|
||||
"machine_start_gcode": "SET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nMMU_START_SETUP INITIAL_TOOL={initial_tool} TOTAL_TOOLCHANGES=!total_toolchanges! REFERENCED_TOOLS=!referenced_tools! TOOL_COLORS=!colors! TOOL_TEMPS=!temperatures! TOOL_MATERIALS=!materials! FILAMENT_NAMES=!filament_names! PURGE_VOLUMES=!purge_volumes!\nMMU_START_CHECK\nSTART_PRINT BED_TEMP=[bed_temperature_initial_layer] EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TYPE=\"{curr_bed_type}\"\n; Enter YOUR exist start_print macro call here (minus purging logic because tool may not be loaded yet)\nMMU_START_LOAD_INITIAL_TOOL\n; Optionally add YOUR additional start logic (like purging) here to run just prior to start\nSTART_PRINT_SECONDARY\nSET_PRINT_STATS_INFO TOTAL_LAYER={total_layer_count} ; For pause at layer functionality and better print stats",
|
||||
"machine_tool_change_time": "0",
|
||||
"machine_start_gcode": "SET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nMMU_START_SETUP INITIAL_TOOL={initial_tool} TOTAL_TOOLCHANGES=!total_toolchanges! REFERENCED_TOOLS=!referenced_tools! TOOL_COLORS=!colors! TOOL_TEMPS=!temperatures! TOOL_MATERIALS=!materials! FILAMENT_NAMES=!filament_names! PURGE_VOLUMES=!purge_volumes!\nMMU_START_CHECK\nSTART_PRINT BED_TEMP=[bed_temperature_initial_layer] EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TYPE=\"{curr_bed_type}\" MESH_MIN={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} MESH_MAX={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE_MARGIN={adaptive_bed_mesh_margin}\n; Enter YOUR exist start_print macro call here (minus purging logic because tool may not be loaded yet)\nMMU_START_LOAD_INITIAL_TOOL\n; Optionally add YOUR additional start logic (like purging) here to run just prior to start\nSTART_PRINT_SECONDARY\nSET_PRINT_STATS_INFO TOTAL_LAYER={total_layer_count} ; For pause at layer functionality and better print stats",
|
||||
"machine_tool_change_time": "0",
|
||||
"machine_unload_filament_time": "0",
|
||||
"manual_filament_change": "0",
|
||||
"max_layer_height": [
|
||||
|
||||
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
@@ -80,6 +80,10 @@
|
||||
{
|
||||
"name": "0.20mm Standard @iQ TiQ2 P2 - PACF Pro Fiberthree + VXL90 Xioneer (0.4 Nozzle)",
|
||||
"sub_path": "process/0.20mm Standard @iQ TiQ2 P2 - PACF Pro Fiberthree + VXL90 Xioneer (0.4 Nozzle).json"
|
||||
},
|
||||
{
|
||||
"name": "0.20mm Standard @iQ TiQ2 P1 - HPP4GF25 Grauts (0.4 Nozzle)",
|
||||
"sub_path": "process/0.20mm Standard @iQ TiQ2 P1 - HPP4GF25 Grauts (0.4 Nozzle).json"
|
||||
}
|
||||
],
|
||||
"filament_list": [
|
||||
@@ -106,6 +110,10 @@
|
||||
{
|
||||
"name": "VXL90 TiQ2 P2 @iQ TiQ2 0.4 Nozzle",
|
||||
"sub_path": "filament/VXL90 TiQ2 P2 @iQ TiQ2 0.4 Nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Grauts HPP4GF25 P1 @iQ TiQ2 0.4 Nozzle",
|
||||
"sub_path": "filament/Grauts HPP4GF25 P1 @iQ TiQ2 0.4 Nozzle.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,303 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Grauts HPP4GF25 P1 @iQ TiQ2 0.4 Nozzle",
|
||||
"inherits": "fdm_filament_common",
|
||||
"from": "system",
|
||||
"setting_id": "IQS1",
|
||||
"filament_id": "IQM1",
|
||||
"instantiation": "true",
|
||||
"compatible_prints": [
|
||||
"0.20mm Standard @iQ TiQ2 P1 - HPP4GF25 Grauts (0.4 Nozzle)"
|
||||
],
|
||||
"filament_cost": [
|
||||
"70.58"
|
||||
],
|
||||
"filament_density": [
|
||||
"1.09"
|
||||
],
|
||||
"filament_end_gcode": [
|
||||
"; filament end gcode\n{if current_extruder==0}\nG1 Z{layer_z+2} F900 ; safe distance for T0 while tool change\nG1 X-17 Y1 F9000\nG1 X-17 Y45 F9000\nG1 Y1 F9000\nG1 Y45 F9000\n{endif}\n\n{if current_extruder==1}\n{if current_extruder==0}T1{endif}\nG1 X-23 Y3 F9000\nG1 Y45 F9000\nG1 Y3 F9000\nG1 Y45 F9000\n{endif}\n"
|
||||
],
|
||||
"filament_flow_ratio": [
|
||||
"0.926"
|
||||
],
|
||||
"filament_settings_id": [
|
||||
"Grauts HPP4GF25 P1 @iQ TiQ2 0.4 Nozzle"
|
||||
],
|
||||
"filament_shrink": [
|
||||
"98.994%"
|
||||
],
|
||||
"filament_shrinkage_compensation_z": [
|
||||
"99%"
|
||||
],
|
||||
"filament_start_gcode": [
|
||||
"; Filament gcode\n{if current_extruder==0}\nG1 X-17 Y1 F9000\nG1 Y45 F9000\nG1 Y1 F9000\nG1 Y45 F9000\n{if layer_z==0}G1 Z{first_layer_height + 2.0}{endif}\n{if layer_z==0}G1 X[first_layer_print_min_0] Y[first_layer_print_min_1]{endif}\n{if layer_z==0}G1 Z{layer_z}{endif}\n{endif}\n\n{if current_extruder==1}\nG1 X-23 Y3 F9000\nG1 Y45 F9000\nG1 Y3 F9000\nG1 Y45 F9000\n{endif}\n"
|
||||
],
|
||||
"filament_type": [
|
||||
"HPP4GF25"
|
||||
],
|
||||
"hot_plate_temp": [
|
||||
"110"
|
||||
],
|
||||
"hot_plate_temp_initial_layer": [
|
||||
"110"
|
||||
],
|
||||
"idle_temperature": [
|
||||
"180"
|
||||
],
|
||||
"is_custom_defined": "0",
|
||||
"nozzle_temperature": [
|
||||
"220"
|
||||
],
|
||||
"nozzle_temperature_initial_layer": [
|
||||
"220"
|
||||
],
|
||||
"nozzle_temperature_range_high": [
|
||||
"280"
|
||||
],
|
||||
"nozzle_temperature_range_low": [
|
||||
"220"
|
||||
],
|
||||
"temperature_vitrification": [
|
||||
"127"
|
||||
],
|
||||
"version": "2.3.1.10",
|
||||
|
||||
|
||||
"activate_air_filtration": [
|
||||
"0"
|
||||
],
|
||||
"activate_chamber_temp_control": [
|
||||
"0"
|
||||
],
|
||||
"adaptive_pressure_advance": [
|
||||
"0"
|
||||
],
|
||||
"adaptive_pressure_advance_bridges": [
|
||||
"0"
|
||||
],
|
||||
"adaptive_pressure_advance_model": [
|
||||
"0,0,0\n0,0,0"
|
||||
],
|
||||
"adaptive_pressure_advance_overhangs": [
|
||||
"0"
|
||||
],
|
||||
"additional_cooling_fan_speed": [
|
||||
"0"
|
||||
],
|
||||
"chamber_temperature": [
|
||||
"0"
|
||||
],
|
||||
"close_fan_the_first_x_layers": [
|
||||
"3"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"iQ TiQ2 0.4 Nozzle"
|
||||
],
|
||||
"compatible_printers_condition": "",
|
||||
"compatible_prints_condition": "",
|
||||
"complete_print_exhaust_fan_speed": [
|
||||
"80"
|
||||
],
|
||||
"cool_plate_temp": [
|
||||
"105"
|
||||
],
|
||||
"cool_plate_temp_initial_layer": [
|
||||
"105"
|
||||
],
|
||||
"default_filament_colour": [
|
||||
"#000000"
|
||||
],
|
||||
"dont_slow_down_outer_wall": [
|
||||
"0"
|
||||
],
|
||||
"during_print_exhaust_fan_speed": [
|
||||
"60"
|
||||
],
|
||||
"enable_overhang_bridge_fan": [
|
||||
"1"
|
||||
],
|
||||
"enable_pressure_advance": [
|
||||
"0"
|
||||
],
|
||||
"eng_plate_temp": [
|
||||
"105"
|
||||
],
|
||||
"eng_plate_temp_initial_layer": [
|
||||
"105"
|
||||
],
|
||||
"fan_cooling_layer_time": [
|
||||
"30"
|
||||
],
|
||||
"fan_max_speed": [
|
||||
"80"
|
||||
],
|
||||
"fan_min_speed": [
|
||||
"10"
|
||||
],
|
||||
"filament_cooling_final_speed": [
|
||||
"3.5"
|
||||
],
|
||||
"filament_cooling_initial_speed": [
|
||||
"10"
|
||||
],
|
||||
"filament_cooling_moves": [
|
||||
"2"
|
||||
],
|
||||
"filament_deretraction_speed": [
|
||||
"nil"
|
||||
],
|
||||
"filament_diameter": [
|
||||
"1.75"
|
||||
],
|
||||
"filament_is_support": [
|
||||
"0"
|
||||
],
|
||||
"filament_loading_speed": [
|
||||
"10"
|
||||
],
|
||||
"filament_loading_speed_start": [
|
||||
"50"
|
||||
],
|
||||
"filament_long_retractions_when_cut": [
|
||||
"nil"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"12"
|
||||
],
|
||||
"filament_minimal_purge_on_wipe_tower": [
|
||||
"15"
|
||||
],
|
||||
"filament_multitool_ramming": [
|
||||
"1"
|
||||
],
|
||||
"filament_multitool_ramming_flow": [
|
||||
"40"
|
||||
],
|
||||
"filament_multitool_ramming_volume": [
|
||||
"10"
|
||||
],
|
||||
"filament_notes": [
|
||||
""
|
||||
],
|
||||
"filament_ramming_parameters": [
|
||||
"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6"
|
||||
],
|
||||
"filament_retract_before_wipe": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_lift_above": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_lift_below": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_lift_enforce": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_restart_extra": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_when_changing_layer": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_distances_when_cut": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_length": [
|
||||
"4"
|
||||
],
|
||||
"filament_retraction_minimum_travel": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_speed": [
|
||||
"40"
|
||||
],
|
||||
"filament_soluble": [
|
||||
"0"
|
||||
],
|
||||
"filament_stamping_distance": [
|
||||
"45"
|
||||
],
|
||||
"filament_stamping_loading_speed": [
|
||||
"29"
|
||||
],
|
||||
"filament_toolchange_delay": [
|
||||
"0"
|
||||
],
|
||||
"filament_unloading_speed": [
|
||||
"100"
|
||||
],
|
||||
"filament_unloading_speed_start": [
|
||||
"100"
|
||||
],
|
||||
"filament_vendor": [
|
||||
"iQ Materials"
|
||||
],
|
||||
"filament_wipe": [
|
||||
"nil"
|
||||
],
|
||||
"filament_wipe_distance": [
|
||||
"nil"
|
||||
],
|
||||
"filament_z_hop": [
|
||||
"nil"
|
||||
],
|
||||
"filament_z_hop_types": [
|
||||
"nil"
|
||||
],
|
||||
"full_fan_speed_layer": [
|
||||
"0"
|
||||
],
|
||||
"internal_bridge_fan_speed": [
|
||||
"-1"
|
||||
],
|
||||
"overhang_fan_speed": [
|
||||
"80"
|
||||
],
|
||||
"overhang_fan_threshold": [
|
||||
"25%"
|
||||
],
|
||||
"pellet_flow_coefficient": [
|
||||
"0.4157"
|
||||
],
|
||||
"pressure_advance": [
|
||||
"0.02"
|
||||
],
|
||||
"reduce_fan_stop_start_freq": [
|
||||
"1"
|
||||
],
|
||||
"required_nozzle_HRC": [
|
||||
"0"
|
||||
],
|
||||
"slow_down_for_layer_cooling": [
|
||||
"1"
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"3"
|
||||
],
|
||||
"slow_down_min_speed": [
|
||||
"10"
|
||||
],
|
||||
"supertack_plate_temp": [
|
||||
"35"
|
||||
],
|
||||
"supertack_plate_temp_initial_layer": [
|
||||
"35"
|
||||
],
|
||||
"support_material_interface_fan_speed": [
|
||||
"-1"
|
||||
],
|
||||
"textured_cool_plate_temp": [
|
||||
"40"
|
||||
],
|
||||
"textured_cool_plate_temp_initial_layer": [
|
||||
"40"
|
||||
],
|
||||
"textured_plate_temp": [
|
||||
"105"
|
||||
],
|
||||
"textured_plate_temp_initial_layer": [
|
||||
"105"
|
||||
]
|
||||
}
|
||||
@@ -30,9 +30,6 @@
|
||||
"chamber_temperature": [
|
||||
"0"
|
||||
],
|
||||
"close_fan_the_first_x_layers": [
|
||||
"3"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"iQ TiQ2 0.4 Nozzle"
|
||||
],
|
||||
@@ -89,6 +86,9 @@
|
||||
"filament_cooling_moves": [
|
||||
"4"
|
||||
],
|
||||
"close_fan_the_first_x_layers": [
|
||||
"1000"
|
||||
],
|
||||
"filament_cost": [
|
||||
"29.99"
|
||||
],
|
||||
@@ -162,7 +162,7 @@
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_length": [
|
||||
"0.2"
|
||||
"0.4"
|
||||
],
|
||||
"filament_retraction_minimum_travel": [
|
||||
"nil"
|
||||
@@ -222,7 +222,7 @@
|
||||
"0"
|
||||
],
|
||||
"hot_plate_temp": [
|
||||
"80"
|
||||
"70"
|
||||
],
|
||||
"hot_plate_temp_initial_layer": [
|
||||
"80"
|
||||
@@ -237,7 +237,7 @@
|
||||
"-1"
|
||||
],
|
||||
"nozzle_temperature": [
|
||||
"250"
|
||||
"240"
|
||||
],
|
||||
"nozzle_temperature_initial_layer": [
|
||||
"250"
|
||||
@@ -261,7 +261,7 @@
|
||||
"0.02"
|
||||
],
|
||||
"reduce_fan_stop_start_freq": [
|
||||
"1"
|
||||
"0"
|
||||
],
|
||||
"required_nozzle_HRC": [
|
||||
"3"
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"type": "process",
|
||||
"inherits": "fdm_process_tiq_common",
|
||||
"from": "system",
|
||||
"instantiation": "true",
|
||||
"default_acceleration": "1500",
|
||||
"enable_extra_bridge_layer": "apply_to_all",
|
||||
"enable_prime_tower": "0",
|
||||
"initial_layer_infill_speed": "100",
|
||||
"inner_wall_acceleration": "1500",
|
||||
"inner_wall_speed": "100",
|
||||
"is_custom_defined": "0",
|
||||
"name": "0.20mm Standard @iQ TiQ2 P1 - HPP4GF25 Grauts (0.4 Nozzle)",
|
||||
"notes": "Pre-Select: FBA Time Delay: 0 EPC Factor: 0\n\nDeutsch P1 HPP4GF25\n\n1. Überprüfen Sie, dass sich das Grauts HPP4GF25 im linken Extruder befindet. Halten Sie das Filament trocken! Detailierte Trocknungsanleitung, siehe unten.\n\n2. Überprüfen Sie, dass sich eine 0,4 mm Wolfram-Kupfer Düse im linken Extruder befindet.\n\n3. Verwenden Sie Magigoo Kleber für PPGF auf der PET-Folie, um eine bessere Haftung zu gewährleisten, im Singledruck in der Regel auf PET-Folie nicht erforderlich.\n\n4. Reinigen Sie ggf. die Düse mit einer Messing-Drahtbürste.\nNun sind sie bereit, um Ihren Druck zu starten.\n\n\nTipp: Am besten lässt sich das Bauteil bei einer Druckplattentemperatur von 80°C entfernen, da dann der Kleber weich wird.\n\n\nEnglish P1 HPP4GF25\n\n1. Check Left extruder filament: Grauts HPP4GF25 - Keep the filament dry!! Detailed drying instruction below.\n\n2. Check left extruder nozzle: 0.4mm Wolfram\n\n3. Check bed: PET with Magigoo glue for PPGF\n\n4. Check nozzle: Clean it with brush\n\nWELLDONE! YOU ARE READY NOW TO START YOUR PRINT JOB!\n\n\nTip: The component is best removed at a printing plate temperature of 80°C, as this softens the adhesive.",
|
||||
"outer_wall_acceleration": "1500",
|
||||
"outer_wall_speed": "80",
|
||||
"print_settings_id": "0.20mm Standard @iQ TiQ2 P1 - HPP4GF25 Grauts (0.4 Nozzle)",
|
||||
"sparse_infill_speed": "100",
|
||||
"support_angle": "0",
|
||||
"support_base_pattern": "default",
|
||||
"support_interface_bottom_layers": "0",
|
||||
"support_interface_top_layers": "3",
|
||||
"support_object_first_layer_gap": "0.3",
|
||||
"support_object_xy_distance": "0.35",
|
||||
"support_on_build_plate_only": "0",
|
||||
"support_speed": "100",
|
||||
"support_style": "snug",
|
||||
"support_top_z_distance": "0.2",
|
||||
"support_type": "normal(auto)",
|
||||
"top_surface_acceleration": "1500",
|
||||
"top_surface_speed": "80",
|
||||
"travel_acceleration": "1500",
|
||||
"version": "2.3.1.10",
|
||||
|
||||
"bridge_flow": "1.07",
|
||||
"bridge_speed": "25",
|
||||
"brim_type": "no_brim",
|
||||
"enable_support": "1",
|
||||
"exclude_object": "0",
|
||||
"gcode_label_objects": "0",
|
||||
"compatible_printers": [
|
||||
"iQ TiQ2 0.4 Nozzle"
|
||||
],
|
||||
"internal_bridge_speed": "50%",
|
||||
"internal_solid_infill_speed": "60",
|
||||
"ironing_pattern": "concentric",
|
||||
"prime_tower_width": "80",
|
||||
"layer_height": "0.2",
|
||||
"reduce_crossing_wall": "1",
|
||||
"skirt_height": "1",
|
||||
"skirt_loops": "2",
|
||||
"small_perimeter_speed": "30%",
|
||||
"small_perimeter_threshold": "5",
|
||||
"sparse_infill_density": "30%",
|
||||
"sparse_infill_pattern": "triangles",
|
||||
"support_base_pattern_spacing": "1",
|
||||
"support_bottom_interface_spacing": "0.3",
|
||||
"support_bottom_z_distance": "0.24",
|
||||
"support_expansion": "0.5",
|
||||
"support_filament": "1",
|
||||
"support_interface_filament": "1",
|
||||
"support_interface_pattern": "rectilinear_interlaced",
|
||||
"support_interface_spacing": "0",
|
||||
"top_shell_thickness": "0",
|
||||
"top_solid_infill_flow_ratio": "0.98",
|
||||
"tree_support_branch_diameter_angle": "10",
|
||||
"tree_support_branch_diameter_organic": "3",
|
||||
"tree_support_tip_diameter": "2",
|
||||
"wall_loops": "2"
|
||||
}
|
||||
@@ -20,6 +20,9 @@
|
||||
"enable_overhang_speed": "0",
|
||||
"enable_prime_tower": "0",
|
||||
"gap_infill_speed": "50",
|
||||
"thick_internal_bridges": "0",
|
||||
"enable_extra_bridge_layer": "apply_to_all",
|
||||
"bottom_shell_thickness": "0.8",
|
||||
"initial_layer_infill_speed": "25",
|
||||
"initial_layer_speed": "25",
|
||||
"initial_layer_travel_speed": "50%",
|
||||
@@ -63,10 +66,11 @@
|
||||
"tree_support_wall_count": "2",
|
||||
"wall_direction": "ccw",
|
||||
"wall_loops": "3",
|
||||
"wall_sequence": "inner-outer-inner wall",
|
||||
"wall_sequence": "inner wall/outer wall",
|
||||
"support_base_pattern": "rectilinear-grid",
|
||||
"support_interface_pattern": "rectilinear_interlaced",
|
||||
"support_interface_spacing": "0",
|
||||
"small_perimeter_speed": "30%",
|
||||
"small_perimeter_speed": "50",
|
||||
"support_interface_speed": "50",
|
||||
"brim_type": "no_brim"
|
||||
}
|
||||
@@ -11,7 +11,7 @@
|
||||
<summary>Get even more perfect prints!</summary>
|
||||
<developer_name>SoftFever</developer_name>
|
||||
<url type="homepage">https://github.com/OrcaSlicer/OrcaSlicer</url>
|
||||
<url type="help">https://github.com/OrcaSlicer/OrcaSlicer/wiki</url>
|
||||
<url type="help">https://www.orcaslicer.com/wiki</url>
|
||||
<url type="bugtracker">https://github.com/OrcaSlicer/OrcaSlicer/issues/</url>
|
||||
<url type="donation">https://ko-fi.com/SoftFever</url>
|
||||
<metadata_license>0BSD</metadata_license>
|
||||
|
||||
@@ -162,8 +162,8 @@ void fuzzy_extrusion_line(Arachne::ExtrusionJunctions& ext_lines, coordf_t slice
|
||||
}
|
||||
|
||||
if (ext_lines.back().p == ext_lines.front().p) { // Connect endpoints.
|
||||
out.front().p = out.back().p;
|
||||
out.front().w = out.back().w;
|
||||
out.back().p = out.front().p;
|
||||
out.back().w = out.front().w;
|
||||
}
|
||||
|
||||
if (out.size() >= 3)
|
||||
|
||||
@@ -1846,7 +1846,7 @@ void GCodeProcessor::apply_config(const PrintConfig& config)
|
||||
// sanity check
|
||||
if(m_preheat_steps < 1)
|
||||
m_preheat_steps = 1;
|
||||
m_result.backtrace_enabled = m_preheat_time > 0 && (m_is_XL_printer || (!m_single_extruder_multi_material && filament_count > 1));
|
||||
m_result.backtrace_enabled = config.ooze_prevention && m_preheat_time > 0 && (m_is_XL_printer || (!m_single_extruder_multi_material && filament_count > 1));
|
||||
|
||||
assert(config.nozzle_volume.size() == config.nozzle_diameter.size());
|
||||
m_nozzle_volume.resize(config.nozzle_volume.size());
|
||||
|
||||
@@ -494,6 +494,8 @@ set(SLIC3R_GUI_SOURCES
|
||||
GUI/Widgets/ErrorMsgStaticText.hpp
|
||||
GUI/Widgets/FanControl.cpp
|
||||
GUI/Widgets/FanControl.hpp
|
||||
GUI/Widgets/HyperLink.cpp
|
||||
GUI/Widgets/HyperLink.hpp
|
||||
GUI/Widgets/ImageSwitchButton.cpp
|
||||
GUI/Widgets/ImageSwitchButton.hpp
|
||||
GUI/Widgets/Label.cpp
|
||||
|
||||
@@ -298,11 +298,7 @@ void AMSMaterialsSetting::create_panel_kn(wxWindow* parent)
|
||||
if (language.find("zh") == 0)
|
||||
region = "zh";
|
||||
wxString link_url = wxString::Format("https://wiki.bambulab.com/%s/software/bambu-studio/calibration_pa", region);
|
||||
m_wiki_ctrl = new wxHyperlinkCtrl(parent, wxID_ANY, "Wiki", link_url);
|
||||
m_wiki_ctrl->SetNormalColour(*wxBLUE);
|
||||
m_wiki_ctrl->SetHoverColour(wxColour(0, 0, 200));
|
||||
m_wiki_ctrl->SetVisitedColour(*wxBLUE);
|
||||
m_wiki_ctrl->SetFont(Label::Head_14);
|
||||
m_wiki_ctrl = new HyperLink(parent, "Wiki Guide", link_url);
|
||||
cali_title_sizer->Add(m_ratio_text, 0, wxALIGN_CENTER_VERTICAL);
|
||||
cali_title_sizer->Add(m_wiki_ctrl, 0, wxALIGN_CENTER_VERTICAL);
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
#include "Widgets/CheckBox.hpp"
|
||||
#include "Widgets/ComboBox.hpp"
|
||||
#include "Widgets/TextInput.hpp"
|
||||
#include "Widgets/HyperLink.hpp"
|
||||
#include "slic3r/Utils/CalibUtils.hpp"
|
||||
#include <wx/hyperlink.h>
|
||||
|
||||
#define AMS_MATERIALS_SETTING_DEF_COLOUR wxColour(255, 255, 255)
|
||||
#define AMS_MATERIALS_SETTING_GREY900 wxColour(38, 46, 48)
|
||||
@@ -174,7 +174,7 @@ protected:
|
||||
|
||||
wxPanel * m_panel_kn;
|
||||
wxStaticText* m_ratio_text;
|
||||
wxHyperlinkCtrl * m_wiki_ctrl;
|
||||
HyperLink * m_wiki_ctrl;
|
||||
wxStaticText* m_k_param;
|
||||
TextInput* m_input_k_val;
|
||||
wxStaticText* m_n_param;
|
||||
|
||||
@@ -98,18 +98,8 @@ PingCodeBindDialog::PingCodeBindDialog(Plater* plater /*= nullptr*/)
|
||||
m_status_text->Wrap(FromDIP(440));
|
||||
m_status_text->SetForegroundColour(wxColour(38, 46, 48));
|
||||
|
||||
m_link_show_ping_code_wiki = new wxStaticText(request_bind_panel, wxID_ANY, _L("Can't find Pin Code?"));
|
||||
m_link_show_ping_code_wiki->SetFont(Label::Body_14);
|
||||
m_link_show_ping_code_wiki->SetBackgroundColour(*wxWHITE);
|
||||
m_link_show_ping_code_wiki->SetForegroundColour(wxColour(31, 142, 234));
|
||||
|
||||
m_link_show_ping_code_wiki->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); });
|
||||
m_link_show_ping_code_wiki->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); });
|
||||
|
||||
m_link_show_ping_code_wiki->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
|
||||
m_ping_code_wiki = "https://wiki.bambulab.com/en/bambu-studio/manual/pin-code";
|
||||
wxLaunchDefaultBrowser(m_ping_code_wiki);
|
||||
});
|
||||
// ORCA standardized HyperLink
|
||||
m_link_show_ping_code_wiki = new HyperLink(request_bind_panel, _L("Can't find Pin Code?"), "https://wiki.bambulab.com/en/bambu-studio/manual/pin-code");
|
||||
|
||||
m_text_input_title = new wxStaticText(request_bind_panel, wxID_ANY, _L("Pin Code"));
|
||||
m_text_input_title->SetFont(Label::Body_14);
|
||||
@@ -453,11 +443,11 @@ PingCodeBindDialog::~PingCodeBindDialog() {
|
||||
m_st_privacy_title->SetFont(Label::Body_13);
|
||||
m_st_privacy_title->SetForegroundColour(wxColour(38, 46, 48));
|
||||
|
||||
auto m_link_Terms_title = new Label(m_panel_agreement, _L("Terms and Conditions"));
|
||||
// ORCA standardized HyperLink
|
||||
auto m_link_Terms_title = new HyperLink(m_panel_agreement, _L("Terms and Conditions"));
|
||||
m_link_Terms_title->SetFont(Label::Head_13);
|
||||
m_link_Terms_title->SetMaxSize(wxSize(FromDIP(450), -1));
|
||||
m_link_Terms_title->Wrap(FromDIP(450));
|
||||
m_link_Terms_title->SetForegroundColour(wxColour("#009688"));
|
||||
m_link_Terms_title->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
|
||||
wxString txt = _L("Thank you for purchasing a Bambu Lab device. Before using your Bambu Lab device, please read the terms and conditions. "
|
||||
"By clicking to agree to use your Bambu Lab device, you agree to abide by the Privacy Policy and Terms of Use (collectively, the \"Terms\"). "
|
||||
@@ -467,18 +457,16 @@ PingCodeBindDialog::~PingCodeBindDialog() {
|
||||
confirm_dlg.CenterOnParent();
|
||||
confirm_dlg.on_show();
|
||||
});
|
||||
m_link_Terms_title->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); });
|
||||
m_link_Terms_title->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); });
|
||||
|
||||
auto m_st_and_title = new Label(m_panel_agreement, _L("and"));
|
||||
m_st_and_title->SetFont(Label::Body_13);
|
||||
m_st_and_title->SetForegroundColour(wxColour(38, 46, 48));
|
||||
|
||||
auto m_link_privacy_title = new Label(m_panel_agreement, _L("Privacy Policy"));
|
||||
// ORCA standardized HyperLink
|
||||
auto m_link_privacy_title = new HyperLink(m_panel_agreement, _L("Privacy Policy"));
|
||||
m_link_privacy_title->SetFont(Label::Head_13);
|
||||
m_link_privacy_title->SetMaxSize(wxSize(FromDIP(450), -1));
|
||||
m_link_privacy_title->Wrap(FromDIP(450));
|
||||
m_link_privacy_title->SetForegroundColour(wxColour("#009688"));
|
||||
m_link_privacy_title->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
|
||||
std::string url;
|
||||
std::string country_code = Slic3r::GUI::wxGetApp().app_config->get_country_code();
|
||||
@@ -491,8 +479,6 @@ PingCodeBindDialog::~PingCodeBindDialog() {
|
||||
}
|
||||
wxLaunchDefaultBrowser(url);
|
||||
});
|
||||
m_link_privacy_title->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND);});
|
||||
m_link_privacy_title->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW);});
|
||||
|
||||
sizere_notice_agreement->Add(0, 0, 0, wxTOP, FromDIP(4));
|
||||
sizer_privacy_agreement->Add(m_st_privacy_title, 0, wxALIGN_CENTER, 0);
|
||||
@@ -514,13 +500,11 @@ PingCodeBindDialog::~PingCodeBindDialog() {
|
||||
m_st_notice_title->SetFont(Label::Body_13);
|
||||
m_st_notice_title->SetForegroundColour(wxColour(38, 46, 48));
|
||||
|
||||
auto m_link_notice_title = new Label(m_panel_agreement, notice_link_title);
|
||||
// ORCA standardized HyperLink
|
||||
auto m_link_notice_title = new HyperLink(m_panel_agreement, notice_link_title);
|
||||
m_link_notice_title->SetFont(Label::Head_13);
|
||||
m_link_notice_title->SetMaxSize(wxSize(FromDIP(450), -1));
|
||||
m_link_notice_title->Wrap(FromDIP(450));
|
||||
m_link_notice_title->SetForegroundColour(wxColour("#009688"));
|
||||
m_link_notice_title->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); });
|
||||
m_link_notice_title->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); });
|
||||
m_link_notice_title->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
|
||||
wxString txt = _L("In the 3D Printing community, we learn from each other's successes and failures to adjust "
|
||||
"our own slicing parameters and settings. %s follows the same principle and uses machine "
|
||||
@@ -580,13 +564,8 @@ PingCodeBindDialog::~PingCodeBindDialog() {
|
||||
wxBoxSizer* m_sizer_bind_failed_info = new wxBoxSizer(wxVERTICAL);
|
||||
m_sw_bind_failed_info->SetSizer( m_sizer_bind_failed_info );
|
||||
|
||||
m_link_network_state = new wxHyperlinkCtrl(m_sw_bind_failed_info, wxID_ANY,_L("Check the status of current system services"),"");
|
||||
m_link_network_state->SetFont(::Label::Body_12);
|
||||
m_link_network_state->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {wxGetApp().link_to_network_check(); });
|
||||
m_link_network_state->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {m_link_network_state->SetCursor(wxCURSOR_HAND); });
|
||||
m_link_network_state->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {m_link_network_state->SetCursor(wxCURSOR_ARROW); });
|
||||
|
||||
|
||||
// ORCA standardized HyperLink
|
||||
m_link_network_state = new HyperLink(m_sw_bind_failed_info, _L("Check the status of current system services"), wxGetApp().link_to_network_check());
|
||||
|
||||
wxBoxSizer* sizer_error_code = new wxBoxSizer(wxHORIZONTAL);
|
||||
wxBoxSizer* sizer_error_desc = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
#include <wx/dialog.h>
|
||||
#include <curl/curl.h>
|
||||
#include <wx/webrequest.h>
|
||||
#include <wx/hyperlink.h>
|
||||
#include "wxExtensions.hpp"
|
||||
#include "Widgets/StepCtrl.hpp"
|
||||
#include "Widgets/ProgressDialog.hpp"
|
||||
#include "Widgets/Button.hpp"
|
||||
#include "Widgets/ProgressBar.hpp"
|
||||
#include "Widgets/RoundedRectangle.hpp"
|
||||
#include "Widgets/HyperLink.hpp"
|
||||
#include "Jobs/BindJob.hpp"
|
||||
#include "BBLStatusBar.hpp"
|
||||
#include "BBLStatusBarBind.hpp"
|
||||
@@ -56,7 +56,7 @@ private:
|
||||
|
||||
Label* m_status_text;
|
||||
wxStaticText* m_text_input_title;
|
||||
wxStaticText* m_link_show_ping_code_wiki;
|
||||
HyperLink* m_link_show_ping_code_wiki; // ORCA
|
||||
TextInput* m_text_input_single_code[PING_CODE_LENGTH];
|
||||
Button* m_button_bind;
|
||||
Button* m_button_cancel;
|
||||
@@ -70,7 +70,7 @@ private:
|
||||
Label* m_st_txt_error_code{ nullptr };
|
||||
Label* m_st_txt_error_desc{ nullptr };
|
||||
Label* m_st_txt_extra_info{ nullptr };
|
||||
wxHyperlinkCtrl* m_link_network_state{ nullptr };
|
||||
HyperLink* m_link_network_state{ nullptr };
|
||||
wxString m_result_info;
|
||||
wxString m_result_extra;
|
||||
wxString m_ping_code_wiki;
|
||||
@@ -114,7 +114,7 @@ private:
|
||||
Label* m_st_txt_error_code{ nullptr };
|
||||
Label* m_st_txt_error_desc{ nullptr };
|
||||
Label* m_st_txt_extra_info{ nullptr };
|
||||
wxHyperlinkCtrl* m_link_network_state{ nullptr };
|
||||
HyperLink* m_link_network_state{ nullptr };
|
||||
wxString m_result_info;
|
||||
wxString m_result_extra;
|
||||
bool m_show_error_info_state = true;
|
||||
|
||||
@@ -269,7 +269,7 @@ void SelectMObjectPopup::Popup(wxWindow* WXUNUSED(focus))
|
||||
}
|
||||
}
|
||||
|
||||
wxPostEvent(this, wxTimerEvent());
|
||||
wxPostEvent(this, wxTimerEvent(*m_refresh_timer));
|
||||
PopupWindow::Popup();
|
||||
}
|
||||
|
||||
@@ -505,7 +505,7 @@ void CalibrationPanel::init_timer()
|
||||
m_refresh_timer = new wxTimer();
|
||||
m_refresh_timer->SetOwner(this);
|
||||
m_refresh_timer->Start(REFRESH_INTERVAL);
|
||||
wxPostEvent(this, wxTimerEvent());
|
||||
wxPostEvent(this, wxCommandEvent(wxEVT_TIMER));
|
||||
}
|
||||
|
||||
void CalibrationPanel::on_timer(wxTimerEvent& event) {
|
||||
@@ -634,7 +634,7 @@ bool CalibrationPanel::Show(bool show) {
|
||||
m_refresh_timer->Stop();
|
||||
m_refresh_timer->SetOwner(this);
|
||||
m_refresh_timer->Start(REFRESH_INTERVAL);
|
||||
wxPostEvent(this, wxTimerEvent());
|
||||
wxPostEvent(this, wxCommandEvent(wxEVT_TIMER));
|
||||
|
||||
DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
|
||||
if (dev) {
|
||||
|
||||
@@ -466,21 +466,12 @@ void CaliPageCaption::init_bitmaps() {
|
||||
|
||||
void CaliPageCaption::create_wiki(wxWindow* parent)
|
||||
{
|
||||
m_wiki_text = new Label(parent, _L("Wiki"));
|
||||
m_wiki_text->SetFont(Label::Head_14);
|
||||
m_wiki_text->SetForegroundColour({ 0, 88, 220 });
|
||||
m_wiki_text->Bind(wxEVT_ENTER_WINDOW, [this](wxMouseEvent& e) {
|
||||
e.Skip();
|
||||
SetCursor(wxCURSOR_HAND);
|
||||
});
|
||||
m_wiki_text->Bind(wxEVT_LEAVE_WINDOW, [this](wxMouseEvent& e) {
|
||||
e.Skip();
|
||||
SetCursor(wxCURSOR_ARROW);
|
||||
});
|
||||
// ORCA standardized HyperLink
|
||||
m_wiki_text = new HyperLink(parent, _L("Wiki Guide"));
|
||||
m_wiki_text->Bind(wxEVT_LEFT_UP, [this](wxMouseEvent& e) {
|
||||
if (!m_wiki_url.empty())
|
||||
wxLaunchDefaultBrowser(m_wiki_url);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
void CaliPageCaption::show_prev_btn(bool show)
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "Widgets/TextInput.hpp"
|
||||
#include "Widgets/AMSControl.hpp"
|
||||
#include "Widgets/ProgressBar.hpp"
|
||||
#include "Widgets/HyperLink.hpp"
|
||||
#include "wxExtensions.hpp"
|
||||
#include "PresetComboBoxes.hpp"
|
||||
|
||||
@@ -140,7 +141,7 @@ private:
|
||||
void init_bitmaps();
|
||||
void create_wiki(wxWindow* parent);
|
||||
|
||||
Label* m_wiki_text;
|
||||
HyperLink* m_wiki_text; // ORCA
|
||||
wxString m_wiki_url;
|
||||
ScalableBitmap m_prev_bmp_normal;
|
||||
ScalableBitmap m_prev_bmp_hover;
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "Tab.hpp"
|
||||
#include "MainFrame.hpp"
|
||||
#include "libslic3r_version.h"
|
||||
#include "Widgets/HyperLink.hpp" // ORCA
|
||||
|
||||
#define NAME_OPTION_COMBOBOX_SIZE wxSize(FromDIP(200), FromDIP(24))
|
||||
#define FILAMENT_PRESET_COMBOBOX_SIZE wxSize(FromDIP(300), FromDIP(24))
|
||||
@@ -5027,8 +5028,8 @@ wxPanel *PresetTree::get_child_item(wxPanel *parent, std::shared_ptr<Preset> pre
|
||||
bool base_id_error = false;
|
||||
if (preset->inherits() == "" && preset->base_id != "") base_id_error = true;
|
||||
if (base_id_error) {
|
||||
std::string wiki_url = "https://wiki.bambulab.com/en/software/bambu-studio/custom-filament-issue";
|
||||
wxHyperlinkCtrl *m_download_hyperlink = new wxHyperlinkCtrl(panel, wxID_ANY, _L("[Delete Required]"), wiki_url, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE);
|
||||
// ORCA standardized HyperLink
|
||||
HyperLink *m_download_hyperlink = new HyperLink(panel, _L("[Delete Required]"), "https://wiki.bambulab.com/en/software/bambu-studio/custom-filament-issue");
|
||||
m_download_hyperlink->SetFont(Label::Body_10);
|
||||
sizer->Add(m_download_hyperlink, 0, wxEXPAND | wxALL, 5);
|
||||
}
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
#include "Jobs/BoostThreadWorker.hpp"
|
||||
#include "Jobs/PlaterWorker.hpp"
|
||||
|
||||
#include "Widgets/HyperLink.hpp" // ORCA
|
||||
|
||||
#define DESIGN_INPUT_SIZE wxSize(FromDIP(100), -1)
|
||||
|
||||
namespace Slic3r {
|
||||
@@ -72,7 +74,8 @@ DownloadProgressDialog::DownloadProgressDialog(wxString title)
|
||||
|
||||
sizer_download_failed->Add(m_statictext_download_failed, 0, wxALIGN_CENTER | wxALL, 5);
|
||||
|
||||
auto m_download_hyperlink = new wxHyperlinkCtrl(m_panel_download_failed, wxID_ANY, _L("click here to see more info"), download_failed_url, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE);
|
||||
// ORCA standardized HyperLink
|
||||
auto m_download_hyperlink = new HyperLink(m_panel_download_failed, _L("click here to see more info"), download_failed_url);
|
||||
sizer_download_failed->Add(m_download_hyperlink, 0, wxALIGN_CENTER | wxALL, 5);
|
||||
|
||||
|
||||
@@ -93,7 +96,8 @@ DownloadProgressDialog::DownloadProgressDialog(wxString title)
|
||||
|
||||
sizer_install_failed->Add(m_statictext_install_failed, 0, wxALIGN_CENTER | wxALL, 5);
|
||||
|
||||
auto m_install_hyperlink = new wxHyperlinkCtrl(m_panel_install_failed, wxID_ANY, _L("click here to see more info"), install_failed_url, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE);
|
||||
// ORCA standardized HyperLink
|
||||
auto m_install_hyperlink = new HyperLink(m_panel_install_failed, _L("click here to see more info"), install_failed_url);
|
||||
sizer_install_failed->Add(m_install_hyperlink, 0, wxALIGN_CENTER | wxALL, 5);
|
||||
|
||||
|
||||
|
||||
@@ -147,15 +147,10 @@ FilamentGroupPopup::FilamentGroupPopup(wxWindow *parent) : PopupWindow(parent, w
|
||||
{
|
||||
wxBoxSizer *button_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
const std::string wiki_path = Slic3r::resources_dir() + "/wiki/filament_group_wiki_zh.html";
|
||||
const std::string wiki_path = Slic3r::resources_dir() + "/wiki/filament_group_wiki_zh.html"; // NEEDFIX this link is broken
|
||||
|
||||
auto* wiki_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
wiki_link = new wxStaticText(this, wxID_ANY, _L("Learn more"));
|
||||
wiki_link->SetBackgroundColour(BackGroundColor);
|
||||
wiki_link->SetForegroundColour(GreenColor);
|
||||
wiki_link->SetFont(Label::Body_12.Underlined());
|
||||
wiki_link->SetCursor(wxCursor(wxCURSOR_HAND));
|
||||
wiki_link->Bind(wxEVT_LEFT_DOWN, [wiki_path](wxMouseEvent &) { wxLaunchDefaultBrowser(wxString(wiki_path.c_str())); });
|
||||
wiki_link = new HyperLink(this, _L("Wiki Guide"), wxString(wiki_path.c_str())); // ORCA
|
||||
wiki_sizer->Add(wiki_link, 0, wxALIGN_CENTER | wxALL, FromDIP(3));
|
||||
|
||||
button_sizer->Add(wiki_sizer, 0, wxLEFT, horizontal_margin);
|
||||
|
||||
@@ -2087,7 +2087,13 @@ void GUI_App::init_app_config()
|
||||
}
|
||||
|
||||
// Change current dirtory of application
|
||||
[[maybe_unused]] auto unused_result = chdir(encode_path((Slic3r::data_dir() + "/log").c_str()).c_str());
|
||||
|
||||
#ifdef _WIN32
|
||||
[[maybe_unused]] auto unused_result = _chdir(encode_path((Slic3r::data_dir() + "/log").c_str()).c_str());
|
||||
#else
|
||||
[[maybe_unused]] auto unused_result = chdir(encode_path((Slic3r::data_dir() + "/log").c_str()).c_str());
|
||||
#endif
|
||||
|
||||
} else {
|
||||
m_datadir_redefined = true;
|
||||
}
|
||||
@@ -3435,7 +3441,7 @@ void GUI_App::set_side_menu_popup_status(bool status)
|
||||
m_side_popup_status = status;
|
||||
}
|
||||
|
||||
void GUI_App::link_to_network_check()
|
||||
std::string GUI_App::link_to_network_check()
|
||||
{
|
||||
std::string url;
|
||||
std::string country_code = app_config->get_country_code();
|
||||
@@ -3450,10 +3456,11 @@ void GUI_App::link_to_network_check()
|
||||
else {
|
||||
url = "https://status.bambulab.com";
|
||||
}
|
||||
wxLaunchDefaultBrowser(url);
|
||||
//wxLaunchDefaultBrowser(url);
|
||||
return url; // ORCA
|
||||
}
|
||||
|
||||
void GUI_App::link_to_lan_only_wiki()
|
||||
std::string GUI_App::link_to_lan_only_wiki()
|
||||
{
|
||||
std::string url;
|
||||
std::string country_code = app_config->get_country_code();
|
||||
@@ -3467,7 +3474,8 @@ void GUI_App::link_to_lan_only_wiki()
|
||||
else {
|
||||
url = "https://wiki.bambulab.com/en/knowledge-sharing/enable-lan-mode";
|
||||
}
|
||||
wxLaunchDefaultBrowser(url);
|
||||
//wxLaunchDefaultBrowser(url);
|
||||
return url; // ORCA
|
||||
}
|
||||
|
||||
bool GUI_App::tabs_as_menu() const
|
||||
|
||||
@@ -406,8 +406,8 @@ public:
|
||||
//update side popup status
|
||||
bool get_side_menu_popup_status();
|
||||
void set_side_menu_popup_status(bool status);
|
||||
void link_to_network_check();
|
||||
void link_to_lan_only_wiki();
|
||||
std::string link_to_network_check(); // ORCA
|
||||
std::string link_to_lan_only_wiki(); // ORCA
|
||||
|
||||
const wxColour& get_label_clr_modified() { return m_color_label_modified; }
|
||||
const wxColour& get_label_clr_sys() { return m_color_label_sys; }
|
||||
|
||||
@@ -3118,7 +3118,7 @@ void MainFrame::init_menubar_as_editor()
|
||||
// help
|
||||
append_menu_item(m_topbar->GetCalibMenu(), wxID_ANY, _L("Tutorial"), _L("Calibration help"),
|
||||
[this](wxCommandEvent&) {
|
||||
std::string url = "https://github.com/OrcaSlicer/OrcaSlicer/wiki/Calibration";
|
||||
std::string url = "https://www.orcaslicer.com/wiki/Calibration";
|
||||
if (const std::string country_code = wxGetApp().app_config->get_country_code(); country_code == "CN") {
|
||||
// Use gitee mirror for China users
|
||||
url = "https://gitee.com/n0isyfox/orca-slicer-docs/wikis/%E6%A0%A1%E5%87%86/%E6%89%93%E5%8D%B0%E5%8F%82%E6%95%B0%E6%A0%A1%E5%87%86";
|
||||
@@ -3234,7 +3234,7 @@ void MainFrame::init_menubar_as_editor()
|
||||
[this]() {return m_plater->is_view3D_shown();; }, this);
|
||||
// help
|
||||
append_menu_item(calib_menu, wxID_ANY, _L("Tutorial"), _L("Calibration help"),
|
||||
[this](wxCommandEvent&) { wxLaunchDefaultBrowser("https://github.com/OrcaSlicer/OrcaSlicer/wiki/Calibration", wxBROWSER_NEW_WINDOW); }, "", nullptr,
|
||||
[this](wxCommandEvent&) { wxLaunchDefaultBrowser("https://www.orcaslicer.com/wiki/Calibration", wxBROWSER_NEW_WINDOW); }, "", nullptr,
|
||||
[this]() {return m_plater->is_view3D_shown();; }, this);
|
||||
|
||||
m_menubar->Append(calib_menu,wxString::Format("&%s", _L("Calibration")));
|
||||
|
||||
@@ -769,7 +769,7 @@ bool MediaPlayCtrl::start_stream_service(bool *need_install)
|
||||
auto file_dll = tools_dir + dll;
|
||||
auto file_dll2 = plugins_dir + dll;
|
||||
if (!boost::filesystem::exists(file_dll) || boost::filesystem::last_write_time(file_dll) != boost::filesystem::last_write_time(file_dll2))
|
||||
boost::filesystem::copy_file(file_dll2, file_dll, boost::filesystem::copy_option::overwrite_if_exists);
|
||||
boost::filesystem::copy_file(file_dll2, file_dll, boost::filesystem::copy_options::overwrite_existing);
|
||||
}
|
||||
boost::process::child process_source(file_source, file_url2.ToStdWstring(), boost::process::start_dir(tools_dir),
|
||||
boost::process::windows::create_no_window,
|
||||
|
||||
@@ -586,7 +586,8 @@ wxBoxSizer *Newer3mfVersionDialog::get_msg_sizer()
|
||||
if (file_version_newer) {
|
||||
text1 = new wxStaticText(this, wxID_ANY, _L("The 3MF file version is in Beta and it is newer than the current OrcaSlicer version."));
|
||||
wxStaticText * text2 = new wxStaticText(this, wxID_ANY, _L("If you would like to try Orca Slicer Beta, you may click to"));
|
||||
wxHyperlinkCtrl *github_link = new wxHyperlinkCtrl(this, wxID_ANY, _L("Download Beta Version"), "https://github.com/bambulab/BambuStudio/releases");
|
||||
// ORCA standardized HyperLink
|
||||
HyperLink * github_link = new HyperLink(this, _L("Download Beta Version"), "https://github.com/SoftFever/OrcaSlicer/releases");
|
||||
horizontal_sizer->Add(text2, 0, wxEXPAND, 0);
|
||||
horizontal_sizer->Add(github_link, 0, wxEXPAND | wxLEFT, 5);
|
||||
|
||||
@@ -672,11 +673,9 @@ NetworkErrorDialog::NetworkErrorDialog(wxWindow* parent)
|
||||
|
||||
wxBoxSizer* sizer_link = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
m_link_server_state = new wxHyperlinkCtrl(this, wxID_ANY, _L("Check the status of current system services"), "");
|
||||
// ORCA standardized HyperLink
|
||||
m_link_server_state = new HyperLink(this, _L("Check the status of current system services"), wxGetApp().link_to_network_check());
|
||||
m_link_server_state->SetFont(::Label::Body_13);
|
||||
m_link_server_state->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {wxGetApp().link_to_network_check(); });
|
||||
m_link_server_state->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); });
|
||||
m_link_server_state->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); });
|
||||
|
||||
sizer_link->Add(m_link_server_state, 0, wxALL, 0);
|
||||
|
||||
@@ -690,11 +689,9 @@ NetworkErrorDialog::NetworkErrorDialog(wxWindow* parent)
|
||||
m_text_proposal->SetFont(::Label::Body_14);
|
||||
m_text_proposal->SetForegroundColour(0x323A3C);
|
||||
|
||||
m_text_wiki = new wxHyperlinkCtrl(this, wxID_ANY, _L("How to use LAN only mode"), "");
|
||||
// ORCA standardized HyperLink
|
||||
m_text_wiki = new HyperLink(this, _L("How to use LAN only mode"), wxGetApp().link_to_lan_only_wiki());
|
||||
m_text_wiki->SetFont(::Label::Body_13);
|
||||
m_text_wiki->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {wxGetApp().link_to_lan_only_wiki(); });
|
||||
m_text_wiki->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); });
|
||||
m_text_wiki->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); });
|
||||
|
||||
sizer_help->Add(m_text_proposal, 0, wxEXPAND, 0);
|
||||
sizer_help->Add(m_text_wiki, 0, wxALL, 0);
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "Widgets/Button.hpp"
|
||||
#include "Widgets/CheckBox.hpp"
|
||||
#include "Widgets/TextInput.hpp"
|
||||
#include "Widgets/HyperLink.hpp"
|
||||
#include "BBLStatusBar.hpp"
|
||||
#include "BBLStatusBarSend.hpp"
|
||||
#include "libslic3r/Semver.hpp"
|
||||
@@ -424,9 +425,9 @@ public:
|
||||
|
||||
private:
|
||||
Label* m_text_basic;
|
||||
wxHyperlinkCtrl* m_link_server_state;
|
||||
HyperLink* m_link_server_state; // ORCA
|
||||
Label* m_text_proposal;
|
||||
wxHyperlinkCtrl* m_text_wiki;
|
||||
HyperLink* m_text_wiki; // ORCA
|
||||
Button * m_button_confirm;
|
||||
|
||||
public:
|
||||
|
||||
@@ -653,7 +653,7 @@ void MultiMachineManagerPage::start_timer()
|
||||
|
||||
m_flipping_timer->SetOwner(this);
|
||||
m_flipping_timer->Start(1000);
|
||||
wxPostEvent(this, wxTimerEvent());
|
||||
wxPostEvent(this, wxTimerEvent(*m_flipping_timer));
|
||||
}
|
||||
|
||||
void MultiMachineManagerPage::update_page_number()
|
||||
|
||||
@@ -61,7 +61,7 @@ bool MultiMachinePage::Show(bool show)
|
||||
m_refresh_timer->Stop();
|
||||
m_refresh_timer->SetOwner(this);
|
||||
m_refresh_timer->Start(2000);
|
||||
wxPostEvent(this, wxTimerEvent());
|
||||
wxPostEvent(this, wxTimerEvent(*m_refresh_timer));
|
||||
}
|
||||
else {
|
||||
m_refresh_timer->Stop();
|
||||
@@ -96,7 +96,7 @@ void MultiMachinePage::init_timer()
|
||||
m_refresh_timer = new wxTimer();
|
||||
//m_refresh_timer->SetOwner(this);
|
||||
//m_refresh_timer->Start(8000);
|
||||
//wxPostEvent(this, wxTimerEvent());
|
||||
//wxPostEvent(this, wxTimerEvent(*m_refresh_timer));
|
||||
}
|
||||
|
||||
void MultiMachinePage::on_timer(wxTimerEvent& event)
|
||||
@@ -482,7 +482,7 @@ bool MultiMachinePickPage::Show(bool show)
|
||||
//m_refresh_timer->Stop();
|
||||
//m_refresh_timer->SetOwner(this);
|
||||
//m_refresh_timer->Start(4000);
|
||||
//wxPostEvent(this, wxTimerEvent());
|
||||
//wxPostEvent(this, wxTimerEvent(*m_refresh_timer));
|
||||
}
|
||||
else {
|
||||
//m_refresh_timer->Stop();
|
||||
|
||||
@@ -1402,7 +1402,7 @@ void CloudTaskManagerPage::start_timer()
|
||||
|
||||
m_flipping_timer->SetOwner(this);
|
||||
m_flipping_timer->Start(1000);
|
||||
wxPostEvent(this, wxTimerEvent());
|
||||
wxPostEvent(this, wxTimerEvent(*m_flipping_timer));
|
||||
}
|
||||
|
||||
void CloudTaskManagerPage::on_timer(wxTimerEvent& event)
|
||||
|
||||
@@ -980,7 +980,7 @@ private:
|
||||
|
||||
NotificationData{NotificationType::BBLUserPresetExceedLimit, NotificationLevel::WarningNotificationLevel, BBL_NOTICE_MAX_INTERVAL,
|
||||
_u8L("The number of user presets cached in the cloud has exceeded the upper limit, newly created user presets can only be used locally."),
|
||||
_u8L("Wiki"),
|
||||
_u8L("Wiki Guide"),
|
||||
[](wxEvtHandler* evnthndlr) {
|
||||
wxLaunchDefaultBrowser("https://wiki.bambulab.com/en/software/bambu-studio/3rd-party-printer-profile#cloud-user-presets-limit");
|
||||
return false;
|
||||
|
||||
@@ -47,14 +47,7 @@ wxBoxSizer* ObjColorDialog::create_btn_sizer(long flags,bool exist_error)
|
||||
auto btn_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
if (!exist_error) {
|
||||
btn_sizer->AddSpacer(FromDIP(25));
|
||||
wxStaticText *tips = new wxStaticText(this, wxID_ANY, _L("Open Wiki for more information >"));
|
||||
/* wxFont font(10, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false);
|
||||
font.SetUnderlined(true);
|
||||
tips->SetFont(font);*/
|
||||
auto font = tips->GetFont();
|
||||
font.SetUnderlined(true);
|
||||
tips->SetFont(font);
|
||||
tips->SetForegroundColour(wxColour("#009687"));
|
||||
auto *tips = new HyperLink(this, _L("Wiki Guide")); // ORCA
|
||||
tips->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) {
|
||||
bool is_zh = wxGetApp().app_config->get("language") == "zh_CN";
|
||||
if (is_zh) {
|
||||
|
||||
@@ -1312,7 +1312,7 @@ wxString OptionsGroup::get_url(const std::string& path_end)
|
||||
str = str.Left(pos) + anchor;
|
||||
}
|
||||
// Orca: point to sf wiki for seam parameters
|
||||
return wxString::Format(L"https://github.com/OrcaSlicer/OrcaSlicer/wiki/%s", from_u8(path_end));
|
||||
return wxString::Format(L"https://www.orcaslicer.com/wiki/%s", from_u8(path_end));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1153,11 +1153,8 @@ PrinterPartsDialog::PrinterPartsDialog(wxWindow* parent)
|
||||
change_nozzle_tips->SetFont(Label::Body_13);
|
||||
change_nozzle_tips->SetForegroundColour(STATIC_TEXT_CAPTION_COL);
|
||||
|
||||
m_wiki_link = new Label(single_panel, _L("View wiki"));
|
||||
m_wiki_link = new HyperLink(single_panel, _L("Wiki Guide")); // ORCA
|
||||
m_wiki_link->SetFont(Label::Body_13);
|
||||
m_wiki_link->SetForegroundColour(wxColour("#009688"));
|
||||
m_wiki_link->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { SetCursor(wxCURSOR_HAND); });
|
||||
m_wiki_link->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) { SetCursor(wxCURSOR_ARROW); });
|
||||
m_wiki_link->Bind(wxEVT_LEFT_DOWN, &PrinterPartsDialog::OnWikiClicked, this);
|
||||
|
||||
h_tips_sizer->Add(change_nozzle_tips, 0, wxLEFT);
|
||||
@@ -1267,11 +1264,8 @@ PrinterPartsDialog::PrinterPartsDialog(wxWindow* parent)
|
||||
multiple_change_nozzle_tips->SetFont(Label::Body_13);
|
||||
multiple_change_nozzle_tips->SetForegroundColour(STATIC_TEXT_CAPTION_COL);
|
||||
|
||||
multiple_wiki_link = new Label(multiple_panel, _L("View wiki"));
|
||||
multiple_wiki_link = new HyperLink(multiple_panel, _L("Wiki Guide")); // ORCA
|
||||
multiple_wiki_link->SetFont(Label::Body_13);
|
||||
multiple_wiki_link->SetForegroundColour(wxColour("#009688"));
|
||||
multiple_wiki_link->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { SetCursor(wxCURSOR_HAND); });
|
||||
multiple_wiki_link->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) { SetCursor(wxCURSOR_ARROW); });
|
||||
multiple_wiki_link->Bind(wxEVT_LEFT_DOWN, &PrinterPartsDialog::OnWikiClicked, this);
|
||||
|
||||
wxSizer* multiple_change_tips_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "Widgets/CheckBox.hpp"
|
||||
#include "Widgets/StaticLine.hpp"
|
||||
#include "Widgets/ComboBox.hpp"
|
||||
#include "Widgets/HyperLink.hpp"
|
||||
|
||||
// Previous definitions
|
||||
class SwitchBoard;
|
||||
@@ -33,7 +34,7 @@ protected:
|
||||
Label* nozzle_flow_type_label;
|
||||
ComboBox* nozzle_flow_type_checkbox;
|
||||
Label *change_nozzle_tips;
|
||||
Label* m_wiki_link;
|
||||
HyperLink* m_wiki_link;
|
||||
Button* m_single_update_nozzle_button;
|
||||
Button* m_multiple_update_nozzle_button;
|
||||
|
||||
@@ -46,7 +47,7 @@ protected:
|
||||
ComboBox *multiple_right_nozzle_flow_checkbox;
|
||||
|
||||
Label *multiple_change_nozzle_tips;
|
||||
Label* multiple_wiki_link;
|
||||
HyperLink* multiple_wiki_link;
|
||||
|
||||
wxPanel *single_panel;
|
||||
wxPanel *multiple_panel;
|
||||
|
||||
@@ -1510,7 +1510,8 @@ InputIpAddressDialog::InputIpAddressDialog(wxWindow *parent)
|
||||
m_tip4->SetMinSize(wxSize(FromDIP(355), -1));
|
||||
m_tip4->SetMaxSize(wxSize(FromDIP(355), -1));
|
||||
|
||||
m_trouble_shoot = new wxHyperlinkCtrl(this, wxID_ANY, "How to trouble shooting", "");
|
||||
// ORCA standardized HyperLink
|
||||
m_trouble_shoot = new HyperLink(this, "How to trouble shooting");
|
||||
|
||||
m_img_help = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("input_access_code_x1_en", this, 198), wxDefaultPosition, wxSize(FromDIP(355), -1), 0);
|
||||
|
||||
|
||||
@@ -326,7 +326,7 @@ public:
|
||||
wxStaticBitmap* m_img_step1{ nullptr };
|
||||
wxStaticBitmap* m_img_step2{ nullptr };
|
||||
wxStaticBitmap* m_img_step3{ nullptr };
|
||||
wxHyperlinkCtrl* m_trouble_shoot{ nullptr };
|
||||
HyperLink* m_trouble_shoot{ nullptr }; // ORCA
|
||||
wxTimer* closeTimer{ nullptr };
|
||||
int closeCount{3};
|
||||
bool m_show_access_code{ false };
|
||||
|
||||
@@ -688,12 +688,9 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
||||
sizer_extra_info->Add(st_title_extra_info_doc, 0, wxALL, 0);
|
||||
sizer_extra_info->Add(m_st_txt_extra_info, 0, wxALL, 0);
|
||||
|
||||
|
||||
m_link_network_state = new wxHyperlinkCtrl(m_sw_print_failed_info, wxID_ANY,_L("Check the status of current system services"),"");
|
||||
// ORCA standardized HyperLink
|
||||
m_link_network_state = new HyperLink(m_sw_print_failed_info, _L("Check the status of current system services"), wxGetApp().link_to_network_check());
|
||||
m_link_network_state->SetFont(::Label::Body_12);
|
||||
m_link_network_state->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {wxGetApp().link_to_network_check();});
|
||||
m_link_network_state->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {m_link_network_state->SetCursor(wxCURSOR_HAND);});
|
||||
m_link_network_state->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {m_link_network_state->SetCursor(wxCURSOR_ARROW);});
|
||||
|
||||
sizer_print_failed_info->Add(m_link_network_state, 0, wxLEFT, 5);
|
||||
sizer_print_failed_info->Add(sizer_error_code, 0, wxLEFT, 5);
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
#include "Widgets/ComboBox.hpp"
|
||||
#include "Widgets/ScrolledWindow.hpp"
|
||||
#include "Widgets/PopupWindow.hpp"
|
||||
#include "Widgets/HyperLink.hpp" // ORCA
|
||||
#include <wx/simplebook.h>
|
||||
#include <wx/hashmap.h>
|
||||
|
||||
@@ -371,7 +372,7 @@ protected:
|
||||
Label* m_st_txt_error_desc{nullptr};
|
||||
Label* m_st_txt_extra_info{nullptr};
|
||||
Label* m_ams_backup_tip{nullptr};
|
||||
wxHyperlinkCtrl* m_link_network_state{ nullptr };
|
||||
HyperLink* m_link_network_state{ nullptr }; // ORCA
|
||||
wxSimplebook* m_rename_switch_panel{nullptr};
|
||||
wxSimplebook* m_simplebook{nullptr};
|
||||
wxStaticText* m_rename_text{nullptr};
|
||||
|
||||
@@ -596,8 +596,9 @@ void SelectMachinePopup::update_other_devices()
|
||||
m_placeholder_panel = new wxWindow(m_scrolledWindow, wxID_ANY, wxDefaultPosition, wxSize(-1,FromDIP(26)));
|
||||
wxBoxSizer* placeholder_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
m_hyperlink = new wxHyperlinkCtrl(m_placeholder_panel, wxID_ANY, _L("Can't find my devices?"), wxT("https://wiki.bambulab.com/en/software/bambu-studio/failed-to-connect-printer"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE);
|
||||
m_hyperlink->SetNormalColour(StateColor::darkModeColorFor("#009789"));
|
||||
// ORCA standardized HyperLink
|
||||
m_hyperlink = new HyperLink(m_placeholder_panel, _L("Can't find my devices?"), wxT("https://wiki.bambulab.com/en/software/bambu-studio/failed-to-connect-printer"));
|
||||
m_hyperlink->SetFont(::Label::Body_12);
|
||||
placeholder_sizer->Add(m_hyperlink, 0, wxALIGN_CENTER | wxALL, 5);
|
||||
|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@ private:
|
||||
PinCodePanel* m_panel_ping_code{nullptr};
|
||||
PinCodePanel* m_panel_direct_connection{nullptr};
|
||||
wxWindow* m_placeholder_panel{nullptr};
|
||||
wxHyperlinkCtrl* m_hyperlink{nullptr};
|
||||
HyperLink* m_hyperlink{nullptr}; // ORCA
|
||||
Label* m_ping_code_text{nullptr};
|
||||
wxStaticBitmap* m_img_ping_code{nullptr};
|
||||
wxBoxSizer * m_sizer_body{nullptr};
|
||||
|
||||
@@ -801,7 +801,7 @@ bool SendMultiMachinePage::Show(bool show)
|
||||
m_refresh_timer->Stop();
|
||||
m_refresh_timer->SetOwner(this);
|
||||
m_refresh_timer->Start(4000);
|
||||
wxPostEvent(this, wxTimerEvent());
|
||||
wxPostEvent(this, wxTimerEvent(*m_refresh_timer));
|
||||
}
|
||||
else {
|
||||
m_refresh_timer->Stop();
|
||||
|
||||
@@ -446,11 +446,9 @@ SendToPrinterDialog::SendToPrinterDialog(Plater *plater)
|
||||
sizer_extra_info->Add(st_title_extra_info_doc, 0, wxALL, 0);
|
||||
sizer_extra_info->Add(m_st_txt_extra_info, 0, wxALL, 0);
|
||||
|
||||
m_link_network_state = new wxHyperlinkCtrl(m_sw_print_failed_info, wxID_ANY,_L("Check the status of current system services"),"");
|
||||
// ORCA standardized HyperLink
|
||||
m_link_network_state = new HyperLink(m_sw_print_failed_info, _L("Check the status of current system services"), wxGetApp().link_to_network_check());
|
||||
m_link_network_state->SetFont(::Label::Body_12);
|
||||
m_link_network_state->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {wxGetApp().link_to_network_check(); });
|
||||
m_link_network_state->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {m_link_network_state->SetCursor(wxCURSOR_HAND); });
|
||||
m_link_network_state->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {m_link_network_state->SetCursor(wxCURSOR_ARROW); });
|
||||
|
||||
sizer_print_failed_info->Add(m_link_network_state, 0, wxLEFT, 5);
|
||||
sizer_print_failed_info->Add(sizer_error_code, 0, wxLEFT, 5);
|
||||
|
||||
@@ -110,7 +110,7 @@ private:
|
||||
Label* m_st_txt_error_code{ nullptr };
|
||||
Label* m_st_txt_error_desc{ nullptr };
|
||||
Label* m_st_txt_extra_info{ nullptr };
|
||||
wxHyperlinkCtrl* m_link_network_state{ nullptr };
|
||||
HyperLink* m_link_network_state{ nullptr };
|
||||
StateColor btn_bg_enable;
|
||||
wxBoxSizer* rename_sizer_v{ nullptr };
|
||||
wxBoxSizer* rename_sizer_h{ nullptr };
|
||||
|
||||
@@ -117,14 +117,11 @@ StepMeshDialog::StepMeshDialog(wxWindow* parent, Slic3r::Step& file, double line
|
||||
wxBoxSizer* tips_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
wxStaticText* info = new wxStaticText(this, wxID_ANY, _L("Smaller linear and angular deflections result in higher-quality transformations but increase the processing time."));
|
||||
info->SetForegroundColour(StateColor::darkModeColorFor(FONT_COLOR));
|
||||
wxStaticText *tips = new wxStaticText(this, wxID_ANY, _L("View Wiki for more information"));
|
||||
wxFont font(10, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false);
|
||||
font.SetUnderlined(true);
|
||||
tips->SetForegroundColour(StateColor::darkModeColorFor(wxColour(0, 151, 137)));
|
||||
tips->SetFont(font);
|
||||
tips->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent& e) {
|
||||
wxLaunchDefaultBrowser("https://github.com/OrcaSlicer/OrcaSlicer/wiki/stl-transformation");
|
||||
});
|
||||
|
||||
// ORCA standardized HyperLink
|
||||
HyperLink *tips = new HyperLink(this, _L("Wiki Guide"), "https://www.orcaslicer.com/wiki/stl-transformation");
|
||||
tips->SetFont(::Label::Body_12);
|
||||
|
||||
info->Wrap(FromDIP(400));
|
||||
tips_sizer->Add(info, 0, wxALIGN_LEFT);
|
||||
tips_sizer->Add(tips, 0, wxALIGN_LEFT);
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include <sstream>
|
||||
#include <slic3r/GUI/Widgets/WebView.hpp>
|
||||
#include <slic3r/GUI/Widgets/HyperLink.hpp> // ORCA
|
||||
using namespace std;
|
||||
|
||||
using namespace nlohmann;
|
||||
@@ -57,11 +58,12 @@ ZUserLogin::ZUserLogin() : wxDialog((wxWindow *) (wxGetApp().mainframe), wxID_AN
|
||||
m_message->SetForegroundColour(*wxBLACK);
|
||||
m_message->Wrap(FromDIP(360));
|
||||
|
||||
auto m_download_hyperlink = new wxHyperlinkCtrl(this, wxID_ANY, _L("Click here to download it."), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE);
|
||||
m_download_hyperlink->Bind(wxEVT_HYPERLINK, [this](wxCommandEvent& event) {
|
||||
// ORCA standardized HyperLink
|
||||
auto m_download_hyperlink = new HyperLink(this, _L("Click here to download it."));
|
||||
m_download_hyperlink->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent& event) {
|
||||
this->Close();
|
||||
wxGetApp().ShowDownNetPluginDlg();
|
||||
});
|
||||
});
|
||||
m_sizer_main->Add(m_message, 0, wxALIGN_CENTER | wxALL, FromDIP(15));
|
||||
m_sizer_main->Add(m_download_hyperlink, 0, wxALIGN_CENTER | wxALL, FromDIP(10));
|
||||
m_sizer_main->Add(0, 0, 1, wxBOTTOM, 10);
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
#include "HyperLink.hpp"
|
||||
#include "Label.hpp"
|
||||
|
||||
namespace Slic3r { namespace GUI {
|
||||
|
||||
HyperLink::HyperLink(wxWindow* parent, const wxString& label, const wxString& url, long style)
|
||||
: wxStaticText(parent, wxID_ANY, label)
|
||||
, m_url(url)
|
||||
, m_normalColor(wxColour("#009687")) // used slightly different color otherwise automatically uses ColorForDark that not visible enough
|
||||
, m_hoverColor(wxColour("#26A69A"))
|
||||
{
|
||||
SetForegroundColour(m_normalColor);
|
||||
HyperLink::SetFont(Label::Head_14);
|
||||
SetCursor(wxCursor(wxCURSOR_HAND));
|
||||
|
||||
if (!m_url.IsEmpty())
|
||||
SetToolTip(m_url);
|
||||
|
||||
Bind(wxEVT_LEFT_DOWN, ([this](wxMouseEvent& e) {
|
||||
if (!m_url.IsEmpty())
|
||||
wxLaunchDefaultBrowser(m_url);
|
||||
}));
|
||||
|
||||
Bind(wxEVT_ENTER_WINDOW, ([this](wxMouseEvent& e) {
|
||||
SetForegroundColour(m_hoverColor);
|
||||
Refresh();
|
||||
}));
|
||||
Bind(wxEVT_LEAVE_WINDOW, ([this](wxMouseEvent& e) {
|
||||
SetForegroundColour(m_normalColor);
|
||||
Refresh();
|
||||
}));
|
||||
}
|
||||
|
||||
bool HyperLink::SetFont(const wxFont& font)
|
||||
{ // ensure it stays underlined
|
||||
wxFont f = font;
|
||||
f.SetUnderlined(true);
|
||||
return wxStaticText::SetFont(f);
|
||||
}
|
||||
|
||||
void HyperLink::SetURL(const wxString& url)
|
||||
{
|
||||
m_url = url;
|
||||
SetToolTip(m_url);
|
||||
}
|
||||
|
||||
wxString HyperLink::GetURL() const { return m_url; }
|
||||
|
||||
}} // namespace Slic3r::GUI
|
||||
@@ -0,0 +1,26 @@
|
||||
#ifndef slic3r_GUI_HyperLink_hpp_
|
||||
#define slic3r_GUI_HyperLink_hpp_
|
||||
|
||||
#include <wx/wx.h>
|
||||
#include <wx/window.h>
|
||||
|
||||
namespace Slic3r { namespace GUI {
|
||||
|
||||
class HyperLink : public wxStaticText
|
||||
{
|
||||
public:
|
||||
HyperLink(wxWindow* parent, const wxString& label = wxEmptyString, const wxString& url = wxEmptyString, const long style = 0);
|
||||
|
||||
void SetURL(const wxString& url);
|
||||
wxString GetURL() const;
|
||||
|
||||
bool SetFont(const wxFont& font);
|
||||
|
||||
private:
|
||||
wxString m_url;
|
||||
wxColour m_normalColor;
|
||||
wxColour m_hoverColor;
|
||||
};
|
||||
|
||||
}} // namespace Slic3r::GUI
|
||||
#endif // !slic3r_GUI_HyperLink_hpp_
|
||||
@@ -160,7 +160,7 @@ void LabeledStaticBox::DrawBorderAndLabel(wxDC& dc)
|
||||
wxSize wSz = GetSize();
|
||||
|
||||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
dc.SetPen(wxPen(border_color.colorForStates(state_handler.states()), m_border_width, wxSOLID));
|
||||
dc.SetPen(wxPen(border_color.colorForStates(state_handler.states()), m_border_width, wxPENSTYLE_SOLID));
|
||||
dc.DrawRoundedRectangle( // Border
|
||||
std::max(0, m_pos.x),
|
||||
std::max(0, m_pos.y) + m_label_height * .5,
|
||||
|
||||
@@ -274,8 +274,8 @@ SideTools::SideTools(wxWindow *parent, wxWindowID id, const wxPoint &pos, const
|
||||
wxBoxSizer* connection_sizer_V = new wxBoxSizer(wxVERTICAL);
|
||||
wxBoxSizer* connection_sizer_H = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
m_hyperlink = new wxHyperlinkCtrl(m_connection_info, wxID_ANY, _L("Failed to connect to the server"), wxT("https://wiki.bambulab.com/en/software/bambu-studio/failed-to-connect-printer"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE);
|
||||
m_hyperlink->SetBackgroundColour(wxColour(255, 111, 0));
|
||||
// ORCA standardized HyperLink
|
||||
m_hyperlink = new HyperLink(m_connection_info, _L("Failed to connect to the server"), wxT("https://wiki.bambulab.com/en/software/bambu-studio/failed-to-connect-printer"));
|
||||
|
||||
m_more_err_open = ScalableBitmap(this, "monitir_err_open", 16);
|
||||
m_more_err_close = ScalableBitmap(this, "monitir_err_close", 16);
|
||||
@@ -328,13 +328,10 @@ SideTools::SideTools(wxWindow *parent, wxWindowID id, const wxPoint &pos, const
|
||||
wxBoxSizer* sizer_error_desc = new wxBoxSizer(wxHORIZONTAL);
|
||||
wxBoxSizer* sizer_extra_info = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
m_link_network_state = new wxHyperlinkCtrl(m_side_error_panel, wxID_ANY,_L("Check the status of current system services"),"",wxDefaultPosition,wxDefaultSize, wxHL_ALIGN_CENTRE |wxST_ELLIPSIZE_END);
|
||||
m_link_network_state->SetMinSize(wxSize(FromDIP(220), -1));
|
||||
// ORCA standardized HyperLink
|
||||
m_link_network_state = new HyperLink(m_side_error_panel, _L("Check the status of current system services"), wxGetApp().link_to_network_check(), wxST_ELLIPSIZE_END);
|
||||
m_link_network_state->SetMaxSize(wxSize(FromDIP(220), -1));
|
||||
m_link_network_state->SetFont(::Label::Body_12);
|
||||
m_link_network_state->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {wxGetApp().link_to_network_check(); });
|
||||
m_link_network_state->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {m_link_network_state->SetCursor(wxCURSOR_HAND); });
|
||||
m_link_network_state->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {m_link_network_state->SetCursor(wxCURSOR_ARROW); });
|
||||
|
||||
auto st_title_error_code = new wxStaticText(m_side_error_panel, wxID_ANY, _L("code"), wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END);
|
||||
auto st_title_error_code_doc = new wxStaticText(m_side_error_panel, wxID_ANY, ": ");
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
#include <wx/dcgraph.h>
|
||||
#include <wx/gdicmn.h>
|
||||
#include <wx/dcclient.h>
|
||||
#include <wx/hyperlink.h>
|
||||
#include "Button.hpp"
|
||||
#include "Label.hpp"
|
||||
#include "HyperLink.hpp" // ORCA
|
||||
#include "../GUI/Tabbook.hpp"
|
||||
#include "../DeviceManager.hpp"
|
||||
#include "../wxExtensions.hpp"
|
||||
@@ -99,13 +99,13 @@ public:
|
||||
private:
|
||||
SideToolsPanel* m_side_tools{ nullptr };
|
||||
Tabbook* m_tabpanel{ nullptr };
|
||||
wxHyperlinkCtrl* m_link_network_state{ nullptr };
|
||||
HyperLink* m_link_network_state{ nullptr }; // ORCA
|
||||
Label* m_st_txt_error_code{ nullptr };
|
||||
Label* m_st_txt_error_desc{ nullptr };
|
||||
Label* m_st_txt_extra_info{ nullptr };
|
||||
wxWindow* m_side_error_panel{ nullptr };
|
||||
Button* m_connection_info{ nullptr };
|
||||
wxHyperlinkCtrl* m_hyperlink{ nullptr };
|
||||
HyperLink* m_hyperlink{ nullptr }; // ORCA
|
||||
ScalableButton* m_more_button{ nullptr };
|
||||
ScalableBitmap m_more_err_open;
|
||||
ScalableBitmap m_more_err_close;
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <wx/dcgraph.h>
|
||||
#include "MainFrame.hpp"
|
||||
#include "Widgets/DialogButtons.hpp"
|
||||
#include "Widgets/HyperLink.hpp"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "libslic3r/PrintConfig.hpp"
|
||||
@@ -173,22 +174,14 @@ PA_Calibration_Dlg::PA_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plater*
|
||||
v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
|
||||
v_sizer->AddSpacer(FromDIP(5));
|
||||
|
||||
// Help links
|
||||
auto help_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
auto help_link_pa = new wxHyperlinkCtrl(this, wxID_ANY, _L("Pressure Advance Guide"),
|
||||
"https://github.com/OrcaSlicer/OrcaSlicer/wiki/pressure-advance-calib");
|
||||
help_link_pa->SetForegroundColour(wxColour("#1890FF"));
|
||||
help_sizer->Add(help_link_pa, 0, wxALL, FromDIP(5));
|
||||
|
||||
auto help_link_apa = new wxHyperlinkCtrl(this, wxID_ANY, _L("Adaptive Pressure Advance Guide"),
|
||||
"https://github.com/OrcaSlicer/OrcaSlicer/wiki/adaptive-pressure-advance-calib");
|
||||
help_link_apa->SetForegroundColour(wxColour("#1890FF"));
|
||||
help_sizer->Add(help_link_apa, 0, wxALL, FromDIP(5));
|
||||
|
||||
v_sizer->Add(help_sizer, 0, wxALL, FromDIP(10));
|
||||
|
||||
auto dlg_btns = new DialogButtons(this, {"OK"});
|
||||
v_sizer->Add(dlg_btns , 0, wxEXPAND);
|
||||
|
||||
auto bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto wiki = new HyperLink(this, _L("Wiki Guide"), "https://www.orcaslicer.com/wiki/pressure-advance-calib");
|
||||
bottom_sizer->Add(wiki, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(20));
|
||||
bottom_sizer->AddStretchSpacer();
|
||||
bottom_sizer->Add(dlg_btns, 0, wxEXPAND);
|
||||
v_sizer->Add(bottom_sizer, 0, wxEXPAND);
|
||||
|
||||
dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &PA_Calibration_Dlg::on_start, this);
|
||||
|
||||
@@ -399,13 +392,14 @@ Temp_Calibration_Dlg::Temp_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plat
|
||||
v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
|
||||
v_sizer->AddSpacer(FromDIP(5));
|
||||
|
||||
auto help_link = new wxHyperlinkCtrl(this, wxID_ANY, _L("Wiki Guide: Temperature Calibration"),
|
||||
"https://github.com/OrcaSlicer/OrcaSlicer/wiki/temp-calib");
|
||||
help_link->SetForegroundColour(wxColour("#1890FF"));
|
||||
v_sizer->Add(help_link, 0, wxALL, FromDIP(10));
|
||||
|
||||
auto dlg_btns = new DialogButtons(this, {"OK"});
|
||||
v_sizer->Add(dlg_btns , 0, wxEXPAND);
|
||||
|
||||
auto bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto wiki = new HyperLink(this, _L("Wiki Guide"), "https://www.orcaslicer.com/wiki/temp-calib");
|
||||
bottom_sizer->Add(wiki, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(20));
|
||||
bottom_sizer->AddStretchSpacer();
|
||||
bottom_sizer->Add(dlg_btns, 0, wxEXPAND);
|
||||
v_sizer->Add(bottom_sizer, 0, wxEXPAND);
|
||||
|
||||
dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &Temp_Calibration_Dlg::on_start, this);
|
||||
|
||||
@@ -578,13 +572,14 @@ MaxVolumetricSpeed_Test_Dlg::MaxVolumetricSpeed_Test_Dlg(wxWindow* parent, wxWin
|
||||
v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
|
||||
v_sizer->AddSpacer(FromDIP(5));
|
||||
|
||||
auto help_link = new wxHyperlinkCtrl(this, wxID_ANY, _L("Wiki Guide: Volumetric Speed Calibration"),
|
||||
"https://github.com/OrcaSlicer/OrcaSlicer/wiki/volumetric-speed-calib");
|
||||
help_link->SetForegroundColour(wxColour("#1890FF"));
|
||||
v_sizer->Add(help_link, 0, wxALL, FromDIP(10));
|
||||
|
||||
auto dlg_btns = new DialogButtons(this, {"OK"});
|
||||
v_sizer->Add(dlg_btns , 0, wxEXPAND);
|
||||
|
||||
auto bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto wiki = new HyperLink(this, _L("Wiki Guide"), "https://www.orcaslicer.com/wiki/volumetric-speed-calib");
|
||||
bottom_sizer->Add(wiki, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(20));
|
||||
bottom_sizer->AddStretchSpacer();
|
||||
bottom_sizer->Add(dlg_btns, 0, wxEXPAND);
|
||||
v_sizer->Add(bottom_sizer, 0, wxEXPAND);
|
||||
|
||||
dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &MaxVolumetricSpeed_Test_Dlg::on_start, this);
|
||||
|
||||
@@ -684,13 +679,14 @@ VFA_Test_Dlg::VFA_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater)
|
||||
v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
|
||||
v_sizer->AddSpacer(FromDIP(5));
|
||||
|
||||
auto help_link = new wxHyperlinkCtrl(this, wxID_ANY, _L("Wiki Guide: VFA"),
|
||||
"https://github.com/OrcaSlicer/OrcaSlicer/wiki/vfa-calib");
|
||||
help_link->SetForegroundColour(wxColour("#1890FF"));
|
||||
v_sizer->Add(help_link, 0, wxALL, FromDIP(10));
|
||||
|
||||
auto dlg_btns = new DialogButtons(this, {"OK"});
|
||||
v_sizer->Add(dlg_btns , 0, wxEXPAND);
|
||||
|
||||
auto bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto wiki = new HyperLink(this, _L("Wiki Guide"), "https://www.orcaslicer.com/wiki/vfa-calib");
|
||||
bottom_sizer->Add(wiki, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(20));
|
||||
bottom_sizer->AddStretchSpacer();
|
||||
bottom_sizer->Add(dlg_btns, 0, wxEXPAND);
|
||||
v_sizer->Add(bottom_sizer, 0, wxEXPAND);
|
||||
|
||||
dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &VFA_Test_Dlg::on_start, this);
|
||||
|
||||
@@ -791,13 +787,14 @@ Retraction_Test_Dlg::Retraction_Test_Dlg(wxWindow* parent, wxWindowID id, Plater
|
||||
v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
|
||||
v_sizer->AddSpacer(FromDIP(5));
|
||||
|
||||
auto help_link = new wxHyperlinkCtrl(this, wxID_ANY, _L("Wiki Guide: Retraction Calibration"),
|
||||
"https://github.com/OrcaSlicer/OrcaSlicer/wiki/retraction-calib");
|
||||
help_link->SetForegroundColour(wxColour("#1890FF"));
|
||||
v_sizer->Add(help_link, 0, wxALL, FromDIP(10));
|
||||
|
||||
auto dlg_btns = new DialogButtons(this, {"OK"});
|
||||
v_sizer->Add(dlg_btns , 0, wxEXPAND);
|
||||
|
||||
auto bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto wiki = new HyperLink(this, _L("Wiki Guide"), "https://www.orcaslicer.com/wiki/retraction-calib");
|
||||
bottom_sizer->Add(wiki, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(20));
|
||||
bottom_sizer->AddStretchSpacer();
|
||||
bottom_sizer->Add(dlg_btns, 0, wxEXPAND);
|
||||
v_sizer->Add(bottom_sizer, 0, wxEXPAND);
|
||||
|
||||
dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &Retraction_Test_Dlg::on_start, this);
|
||||
|
||||
@@ -968,13 +965,14 @@ Input_Shaping_Freq_Test_Dlg::Input_Shaping_Freq_Test_Dlg(wxWindow* parent, wxWin
|
||||
v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
|
||||
v_sizer->AddSpacer(FromDIP(5));
|
||||
|
||||
auto help_link = new wxHyperlinkCtrl(this, wxID_ANY, _L("Wiki Guide: Input Shaping Calibration"),
|
||||
"https://github.com/OrcaSlicer/OrcaSlicer/wiki/input-shaping-calib");
|
||||
help_link->SetForegroundColour(wxColour("#1890FF"));
|
||||
v_sizer->Add(help_link, 0, wxALL, FromDIP(10));
|
||||
|
||||
auto dlg_btns = new DialogButtons(this, {"OK"});
|
||||
v_sizer->Add(dlg_btns , 0, wxEXPAND);
|
||||
|
||||
auto bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto wiki = new HyperLink(this, _L("Wiki Guide"), "https://www.orcaslicer.com/wiki/input-shaping-calib");
|
||||
bottom_sizer->Add(wiki, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(20));
|
||||
bottom_sizer->AddStretchSpacer();
|
||||
bottom_sizer->Add(dlg_btns, 0, wxEXPAND);
|
||||
v_sizer->Add(bottom_sizer, 0, wxEXPAND);
|
||||
|
||||
dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &Input_Shaping_Freq_Test_Dlg::on_start, this);
|
||||
|
||||
@@ -1165,13 +1163,14 @@ Input_Shaping_Damp_Test_Dlg::Input_Shaping_Damp_Test_Dlg(wxWindow* parent, wxWin
|
||||
v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
|
||||
v_sizer->AddSpacer(FromDIP(5));
|
||||
|
||||
auto help_link = new wxHyperlinkCtrl(this, wxID_ANY, _L("Wiki Guide: Input Shaping Calibration"),
|
||||
"https://github.com/OrcaSlicer/OrcaSlicer/wiki/input-shaping-calib");
|
||||
help_link->SetForegroundColour(wxColour("#1890FF"));
|
||||
v_sizer->Add(help_link, 0, wxALL, FromDIP(10));
|
||||
|
||||
auto dlg_btns = new DialogButtons(this, {"OK"});
|
||||
v_sizer->Add(dlg_btns , 0, wxEXPAND);
|
||||
|
||||
auto bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto wiki = new HyperLink(this, _L("Wiki Guide"), "https://www.orcaslicer.com/wiki/input-shaping-calib");
|
||||
bottom_sizer->Add(wiki, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(20));
|
||||
bottom_sizer->AddStretchSpacer();
|
||||
bottom_sizer->Add(dlg_btns, 0, wxEXPAND);
|
||||
v_sizer->Add(bottom_sizer, 0, wxEXPAND);
|
||||
|
||||
dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &Input_Shaping_Damp_Test_Dlg::on_start, this);
|
||||
|
||||
@@ -1356,13 +1355,14 @@ Cornering_Test_Dlg::Cornering_Test_Dlg(wxWindow* parent, wxWindowID id, Plater*
|
||||
v_sizer->Add(settings_sizer, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(10));
|
||||
v_sizer->AddSpacer(FromDIP(5));
|
||||
|
||||
auto help_link = new wxHyperlinkCtrl(this, wxID_ANY, _L("Wiki Guide: Cornering Calibration"),
|
||||
"https://github.com/OrcaSlicer/OrcaSlicer/wiki/cornering-calib");
|
||||
help_link->SetForegroundColour(wxColour("#1890FF"));
|
||||
v_sizer->Add(help_link, 0, wxALL, FromDIP(10));
|
||||
|
||||
auto dlg_btns = new DialogButtons(this, {"OK"});
|
||||
v_sizer->Add(dlg_btns , 0, wxEXPAND);
|
||||
|
||||
auto bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto wiki = new HyperLink(this, _L("Wiki Guide"), "https://www.orcaslicer.com/wiki/cornering-calib");
|
||||
bottom_sizer->Add(wiki, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(20));
|
||||
bottom_sizer->AddStretchSpacer();
|
||||
bottom_sizer->Add(dlg_btns, 0, wxEXPAND);
|
||||
v_sizer->Add(bottom_sizer, 0, wxEXPAND);
|
||||
|
||||
dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &Cornering_Test_Dlg::on_start, this);
|
||||
|
||||
|
||||