diff --git a/.github/workflows/msvc.yml b/.github/workflows/msvc.yml new file mode 100644 index 0000000..0dde060 --- /dev/null +++ b/.github/workflows/msvc.yml @@ -0,0 +1,127 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# +# Find more information at: +# https://github.com/microsoft/msvc-code-analysis-action + +name: Microsoft C++ Code Analysis + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + schedule: + - cron: '30 15 * * 4' + +env: + # Path to the CMake build directory. + build: '${{ github.workspace }}/build' + +permissions: + contents: read + +jobs: + + prepare-conan-cache: + name: Prepare Conan cache for Windows + runs-on: windows-2022 + steps: + - name: Check out code + uses: actions/checkout@v3 + + - name: Cache Conan + id: cache-conan + uses: actions/cache@v4 + with: + path: | + ~/.conan2 + build\generators + CMakeUserPresets.json + key: ${{ runner.os }}-win22-debug-conan-${{ hashFiles('conanfile.txt') }} + restore-keys: ${{ runner.os }}-win22-debug-conan + + - name: Install Conan + if: steps.cache-conan.outputs.cache-hit != 'true' + run: | + python -m pip install --upgrade pip + pip install conan + + - name: Set up Conan + if: steps.cache-conan.outputs.cache-hit != 'true' + run: | + New-Item -ItemType Directory -Force -Path build + cd build + conan profile detect + conan install .. -s compiler.cppstd=17 -s build_type=Debug --build=missing + + analyze: + permissions: + contents: read # for actions/checkout to fetch code + security-events: write # for github/codeql-action/upload-sarif to upload SARIF results + actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status + name: Analyze + runs-on: windows-latest + needs: [prepare-conan-cache] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Cache Conan + id: cache-conan + uses: actions/cache@v4 + with: + path: | + ~/.conan2 + build\generators + CMakeUserPresets.json + key: ${{ runner.os }}-win22-debug-conan-${{ hashFiles('conanfile.txt') }} + restore-keys: ${{ runner.os }}-win22-debug-conan + + - name: Install Conan + run: | + python -m pip install --upgrade pip + pip install conan + + - name: Set up Conan + if: steps.cache-conan.outputs.cache-hit != 'true' + run: | + New-Item -ItemType Directory -Force -Path build + cd build + conan profile detect + conan install .. -s compiler.cppstd=17 -s build_type=Debug --build=missing + + - name: Configure and build + run: | + New-Item -ItemType Directory -Force -Path ${{ env.build }} + cd ${{ env.build }} + cmake .. -DCMAKE_BUILD_TYPE=Debug --preset conan-default + cmake --build . --config Debug --target stablediffusiongui_diffuser + cmake --build . --config Debug --target stablediffusiongui + + - name: Initialize MSVC Code Analysis + uses: microsoft/msvc-code-analysis-action@04825f6d9e00f87422d6bf04e1a38b1f3ed60d99 + # Provide a unique ID to access the sarif output path + id: run-analysis + with: + cmakeBuildDirectory: ${{ env.build }} + # Ruleset file that will determine what checks will be run + ruleset: NativeRecommendedRules.ruleset + ignoredTargetPaths: ${{ env.build }}/_deps + + # Upload SARIF file to GitHub Code Scanning Alerts + - name: Upload SARIF to GitHub + uses: github/codeql-action/upload-sarif@v3 + with: + sarif_file: ${{ steps.run-analysis.outputs.sarif }} + category: msvc + + # Upload SARIF file as an Artifact to download and view + - name: Upload SARIF as an Artifact + uses: actions/upload-artifact@v3 + with: + name: sarif-file + path: ${{ steps.run-analysis.outputs.sarif }} diff --git a/.github/workflows/multiplatform.yml b/.github/workflows/multiplatform.yml index 1c92b24..c1b0009 100644 --- a/.github/workflows/multiplatform.yml +++ b/.github/workflows/multiplatform.yml @@ -8,7 +8,7 @@ on: jobs: - prepare-conan-cache: + prepare-conan-cache: name: Prepare Conan cache for Windows runs-on: windows-2019 steps: @@ -25,9 +25,9 @@ jobs: CMakeUserPresets.json key: ${{ runner.os }}-conan-${{ hashFiles('conanfile.txt') }} restore-keys: ${{ runner.os }}-conan - + - name: Install Conan - if: steps.cache-conan.outputs.cache-hit != 'true' + if: steps.cache-conan.outputs.cache-hit != 'true' run: | python -m pip install --upgrade pip pip install conan @@ -38,12 +38,14 @@ jobs: New-Item -ItemType Directory -Force -Path build cd build conan profile detect - conan install .. -s compiler.cppstd=17 --build=never + conan install .. -s compiler.cppstd=17 --build=never build-windows: name: Build on Windows needs: [prepare-conan-cache] runs-on: windows-2019 + env: + VULKAN_VERSION: 1.3.261.1 strategy: matrix: variant: @@ -63,14 +65,19 @@ jobs: cache-key: windows-avx512 - name: CUDA - cmake_flags: "-DSD_CUBLAS=ON" + cmake_flags: "-DSD_CUDA=ON" targets: "stable_diffusion_cpp_cuda" cache-key: windows-cuda - - name: HIPBLAS - cmake_flags: "-DSD_HIPBLAS=ON" - targets: "stable_diffusion_cpp_hipblas" - cache-key: windows-hipblas + - name: VULKAN + cmake_flags: "-DSD_VULKAN=ON" + targets: "stable_diffusion_cpp_vulkan" + cache-key: windows-vulkan + +# - name: HIPBLAS +# cmake_flags: "-DSD_HIPBLAS=ON" +# targets: "stable_diffusion_cpp_hipblas" +# cache-key: windows-hipblas steps: - name: Check out code uses: actions/checkout@v3 @@ -107,7 +114,7 @@ jobs: uses: Jimver/cuda-toolkit@v0.2.11 with: cuda: "12.2.0" - sub-packages: '["nvcc", "visual_studio_integration"]' + sub-packages: '["nvcc", "cudart", "cublas", "cublas_dev", "thrust", "visual_studio_integration"]' method: "network" - name: Print cuda version @@ -127,6 +134,15 @@ jobs: with: version: 1.11.1 + - name: Install Vulkan SDK + id: get_vulkan + if: ${{ matrix.variant.name == 'VULKAN' && steps.cache-build.outputs.cache-hit != 'true' }} + run: | + curl.exe -o $env:RUNNER_TEMP/VulkanSDK-Installer.exe -L "https://sdk.lunarg.com/sdk/download/${env:VULKAN_VERSION}/windows/VulkanSDK-${env:VULKAN_VERSION}-Installer.exe" + & "$env:RUNNER_TEMP\VulkanSDK-Installer.exe" --accept-licenses --default-answer --confirm-command install + Add-Content $env:GITHUB_ENV "VULKAN_SDK=C:\VulkanSDK\${env:VULKAN_VERSION}" + Add-Content $env:GITHUB_PATH "C:\VulkanSDK\${env:VULKAN_VERSION}\bin" + - name: Set up Conan if: steps.cache-build.outputs.cache-hit != 'true' && steps.cache-conan.outputs.cache-hit != 'true' run: | @@ -140,7 +156,7 @@ jobs: run: | New-Item -ItemType Directory -Force -Path build cd build - cmake .. -DCMAKE_BUILD_TYPE=Release ${{ matrix.variant.cmake_flags }} --preset conan-default + cmake .. -DCMAKE_BUILD_TYPE=Release -DCUDA_TOOLKIT_ROOT_DIR="${{steps.cuda-toolkit.outputs.CUDA_PATH}}" ${{ matrix.variant.cmake_flags }} --preset conan-default - name: Build Targets if: steps.cache-build.outputs.cache-hit != 'true' @@ -154,7 +170,7 @@ jobs: name: ${{ matrix.variant.cache-key }} path: build/Release/*.dll compression-level: 0 - overwrite: true + overwrite: true package-installer: name: Build main Application @@ -191,7 +207,7 @@ jobs: run: | cd build conan profile detect - conan install .. -s compiler.cppstd=17 --build=never + conan install .. -s compiler.cppstd=17 --build=never - name: Compile main application run: | @@ -221,11 +237,12 @@ jobs: overwrite: true build-ubuntu: - name: Build Ubuntu Releases + name: Build on Ubuntu strategy: matrix: os: [ubuntu-22.04, ubuntu-24.04] - variant: [CPU, HIPBLAS, CUDA] + # variant: [CPU, HIPBLAS, CUDA, VULKAN] + variant: [CPU, CUDA, VULKAN] runs-on: ${{ matrix.os }} steps: - name: Set up build environment @@ -244,9 +261,9 @@ jobs: path: build/*.so key: ${{ matrix.os }}-build-${{ matrix.variant }}-${{ hashFiles('cmake/sdcpp_version.cmake') }} restore-keys: ${{ matrix.os }}-build-${{ matrix.variant }}- - + - name: Maximize build space - if: ${{ (matrix.variant == 'HIPBLAS' || matrix.variant == 'CUDA') && steps.sd-cpp-cache.outputs.cache-hit != 'true' }} + if: ${{ (matrix.variant == 'HIPBLAS' || matrix.variant == 'CUDA' || matrix.variant == 'VULKAN' ) && steps.sd-cpp-cache.outputs.cache-hit != 'true' }} uses: AdityaGarg8/remove-unwanted-software@v4.1 with: remove-android: 'true' @@ -277,7 +294,7 @@ jobs: run: | sudo apt install -y wget >/dev/null source /etc/lsb-release - wget https://repo.radeon.com/amdgpu-install/6.2.2/ubuntu/${DISTRIB_CODENAME}/amdgpu-install_6.2.60202-1_all.deb -O /tmp/amdgpu-install.deb + wget https://repo.radeon.com/amdgpu-install/6.2.2/ubuntu/${DISTRIB_CODENAME}/amdgpu-install_6.2.60202-1_all.deb -O /tmp/amdgpu-install.deb - name: Install ROCm toolkit if: ${{ matrix.variant == 'HIPBLAS' && steps.sd-cpp-cache.outputs.cache-hit != 'true' }} @@ -285,7 +302,7 @@ jobs: sudo apt update >/dev/null sudo apt install -y "linux-headers-$(uname -r)" "linux-modules-extra-$(uname -r)" >/dev/null sudo dpkg -i /tmp/amdgpu-install.deb - sudo apt update >/dev/null + sudo apt update >/dev/null sudo apt install -y rocm-openmp-sdk rocm-cmake hip-dev rocm-hip-runtime-dev clang-tools lld hipblas-dev sudo tee --append /etc/ld.so.conf.d/rocm.conf </dev/null + sudo apt install -y fuse3 cmake gettext git build-essential ninja-build libexiv2-dev libssl-dev libjpeg-dev libpng-dev libtiff-dev libgtk-3-dev libcurl4-openssl-dev libsecret-1-dev libnotify-dev libwebkit2gtk-4.1-dev libsdl2-dev >/dev/null - name: Cache wxWidgets id: cache-wxwidgets @@ -392,7 +421,7 @@ jobs: build/out/*.AppImage build/*.sha256 compression-level: 0 - overwrite: true + overwrite: true merge-packages: name: Merge packages diff --git a/.github/workflows/multiplatform_test.yml b/.github/workflows/multiplatform_test.yml new file mode 100644 index 0000000..a6cc9e7 --- /dev/null +++ b/.github/workflows/multiplatform_test.yml @@ -0,0 +1,454 @@ +name: Test on Windows22 + +on: + workflow_dispatch: +jobs: + + prepare-conan-cache: + name: Prepare Conan cache for Windows + runs-on: windows-2022 + steps: + - name: Check out code + uses: actions/checkout@v3 + + - name: Cache Conan + id: cache-conan + uses: actions/cache@v4 + with: + path: | + ~/.conan2 + build\generators + CMakeUserPresets.json + key: ${{ runner.os }}-win22-conan-${{ hashFiles('conanfile.txt') }} + restore-keys: ${{ runner.os }}-win22-conan + + - name: Install Conan + if: steps.cache-conan.outputs.cache-hit != 'true' + run: | + python -m pip install --upgrade pip + pip install conan + + - name: Set up Conan + if: steps.cache-conan.outputs.cache-hit != 'true' + run: | + New-Item -ItemType Directory -Force -Path build + cd build + conan profile detect + conan install .. -s compiler.cppstd=17 --build=never + + build-windows: + name: Build on Windows + needs: [prepare-conan-cache] + runs-on: windows-2022 + env: + VULKAN_VERSION: 1.3.261.1 + strategy: + matrix: + variant: + - name: CPU avx + cmake_flags: "-DSD_AVX=ON" + targets: "stable_diffusion_cpp_avx" + cache-key: windows-avx + + - name: CPU avx2 + cmake_flags: "-DSD_AVX2=ON" + targets: "stable_diffusion_cpp_avx2" + cache-key: windows-avx2 + + - name: CPU avx512 + cmake_flags: "-DSD_AVX512=ON" + targets: "stable_diffusion_cpp_avx512" + cache-key: windows-avx512 + + - name: CUDA + cmake_flags: "-DSD_CUDA=ON" + targets: "stable_diffusion_cpp_cuda" + cache-key: windows-cuda + + - name: VULKAN + cmake_flags: "-DSD_VULKAN=ON" + targets: "stable_diffusion_cpp_vulkan" + cache-key: windows-vulkan + +# - name: HIPBLAS +# cmake_flags: "-DSD_HIPBLAS=ON" +# targets: "stable_diffusion_cpp_hipblas" +# cache-key: windows-hipblas + steps: + - name: Check out code + uses: actions/checkout@v3 + + - name: Cache build outputs + id: cache-build + uses: actions/cache@v4 + with: + path: build/Release/*.dll + key: ${{ matrix.variant.cache-key }}-${{ hashFiles('cmake/sdcpp_version.cmake') }} + restore-keys: ${{ matrix.variant.cache-key }}- + + - name: Cache Conan + if: steps.cache-build.outputs.cache-hit != 'true' + id: cache-conan + uses: actions/cache@v4 + with: + path: | + ~/.conan2 + build\generators + CMakeUserPresets.json + key: ${{ runner.os }}-win22-conan-${{ hashFiles('conanfile.txt') }} + restore-keys: ${{ runner.os }}-win22-conan + + - name: Install Conan + if: steps.cache-build.outputs.cache-hit != 'true' + run: | + python -m pip install --upgrade pip + pip install conan + + - name: Install CUDA Toolkit + if: ${{ matrix.variant.name == 'CUDA' && steps.cache-build.outputs.cache-hit != 'true' }} + id: cuda-toolkit + uses: Jimver/cuda-toolkit@v0.2.19 + with: + cuda: "12.4.1" + sub-packages: '["nvcc", "visual_studio_integration"]' + method: "network" + linux-local-args: '["--toolkit"]' + + - name: Print cuda version + if: ${{ matrix.variant.name == 'CUDA' && steps.cache-build.outputs.cache-hit != 'true' }} + run: | + echo "Installed cuda version is: ${{steps.cuda-toolkit.outputs.cuda}}" + + - name: Install ROCm Toolkit + if: ${{ matrix.variant.name == 'HIPBLAS' && steps.cache-build.outputs.cache-hit != 'true' }} + uses: Cyberhan123/rocm-toolkit@v0.1.0 + with: + rocm: "5.5.0" + + - name: Install Ninja + if: ${{ matrix.variant.name == 'HIPBLAS' && steps.cache-build.outputs.cache-hit != 'true' }} + uses: urkle/action-get-ninja@v1 + with: + version: 1.11.1 + + - name: Install Vulkan SDK + id: get_vulkan + if: ${{ matrix.variant.name == 'VULKAN' && steps.cache-build.outputs.cache-hit != 'true' }} + run: | + curl.exe -o $env:RUNNER_TEMP/VulkanSDK-Installer.exe -L "https://sdk.lunarg.com/sdk/download/${env:VULKAN_VERSION}/windows/VulkanSDK-${env:VULKAN_VERSION}-Installer.exe" + & "$env:RUNNER_TEMP\VulkanSDK-Installer.exe" --accept-licenses --default-answer --confirm-command install + Add-Content $env:GITHUB_ENV "VULKAN_SDK=C:\VulkanSDK\${env:VULKAN_VERSION}" + Add-Content $env:GITHUB_PATH "C:\VulkanSDK\${env:VULKAN_VERSION}\bin" + + - name: Set up Conan + if: steps.cache-build.outputs.cache-hit != 'true' && steps.cache-conan.outputs.cache-hit != 'true' + run: | + New-Item -ItemType Directory -Force -Path build + cd build + conan profile detect + conan install .. -s compiler.cppstd=17 --build=never + + - name: Configure CMake + if: steps.cache-build.outputs.cache-hit != 'true' + run: | + New-Item -ItemType Directory -Force -Path build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release ${{ matrix.variant.cmake_flags }} --preset conan-default + + - name: Build Targets + if: steps.cache-build.outputs.cache-hit != 'true' + run: | + cd build + cmake --build . --config Release --target ${{ matrix.variant.targets }} + + - name: Upload Build Outputs + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.variant.cache-key }} + path: build/Release/*.dll + compression-level: 0 + overwrite: true + + package-installer: + name: Build main Application + runs-on: windows-2022 + needs: [build-windows] + steps: + - name: Check out code + uses: actions/checkout@v3 + + - name: Restore builds + uses: actions/download-artifact@v4 + with: + path: build + pattern: windows-* + merge-multiple: true + + - name: Cache Conan + id: cache-conan + uses: actions/cache@v4 + with: + path: | + ~/.conan2 + build\generators + CMakeUserPresets.json + key: ${{ runner.os }}-win22-conan-${{ hashFiles('conanfile.txt') }} + restore-keys: ${{ runner.os }}-win22-conan + + - name: Install Conan + run: | + python -m pip install --upgrade pip + pip install conan + + - name: Set up Conan + run: | + cd build + conan profile detect + conan install .. -s compiler.cppstd=17 --build=never + + - name: Compile main application + run: | + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release --preset conan-default + cmake --build . --config Release --target po-compile + cmake --build . --config Release --target stablediffusiongui_diffuser + cmake --build . --config Release --target stablediffusiongui + + + - name: Generate installer + if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} + run: | + cd build + cmake --build . --config Release --target package + + - name: Upload Release Outputs + if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} + uses: actions/upload-artifact@v4 + with: + name: prebuild-packages-windows + path: | + build/*.exe + build/*.7z + build/*.sha256 + compression-level: 0 + overwrite: true + + build-ubuntu: + name: Build on Ubuntu + strategy: + matrix: + os: [ubuntu-22.04, ubuntu-24.04] + # variant: [CPU, HIPBLAS, CUDA, VULKAN] + variant: [CPU, CUDA, VULKAN] + runs-on: ${{ matrix.os }} + steps: + - name: Set up build environment + run: | + echo "Running on OS: ${{ matrix.os }}, Variant: ${{ matrix.variant }}" + env: + DEBIAN_FRONTEND: noninteractive + + - name: Check out code + uses: actions/checkout@v3 + + - name: Cache builds + uses: actions/cache@v3 + id: sd-cpp-cache + with: + path: build/*.so + key: ${{ matrix.os }}-build-${{ matrix.variant }}-${{ hashFiles('cmake/sdcpp_version.cmake') }} + restore-keys: ${{ matrix.os }}-build-${{ matrix.variant }}- + + - name: Maximize build space + if: ${{ (matrix.variant == 'HIPBLAS' || matrix.variant == 'CUDA' || matrix.variant == 'VULKAN' ) && steps.sd-cpp-cache.outputs.cache-hit != 'true' }} + uses: AdityaGarg8/remove-unwanted-software@v4.1 + with: + remove-android: 'true' + remove-dotnet: 'true' + remove-haskell: 'true' + remove-codeql: 'true' + remove-docker-images: 'true' + remove-large-packages: 'true' + remove-swapfile: 'true' + + + - name: Install base dependencies + if: ${{ steps.sd-cpp-cache.outputs.cache-hit != 'true' }} + run: | + sudo apt update + sudo apt install -y fuse3 cmake gettext git build-essential ninja-build libexiv2-dev libssl-dev libjpeg-dev libpng-dev libtiff-dev libgtk-3-dev libcurl4-openssl-dev libsecret-1-dev libnotify-dev libwebkit2gtk-4.1-dev libsdl2-dev >/dev/null + + - name: CACHE ROCM installer + if: ${{ matrix.variant == 'HIPBLAS' && steps.sd-cpp-cache.outputs.cache-hit != 'true' }} + uses: actions/cache@v3 + id: ubuntu-rocm-installer + with: + path: /tmp/amdgpu-install.deb + key: amdgpu-install-ubuntu-${{ matrix.os }} + + - name: Download ROCM installer + if: ${{ matrix.variant == 'HIPBLAS' && steps.ubuntu-rocm-installer.outputs.cache-hit != 'true' && steps.sd-cpp-cache.outputs.cache-hit != 'true' }} + run: | + sudo apt install -y wget >/dev/null + source /etc/lsb-release + wget https://repo.radeon.com/amdgpu-install/6.2.2/ubuntu/${DISTRIB_CODENAME}/amdgpu-install_6.2.60202-1_all.deb -O /tmp/amdgpu-install.deb + + - name: Install ROCm toolkit + if: ${{ matrix.variant == 'HIPBLAS' && steps.sd-cpp-cache.outputs.cache-hit != 'true' }} + run: | + sudo apt update >/dev/null + sudo apt install -y "linux-headers-$(uname -r)" "linux-modules-extra-$(uname -r)" >/dev/null + sudo dpkg -i /tmp/amdgpu-install.deb + sudo apt update >/dev/null + sudo apt install -y rocm-openmp-sdk rocm-cmake hip-dev rocm-hip-runtime-dev clang-tools lld hipblas-dev + sudo tee --append /etc/ld.so.conf.d/rocm.conf </dev/null + + - name: Cache wxWidgets + id: cache-wxwidgets + uses: actions/cache@v4 + with: + path: | + build/_deps/wxwidgets-src + build/_deps/wxwidgets-build + build/_deps/wxwidgets-subbuild + key: ${{ matrix.os }}-wxwidgets-${{ hashFiles('cmake/wxWidgets_version.cmake') }} + restore-keys: ${{ matrix.os }}-wxwidgets + + - name: Restore builds + uses: actions/download-artifact@v4 + with: + path: build + pattern: ${{ matrix.os }}-* + merge-multiple: true + + - name: Configure & Compile main application + run: | + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release + cmake --build . --config Release --target po-compile + cmake --build . --config Release --target stablediffusiongui + cmake --build . --config Release --target stablediffusiongui_diffuser + + - name: Package main application + if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} + run: | + cd build + cmake --build . --config Release --target package + mkdir -p AppImageSource/usr/lib + cp -pP /usr/lib/x86_64-linux-gnu/libexiv2* AppImageSource/usr/lib + cp -pP /usr/lib/x86_64-linux-gnu/libjpeg* AppImageSource/usr/lib + cp -pP /usr/lib/x86_64-linux-gnu/libpng* AppImageSource/usr/lib + cp -pP /usr/lib/x86_64-linux-gnu/libcurl* AppImageSource/usr/lib + cmake --build . --config Release --target AppImage + + - name: Upload Release Outputs + if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} + uses: actions/upload-artifact@v4 + with: + name: prebuild-packages-${{ matrix.os }} + path: | + build/*.deb + build/*.tar.gz + build/out/*.AppImage + build/*.sha256 + compression-level: 0 + overwrite: true + + merge-packages: + name: Merge packages + runs-on: ubuntu-latest + needs: [package-ubuntu, package-installer] + if: ${{ startsWith(github.ref, 'refs/tags/') }} + + steps: + - name: Create directories + run: | + mkdir -p build + + - name: Download packages + uses: actions/download-artifact@v4 + id: download-packages + with: + path: build + pattern: prebuild-packages-* + merge-multiple: true + + - name: Release Linux packages + uses: softprops/action-gh-release@v2 + with: + body: "" + draft: true + prerelease: true + files: | + build/*.deb + build/out/*.AppImage + build/*.tar.gz + build/*.sha256 + build/*.exe + build/*.7z \ No newline at end of file diff --git a/.gitignore b/.gitignore index e6289c7..3fa626e 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,5 @@ vcpkg_installed/ /build /external/stable-diffusion /ui/ver.hpp -locale/**/*.mo \ No newline at end of file +locale/**/*.mo +CMakeUserPresets.json \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 2662f37..b535718 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.7...3.16 FATAL_ERROR) -project(StableDiffusionGUI -LANGUAGES CXX C -VERSION 0.2.3 +project(StableDiffusionGUI +LANGUAGES CXX C +VERSION 0.2.4 DESCRIPTION "Stable Diffusion C++ Desktop Gui" HOMEPAGE_URL "https://github.com/fszontagh/sd.cpp.gui.wx" @@ -17,7 +17,9 @@ include(cmake/wxWidgets_version.cmake) set(PROJECT_BINARY_NAME "stablediffusiongui") set(PROJECT_DISPLAY_NAME "Stable Diffusion GUI") # in github workflow to minimize output.. -add_definitions(-w) +if (DEFINED ENV{GITHUB_ACTIONS}) + set(CMAKE_VERBOSE_MAKEFILE OFF) +endif() include(FetchContent) include(ExternalProject) @@ -43,7 +45,7 @@ endif() find_package(exiv2 CONFIG QUIET) if (NOT exiv2_FOUND) - find_package(exiv2 REQUIRED) + find_package(exiv2 REQUIRED) endif() @@ -83,12 +85,17 @@ set(SOURCES ) if (WIN32) - list(APPEND SOURCES minimal.rc) + set(BNAME ${PROJECT_BINARY_NAME}) + set(COMPONENT_NAME ${PROJECT_DISPLAY_NAME}) + configure_file(platform/msvc/app.rc.in app.rc) + configure_file(platform/msvc/minimal.rc.in minimal.rc) + list(APPEND SOURCES ${CMAKE_BINARY_DIR}/app.rc) + list(APPEND SOURCES ${CMAKE_BINARY_DIR}/minimal.rc) endif() add_subdirectory(extprocess) -option(SD_SERVER "Build socket server" ON) +option(SD_SERVER "Build socket server" OFF) if (SD_SERVER) include(cmake/sockets-cpp.cmake) @@ -100,10 +107,12 @@ endif() add_executable(${PROJECT_BINARY_NAME} ${SOURCES}) target_precompile_headers(${PROJECT_BINARY_NAME} PRIVATE src/pch.h) -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - target_compile_options(${PROJECT_BINARY_NAME} PRIVATE -Wunused) -elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - target_compile_options(${PROJECT_BINARY_NAME} PRIVATE /w44265) # Hasonló figyelmeztetés MSVC-ben +if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug") + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + target_compile_options(${PROJECT_BINARY_NAME} PRIVATE -Wunused) + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + target_compile_options(${PROJECT_BINARY_NAME} PRIVATE /w44265) + endif() endif() @@ -160,7 +169,7 @@ include(cmake/intl.cmake) add_dependencies(${PROJECT_BINARY_NAME} ${APPDEPENDS} po-compile sockets_cpp) # Include directories -target_include_directories(${PROJECT_BINARY_NAME} PRIVATE +target_include_directories(${PROJECT_BINARY_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${stable_diffusion_SOURCE_DIR} ${CpuFeatures_SOURCE_DIR} diff --git a/README.md b/README.md index d789068..ef5cfa3 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,9 @@ Licensed under the MIT License. - **Text-to-image (text2img)** generation - **Image-to-image (img2img)** generation +- **Inpaint & Outpaint**, save / load masks, built-in inpaint / outpaint editor +- **Tiling** for low memory +- Model **quantization** in-fly or manually - Built-in **upscaling** capabilities - **ControlNet** integration - [**Model conversion** to GGUF format](https://github.com/fszontagh/sd.cpp.gui.wx/wiki/Convert-safetensors-model-into-gguf-(aka.-quantization)) @@ -16,7 +19,9 @@ Licensed under the MIT License. - Hardware detection for optimal diffusion performance - Integrated **model management** tools - **VAE** support +- **TAESD** support - Customizable **generation presets** +- ComfyUI compatible **Prompt presets ** - **Generation queue** for batch processing - Real-time **progress monitoring** during generation - Save and load metadata directly from images @@ -26,7 +31,7 @@ Licensed under the MIT License. - CPU (AVX, AVX2, AVX512) - CUDA -- ROCm +- VULKAN ---------- diff --git a/cmake/cpack.cmake b/cmake/cpack.cmake index 5d1cd8f..760673e 100644 --- a/cmake/cpack.cmake +++ b/cmake/cpack.cmake @@ -71,7 +71,7 @@ install(TARGETS ${PROJECT_BINARY_NAME} DESTINATION ${bin_INSTALL_PATH_NSIS} COMP if (SD_SERVER OR EXISTS "${CMAKE_BINARY_DIR}/server/${EPREFIX}${PROJECT_BINARY_NAME}_server${CMAKE_EXECUTABLE_SUFFIX}") install(FILES ${CMAKE_BINARY_DIR}/server/${EPREFIX}${PROJECT_BINARY_NAME}_server${CMAKE_EXECUTABLE_SUFFIX} - DESTINATION ${bin_INSTALL_PATH_NSIS} + DESTINATION ${bin_INSTALL_PATH_NSIS} COMPONENT "${CMAKE_PROJECT_NAME}Server") list(APPEND CPACK_COMPONENTS_ALL "${CMAKE_PROJECT_NAME}Server") set(CPACK_DEBIAN_STABLEDIFFUSIONGUISERVER_PACKAGE_NAME "stablediffusiongui-server-${SDCPP_VERSION}") @@ -81,7 +81,7 @@ endif() if (SDGUI_AVX OR EXISTS "${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_avx${CMAKE_SHARED_LIBRARY_SUFFIX}") install(FILES ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_avx${CMAKE_SHARED_LIBRARY_SUFFIX} - DESTINATION ${lib_INSTALL_PATH_NSIS} + DESTINATION ${lib_INSTALL_PATH_NSIS} COMPONENT libsdcpp_avx) list(APPEND CPACK_COMPONENTS_ALL "libsdcpp_avx") set(CPACK_DEBIAN_LIBSDCPP_AVX_PACKAGE_NAME "libstablediffusion-avx-${SDCPP_VERSION}") @@ -90,7 +90,7 @@ endif() if (SDGUI_AVX2 OR EXISTS "${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_avx2${CMAKE_SHARED_LIBRARY_SUFFIX}") install(FILES ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_avx2${CMAKE_SHARED_LIBRARY_SUFFIX} - DESTINATION ${lib_INSTALL_PATH_NSIS} + DESTINATION ${lib_INSTALL_PATH_NSIS} COMPONENT libsdcpp_avx2) list(APPEND CPACK_COMPONENTS_ALL "libsdcpp_avx2") set(CPACK_DEBIAN_LIBSDCPP_AVX2_PACKAGE_NAME "libstablediffusion-avx2-${SDCPP_VERSION}") @@ -99,7 +99,7 @@ endif() if (SDGUI_AVX512 OR EXISTS "${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_avx512${CMAKE_SHARED_LIBRARY_SUFFIX}") install(FILES ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_avx512${CMAKE_SHARED_LIBRARY_SUFFIX} - DESTINATION ${lib_INSTALL_PATH_NSIS} + DESTINATION ${lib_INSTALL_PATH_NSIS} COMPONENT libsdcpp_avx512) list(APPEND CPACK_COMPONENTS_ALL "libsdcpp_avx512") set(CPACK_DEBIAN_LIBSDCPP_AVX512_PACKAGE_NAME "libstablediffusion-avx512-${SDCPP_VERSION}") @@ -108,7 +108,7 @@ endif() if (SDGUI_CUBLAS OR EXISTS "${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_cuda${CMAKE_SHARED_LIBRARY_SUFFIX}") install(FILES ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_cuda${CMAKE_SHARED_LIBRARY_SUFFIX} - DESTINATION ${lib_INSTALL_PATH_NSIS} + DESTINATION ${lib_INSTALL_PATH_NSIS} COMPONENT libsdcpp_cuda) list(APPEND CPACK_COMPONENTS_ALL "libsdcpp_cuda") set(CPACK_DEBIAN_LIBSDCPP_CUDA_PACKAGE_NAME "libstablediffusion-cuda-${SDCPP_VERSION}") @@ -117,7 +117,7 @@ endif() if (SDGUI_HIPBLAS OR EXISTS "${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_hipblas${CMAKE_SHARED_LIBRARY_SUFFIX}") install(FILES ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_hipblas${CMAKE_SHARED_LIBRARY_SUFFIX} - DESTINATION ${lib_INSTALL_PATH_NSIS} + DESTINATION ${lib_INSTALL_PATH_NSIS} COMPONENT libsdcpp_hipblas) list(APPEND CPACK_COMPONENTS_ALL "libsdcpp_hipblas") set(CPACK_DEBIAN_LIBSDCPP_HIPBLAS_PACKAGE_NAME "libstablediffusion-hipblas-${SDCPP_VERSION}") @@ -126,7 +126,7 @@ endif() if (SDGUI_VULKAN OR EXISTS "${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_vulkan${CMAKE_SHARED_LIBRARY_SUFFIX}") install(FILES ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_vulkan${CMAKE_SHARED_LIBRARY_SUFFIX} - DESTINATION ${lib_INSTALL_PATH_NSIS} + DESTINATION ${lib_INSTALL_PATH_NSIS} COMPONENT libsdcpp_vulkan) list(APPEND CPACK_COMPONENTS_ALL "libsdcpp_vulkan") set(CPACK_DEBIAN_LIBSDCPP_VULKAN_PACKAGE_NAME "libstablediffusion-vulkan-${SDCPP_VERSION}") @@ -136,7 +136,7 @@ endif() if(WIN32) set(CPACK_GENERATOR "NSIS") - set(CPACK_NSIS_DISPLAY_NAME "${CMAKE_PROJECT_NAME} ${PROJECT_VERSION}") + set(CPACK_NSIS_DISPLAY_NAME "${CMAKE_PROJECT_NAME}") set(CPACK_NSIS_PACKAGE_NAME "${CMAKE_PROJECT_NAME}") set(CPACK_NSIS_URL_INFO_ABOUT ${CMAKE_PROJECT_HOMEPAGE_URL}) set(CPACK_NSIS_HELP_LINK "https://github.com/fszontagh/sd.cpp.gui.wx") @@ -153,17 +153,17 @@ if(WIN32) install(FILES ${CMAKE_SOURCE_DIR}/graphics/icons/256/stablediffusiongui.png DESTINATION ${bin_INSTALL_PATH_NSIS} COMPONENT "${CMAKE_PROJECT_NAME}") install(FILES ${CMAKE_SOURCE_DIR}/graphics/icons/256/stablediffusiongui.ico DESTINATION ${bin_INSTALL_PATH_NSIS} COMPONENT "${CMAKE_PROJECT_NAME}") - + elseif(UNIX AND NOT APPLE) set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}-${DISTRO_VERSION}") string(TIMESTAMP TODAY "%Y%m%d") - + set(CPACK_GENERATOR "DEB") - + set(CPACK_DEB_COMPONENT_INSTALL ON) - + # DEB package settings set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT") set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Ferenc Szontágh ") @@ -186,10 +186,10 @@ elseif(UNIX AND NOT APPLE) include(GNUInstallDirs) set(APPIMAGE_SOURCE_DIR "${CMAKE_BINARY_DIR}/AppImageSource") - + # Generate the .desktop file by replacing placeholders configure_file(${CMAKE_SOURCE_DIR}/platform/linux/app.desktop ${CMAKE_BINARY_DIR}/stablediffusiongui.desktop @ONLY) - + install(FILES ${CMAKE_BINARY_DIR}/stablediffusiongui.desktop DESTINATION share/applications COMPONENT "${CMAKE_PROJECT_NAME}") install(FILES ${CMAKE_SOURCE_DIR}/graphics/icons/256/stablediffusiongui.png DESTINATION share/icons/hicolor/256x256/apps COMPONENT "${CMAKE_PROJECT_NAME}") include(${CMAKE_SOURCE_DIR}/cmake/AppImage.cmake) @@ -211,7 +211,7 @@ include(CPack) cpack_add_component("${CMAKE_PROJECT_NAME}Server" DISPLAY_NAME "SD C++ Server" DESCRIPTION "Stable Diffusion CPP Server" - ) + ) cpack_add_component(libsdcpp_avx DISPLAY_NAME "SD C++ -AVX" diff --git a/cmake/sdcpp_version.cmake b/cmake/sdcpp_version.cmake index cd29aec..e82b700 100644 --- a/cmake/sdcpp_version.cmake +++ b/cmake/sdcpp_version.cmake @@ -1 +1 @@ -set(SDCPP_VERSION "b5f4932") \ No newline at end of file +set(SDCPP_VERSION "dcf91f9") \ No newline at end of file diff --git a/cmake/stable_diffusion.cmake b/cmake/stable_diffusion.cmake index f0c87fb..5dc5f67 100644 --- a/cmake/stable_diffusion.cmake +++ b/cmake/stable_diffusion.cmake @@ -13,36 +13,42 @@ else() endif() -set(SDGUI_AVX OFF) -set(SDGUI_AVX2 OFF) -set(SDGUI_AVX512 OFF) -set(SDGUI_CUBLAS OFF) -set(SDGUI_HIPBLAS OFF) -set(SDGUI_VULKAN OFF) - -if (SD_AVX) +option(SD_AVX "Enable AVX library build" OFF) +option(SD_AVX2 "Enable AVX2 library build" OFF) +option(SD_AVX512 "Enable AVX512 library build" OFF) +option(SD_CUDA "Enable CUDA library build" OFF) +option(SD_HIPBLAS "Enable HIPBLAS library build" OFF) +option(SD_VULKAN "Enable Vulkan library build" OFF) + + + +if (SD_AVX) set(SDGUI_AVX ON) endif() -if(SD_AVX2) + +if (SD_AVX2) set(SDGUI_AVX2 ON) -endif(SD_AVX2) +endif() -if(SD_AVX512) +if (SD_AVX512) set(SDGUI_AVX512 ON) -endif(SD_AVX512) +endif() -if(SD_CUBLAS) + +if (SD_CUDA) set(SDGUI_CUBLAS ON) -endif(SD_CUBLAS) +endif() + if (SD_HIPBLAS) set(SDGUI_HIPBLAS ON) -endif(SD_HIPBLAS) +endif() + if (SD_VULKAN) set(SDGUI_VULKAN ON) -endif(SD_VULKAN) +endif() # Helper macro to build stable diffusion with different settings macro(build_stable_diffusion variant_name avx_flag avx2_flag avx512_flag cublas_flag hipblas_flag vulkan_flag) @@ -52,7 +58,7 @@ macro(build_stable_diffusion variant_name avx_flag avx2_flag avx512_flag cublas_ set(SD_AVX "${avx_flag}") set(SD_AVX2 "${avx2_flag}") set(SD_AVX512 "${avx512_flag}") - set(SD_CUBLAS "${cublas_flag}") + set(SD_CUDA "${cublas_flag}") set(SD_HIPBLAS "${hipblas_flag}") set(SD_VULKAN "${vulkan_flag}") @@ -60,71 +66,130 @@ macro(build_stable_diffusion variant_name avx_flag avx2_flag avx512_flag cublas_ if (WIN32) set(EPREFIX "${CMAKE_BUILD_TYPE}/") - endif() + endif() if (CMAKE_GENERATOR MATCHES "Ninja") set(EPREFIX "") endif() - message(STATUS "Building sd.cpp variant: ${variant_name} with flags: ${SD_AVX} ${SD_AVX2} ${SD_AVX512} ${SD_CUBLAS} ${SD_HIPBLAS} ${SD_VULKAN} EPREFIX: ${EPREFIX} Generator: ${CMAKE_GENERATOR}") - - -if (NOT SD_HIPBLAS) - - ExternalProject_Add( - stable_diffusion_cpp_${variant_name} - GIT_REPOSITORY https://github.com/leejet/stable-diffusion.cpp.git - GIT_TAG ${SD_GIT_TAG} - EXCLUDE_FROM_ALL - LOG_CONFIGURE ON - LOG_MERGED_STDOUTERR ON - BINARY_DIR ${CMAKE_BINARY_DIR}/sdcpp_${variant_name} - CMAKE_ARGS -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} -DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DSD_BUILD_EXAMPLES=OFF -DSD_BUILD_SHARED_LIBS=ON -DGGML_AVX=${SD_AVX} -DGGML_AVX2=${SD_AVX2} -DGGML_AVX512=${SD_AVX512} -DSD_CUBLAS=${SD_CUBLAS} -DSD_HIPBLAS=${SD_HIPBLAS} -DSD_VULKAN=${SD_VULKAN} - INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/sdcpp_${variant_name}/bin/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_${variant_name}${CMAKE_SHARED_LIBRARY_SUFFIX} - INSTALL_BYPRODUCTS ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_${variant_name}${CMAKE_SHARED_LIBRARY_SUFFIX} - ) - - else(NOT SD_HIPBLAS) - - ExternalProject_Add( - stable_diffusion_cpp_${variant_name} - GIT_REPOSITORY https://github.com/leejet/stable-diffusion.cpp.git - CMAKE_GENERATOR Ninja - GIT_TAG ${SD_GIT_TAG} - EXCLUDE_FROM_ALL - BINARY_DIR ${CMAKE_BINARY_DIR}/sdcpp_${variant_name} - CMAKE_ARGS -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} -DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION} -DCMAKE_C_FLAGS=-Wno-nested-anon-types -DCMAKE_CXX_FLAGS=-Wno-nested-anon-types -G Ninja -DGPU_TARGETS=gfx1100,gfx1102,gfx1030 -DAMDGPU_TARGETS=gfx1100,gfx1102,gfx1030 -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DSD_BUILD_EXAMPLES=OFF -DSD_BUILD_SHARED_LIBS=ON -DGGML_AVX=${SD_AVX} -DGGML_AVX2=${SD_AVX2} -DGGML_AVX512=${SD_AVX512} -DSD_CUBLAS=${SD_CUBLAS} -DSD_HIPBLAS=${SD_HIPBLAS} -DSD_VULKAN=${SD_VULKAN} - INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/sdcpp_${variant_name}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_${variant_name}${CMAKE_SHARED_LIBRARY_SUFFIX} - INSTALL_BYPRODUCTS ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_${variant_name}${CMAKE_SHARED_LIBRARY_SUFFIX} - ) - - -endif(NOT SD_HIPBLAS) + message(STATUS "Building sd.cpp variant: ${variant_name} with flags: ${SD_AVX} ${SD_AVX2} ${SD_AVX512} ${SD_CUDA} ${SD_HIPBLAS} ${SD_VULKAN} EPREFIX: ${EPREFIX} Generator: ${CMAKE_GENERATOR}") + +if (MSVC) + set(DISABLE_WARNINGS_FLAGS "/W0") +else() + set(DISABLE_WARNINGS_FLAGS "-w -Wno-deprecated") +endif() + +if(NOT SD_HIPBLAS AND NOT SD_VULKAN) + +ExternalProject_Add( + stable_diffusion_cpp_${variant_name} + GIT_REPOSITORY https://github.com/leejet/stable-diffusion.cpp.git + GIT_TAG ${SD_GIT_TAG} + EXCLUDE_FROM_ALL + LOG_OUTPUT_ON_FAILURE ON + BINARY_DIR ${CMAKE_BINARY_DIR}/sdcpp_${variant_name} + CMAKE_ARGS "-DCMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}" + "-DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}" + "-DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}" + "-DCMAKE_CXX_FLAGS=${DISABLE_WARNINGS_FLAGS}" + "-DCMAKE_C_FLAGS=${DISABLE_WARNINGS_FLAGS}" + "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + "-DSD_BUILD_EXAMPLES=OFF" + "-DSD_BUILD_SHARED_LIBS=ON" + "-DGGML_AVX=${SD_AVX}" + "-DGGML_AVX2=${SD_AVX2}" + "-DGGML_AVX512=${SD_AVX512}" + "-DSD_CUDA=${SD_CUDA}" + "-DSD_HIPBLAS=${SD_HIPBLAS}" + "-DSD_VULKAN=${SD_VULKAN}" + INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/sdcpp_${variant_name}/bin/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_${variant_name}${CMAKE_SHARED_LIBRARY_SUFFIX} + INSTALL_BYPRODUCTS ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_${variant_name}${CMAKE_SHARED_LIBRARY_SUFFIX} +) + +endif() + + +if(SD_VULKAN) + + file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}/sdcpp_${variant_name}/bin/${EPREFIX}" _BINPATH) + message(STATUS "Bin path: ${_BINPATH}") + if (WIN32) + list(APPEND ${_BINPATH} $ENV{PATH}) + else () + set(_BINPATH "${_BINPATH}:$ENV{PATH}") + endif () + + ExternalProject_Add( + stable_diffusion_cpp_${variant_name} + GIT_REPOSITORY https://github.com/leejet/stable-diffusion.cpp.git + GIT_TAG ${SD_GIT_TAG} + LOG_OUTPUT_ON_FAILURE ON + EXCLUDE_FROM_ALL + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/sdcpp_${variant_name} + BINARY_DIR ${CMAKE_BINARY_DIR}/sdcpp_${variant_name} + CMAKE_ARGS "-DGGML_NATIVE=ON" + "-DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}" + "-DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}" + "-DCMAKE_CXX_FLAGS=${DISABLE_WARNINGS_FLAGS}" + "-DCMAKE_C_FLAGS=${DISABLE_WARNINGS_FLAGS}" + "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + "-DSD_BUILD_EXAMPLES=OFF" "-DSD_BUILD_SHARED_LIBS=ON" + "-DGGML_AVX=${SD_AVX}" + "-DGGML_AVX2=${SD_AVX2}" + "-DGGML_AVX512=${SD_AVX512}" + "-DSD_CUDA=${SD_CUDA}" + "-DSD_HIPBLAS=${SD_HIPBLAS}" + "-DSD_VULKAN=${SD_VULKAN}" + BUILD_COMMAND ${CMAKE_COMMAND} -E env PATH=${_BINPATH} ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}/sdcpp_${variant_name} --config ${CMAKE_BUILD_TYPE} + INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/sdcpp_${variant_name}/bin/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_${variant_name}${CMAKE_SHARED_LIBRARY_SUFFIX} + INSTALL_BYPRODUCTS ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_${variant_name}${CMAKE_SHARED_LIBRARY_SUFFIX} + ) +endif() + +if(SD_HIPBLAS) + + ExternalProject_Add( + stable_diffusion_cpp_${variant_name} + GIT_REPOSITORY https://github.com/leejet/stable-diffusion.cpp.git + CMAKE_GENERATOR Ninja + GIT_TAG ${SD_GIT_TAG} + LOG_OUTPUT_ON_FAILURE ON + EXCLUDE_FROM_ALL + BINARY_DIR ${CMAKE_BINARY_DIR}/sdcpp_${variant_name} + CMAKE_ARGS -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} -DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION} -DCMAKE_C_FLAGS=-Wno-nested-anon-types -DCMAKE_CXX_FLAGS=-Wno-nested-anon-types -G Ninja -DGPU_TARGETS=gfx1100,gfx1102,gfx1030 -DAMDGPU_TARGETS=gfx1100,gfx1102,gfx1030 -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DSD_BUILD_EXAMPLES=OFF -DSD_BUILD_SHARED_LIBS=ON -DGGML_NATIVE=OFF -DGGML_AVX=${SD_AVX} -DGGML_AVX2=${SD_AVX2} -DGGML_AVX512=${SD_AVX512} -DSD_CUDA=${SD_CUDA} -DSD_HIPBLAS=${SD_HIPBLAS} -DSD_VULKAN=${SD_VULKAN} + INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/sdcpp_${variant_name}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_${variant_name}${CMAKE_SHARED_LIBRARY_SUFFIX} + INSTALL_BYPRODUCTS ${CMAKE_BINARY_DIR}/${EPREFIX}${CMAKE_SHARED_LIBRARY_PREFIX}stable-diffusion_${variant_name}${CMAKE_SHARED_LIBRARY_SUFFIX} + ) + + + endif(SD_HIPBLAS) endmacro() + + if (SDGUI_AVX) -build_stable_diffusion("avx" ON OFF OFF OFF OFF OFF) + build_stable_diffusion("avx" ON OFF OFF OFF OFF OFF) endif() if (SDGUI_AVX2) -build_stable_diffusion("avx2" OFF ON OFF OFF OFF OFF) + build_stable_diffusion("avx2" OFF ON OFF OFF OFF OFF) endif() if (SDGUI_AVX512) -build_stable_diffusion("avx512" OFF OFF ON OFF OFF OFF) + build_stable_diffusion("avx512" OFF OFF ON OFF OFF OFF) endif() if(SDGUI_CUBLAS) -build_stable_diffusion("cuda" OFF OFF OFF ON OFF OFF) + build_stable_diffusion("cuda" OFF OFF OFF ON OFF OFF) endif(SDGUI_CUBLAS) - if (SDGUI_HIPBLAS) -build_stable_diffusion("hipblas" OFF OFF OFF OFF ON OFF) + build_stable_diffusion("hipblas" OFF OFF OFF OFF ON OFF) endif(SDGUI_HIPBLAS) if (SDGUI_VULKAN) -build_stable_diffusion("vulkan" OFF OFF OFF OFF OFF ON) + build_stable_diffusion("vulkan" OFF OFF OFF OFF OFF ON) endif(SDGUI_VULKAN) diff --git a/cmake/wxWidgets.cmake b/cmake/wxWidgets.cmake index 33a0a90..23b457a 100644 --- a/cmake/wxWidgets.cmake +++ b/cmake/wxWidgets.cmake @@ -1,62 +1,55 @@ if (NOT WIN32) - set(wxWidgets_USE_STATIC ON) set(wxBUILD_SHARED OFF) - set(WXWIDGETS_EXTRA_PATH "" CACHE STRING "wxWidget extra search path, default: \"\"") + set(wxBUILD_SAMPLES OFF) + set(wxBUILD_TESTS OFF) + set(wxBUILD_DEMOS OFF) + set(wxBUILD_BENCHMARKS OFF) - - set(wxWidgets_TYPE "system") + set(WXWIDGETS_EXTRA_PATH "" CACHE STRING "wxWidget extra search path, default: \"\"") find_package(PkgConfig REQUIRED) pkg_check_modules(GTK3 REQUIRED gtk+-3.0) pkg_check_modules(PANGO REQUIRED pango) - - if (NOT WXWIDGETS_EXTRA_PATH STREQUAL "") - - message(STATUS "WXWIDGETS_EXTRA_PATH: ${WXWIDGETS_EXTRA_PATH}") - - find_package(wxWidgets ${WXWIDGETS_VERSION} QUIET - PATHS ${WXWIDGETS_EXTRA_PATH}) - - else() + if (NOT WXWIDGETS_EXTRA_PATH STREQUAL "") + message(STATUS "Using extra search path: ${WXWIDGETS_EXTRA_PATH}") + find_package(wxWidgets ${WXWIDGETS_VERSION} QUIET PATHS ${WXWIDGETS_EXTRA_PATH}) + else() find_package(wxWidgets ${WXWIDGETS_VERSION} QUIET) - endif() - - - - - if (NOT wxWidgets_FOUND) - message(STATUS "wxWidgets not found, using fetch content with tag v${WXWIDGETS_VERSION}") + if (wxWidgets_FOUND) + set(wxWidgets_TYPE "system") + message(STATUS "wxWidgets found on system: ${wxWidgets_VERSION} at ${wxWidgets_DIR}") + else() + message(STATUS "wxWidgets not found on system, using FetchContent with tag v${WXWIDGETS_VERSION}") set(wxWidgets_TYPE "download") - + + include(FetchContent) FetchContent_Declare( wxWidgets GIT_REPOSITORY https://github.com/wxWidgets/wxWidgets.git - GIT_TAG "v${WXWIDGETS_VERSION}" - EXCLUDE_FROM_ALL - FIND_PACKAGE_ARGS NAMES wxWidgets + GIT_TAG v${WXWIDGETS_VERSION} ) FetchContent_MakeAvailable(wxWidgets) - if(NOT wxwidgets_POPULATED) + if (NOT wxwidgets_POPULATED) FetchContent_Populate(wxwidgets) add_subdirectory(${wxwidgets_SOURCE_DIR} ${wxwidgets_BUILD_DIR} EXCLUDE_FROM_ALL) endif() + set(wxWidgets_FOUND ON) set(wxWidgets_VERSION ${WXWIDGETS_VERSION}) - - - endif(NOT wxWidgets_FOUND) + endif() else() - find_package(wxWidgets) -endif(NOT WIN32) + find_package(wxWidgets REQUIRED) + set(wxWidgets_TYPE "system") +endif() if (NOT wxWidgets_FOUND) message(FATAL_ERROR "wxWidgets not found") else() - message(STATUS "wxWidgets found: ${wxWidgets_VERSION} ${wxWidgets_TYPE} ${wxWidgets_DIR}") + message(STATUS "wxWidgets found: ${wxWidgets_VERSION} (${wxWidgets_TYPE}) at ${wxWidgets_DIR}") endif() diff --git a/extprocess/CMakeLists.txt b/extprocess/CMakeLists.txt index 882a6f9..f82655f 100644 --- a/extprocess/CMakeLists.txt +++ b/extprocess/CMakeLists.txt @@ -12,7 +12,13 @@ configure_file(src/config.hpp.in config.hpp) set(SOURCES "src/main.cpp") if (MSVC) - list(APPEND SOURCES ${CMAKE_SOURCE_DIR}/minimal.rc) + set(BNAME ${EPROCESS_BINARY_NAME}) + set(COMPONENT_NAME "${PROJECT_DISPLAY_NAME} Diffuser") + configure_file(../platform/msvc/app.rc.in app.rc) + configure_file(../platform/msvc/minimal.rc.in minimal.rc) + list(APPEND SOURCES minimal.rc) + list(APPEND SOURCES ${CMAKE_CURRENT_BINARY_DIR}/app.rc) + list(APPEND SOURCES ${CMAKE_CURRENT_BINARY_DIR}/minimal.rc) endif() add_executable(${EPROCESS_BINARY_NAME} ${SOURCES} ${CMAKE_SOURCE_DIR}/src/libs/SharedLibrary.cpp ${CMAKE_SOURCE_DIR}/src/libs/SharedMemoryManager.cpp src/ApplicationLogic.cpp) diff --git a/extprocess/src/ApplicationLogic.cpp b/extprocess/src/ApplicationLogic.cpp index 3b6de9f..3685775 100644 --- a/extprocess/src/ApplicationLogic.cpp +++ b/extprocess/src/ApplicationLogic.cpp @@ -152,7 +152,7 @@ void ApplicationLogic::processMessage(QM::QueueItem& item) { this->sendStatus(QM::QueueStatus::HASHING, QM::QueueEvents::ITEM_MODEL_HASH_DONE, "", EPROCESS_SLEEP_TIME); } - this->sendStatus(QM::QueueStatus::RUNNING, QM::QueueEvents::ITEM_MODEL_LOAD_START, "", EPROCESS_SLEEP_TIME); + this->sendStatus(QM::QueueStatus::MODEL_LOADING, QM::QueueEvents::ITEM_MODEL_LOAD_START, "", EPROCESS_SLEEP_TIME); // on mode convert always return true, because no model loading if (this->loadSdModel() == false) { if (this->currentItem->mode == QM::GenerationMode::TXT2IMG || this->currentItem->mode == QM::GenerationMode::IMG2IMG) { @@ -170,6 +170,10 @@ void ApplicationLogic::processMessage(QM::QueueItem& item) { return; } + // set the steps + this->currentItem->step = 0; + this->currentItem->steps = 1; + this->sendStatus(QM::QueueStatus::RUNNING, QM::QueueEvents::ITEM_MODEL_LOADED, "", EPROCESS_SLEEP_TIME); // handle the convert differently @@ -256,7 +260,8 @@ void ApplicationLogic::Txt2Img() { this->currentItem->params.style_ratio, this->currentItem->params.normalize_input, this->currentItem->params.input_id_images_path.c_str(), - this->currentItem->params.skip_layers, + this->currentItem->params.skip_layers.data(), + this->currentItem->params.skip_layers.size(), this->currentItem->params.slg_scale, this->currentItem->params.skip_layer_start, this->currentItem->params.skip_layer_end); @@ -305,8 +310,10 @@ void ApplicationLogic::Img2img() { unsigned char* input_image_buffer = NULL; unsigned char* control_image_buffer = NULL; + unsigned char* mask_image_buffer = NULL; sd_image_t input_image; sd_image_t* control_image = NULL; + sd_image_t mask_image; sd_image_t* results; int input_w, input_h, input_c = 0; @@ -331,11 +338,18 @@ void ApplicationLogic::Img2img() { this->sendStatus(QM::QueueStatus::FAILED, QM::QueueEvents::ITEM_FAILED, "Missing input image"); return; } - - std::cout << "Checking control image: " << this->currentItem->params.control_image_path << std::endl; + if (this->currentItem->mask_image.length() > 0 && std::filesystem::exists(this->currentItem->mask_image)) { + mask_image_buffer = stbi_load(this->currentItem->mask_image.c_str(), &input_w, &input_h, &input_c, 1); + std::cout << " mask image loaded: " << this->currentItem->mask_image << " width: " << input_w << " height: " << input_h << " channels: " << input_c << std::endl; + } else { + std::vector arr(this->currentItem->params.width * this->currentItem->params.height, 255); + mask_image_buffer = arr.data(); + } + mask_image = sd_image_t{(uint32_t)input_w, (uint32_t)input_h, 3, mask_image_buffer}; // prepare control image, if we have one if (this->currentItem->params.control_image_path.length() > 0) { + std::cout << "Checking control image: " << this->currentItem->params.control_image_path << std::endl; if (std::filesystem::exists(this->currentItem->params.control_image_path)) { control_image_buffer = stbi_load(this->currentItem->params.control_image_path.c_str(), &control_w, &control_h, &control_c, 3); control_image = new sd_image_t{(uint32_t)control_w, (uint32_t)control_h, 3, control_image_buffer}; @@ -349,6 +363,7 @@ void ApplicationLogic::Img2img() { results = this->img2imgFuncPtr( this->sd_ctx, input_image, + mask_image, this->currentItem->params.prompt.c_str(), this->currentItem->params.negative_prompt.c_str(), this->currentItem->params.clip_skip, @@ -366,15 +381,16 @@ void ApplicationLogic::Img2img() { this->currentItem->params.style_ratio, this->currentItem->params.normalize_input, this->currentItem->params.input_id_images_path.c_str(), - this->currentItem->params.skip_layers, + this->currentItem->params.skip_layers.data(), + this->currentItem->params.skip_layers.size(), this->currentItem->params.slg_scale, this->currentItem->params.skip_layer_start, this->currentItem->params.skip_layer_end); - std::cout << "done" << std::endl; // free up the control image stbi_image_free(input_image_buffer); stbi_image_free(control_image_buffer); + stbi_image_free(mask_image_buffer); control_image = NULL; delete control_image; diff --git a/extprocess/src/ApplicationLogic.h b/extprocess/src/ApplicationLogic.h index 1c6f2f0..6494ec5 100644 --- a/extprocess/src/ApplicationLogic.h +++ b/extprocess/src/ApplicationLogic.h @@ -20,7 +20,7 @@ class ApplicationLogic { if (item != nullptr) { item->hash_progress_size = readed; - item->generated_sha256 = hash; + item->generated_sha256 = hash; instance->sendStatus(QM::QueueStatus::HASHING, QM::QueueEvents::ITEM_MODEL_HASH_UPDATE); } } @@ -56,8 +56,7 @@ class ApplicationLogic { } instance->currentItem->updated_at = std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(); - instance->sendStatus(QM::QueueStatus::RUNNING, QM::QueueEvents::ITEM_UPDATED); - std::cout << "[EXTPROCESS] Item: " << instance->currentItem->id << " Step: " << instance->currentItem->step << "/" << instance->currentItem->steps << " Time: " << instance->currentItem->time << "s" << std::endl; + instance->sendStatus(QM::QueueEvents::ITEM_UPDATED); } bool loadLibrary(); @@ -135,7 +134,12 @@ class ApplicationLogic { nlohmann::json j = *this->currentItem; std::string jsonString = j.dump(); this->sharedMemoryManager->write(jsonString.c_str(), jsonString.length()); - + } + inline void sendStatus(QM::QueueEvents event, const std::string& reason = "", unsigned int sleep = 0) { + if (this->currentItem == nullptr) { + return; + } + this->sendStatus(this->currentItem->status, event, reason, sleep); } std::string generateRandomFilename(const std::string& extension = ".tmp") { const char charset[] = diff --git a/extprocess/src/config.hpp.in b/extprocess/src/config.hpp.in index d802a30..594f62e 100644 --- a/extprocess/src/config.hpp.in +++ b/extprocess/src/config.hpp.in @@ -14,7 +14,7 @@ inline const unsigned int SHARED_MEMORY_SIZE = @SHARED_MEMORY_SIZE@; inline const unsigned int EPROCESS_SLEEP_TIME = 500; inline const unsigned int EPROCESS_STD_BUFFER = 10240; -inline const std::vector CHECKPOINT_FILE_EXTENSIONS = {"safetensors", "cpkt", "gguf"}; +inline const std::vector CHECKPOINT_FILE_EXTENSIONS = {"safetensors", "cktp", "gguf"}; inline const std::vector EMBEDDING_FILE_EXTENSIONS = {"safetensors", "pt"}; inline const std::vector LORA_FILE_EXTENSIONS = {"safetensors", "pt", "ckpt"}; inline const std::vector VAE_FILE_EXTENSIONS = {"safetensors", "pt", "ckpt", "gguf"}; diff --git a/extprocess/src/main.cpp b/extprocess/src/main.cpp index a5d7c6b..048d363 100644 --- a/extprocess/src/main.cpp +++ b/extprocess/src/main.cpp @@ -5,11 +5,17 @@ int main(int argc, char* argv[]) { return 1; } - std::cout << "[EXTPROCESS] starting with shared memory size: " << SHARED_MEMORY_SIZE << std::endl; + std::shared_ptr sharedMemory = nullptr; - std::shared_ptr sharedMemory = std::make_shared(SHARED_MEMORY_PATH, SHARED_MEMORY_SIZE, false); + std::cout << "[EXTPROCESS] starting with shared memory size: " << SHARED_MEMORY_SIZE << std::endl; + try { + sharedMemory = std::make_shared(SHARED_MEMORY_PATH, SHARED_MEMORY_SIZE, false); + } catch (const std::exception& e) { + std::cerr << "[EXTPROCESS] Failed to create SharedMemoryManager: " << e.what() << std::endl; + return 1; + } - if (!sharedMemory) { + if (sharedMemory == nullptr) { std::cerr << "[EXTPROCESS] Failed to create SharedMemoryManager" << std::endl; return 1; } @@ -25,10 +31,8 @@ int main(int argc, char* argv[]) { bool needToRun = true; int lastId = 0; while (needToRun) { - std::unique_ptr buffer(new char[SHARED_MEMORY_SIZE]); - if (sharedMemory->read(buffer.get(), SHARED_MEMORY_SIZE)) { if (std::strlen(buffer.get()) > 0) { std::string message = std::string(buffer.get(), SHARED_MEMORY_SIZE); diff --git a/graphics/icons/16/circle.png b/graphics/icons/16/circle.png new file mode 100644 index 0000000..f3a4af7 Binary files /dev/null and b/graphics/icons/16/circle.png differ diff --git a/graphics/icons/16/square.png b/graphics/icons/16/square.png new file mode 100644 index 0000000..5ac1060 Binary files /dev/null and b/graphics/icons/16/square.png differ diff --git a/graphics/icons/16/triangle.png b/graphics/icons/16/triangle.png new file mode 100644 index 0000000..71258bf Binary files /dev/null and b/graphics/icons/16/triangle.png differ diff --git a/graphics/window.fbp b/graphics/window.fbp index 46a8d71..8fe4882 100644 --- a/graphics/window.fbp +++ b/graphics/window.fbp @@ -1,34 +1,36 @@ - + - ; C++ - 1 - source_name - 0 - 0 - ..\src\ui\embedded_files + ; + 1 + connect + wxSimpleHelpProvider + + + 0 + 0 + ../src/ui/embedded_files UTF-8 - connect MainWindow 1000 - wxSimpleHelpProvider - - 1 + 1 + UI MainWindow - - ..\src\ui - + ../src/ui + 0 + source_name + 1 + 0 + source_name + + + 1 1 - 1 - 1 - 1 - UI - 0 - 0 0 + 0 wxAUI_MGR_DEFAULT @@ -44,11 +46,11 @@ wxID_ANY - - -1,-1 - UI + 3072,4096 + 1024,768 + mainUI - 800,600 + 1024,768 wxDEFAULT_FRAME_STYLE ; ; forward_declare sd.cpp.gui @@ -62,20 +64,20 @@ -1,-1 sizer0001 wxVERTICAL - none - + public + 5 wxEXPAND 0 - + 1 1 1 1 - + 0 - - + 0 + 0 @@ -119,16 +121,16 @@ wxTAB_TRAVERSAL - + sizer0021 wxHORIZONTAL none - + 5 0 - + bSizer97 wxHORIZONTAL @@ -142,14 +144,14 @@ 1 1 1 - + 0 - - + 0 + 0 0 - Load From Embedded File; icons\16\settings.png + Load From Embedded File; icons/16/settings.png 1 0 @@ -193,7 +195,7 @@ Resizable 1 - + 32,-1 ; ; forward_declare 0 @@ -217,14 +219,14 @@ 1 1 1 - + 0 - - + 0 + 0 0 - Load From Embedded File; icons\16\refresh.png + Load From Embedded File; icons/16/refresh.png 1 0 @@ -268,7 +270,7 @@ Resizable 1 - + 32,-1 ; ; forward_declare 0 @@ -292,10 +294,10 @@ 1 1 1 - + 0 - - + 0 + 0 0 @@ -343,7 +345,7 @@ Resizable 1 - + 32,-1 ; ; forward_declare 0 @@ -360,17 +362,17 @@ 5 - wxALL + wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxALIGN_CENTER_VERTICAL 0 1 1 1 1 - + 0 - - + 0 + 0 0 @@ -418,7 +420,7 @@ Resizable 1 - + 32,-1 ; ; forward_declare 0 @@ -433,6 +435,154 @@ OnCivitAitButton + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + Load From Embedded File; icons/16/images.png + + 1 + 0 + 1 + + 1 + + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Show Widget + + 0 + + 0 + + + 0 + + 1 + m_showWidget + 1 + + + protected + 1 + + + + Resizable + 1 + 32,-1 + ; ; forward_declare + 0 + Show Widget + + wxFILTER_NONE + wxDefaultValidator + + 0 + + + + OnShowWidget + + + + 5 + wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/cross_circle.png + + 1 + 0 + 1 + This will send a terminate to the background diffuser process. This will clear up all used memory (eg. freeing up all the loaded models) + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 0 + + 1 + + + 0 + 1 + wxID_ANY + Restart background process + + 0 + + 0 + + + 0 + + 1 + m_stop_background_process + 1 + + + protected + 1 + + + + Resizable + 1 + 32,-1 + + ; ; forward_declare + 0 + Stop and restart the background process + + wxFILTER_NONE + wxDefaultValidator + + + + + OnStopBackgroundProcess + + 5 wxEXPAND | wxALL @@ -442,10 +592,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -512,10 +662,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -574,10 +724,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -651,10 +801,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -713,10 +863,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -772,4641 +922,1055 @@ - - - - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel12 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer781 - wxHORIZONTAL - none - + 5 wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - -1,-1 - - 0 - 300,-1 - 1 - m_scrolledWindow1 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - 300,-1 - ; ; forward_declare - 0 - - - - wxHSCROLL|wxVSCROLL - - 300,-1 - bSizer83 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer76 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer99 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Vae: - 0 - - 0 - - - 0 - -1,-1 - 1 - m_staticText161 - 1 - - - protected - 1 - - Resizable - 1 - 60,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - -1,-1 - 1 - m_vae - 1 - - - protected - 1 - - Resizable - 0 - 1 - 200,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onVaeSelect - - - - - - 5 - wxALIGN_CENTER_HORIZONTAL - 0 - - - bSizer87 - wxHORIZONTAL - none - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - VAE tiling - - 0 - - - 0 - - 1 - m_vae_tiling - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Process vae in tiles to reduce memory usage - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - VAE decode only - - 0 - - - 0 - - 1 - m_vae_decode_only - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer22 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - bSizer85 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - CFG: - 0 - - 0 - - - 0 - - 1 - m_staticText231 - 1 - - - protected - 1 - - Resizable - 1 - 60,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - 1 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.1 - 0 - 15 - - 0 - - 0 - - 0 - -1,-1 - 1 - m_cfg - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - 7.0 - - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer86 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Clip skip: - 0 - - 0 - - - 0 - - 1 - m_staticText234 - 1 - - - protected - 1 - - Resizable - 1 - 60,-1 - - ; ; forward_declare - 0 - ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1) <= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0 - 2 - - 0 - - -1 - - 0 - -1,-1 - 1 - m_clip_skip - 1 - - - protected - 1 - - Resizable - 1 - 200,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1) <= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x - 0 - - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer88 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - TAESD: - 0 - - 0 - - - 0 - - 1 - m_staticText20 - 1 - - - protected - 1 - - Resizable - 1 - 60,-1 - - ; ; forward_declare - 0 - Using Tiny AutoEncoder for fast decoding (low quality) - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_taesd - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer9 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - bSizer89 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Batch: - 0 - - 0 - - - 0 - - 1 - m_staticText15 - 1 - - - protected - 1 - - Resizable - 1 - 60,-1 - - ; ; forward_declare - 0 - number of images to generate. - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 1 - 1000 - - 0 - - 1 - - 0 - - 1 - m_batch_count - 1 - - - protected - 1 - - Resizable - 1 - 200,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - number of images to generate. - - - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer90 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Sampler - 0 - - 0 - - - 0 - - 1 - m_staticText163 - 1 - - - protected - 1 - - Resizable - 1 - 60,-1 - - ; ; forward_declare - 0 - sampling method (default: "euler_a") - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - -1,-1 - 1 - m_sampler - 1 - - - protected - 1 - - Resizable - 0 - 1 - 200,-1 - - ; ; forward_declare - 0 - sampling method (default: "euler_a") - - wxFILTER_NONE - wxDefaultValidator - - - - - onSamplerSelect - - - - - - - - 5 - wxEXPAND - 0 - - - sizer0003 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer92 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Seed: - 0 - - 0 - - - 0 - - 1 - m_staticText233 - 1 - - - protected - 1 - - Resizable - 1 - 60,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - -1 - 999999999 - - 0 - - -1 - - 0 - -1,-1 - 1 - m_seed - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - -1 - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - Load From Embedded File; icons\16\dice_four.png - - 1 - 0 - 1 - - 0 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Random seed - - 0 - - 0 - - - 0 - - 1 - m_random_seed - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onRandomGenerateButton - - - - - - 5 - wxEXPAND - 0 - - - bSizer93 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Steps: - 0 - - 0 - - - 0 - - 1 - m_staticText14 - 1 - - - protected - 1 - - Resizable - 1 - 60,-1 - - ; ; forward_declare - 0 - number of sample steps (default: 20) - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 20 - 100 - - 0 - - 0 - - 0 - -1,-1 - 1 - m_steps - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - number of sample steps (default: 20) - 20 - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer96 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer94 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Width: - 0 - - 0 - - - 0 - - 1 - m_staticText237 - 1 - - - protected - 1 - - Resizable - 1 - 60,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - 512 - 2048 - - 0 - - 256 - - 0 - - 1 - m_width - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - 512 - - - - OnWHChange - OnWHChange - - - - - - 5 - wxEXPAND - 0 - - - bSizer95 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Height: - 0 - - 0 - - - 0 - - 1 - m_staticText239 - 1 - - - protected - 1 - - Resizable - 1 - 60,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - 512 - 2048 - - 0 - - 256 - - 0 - - 1 - m_height - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - 512 - - - - OnWHChange - OnWHChange - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - Load From Embedded File; icons/16/replace.png - - 1 - 0 - 1 - Swap the resolution width and height - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Swap - - 0 - - 0 - - - 0 - - 1 - m_button7 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Swap width and height - - wxFILTER_NONE - wxDefaultValidator - - - - - onResolutionSwap - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer74 - wxVERTICAL - none - - 5 - wxEXPAND | wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_staticline4 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_HORIZONTAL - ; ; forward_declare - 0 - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer91 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Presets: - 0 - - 0 - - - 0 - - 1 - m_staticText17 - 1 - - - protected - 1 - - Resizable - 1 - 60,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - Load From Embedded File; icons/16/disk.png - - 1 - 0 - 1 - Save the current settings into a new preset, or overwrite an exists one - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Save preset - - 0 - - 0 - - - 0 - - 1 - m_save_preset - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Save the current settings into preset - - wxFILTER_NONE - wxDefaultValidator - - - - - onSavePreset - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - Load a selected preset. The preset settings will over write the current generation settings - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Load selected preset - - 0 - - 0 - - - 0 - - 1 - m_load_preset - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Load the selected preset - - wxFILTER_NONE - wxDefaultValidator - - - - - onLoadPreset - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_preset_list - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onSelectPreset - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - Load From Embedded File; icons\16\trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Delete preset - - 0 - - 0 - - - 0 - - 1 - m_delete_preset - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onDeletePreset - - - - - - - - - 5 - wxEXPAND | wxALL - 2 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_panel11 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer771 - wxVERTICAL - none - - 0 - wxALIGN_TOP|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - wxSYS_COLOUR_WINDOW - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - 400,200 - 1 - m_notebook1302 - 1 - - - protected - 1 - - Resizable - 1 - -1,200 - wxBK_DEFAULT - ; ; forward_declare - 0 - - - - - m_notebook1302OnNotebookPageChanged - - Load From Embedded File; icons/16/images.png - Jobs and Images - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_jobs_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - jobs - wxTAB_TRAVERSAL - - - bSizer17 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer18 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - Load From Embedded File; icons/16/forward.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Resume all - - 0 - - 0 - - - 0 - - 1 - m_start_jobs - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onJobsStart - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - Load From Embedded File; icons/16/pause.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Pause all - - 0 - - 0 - - - 0 - - 1 - m_pause_jobs - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onJobsPause - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Delete all - - 0 - - 0 - - - 0 - - 1 - m_delete_all_jobs - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onJobsDelete - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Number of jobs: 0 - 0 - - 0 - - - 0 - - 1 - m_static_number_of_jobs - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxEXPAND - 2 - - -1,-1 - bSizer78 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 0 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 200 - - 0 - - 1 - m_splitter2 - 1 - - - protected - 1 - - Resizable - 1 - -200 - -1 - 1 - - wxSPLIT_VERTICAL - wxSP_3D - ; ; forward_declare - 0 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_panel14 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer79 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - -1,-1 - m_joblist - protected - - - wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VERT_RULES - ; ; forward_declare - - - - - OnJobListItemActivated - onContextMenu - OnJobListItemSelection - - - - - - - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - -1,-1 - - 0 - 256,-1 - 1 - m_panel15 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer107 - wxVERTICAL - none - - 5 - wxEXPAND - 2 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - -1,-1 - -1,-1 - m_joblist_item_details - protected - - - wxDV_NO_HEADER|wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES - ; ; forward_declare - - - - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn1 - protected - Text - -1 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn2 - protected - Text - -1 - - - - - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer9011 - wxVERTICAL - none - - 5 - wxEXPAND|wxALL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow41 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - -1,280 - ; ; forward_declare - 0 - - - - wxBORDER_DEFAULT|wxHSCROLL - - - bSizer8911 - wxHORIZONTAL - public - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmap6 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - - - - - - - - - - - - Load From Embedded File; icons/16/text_box_dots.png - Text2IMG - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_text2img_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - txt2txt - wxTAB_TRAVERSAL - onTxt2ImgFileDrop - - -1,100 - sizer0004 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer811 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer82 - wxVERTICAL - none - - 1 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - 0 - - 0 - -1,-1 - 1 - m_prompt - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnPromptText - - - - 1 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,400,-1,70,0 - 0 - - wxID_ANY - - 0 - - 0 - - 0 - -1,-1 - 1 - m_neg_prompt - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnNegPromptText - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - - - 5 - wxEXPAND - 1 - - -1,100 - bSizer331 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - 64,64,64 - Load From Embedded File; images/controlnet.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_controlnetImagePreview - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - ; ; forward_declare - 0 - - - - wxFULL_REPAINT_ON_RESIZE - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer34 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - Load From Embedded File; icons/16/play.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Queue - - 0 - - 0 - - - 0 - - 1 - m_generate2 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onGenerate - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - 260,-1 - 1 - m_controlnetImageOpen - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - PNG files (*.png)|*.png|JPEG (*.jpg)|*.jpg - - - - OnControlnetImageOpen - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - -1,-1 - 1 - m_controlnetModels - 1 - - - protected - 1 - - Resizable - 0 - 1 - 210,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - 1 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.1 - 0.9 - 0.9 - - 0 - - 0 - - 0 - - 1 - m_controlnetStrength - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Show full - - 0 - - 0 - - - 0 - - 1 - m_controlnetImagePreviewButton - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Show the original controlnet image - - wxFILTER_NONE - wxDefaultValidator - - - - - OnControlnetImagePreviewButton - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Delete - - 0 - - 0 - - - 0 - - 1 - m_controlnetImageDelete - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Remove control image - - wxFILTER_NONE - wxDefaultValidator - - - - - OnControlnetImageDelete - - - - - - - - - Load From Embedded File; icons/16/picture.png - Image2image - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_image2image_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - img2img - wxTAB_TRAVERSAL - Onimg2imgDropFile - - - bSizer24 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - bSizer28 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer33 - wxVERTICAL - none - - 1 - wxEXPAND|wxALL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - - 0 - - 1 - m_prompt2 - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnPromptText - - - - 1 - wxEXPAND|wxALL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - - 0 - - 1 - m_neg_prompt2 - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnNegPromptText - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - - - 5 - wxEXPAND - 1 - - - bSizer29 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - 64,64,64 - Load From Embedded File; images/sd.cpp.gui_blankimage.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_img2img_preview - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - Onimg2imgDropFile - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer38 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - Load From Embedded File; icons/16/play.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Queue - - 0 - - 0 - - - 0 - - 1 - m_generate1 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onGenerate - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select an image - - 0 - 470,-1 - 1 - m_open_image - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - PNG files (*.png)|*.png|JPEG (*.jpg)|*.jpg - - - - OnImageOpenFileChanged - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Strength: - 0 - - 0 - - - 0 - - 1 - m_staticText24 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - 2 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.1 - 0.75 - 0.99 - - 0 - - 0 - - 0 - - 1 - m_strength - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - - - - - + 1 + + + bSizer120 + wxVERTICAL + none + + 5 + wxLEFT|wxTOP + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Current job: none + 0 + + 0 + + + 0 + 300,-1 + 1 + m_currentStatus + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxLEFT + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_currentProgress + 1 + + + protected + 1 + + 100 + Resizable + 1 + 300,-1 + wxGA_HORIZONTAL|wxGA_SMOOTH + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + 0 + + + + + + + + + 5 + wxEXPAND + 1 + + + bSizer123 + wxVERTICAL + none + + + + + + + 0 + wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + 210,-1 + 1 + m_panel31 + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxBORDER_NONE|wxTAB_TRAVERSAL + + + bSizer138 + wxHORIZONTAL + public + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + wxSYS_COLOUR_WINDOW + 16,16 + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + + wxID_ANY + + 0 + + + 0 + 400,200 + 1 + m_notebook1302 + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + wxNB_NOPAGETHEME|wxNB_TOP + ; ; forward_declare + 0 + + + + wxBORDER_DEFAULT + m_notebook1302OnNotebookPageChanged + + Load From Embedded File; icons/16/images.png + Jobs and Images + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + 300,-1 + 1 + m_jobs_panel + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + jobs + wxTAB_TRAVERSAL + + + bSizer104 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + + bSizer17 + wxVERTICAL + none + + 5 + wxEXPAND + 0 + + + bSizer18 + wxHORIZONTAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/forward.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Resume all + + 0 + + 0 + + + 0 + + 1 + m_start_jobs + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + onJobsStart - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Show full - - 0 - - 0 - - - 0 - - 1 - m_img2im_preview_img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnImg2ImgPreviewButton + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/pause.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Pause all + + 0 + + 0 + + + 0 + + 1 + m_pause_jobs + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + onJobsPause + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/trash.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 0 + + 1 + + + 0 + 0 + wxID_ANY + Delete all + + 0 + + 0 + + + 0 + + 1 + m_delete_all_jobs + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + onJobsDelete + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Number of jobs: 0 + 0 + + 0 + + + 0 + + 1 + m_static_number_of_jobs + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + + + 5 + wxEXPAND + 2 + + -1,-1 + bSizer78 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 0 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 200 + + 0 + + 1 + m_splitter2 + 1 + + + protected + 1 + + Resizable + 1 + -200 + -1 + 1 + + wxSPLIT_VERTICAL + wxSP_3D + ; ; forward_declare + 0 + + + + + + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + 300,-1 + 1 + m_panel14 + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + + bSizer79 + wxVERTICAL + none + + 5 + wxEXPAND + 1 + + + + 1 + 0 + 1 + + + 0 + wxID_ANY + + -1,-1 + m_joblist + protected + + + wxDV_HORIZ_RULES|wxDV_MULTIPLE|wxDV_ROW_LINES|wxDV_VERT_RULES + ; ; forward_declare + + wxWS_EX_VALIDATE_RECURSIVELY + + + OnJobListItemActivated + onContextMenu + OnJobListItemSelection + OnJobListItemKeyDown + + wxALIGN_LEFT + + wxDATAVIEW_COL_HIDDEN|wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE + Id + wxDATAVIEW_CELL_INERT + m_dataViewListColumn32 + protected + Text + -1 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE + Crated at + wxDATAVIEW_CELL_INERT + m_dataViewListColumn321 + protected + Text + 120 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + Type + wxDATAVIEW_CELL_INERT + m_dataViewListColumn3211 + protected + Text + 100 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + Model + wxDATAVIEW_CELL_INERT + m_dataViewListColumn32111 + protected + Text + -1 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + Sampler + wxDATAVIEW_CELL_INERT + m_dataViewListColumn321111 + protected + Text + -1 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + Seed + wxDATAVIEW_CELL_INERT + m_dataViewListColumn3211111 + protected + Text + -1 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + Progress + wxDATAVIEW_CELL_INERT + m_dataViewListColumn32111111 + protected + Progress + 80 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + Speed + wxDATAVIEW_CELL_INERT + m_dataViewListColumn321111111 + protected + Text + 110 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + Status + wxDATAVIEW_CELL_ACTIVATABLE + m_dataViewListColumn3211111111 + protected + Text + 150 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + + wxDATAVIEW_CELL_ACTIVATABLE + m_dataViewListColumn32111111111 + protected + Text + -1 + + + + + - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - Load From Embedded File; icons\16\trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - MyButton - - 0 - - 0 - - - 0 + + + + + 5 + wxEXPAND + 1 + + + bSizer9011 + wxVERTICAL + none + + 5 + wxEXPAND|wxALL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_scrolledWindow41 + 1 + + + protected + 1 + + Resizable + 5 + 5 + 1 + -1,280 + ; ; forward_declare + 0 + + + + wxBORDER_THEME|wxHSCROLL + - 1 - m_delete_initial_img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnDeleteInitialImage + bSizer8911 + wxHORIZONTAL + public + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmap6 + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + + + @@ -5414,172 +1978,347 @@ - - - Upscaler - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 + + 5 + wxEXPAND + 0 + + -1,-1 + bSizer106 + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Job details + 0 + + 0 + -1,-1 + + 0 + + 1 + m_staticText64 + 1 + + + protected + 1 + + Resizable + 1 + + wxALIGN_CENTER_HORIZONTAL + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL|wxEXPAND + 1 + + + + 1 + 0 + 1 + + + 0 + wxID_ANY + -1,-1 + -1,-1 + m_joblist_item_details + protected + + 480,-1 + wxDV_NO_HEADER|wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES + ; ; forward_declare + + + JobList + wxBORDER_DEFAULT + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + + wxDATAVIEW_CELL_INERT + m_dataViewListColumn1 + protected + Text + -1 + + + wxALIGN_LEFT + wxELLIPSIZE_NONE + wxDATAVIEW_COL_RESIZABLE + + wxDATAVIEW_CELL_INERT + m_dataViewListColumn2 + protected + Text + -1 + + + + + + + + + + Load From Embedded File; icons/16/text_box_dots.png + txt2img + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_text2img_panel + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + onTxt2ImgFileDrop + + -1,100 + sizer0004 + wxVERTICAL + none + + 5 + wxEXPAND + 1 + 300,-1 - 1 - m_upscaler - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - upscaler - wxTAB_TRAVERSAL - OnUpscalerDropFile - - - bSizer68 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - bSizer999 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer69 - wxVERTICAL - none - - 5 - wxEXPAND - 0 + bSizer811 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + -1,100 + bSizer331 + wxVERTICAL + none + + 5 + wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_notebook3 + 1 + + + protected + 1 + + Resizable + 1 + + wxNB_RIGHT + ; ; forward_declare + 0 + + + + + + + Diffusion + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 0 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_diffusionPreviewTab + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL - bSizer71 - wxHORIZONTAL + bSizer991 + wxVERTICAL none 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Source Image - 0 - - 0 - - - 0 - - 1 - m_staticText62 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxEXPAND 1 - + 1 1 1 1 - + 0 - - + 0 + 0 - + 64,64,64 + Load From Embedded File; images/preview.png 1 0 @@ -5601,12 +2340,11 @@ 0 - Select a file 0 - + 200,-1 1 - m_upscaler_filepicker + m_txt2txtDeiffusionPreview 1 @@ -5615,50 +2353,102 @@ Resizable 1 - - wxFLP_DEFAULT_STYLE + -1,-1 ; ; forward_declare 0 - - wxFILTER_NONE - wxDefaultValidator - - - PNG files (*.png)|*.png|JPEG (*.jpg)|*.jpg - - OnImageOpenFilePickerChanged + wxFULL_REPAINT_ON_RESIZE + + + + + + Controlnet + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_controlnetPreviewTab + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + + bSizer981 + wxVERTICAL + none 5 - wxALL - 0 - + wxEXPAND + 1 + 1 1 1 1 - + 0 - - - 0 + 0 + 0 - - Load From Embedded File; icons\16\trash.png + 64,64,64 + Load From Embedded File; images/controlnet.png 1 0 1 1 - - 0 0 - Dock 0 Left @@ -5666,1129 +2456,4278 @@ 1 1 - 0 0 wxID_ANY - MyButton - - 0 0 0 - + 200,-1 1 - m_delete_upscale_image + m_controlnetImagePreview 1 protected 1 - - Resizable 1 - - + -1,-1 ; ; forward_declare 0 - - wxFILTER_NONE - wxDefaultValidator - - - OnDeleteUpscaleImage + wxFULL_REPAINT_ON_RESIZE + + + + OpenPose Editor + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 1 + wxID_ANY + + 0 + + + 0 + + 1 + m_openPoseWindow + 1 + + + protected + 1 + + Resizable + 5 + 5 + 1 + + ; ; forward_declare + 0 + + + + wxHSCROLL|wxVSCROLL + + + + + + + + + + 5 + wxEXPAND + 0 + + + bSizer34 + wxHORIZONTAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + Select a file + + 0 + 260,-1 + 1 + m_controlnetImageOpen + 1 + + + protected + 1 + + Resizable + 1 + + wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG + + + + OnControlnetImageOpen + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + CN on CPU + + 0 + + + 0 + + 1 + cnOnCpu + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + Keep controlnet on CPU + + wxFILTER_NONE + wxDefaultValidator + + + + + onCnOnCpu + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 0 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + -1,-1 + 1 + m_controlnetModels + 1 + + + protected + 1 + + Resizable + 0 + 1 + 210,-1 + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + 1 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + 0.1 + 0.9 + 0.9 + + 0 + + 0 + + 0 + + 1 + m_controlnetStrength + 1 + + + protected + 1 + + Resizable + 1 + 142,-1 + wxSP_ARROW_KEYS + ; ; forward_declare + 0 + + + + + + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 0 + + 1 + + + 0 + 0 + wxID_ANY + Show full + + 0 + + 0 + + + 0 + + 1 + m_controlnetImagePreviewButton + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Show the original controlnet image + + wxFILTER_NONE + wxDefaultValidator + + + + + OnControlnetImagePreviewButton + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/trash.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 0 + + 1 + + + 0 + 0 + wxID_ANY + Delete + + 0 + + 0 + + + 0 + + 1 + m_controlnetImageDelete + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Remove control image + + wxFILTER_NONE + wxDefaultValidator + + + + + OnControlnetImageDelete + + + + + + + + + Load From Embedded File; icons/16/palette.png + img2img + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + -1,-1 + 1 + m_image2image_panel + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + img2img + wxTAB_TRAVERSAL + Onimg2imgDropFile + + + bSizer10099 + wxVERTICAL + none + + 5 + wxEXPAND + 1 + + + bSizer28 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_notebook4 + 1 + + + protected + 1 + + Resizable + 1 + + wxNB_RIGHT + ; ; forward_declare + 0 + + + + + + + Diffusion + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 0 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel23 + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + + bSizer1003 + wxVERTICAL + none + + 5 + wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + 64,64,64 + Load From Embedded File; images/preview.png + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + 200,-1 + 1 + m_img2imgDiffusionPreview + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + + Onimg2imgDropFile + + + + + + + + Preview and InPaint + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel25 + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + + bSizer1026 + wxVERTICAL + none 5 - wxEXPAND + wxALL|wxEXPAND 0 - + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + -1,-1 + + 0 - bSizer70 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Upscaler model - 0 - - 0 - - - 0 - - 1 - m_staticText61 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_upscaler_model - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnUpscalerModelSelection + 1 + m_panel26 + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + + bSizer1028 + wxVERTICAL + none + + 0 + + 0 + + + bSizer1030 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Brush + 0 + + 0 + + + 0 + 50,-1 + 1 + m_inpaintBrushSize + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + 40 + + 0 + + 1 + + 0 + + 1 + m_inpaintBrushSizeSlider + 1 + + + protected + 1 + + Resizable + 1 + + wxSL_HORIZONTAL|wxSL_VALUE_LABEL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + 10 + + + + OnInpaintBrushSizeSliderScroll + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Zoom + 0 + + 0 + + + 0 + 40,-1 + 1 + m_inpaintZoom + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 0 + 0 + Dock + 0 + Left + 0 + 0 + + 1 + + 0 + 0 + wxID_ANY + 200 + + 0 + + 25 + + 0 + + 1 + m_inpaintZoomSlider + 1 + + + protected + 1 + + Resizable + 1 + + wxSL_HORIZONTAL|wxSL_VALUE_LABEL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + 100 + + + + OnInpaintZoomSliderScroll + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/disk.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + + + 0 + + 0 + + + 0 + + 1 + m_inpaintSaveMask + 1 + + + protected + 1 + + + + Resizable + 1 + 28,28 + + ; ; forward_declare + 0 + Save the mask into png + + wxFILTER_NONE + wxDefaultValidator + + + + + OnInpaintSaveMask + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/replace.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + + + 0 + + 0 + + + 0 + + 1 + m_inpaintInvert + 1 + + + protected + 1 + + + + Resizable + 1 + 28,28 + + ; ; forward_declare + 0 + Invert mask + + wxFILTER_NONE + wxDefaultValidator + + + + + OnInpaintInvertMask + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/drag.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + + + 0 + + 0 + + + 0 + + 1 + m_inpaintResizeToSdSize + 1 + + + protected + 1 + + + + Resizable + 1 + 28,28 + + ; ; forward_declare + 0 + Resize the image to fit into the diffusion's width and height. WARNING: this will delete the current mask if have! + + wxFILTER_NONE + wxDefaultValidator + + + + + OnInpaintResizeImage + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/trash.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 0 + + 1 + + + 0 + 0 + wxID_ANY + + + 0 + + 0 + + + 0 + + 1 + m_inpaintClearMask + 1 + + + protected + 1 + + + + Resizable + 1 + 28,28 + + ; ; forward_declare + 0 + Clear the mask + + wxFILTER_NONE + wxDefaultValidator + + + + + OnInpaintCleanMask + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + Select a file + + 0 + + 1 + m_inpaintOpenMask + 1 + + + protected + 1 + + Resizable + 1 + + wxFLP_FILE_MUST_EXIST|wxFLP_OPEN + ; ; forward_declare + 0 + Open a mask image from file + + wxFILTER_NONE + wxDefaultValidator + + + Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG + + + + OnInpaintMaskOpen + + + + + + 0 + + 0 + + + bSizer1029 + wxHORIZONTAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + Load From Embedded File; icons/16/circle.png + + 1 + 0 + 1 + + 1 + + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + + + 0 + + 0 + + + 0 + + 1 + m_inPaintBrushStyleCircle + 1 + + + protected + 1 + + + + Resizable + 1 + 28,28 + ; ; forward_declare + 0 + Change the brush shape to circle + + wxFILTER_NONE + wxDefaultValidator + + 1 + + + + OnInPaintBrushStyleToggle + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + Load From Embedded File; icons/16/square.png + + 1 + 0 + 1 + + 1 + + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + + + 0 + + 0 + + + 0 + + 1 + m_inPaintBrushStyleSquare + 1 + + + protected + 1 + + + + Resizable + 1 + 28,28 + ; ; forward_declare + 0 + Change the brush shape to square + + wxFILTER_NONE + wxDefaultValidator + + 0 + + + + OnInPaintBrushStyleToggle + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + Load From Embedded File; icons/16/triangle.png + + 1 + 0 + 1 + + 1 + + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + + + 0 + + 0 + + + 0 + + 1 + m_inPaintBrushStyleTriangle + 1 + + + protected + 1 + + + + Resizable + 1 + 28,28 + ; ; forward_declare + 0 + Change the brush shape to triangle + + wxFILTER_NONE + wxDefaultValidator + + 0 + + + + OnInPaintBrushStyleToggle + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + + 0 + 150,-1 + 1 + m_inpaintImageResolution + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 0 + wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Ctrl + Mouse wheel to ZOOM Shift + Mouse wheel to Change brush size + 0 + + 0 + + + 0 + + 1 + m_staticText69 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + - + 5 - wxEXPAND - 0 - - - bSizer72 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Width: - 0 - - 0 - - - 0 - - 1 - m_staticText63 - 1 - - - protected - 1 - - Resizable - 1 - 50,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_width - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Height: - 0 - - 0 - - - 0 - - 1 - m_staticText65 - 1 - - - protected - 1 - - Resizable - 1 - 50,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_height - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - -1 + wxEXPAND | wxALL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel261 + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxBORDER_NONE|wxTAB_TRAVERSAL + + + bSizer1022 + wxVERTICAL + none + + 0 + wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 0 + 0 + Dock + 0 + Left + 1 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + 256,256 + 1 + m_img2imPanel + 1 + + + public + 1 + + Resizable + 5 + 5 + 1 + + ; ; forward_declare + 0 + + + inpaintEditor + wxBORDER_NONE|wxFULL_REPAINT_ON_RESIZE|wxHSCROLL|wxNO_FULL_REPAINT_ON_RESIZE|wxVSCROLL + Onimg2imgDropFile + OnImg2ImgMouseEnter + OnImg2ImgEraseBackground + OnImg2ImgMouseLeave + OnImg2ImgMouseDown + OnImg2ImgMouseUp + OnImg2ImgMouseMotion + OnImg2ImgMouseWheel + OnImg2ImgPaint + OnImg2ImgRMouseDown + OnImg2ImgRMouseUp + OnImg2ImgSize + 5 - wxEXPAND + wxALL 0 - + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 - bSizer721 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Width: - 0 - - 0 - - - 0 - - 1 - m_staticText631 - 1 - - - protected - 1 - - Resizable - 1 - 50,-1 - - ; ; forward_declare - 0 - - - - - -1 + 1 + m_panel231 + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + + bSizer1027 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Outpaint Top: + 0 + + 0 + + + 0 + + 1 + m_staticText691 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_inpaintCanvasTop + 1 + + + protected + 1 + + Resizable + 1 + 40,-1 + wxTE_PROCESS_ENTER|wxTE_RIGHT + ; ; forward_declare + 0 + + + wxFILTER_NUMERIC + wxDefaultValidator + + 0 + + + + OnInpaintCanvasResizeApply + - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_target_width - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Right: + 0 + + 0 + + + 0 + + 1 + m_staticText701 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Height: - 0 - - 0 - - - 0 - - 1 - m_staticText651 - 1 - - - protected - 1 - - Resizable - 1 - 50,-1 - - ; ; forward_declare - 0 - - - - - -1 + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_inpaintCanvasRight + 1 + + + protected + 1 + + Resizable + 1 + 40,-1 + wxTE_PROCESS_ENTER|wxTE_RIGHT + ; ; forward_declare + 0 + + + wxFILTER_NUMERIC + wxDefaultValidator + + 0 + + + + OnInpaintCanvasResizeApply + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Bottom: + 0 + + 0 + + + 0 + + 1 + m_staticText71 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_target_height - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - -1 + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_inpaintCanvasBottom + 1 + + + protected + 1 + + Resizable + 1 + 40,-1 + wxTE_PROCESS_ENTER|wxTE_RIGHT + ; ; forward_declare + 0 + + + wxFILTER_NUMERIC + wxDefaultValidator + + 0 + + + + OnInpaintCanvasResizeApply + - - - - - 5 - wxEXPAND - 0 - - - bSizer73 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Upscale factor - 0 - - 0 - - - 0 - - 1 - m_staticText67 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Left: + 0 + + 0 + + + 0 + + 1 + m_staticText721 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_inpaintCanvasLeft + 1 + + + protected + 1 + + Resizable + 1 + 40,-1 + wxTE_PROCESS_ENTER|wxTE_RIGHT + ; ; forward_declare + 0 + + + wxFILTER_NUMERIC + wxDefaultValidator + + 0 + + + + OnInpaintCanvasResizeApply + - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - 4 - 4 - - 0 - - 1 - - 0 - - 1 - m_upscaler_factor - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - - - - - OnUpscalerFactorChange + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Resize + + 0 + + 0 + + + 0 + + 1 + m_inpaintCanvasResizeApply + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnInpaintCanvasResizeApply + - - - 5 - wxEXPAND - 1 - - - bSizer1000 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - 64,64,64 - Load From Embedded File; images/sd.cpp.gui_blankimage.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - -1,-1 - - 0 - 200,-1 - 1 - m_upscaler_source_image - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - ; ; forward_declare - 0 - - - - - + + + + + + + + 5 + wxEXPAND + 0 + + -1,-1 + bSizer33 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + Select an image + + 0 + -1,-1 + 1 + m_img2imgOpen + 1 + + + protected + 1 + + Resizable + 1 + + wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG + + + + OnImageOpenFileChanged + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Strength: + 0 + + 0 + + + 0 + + 1 + m_staticText24 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + 2 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + 0.1 + 0.75 + 1 + + 0 + + 0 + + 0 + + 1 + m_strength + 1 + + + protected + 1 + + Resizable + 1 + + wxSP_ARROW_KEYS + ; ; forward_declare + 0 + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 0 + + 1 + + + 0 + 0 + wxID_ANY + Show full + + 0 + + 0 + + + 0 + + 1 + m_img2im_preview_img + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnImg2ImgPreviewButton + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/trash.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + + + 0 + + 0 + + + 0 + + 1 + m_delete_initial_img + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnDeleteInitialImage + + + + + + + + + Load From Embedded File; icons/16/picture.png + Upscaler + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + 300,-1 + 1 + m_upscaler + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + upscaler + wxTAB_TRAVERSAL + OnUpscalerDropFile + + + bSizer68 + wxVERTICAL + none + + 5 + wxEXPAND + 1 + + + bSizer999 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + + bSizer1000 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + 64,64,64 + Load From Embedded File; images/sd.cpp.gui_blankimage.png + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + -1,-1 + + 0 + 200,-1 + 1 + m_upscaler_source_image + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + ; ; forward_declare + 0 + + + + + + + + + + 5 + wxEXPAND + 1 + + 300,-1 + bSizer69 + wxVERTICAL + none + + 5 + wxEXPAND + 0 + + + bSizer71 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Source Image + 0 + + 0 + + + 0 + + 1 + m_staticText62 + 1 + + + protected + 1 + + Resizable + 1 + 100,-1 + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + Select an image + + 0 + + 1 + m_upscaler_filepicker + 1 + + + protected + 1 + + Resizable + 1 + + wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG + + + + OnImageOpenFilePickerChanged + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/trash.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + MyButton + + 0 + + 0 + + + 0 + + 1 + m_delete_upscale_image + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnDeleteUpscaleImage - - - 5 - wxEXPAND - 0 - - - bSizer77 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - Load From Embedded File; icons/16/play.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Queue - - 0 - - 0 - - - 0 - - 1 - m_generate_upscaler - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onGenerate + + 5 + wxEXPAND + 0 + + + bSizer70 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Upscaler model + 0 + + 0 + + + 0 + + 1 + m_staticText61 + 1 + + + protected + 1 + + Resizable + 1 + 100,-1 + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_upscaler_model + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnUpscalerModelSelection + - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Keep model in memory - - 0 - - - 0 - - 1 - m_keep_upscaler_in_memory - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - + + + 5 + wxEXPAND + 0 + + + bSizer72 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Width: + 0 + + 0 + + + 0 + + 1 + m_staticText63 + 1 + + + protected + 1 + + Resizable + 1 + 100,-1 + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + + 0 + + 1 + m_static_upscaler_width + 1 + + + protected + 1 + + Resizable + 1 + 100,-1 + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Height: + 0 + + 0 + + + 0 + + 1 + m_staticText65 + 1 + + + protected + 1 + + Resizable + 1 + 100,-1 + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + + 0 + + 1 + m_static_upscaler_height + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + + ; ; forward_declare + 0 + + + + + -1 + - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Keep checkpoints in memory - - 0 - - - 0 - - 1 - m_keep_other_models_in_memory - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - + + + 5 + wxEXPAND + 0 + + + bSizer721 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Width: + 0 + + 0 + + + 0 + + 1 + m_staticText631 + 1 + + + protected + 1 + + Resizable + 1 + 100,-1 + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + + 0 + + 1 + m_static_upscaler_target_width + 1 + + + protected + 1 + + Resizable + 1 + 100,-1 + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Height: + 0 + + 0 + + + 0 + + 1 + m_staticText651 + 1 + + + protected + 1 + + Resizable + 1 + 100,-1 + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + + 0 + + 1 + m_static_upscaler_target_height + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + + ; ; forward_declare + 0 + + + + + -1 + + + + + + 5 + wxEXPAND + 0 + + + bSizer73 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Upscale factor + 0 + + 0 + + + 0 + + 1 + m_staticText67 + 1 + + + protected + 1 + + Resizable + 1 + 100,-1 + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 0 + + 1 + + 0 + 0 + wxID_ANY + 4 + 4 + + 0 + + 1 + + 0 + + 1 + m_upscaler_factor + 1 + + + protected + 1 + + Resizable + 1 + 142,-1 + + ; ; forward_declare + 0 + + + + + + OnUpscalerFactorChange + + + + + + 5 + wxEXPAND + 1 + + + bSizer951 + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + wxSYS_COLOUR_WINDOW + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_upscalerHelp + 1 + + + public + 1 + + Resizable + 1 + + wxHW_SCROLLBAR_AUTO + ; ; forward_declare + 0 + + + + + OnHtmlLinkClicked + @@ -6796,19 +6735,224 @@ - - Load From Embedded File; icons/16/cube.png - Models - 0 - + + 5 + wxEXPAND + 0 + + + bSizer77 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Keep upscale model in memory + + 0 + + + 0 + + 1 + m_keep_upscaler_in_memory + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + WARNING: If you check this box, the upscaler model will remain in memory for the next job, which could lead to a memory overflow or program crash (segfault). + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Keep checkpoints in memory + + 0 + + + 0 + + 1 + m_keep_other_models_in_memory + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + WARNING: If you check this box, the SD model from the previous job will remain in RAM/VRAM, which could potentially lead to a program crash (segfault). + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + Load From Embedded File; icons/16/interrogation.png + Image info + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_imageinfo + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + + bSizer115 + wxVERTICAL + none + + 5 + wxEXPAND + 1 + 1 1 1 1 - + 0 - - + 0 + 0 @@ -6832,191 +6976,111 @@ 0 + 200 0 - 300,-1 + 1 - m_models_panel + m_splitter4 1 - protected + public 1 Resizable + 0.5 + 0 + -1 1 + wxSPLIT_VERTICAL + wxSP_BORDER ; ; forward_declare 0 - models - wxTAB_TRAVERSAL - - - bSizer20 - wxVERTICAL - none - - 5 - wxALL - 0 + + + + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + 64,64,64 + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_scrolledWindow5 + 1 + + + protected + 1 + + Resizable + 5 + 5 + 1 + + ; ; forward_declare + 0 + + + + wxHSCROLL|wxVSCROLL - bSizer63 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Lora - - 0 - - - 0 - - 1 - m_checkbox_lora_filter - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCheckboxLoraFilter - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Checkpoints - - 0 - - - 0 - - 1 - m_checkbox_filter_checkpoints - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCheckboxCheckpointFilter - - + bSizer117 + wxVERTICAL + public 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - + wxEXPAND + 1 + 1 1 1 1 - + 0 - - + 0 + 0 + Load From Embedded File; images/sd.cpp.gui_blankimage.png 1 0 - 1 1 1 @@ -7024,7 +7088,7 @@ Dock 0 Left - 0 + 1 1 1 @@ -7032,15 +7096,14 @@ 0 0 wxID_ANY - Embeddings 0 - + 1024,1024 0 - + 384,384 1 - m_checkbox_filter_embeddings + m_imageinfo_preview 1 @@ -7050,170 +7113,552 @@ Resizable 1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCheckboxCheckpointFilter - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - 0 - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_modellist_filter - 1 - - - protected - 1 - - Resizable - 1 - 1 - 260,-1 - wxTE_PROCESS_ENTER ; ; forward_declare 0 - - wxFILTER_NONE - wxDefaultValidator - - - OnModellistFilterKeyUp + OnImageInfoDrop - - 5 - wxEXPAND - 1 - + + + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_scrolledWindow7 + 1 + + + protected + 1 + + Resizable + 5 + 5 + 1 + + ; ; forward_declare + 0 + + + + wxHSCROLL|wxVSCROLL + - bSizer102 + imageInfoSizer wxVERTICAL - none - + public + 5 wxEXPAND - 2 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 200 - - 0 + 1 + - 1 - m_splitter3 - 1 - - - protected - 1 - - Resizable - 1 - -300 - -1 - 1 - - wxSPLIT_VERTICAL - wxSP_3D - ; ; forward_declare - 0 - - - - - - + bSizer119 + wxVERTICAL + public + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_imageInfoPrompt + 1 + + + protected + 1 + + Resizable + 1 + -1,120 + wxTE_MULTILINE|wxTE_READONLY + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxEXPAND + 0 + + + bSizer108 + wxHORIZONTAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Copy to txt2img prompt + + 0 + + 0 + + + 0 + + 1 + m_imageInfoPromptTo2txt2img + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnImageInfoCopyPrompt + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Copy to img2img prompt + + 0 + + 0 + + + 0 + + 1 + m_imageInfoPromptTo2img2img + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnImageInfoCopyPrompt + + + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_imageInfoNegPrompt + 1 + + + protected + 1 + + Resizable + 1 + -1,120 + wxTE_MULTILINE|wxTE_READONLY + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxEXPAND + 0 + + + bSizer1081 + wxHORIZONTAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Copy to txt2img prompt + + 0 + + 0 + + + 0 + + 1 + m_imageInfoNegPromptTo2txt2img + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnImageInfoCopyPrompt + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Copy to img2img prompt + + 0 + + 0 + + + 0 + + 1 + m_imageInfoNegPromptTo2img2img + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnImageInfoCopyPrompt + + + + + + 5 + wxALL|wxEXPAND + 1 + 1 1 1 1 - + 0 - - + 0 + 0 @@ -7237,11 +7682,12 @@ 0 + 0 0 - 300,-1 + -1,120 1 - m_panel16 + m_imageInfoList 1 @@ -7251,373 +7697,5589 @@ Resizable 1 + wxTE_LEFT|wxTE_MULTILINE|wxTE_READONLY ; ; forward_declare 0 + + wxFILTER_NONE + wxDefaultValidator + + - wxTAB_TRAVERSAL - - - bSizer84 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - 300,-1 - m_data_model_list - protected - - - wxDV_HORIZ_RULES|wxDV_ROW_LINES|wxDV_SINGLE - ; ; forward_declare - - - - wxFULL_REPAINT_ON_RESIZE - OnDataModelActivated - onContextMenu - OnDataModelSelected - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Name - wxDATAVIEW_CELL_INERT - m_dataViewListColumn3 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Size - wxDATAVIEW_CELL_INERT - m_dataViewListColumn4 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Type - wxDATAVIEW_CELL_INERT - m_dataViewListColumn5 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Hash - wxDATAVIEW_CELL_INERT - m_dataViewListColumn6 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn8 - protected - Text - 100 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn7 - protected - Progress - -1 - - + + + + + 5 + wxEXPAND + 0 + + + bSizer112 + wxHORIZONTAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Find and select model + + 0 + + 0 + + + 0 + + 1 + m_ImageInfoTryFindModel + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Try to find and load the model by the image parameters + + wxFILTER_NONE + wxDefaultValidator + + + + + OnImageInfoTryFindModel - - - - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_panel17 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer1001 - wxVERTICAL - public - - 5 - wxEXPAND|wxALL - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_model_details - protected - - - wxDV_NO_HEADER|wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES - ; ; forward_declare - - - - wxBORDER_DEFAULT - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn11 - protected - Text - -1 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn21 - protected - Text - -1 - - + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 0 + + 1 + + + 0 + 0 + wxID_ANY + Load all to txt2img + + 0 + + 0 + + + 0 + + 1 + m_imageInfoLoadTotxt + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnImageInfoLoadTxt2img - - 5 - wxALL|wxEXPAND|wxRESERVE_SPACE_EVEN_IF_HIDDEN - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 1 - wxID_ANY - - 0 - - - 0 - - 1 - m_model_details_description - 1 - - - protected - 1 - - Resizable - 1 - -1,110 - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - wxBORDER_THEME - + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 0 + + 1 + + + 0 + 0 + wxID_ANY + Load all to img2img + + 0 + + 0 + + + 0 + + 1 + m_imageInfoLoadToimg2img + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnImageInfoLoadImg2img - - 5 - wxEXPAND - 1 - - - bSizer901 - wxVERTICAL - none - - 5 - wxEXPAND|wxALL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow4 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - -1,280 - ; ; forward_declare - 0 - - - - wxBORDER_DEFAULT|wxHSCROLL - - - bSizer891 - wxHORIZONTAL - public - - - - + + + + + + + 5 + wxEXPAND + 0 + + + bSizer116 + wxHORIZONTAL + none + + 5 + wxALL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + 400,-1 + Select a file + + 0 + 200,-1 + 1 + m_imageInfoOpen + 1 + + + protected + 1 + + Resizable + 1 + + wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG + + + + OnImageInfoOpen + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/trash.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Clear + + 0 + + 0 + + + 0 + + 1 + m_cleanImageInfo + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Clear + + wxFILTER_NONE + wxDefaultValidator + + + + + OnCleanImageInfo + + + + + + + + + Load From Embedded File; icons/16/cube.png + Models + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + 300,-1 + 1 + m_models_panel + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + models + wxTAB_TRAVERSAL + + + bSizer20 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + + bSizer102 + wxVERTICAL + none + + 5 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + -1,400 + 1 + m_modelTreeList + 1 + + + protected + 1 + + Resizable + 1 + + wxTL_MULTIPLE + ; ; forward_declare + 0 + + + + + OnDataModelTreeColSorted + OnDataModelTreeActivated + OnDataModelTreeContextMenu + OnDataModelTreeExpanded + OnDataModelTreeExpanding + OnDataModelTreeSelected + + wxALIGN_LEFT + wxCOL_RESIZABLE|wxCOL_SORTABLE + Name + wxCOL_WIDTH_AUTOSIZE + + + wxALIGN_LEFT + wxCOL_RESIZABLE|wxCOL_SORTABLE + Size + wxCOL_WIDTH_AUTOSIZE + + + wxALIGN_LEFT + wxCOL_RESIZABLE|wxCOL_SORTABLE + Type + wxCOL_WIDTH_AUTOSIZE + + + wxALIGN_LEFT + wxCOL_RESIZABLE + Hash + wxCOL_WIDTH_AUTOSIZE + + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + -1,-1 + 1 + m_modelDetailsImageList + 1 + + + protected + 1 + + Resizable + 5 + 5 + 1 + -1,280 + ; ; forward_declare + 0 + + + + wxBORDER_THEME|wxHSCROLL + + + bSizer891 + wxHORIZONTAL + public + + + + + + + 5 + wxEXPAND + 0 + + + bSizer1001 + wxVERTICAL + public + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Model details + 0 + + 0 + -1,-1 + + 0 + -1,-1 + 1 + m_staticText641 + 1 + + + protected + 1 + + Resizable + 1 + + wxALIGN_CENTER_HORIZONTAL + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxEXPAND + 0 + + + bSizer107 + wxHORIZONTAL + none + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 0 + 1 + + 0 + 0 + Dock + 0 + Left + 0 + 0 + + 1 + + 0 + 0 + wxID_ANY + [F]avorite + + 0 + + + 0 + + 1 + m_ModelFavorite + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnModelFavoriteChange + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 1 + + wxID_ANY + wxFB Website + + 0 + + + 0 + + 1 + m_model_info_link + + 1 + + + protected + 1 + + Resizable + 1 + + wxHL_DEFAULT_STYLE + ; ; forward_declare + 0 + + http://www.wxformbuilder.org + + + + + + 5 + wxALL|wxEXPAND + 1 + + + + 1 + 0 + 1 + + + 0 + wxID_ANY + + + m_model_details + protected + + 480,-1 + wxDV_NO_HEADER|wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES + ; ; forward_declare + + + + wxBORDER_DEFAULT + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + + wxDATAVIEW_CELL_INERT + m_dataViewListColumn11 + protected + Text + -1 + + + wxALIGN_LEFT + wxELLIPSIZE_NONE + wxDATAVIEW_COL_RESIZABLE + + wxDATAVIEW_CELL_INERT + m_dataViewListColumn21 + protected + Text + -1 + + + + + 5 + wxALL|wxEXPAND|wxRESERVE_SPACE_EVEN_IF_HIDDEN + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 1 + wxID_ANY + + 0 + -1,-1 + + 0 + -1,300 + 1 + m_model_details_description + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + wxHW_SCROLLBAR_AUTO + ; ; forward_declare + 0 + + + + wxBORDER_DEFAULT|wxFULL_REPAINT_ON_RESIZE|wxHSCROLL|wxVSCROLL + OnHtmlLinkClicked + + + + + + + + + + + 0 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_promptAndFluxPanel + 1 + + + protected + 1 + + Resizable + 5 + 5 + 1 + + ; ; forward_declare + 0 + + + + wxBORDER_THEME|wxHSCROLL|wxVSCROLL + + + bSizer103 + wxVERTICAL + none + + 5 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_promptPanel + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + + bSizer99 + wxVERTICAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Prompt: + 0 + + 0 + + + 0 + + 1 + m_staticText73 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 1 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 1 + + 1 + + 0 + + wxID_ANY + + 0 + + 0 + + 0 + -1,120 + 1 + m_prompt + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + onTxt2ImgFileDrop + OnPromptText + + + + 1 + wxEXPAND|wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + -1,120 + 1 + m_prompt2 + 1 + + + protected + 1 + + Resizable + 1 + + wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnPromptText + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Negative prompt: + 0 + + 0 + + + 0 + + 1 + m_staticText74 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 1 + wxEXPAND|wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + -1,120 + 1 + m_neg_prompt2 + 1 + + + protected + 1 + + Resizable + 1 + + wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnNegPromptText + + + + 1 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + 1 + + 1 + ,90,400,-1,70,0 + 0 + + wxID_ANY + + 0 + + 0 + + 0 + -1,120 + 1 + m_neg_prompt + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + onTxt2ImgFileDrop + OnNegPromptText + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Prompt presets: + 0 + + 0 + + + 0 + + 1 + m_staticText49 + 1 + + + protected + 1 + + Resizable + 1 + 120,-1 + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 0 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_promptPresets + 1 + + + protected + 1 + + Resizable + 0 + 1 + 160,-1 + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + 0 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_fluxPanel + 1 + + + public + 1 + + Resizable + 1 + -1,-1 + ; ; forward_declare + 0 + + + + wxBORDER_NONE|wxTAB_TRAVERSAL + + 2 + 0 + + gSizer4 + none + 0 + 0 + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/interrogation.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Help + + 0 + + 0 + + + 0 + + 1 + m_bpButton25 + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + What is this? + + wxFILTER_NONE + wxDefaultValidator + + + + + onWhatIsThis + + + + 0 + + 0 + + 1 + protected + 10 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + SLG scale: + 0 + + 0 + + + 0 + + 1 + m_staticText522 + 1 + + + protected + 1 + + Resizable + 1 + 120,-1 + + ; ; forward_declare + 0 + skip layer guidance (SLG) scale, only for DiT models: (default: 0.0) + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + 1 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + 0.5 + 7.000000 + 100 + + 0 + + 0 + + 0 + + 1 + slgScale + 1 + + + protected + 1 + + Resizable + 1 + + wxSP_ARROW_KEYS + ; ; forward_declare + 0 + skip layer guidance (SLG) scale, only for DiT models: (default: 0.0) + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Skip layers: + 0 + + 0 + + + 0 + + 1 + m_staticText5221 + 1 + + + protected + 1 + + Resizable + 1 + 120,-1 + + ; ; forward_declare + 0 + Layers to skip for SLG steps: (default: [7,8,9]) + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_skipLayers + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + Layers to skip for SLG steps: (default: [7,8,9]) + + + wxDefaultValidator + + 7,8,9 + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Skip Layer Start: + 0 + + 0 + + + 0 + + 1 + m_staticText52211 + 1 + + + protected + 1 + + Resizable + 1 + 120,-1 + + ; ; forward_declare + 0 + SLG enabling point: (default: 0.01) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + 2 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + 0.01 + 0.01 + 1 + + 0 + + 0.01 + + 0 + + 1 + skipLayerStart + 1 + + + protected + 1 + + Resizable + 1 + + wxSP_ARROW_KEYS + ; ; forward_declare + 0 + SLG enabling point: (default: 0.01) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Skip Layer End: + 0 + + 0 + + + 0 + + 1 + m_staticText522111 + 1 + + + protected + 1 + + Resizable + 1 + 120,-1 + + ; ; forward_declare + 0 + SLG disabling point: (default: 0.2) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + 2 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + 0.01 + 0.2 + 1 + + 0 + + 0.01 + + 0 + + 1 + skipLayerEnd + 1 + + + protected + 1 + + Resizable + 1 + + wxSP_ARROW_KEYS + ; ; forward_declare + 0 + SLG disabling point: (default: 0.2) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Diffusion Model: + 0 + + 0 + + + 0 + + 1 + m_staticText52111 + 1 + + + protected + 1 + + Resizable + 1 + 120,-1 + + ; ; forward_declare + 0 + Diffusion models, for example FLUX + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + Select a file + + 0 + + 1 + m_filePickerDiffusionModel + 1 + + + protected + 1 + + Resizable + 1 + + wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_SMALL|wxFLP_USE_TEXTCTRL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf + + + + onFilePickerDiffusionModel + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/trash.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Clean model + + 0 + + 0 + + + 0 + + 1 + m_cleanDiffusionModel + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Clean models + + wxFILTER_NONE + wxDefaultValidator + + + + + onCleanDiffusionModel + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Flash attention + + 0 + + + 0 + + 1 + diffusionFlashAttn + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + Use flash attention in the diffusion model. This will reduce significantly the memory uage (for low vram). Might lower quality, since it implies converting k and v to f16. This might crash if it is not supported by the backend. + + wxFILTER_NONE + wxDefaultValidator + + + + + onDiffusionFlashAttn + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + ClipL: + 0 + + 0 + + + 0 + + 1 + m_staticText52 + 1 + + + protected + 1 + + Resizable + 1 + 120,-1 + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + Select a file + + 0 + + 1 + m_filePickerClipL + 1 + + + protected + 1 + + Resizable + 1 + + wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_SMALL|wxFLP_USE_TEXTCTRL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf + + + + onFilePickerClipL + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + ClipG: + 0 + + 0 + + + 0 + + 1 + m_staticText521 + 1 + + + protected + 1 + + Resizable + 1 + 120,-1 + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + Select a file + + 0 + + 1 + m_filePickerClipG + 1 + + + protected + 1 + + Resizable + 1 + + wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_SMALL|wxFLP_USE_TEXTCTRL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf + + + + onFilePickerClipG + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + T5XXL: + 0 + + 0 + + + 0 + + 1 + m_staticText5211 + 1 + + + protected + 1 + + Resizable + 1 + 120,-1 + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + Select a file + + 0 + + 1 + m_filePickerT5XXL + 1 + + + protected + 1 + + Resizable + 1 + + wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_SMALL|wxFLP_USE_TEXTCTRL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf + + + + onFilePickerT5XXL + + + + + + + + + + 5 + wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_rightMainPanel + 1 + + + protected + 1 + + Resizable + 1 + 280,-1 + ; ; forward_declare + 0 + + + + wxBORDER_NONE|wxTAB_TRAVERSAL + + + bSizer1121 + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + -1,-1 + 1 + m_rightMainPanelScroll + 1 + + + protected + 1 + + Resizable + 5 + 5 + 1 + -1,-1 + ; ; forward_declare + 0 + + + + wxBORDER_THEME|wxVSCROLL + + 200,-1 + bSizer1041 + wxVERTICAL + none + + 0 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + ,90,700,-1,70,0 + 0 + + wxID_ANY + VAE + 0 + + 0 + + + 0 + -1,-1 + 1 + m_staticText161 + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + wxALIGN_CENTER_HORIZONTAL + ; ; forward_declare + 0 + + + + + 0 + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 0 + + 1 + + 0 + + wxID_ANY + + 0 + -1,-1 + + 0 + -1,-1 + 1 + m_vae + 1 + + + protected + 1 + + Resizable + 0 + 1 + 120,-1 + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + onVaeSelect + + + + 0 + wxEXPAND + 0 + + + bSizer131 + wxHORIZONTAL + none + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + CPU + + 0 + + + 0 + + 1 + vaeOnCpu + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + VAE on CPU + + wxFILTER_NONE + wxDefaultValidator + + + + + onVAEOnCpu + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Tiling + + 0 + + + 0 + + 1 + m_vae_tiling + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + Process vae in tiles to reduce memory usage + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 0 + + 1 + + 0 + 0 + wxID_ANY + Decode only + + 0 + + + 0 + -1,-1 + 1 + m_vae_decode_only + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticline7 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + ; ; forward_declare + 0 + + + + + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + ,90,700,-1,70,0 + 0 + + wxID_ANY + CLIP + 0 + + 0 + + + 0 + + 1 + m_staticText234 + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + wxALIGN_CENTER_HORIZONTAL + ; ; forward_declare + 0 + ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1) <= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x + + + + 0 + + + + 0 + wxEXPAND + 0 + + + bSizer129 + wxHORIZONTAL + none + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + CPU + + 0 + + + 0 + + 1 + clipOnCpu + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + CLIP on CPU + + wxFILTER_NONE + wxDefaultValidator + + + + + onClipOnCpu + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + -1 + 2 + + 0 + + -1 + + 0 + -1,-1 + 1 + m_clip_skip + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + wxALIGN_RIGHT + ; ; forward_declare + 0 + ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1) <= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x + 0 + + + wxBORDER_DEFAULT + + + + + + 5 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticline9 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + ; ; forward_declare + 0 + + + + + + + + 0 + wxEXPAND + 0 + + + bSizer1031 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + TAESD: + 0 + + 0 + -1,-1 + + 0 + + 1 + m_staticText20 + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + + ; ; forward_declare + 0 + Using Tiny AutoEncoder for fast decoding (low quality) + + + + -1 + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + "Not selected" + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 0 + + 1 + + 0 + 0 + wxID_ANY + + 0 + -1,-1 + + 0 + -1,-1 + 1 + m_taesd + 1 + + + protected + 1 + + Resizable + 0 + 1 + -1,-1 + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + 5 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticline8 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + ; ; forward_declare + 0 + + + + + + + + 0 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + ,90,700,-1,70,0 + 0 + + wxID_ANY + SEED + 0 + + 0 + + + 0 + + 1 + m_staticText233 + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + wxALIGN_CENTER_HORIZONTAL + ; ; forward_declare + 0 + + + + + 0 + + + + 0 + wxEXPAND + 0 + + + bSizer128 + wxHORIZONTAL + none + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + + wxID_ANY + -1 + 999999999 + + 0 + + -1 + + 0 + -1,-1 + 1 + m_seed + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + wxALIGN_RIGHT + ; ; forward_declare + 0 + + -1 + + + wxBORDER_DEFAULT + + + + 5 + wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/dice_four.png + + 1 + 0 + 1 + + 0 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + + + 0 + + 0 + + + 0 + + 1 + m_random_seed + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Generate a random seed + + wxFILTER_NONE + wxDefaultValidator + + + + + onRandomGenerateButton + + + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + ,90,700,-1,70,0 + 0 + 0 + wxID_ANY + RESOLUTIONS + 0 + + 0 + + + 0 + + 1 + m_staticText75 + 1 + + + protected + 1 + + Resizable + 1 + + wxALIGN_CENTER_HORIZONTAL + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxEXPAND|wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/replace.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Swap + + 0 + + 0 + + + 0 + + 1 + m_button7 + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Swap the resolution + + wxFILTER_NONE + wxDefaultValidator + + + + + onResolutionSwap + + + + 2 + wxEXPAND|wxALL + 0 + + + bSizer10011 + wxHORIZONTAL + none + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 6 + + 0 + + 1 + m_width + 1 + + + protected + 1 + + Resizable + 1 + + wxTE_CENTER|wxTE_NO_VSCROLL + ; ; forward_declare + 0 + + + wxFILTER_NUMERIC + wxDefaultValidator + + 512 + + + + OnWHChange + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 6 + + 0 + + 1 + m_height + 1 + + + protected + 1 + + Resizable + 1 + + wxTE_CENTER|wxTE_NO_VSCROLL + ; ; forward_declare + 0 + + + wxFILTER_NUMERIC + wxDefaultValidator + + 512 + + + + OnWHChange + + + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + "Small resolutions" "640x384" "512x512" "512x768" + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_sd15Res + 1 + + + protected + 1 + + Resizable + 0 + 1 + 160,-1 + + ; ; forward_declare + 0 + Lower resolutions for SD1.x + + wxFILTER_NONE + wxDefaultValidator + + + + + onSd15ResSelect + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + "Large resolutions" "1024x1024" "1152x896" "1216x832" "1344x768" "1536x640" + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_sdXlres + 1 + + + protected + 1 + + Resizable + 0 + 1 + 160,-1 + + ; ; forward_declare + 0 + Higher resolutions for FLUX/SDXL/SD3.5 + + wxFILTER_NONE + wxDefaultValidator + + + + + onSdXLResSelect + + + + 5 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticline31 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + ; ; forward_declare + 0 + + + + + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + "No presets" + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 0 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_preset_list + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + onSelectPreset + + + + 0 + wxEXPAND + 0 + + + bSizer126 + wxHORIZONTAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/file_import.png + + 1 + 0 + 1 + Load a selected preset. The preset settings will over write the current generation settings + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Load selected preset + + 0 + + 0 + + + 0 + + 1 + m_load_preset + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Load the selected preset + + wxFILTER_NONE + wxDefaultValidator + + + + + onLoadPreset + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/disk.png + + 1 + 0 + 1 + Save the current settings into a new preset, or overwrite an exists one + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Save preset + + 0 + + 0 + + + 0 + + 1 + m_save_preset + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Save the current settings into preset + + wxFILTER_NONE + wxDefaultValidator + + + + + onSavePreset + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/trash.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 0 + + 1 + + + 0 + 0 + wxID_ANY + Delete preset + + 0 + + 0 + + + 0 + + 1 + m_delete_preset + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + onDeletePreset + + + + + + 5 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticline3 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + ; ; forward_declare + 0 + + + + + + + + 0 + wxEXPAND + 0 + + + bSizer982 + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 0 + + + 1 + + 0 + + wxID_ANY + + 0 + -1,-1 + + 0 + -1,-1 + 1 + m_sampler + 1 + + + protected + 1 + + Resizable + 0 + 1 + -1,-1 + + ; ; forward_declare + 0 + sampling method (default: "euler_a") + + wxFILTER_NONE + wxDefaultValidator + + + + + onSamplerSelect + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + -1,-1 + + 0 + + 1 + m_scheduler + 1 + + + protected + 1 + + Resizable + 0 + 1 + -1,-1 + + ; ; forward_declare + 0 + Weight type. If not specified, the default is the type of the weight file. + + wxFILTER_NONE + wxDefaultValidator + + + + + onTypeSelect + + + + + + 0 + wxEXPAND + 0 + + + bSizer101 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Steps: + 0 + + 0 + + + 0 + + 1 + m_staticText14 + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + + ; ; forward_declare + 0 + number of sample steps (default: 20) + + + + -1 + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + 20 + 100 + + 0 + + 0 + + 0 + -1,-1 + 1 + m_steps + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + wxALIGN_RIGHT + ; ; forward_declare + 0 + number of sample steps (default: 20) + 20 + + + wxBORDER_DEFAULT + + + + + + 0 + wxEXPAND + 0 + + + bSizer990 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Batch: + 0 + + 0 + + + 0 + + 1 + m_staticText15 + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + + ; ; forward_declare + 0 + number of images to generate. + + + + -1 + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + 1 + 1000 + + 0 + -1,-1 + 1 + + 0 + + 1 + m_batch_count + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + wxALIGN_RIGHT + ; ; forward_declare + 0 + number of images to generate. + + + + wxBORDER_DEFAULT + + + + + + 0 + wxEXPAND + 0 + + + bSizer1021 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + + wxID_ANY + CFG: + 0 + + 0 + + + 0 + + 1 + m_staticText231 + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + + ; ; forward_declare + 0 + + + + + 0 + + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + 1 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + 0.1 + 0 + 30 + + 0 + -1,-1 + 0 + + 0 + -1,-1 + 1 + m_cfg + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + wxALIGN_RIGHT + ; ; forward_declare + 0 + + 7.0 + + + wxBORDER_DEFAULT + + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/play.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 0 + + 1 + + + 0 + 0 + wxID_ANY + Queue + + 0 + + 0 + + + 0 + + 1 + m_queue + 1 + + + protected + 1 + + + + Resizable + 1 + -1,42 + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + onGenerate + + @@ -7628,76 +13290,65 @@ 5 wxEXPAND 0 - - - bSizer105 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - - - 1 - - 0 - - wxID_ANY - - 0 - - 0 - - 0 - -1,-1 - 1 - logs - 1 - - - protected - 1 - - Resizable - 1 - -1,140 - wxTE_WORDWRAP|wxTE_READONLY|wxTE_MULTILINE|wxTE_AUTO_URL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - wxFULL_REPAINT_ON_RESIZE - - + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 0 + 0 + Dock + 0 + Left + 0 + + + 1 + ,90,400,-1,70,0 + 0 + + wxID_ANY + + 0 + -1,200 + 0 + + 0 + -1,-1 + 1 + logs + 1 + + + protected + 1 + + Resizable + 1 + -1,120 + wxTE_WORDWRAP|wxTE_READONLY|wxTE_MULTILINE|wxTE_AUTO_URL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + @@ -7706,11 +13357,11 @@ 1 0 - + 1 - 1 + 3 - + 0 wxID_ANY @@ -7718,7 +13369,7 @@ protected - wxSTB_DEFAULT_STYLE + wxSTB_SIZEGRIP ; ; forward_declare @@ -7760,19 +13411,19 @@ sizer2010 wxVERTICAL none - + 5 wxALL|wxEXPAND 1 - + 1 1 1 1 - + 0 - - + 0 + 0 @@ -7817,20 +13468,20 @@ - + wxBORDER_THEME Load From Embedded File; icons/16/disk.png Paths - 1 + 0 1 1 1 1 - + 0 - - + 0 + 0 @@ -7885,22 +13536,874 @@ 0 - bSizer16 + bSizer16 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + + wxID_ANY + Models path + 0 + + 0 + + + 0 + 150,-1 + 1 + m_staticText172410 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + + wxID_ANY + + 0 + + Select a folder + + 0 + 200,-1 + 1 + m_model_dir + 1 + + + protected + 1 + + Resizable + 1 + + wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/file_import.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + + + 0 + + 0 + + + 0 + + 1 + m_openModelsPath + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Open folder + + wxFILTER_NONE + wxDefaultValidator + + + + + OnOpenFolder + + + + + + 5 + wxALL + 0 + + + bSizer19 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + + wxID_ANY + Lora path + 0 + + 0 + + + 0 + 150,-1 + 1 + m_staticText18013172027 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + + wxID_ANY + + 0 + + Select a folder + + 0 + 200,-1 + 1 + m_lora_dir + 1 + + + protected + 1 + + Resizable + 1 + + wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/file_import.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + + + 0 + + 0 + + + 0 + + 1 + m_openLorasPath + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Open folder + + wxFILTER_NONE + wxDefaultValidator + + + + + OnOpenFolder + + + + + + 5 + wxALL + 0 + + + bSizer17 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + + wxID_ANY + Vae path + 0 + + 0 + + + 0 + 150,-1 + 1 + m_staticText18013 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + + wxID_ANY + + 0 + + Select a folder + + 0 + 200,-1 + 1 + m_vae_dir + 1 + + + protected + 1 + + Resizable + 1 + + wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/file_import.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + + + 0 + + 0 + + + 0 + + 1 + m_openVaesPath + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Open folder + + wxFILTER_NONE + wxDefaultValidator + + + + + OnOpenFolder + + + + + + 5 + wxALL + 0 + + + bSizer18 + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + + wxID_ANY + Embedding path + 0 + + 0 + + + 0 + 150,-1 + 1 + m_staticText1801317202731 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + + wxID_ANY + + 0 + + Select a folder + + 0 + 200,-1 + 1 + m_embedding_dir + 1 + + + protected + 1 + + Resizable + 1 + + wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/file_import.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + + + 0 + + 0 + + + 0 + + 1 + m_openEmbeddingsPath + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Open folder + + wxFILTER_NONE + wxDefaultValidator + + + + + OnOpenFolder + + + + + + 5 + wxALL + 0 + + + bSizer23 wxHORIZONTAL none 5 - wxALL + wxALL|wxALIGN_CENTER_VERTICAL 0 1 1 1 1 - + 0 - - + 0 + 0 @@ -7919,9 +14422,9 @@ 1 0 - + 0 wxID_ANY - Models path + TAESD path 0 0 @@ -7930,7 +14433,7 @@ 0 150,-1 1 - m_staticText172410 + m_staticText21 1 @@ -7947,7 +14450,7 @@ - 0 + -1 @@ -7959,10 +14462,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -7981,7 +14484,7 @@ 1 0 - + 0 wxID_ANY 0 @@ -7991,7 +14494,7 @@ 0 200,-1 1 - m_model_dir + m_taesd_dir 1 @@ -8015,6 +14518,156 @@ + + 5 + wxALIGN_CENTER_VERTICAL|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/file_import.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + + + 0 + + 0 + + + 0 + + 1 + m_openTaesdPath + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + Open folder + + wxFILTER_NONE + wxDefaultValidator + + + + + OnOpenFolder + + + + 5 + wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/interrogation.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + nolabel + + 0 + + 0 + + + 0 + + 1 + m_bpButton1 + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + TAESD models you can download from here: https://github.com/madebyollin/taesd/tree/main + + wxFILTER_NONE + wxDefaultValidator + + + + + OnTAESDHelpClick + + @@ -8023,7 +14676,7 @@ 0 - bSizer19 + bSizer35 wxHORIZONTAL none @@ -8035,10 +14688,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -8057,9 +14710,9 @@ 1 0 - + 0 wxID_ANY - Lora path + Controlnet path 0 0 @@ -8068,7 +14721,7 @@ 0 150,-1 1 - m_staticText18013172027 + m_staticText23 1 @@ -8085,7 +14738,7 @@ - 0 + -1 @@ -8097,10 +14750,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -8119,38 +14772,113 @@ 1 0 - + 0 + wxID_ANY + + 0 + + Select a folder + + 0 + 200,-1 + 1 + m_controlnet_dir + 1 + + + protected + 1 + + Resizable + 1 + + wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + Load From Embedded File; icons/16/file_import.png + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 wxID_ANY + + + 0 0 - Select a folder 0 - 200,-1 + 1 - m_lora_dir + m_openControlnetPath 1 protected 1 + + Resizable 1 - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL + ; ; forward_declare 0 - + Open folder wxFILTER_NONE wxDefaultValidator - + OnOpenFolder @@ -8161,7 +14889,7 @@ 0 - bSizer17 + bSizer81 wxHORIZONTAL none @@ -8173,10 +14901,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -8195,18 +14923,18 @@ 1 0 - + 0 wxID_ANY - Vae path + ESRGAN path 0 0 0 - 150,-1 + 1 - m_staticText18013 + m_staticText77 1 @@ -8215,7 +14943,7 @@ Resizable 1 - + 150,-1 ; ; forward_declare 0 @@ -8223,7 +14951,7 @@ - 0 + -1 @@ -8235,10 +14963,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -8257,7 +14985,7 @@ 1 0 - + 0 wxID_ANY 0 @@ -8267,7 +14995,7 @@ 0 200,-1 1 - m_vae_dir + m_esrgan_dir 1 @@ -8291,39 +15019,33 @@ - - - - 5 - wxALL - 0 - - - bSizer18 - wxHORIZONTAL - none 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL 0 - + 1 1 1 1 - + 0 - - + 0 + 0 + 0 + Load From Embedded File; icons/16/file_import.png 1 0 1 1 + + 0 0 + Dock 0 Left @@ -8331,113 +15053,115 @@ 1 1 + 0 - + 0 wxID_ANY - Embedding path + + 0 0 0 - 150,-1 + 1 - m_staticText1801317202731 + m_openEsrganPath 1 protected 1 + + Resizable 1 ; ; forward_declare 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_embedding_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - + Open folder wxFILTER_NONE wxDefaultValidator - + OnOpenFolder + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + + + 1 + + 0 + + wxID_ANY + + 0 + + + 0 + + 1 + m_staticLine223 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + ; ; forward_declare + 0 + + + + + + 5 wxALL 0 - bSizer23 + bSizer20 wxHORIZONTAL none @@ -8449,10 +15173,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -8473,7 +15197,7 @@ 0 0 wxID_ANY - TAESD path + Presets path 0 0 @@ -8482,7 +15206,7 @@ 0 150,-1 1 - m_staticText21 + m_staticText19 1 @@ -8511,10 +15235,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -8543,7 +15267,7 @@ 0 200,-1 1 - m_taesd_dir + m_presets_dir 1 @@ -8553,7 +15277,7 @@ Resizable 1 - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL + wxDIRP_DEFAULT_STYLE|wxDIRP_SMALL ; ; forward_declare 0 @@ -8576,14 +15300,14 @@ 1 1 1 - + 0 - - + 0 + 0 0 - Load From Embedded File; icons/16/interrogation.png + Load From Embedded File; icons/16/file_import.png 1 0 @@ -8606,7 +15330,7 @@ 0 0 wxID_ANY - nolabel + 0 @@ -8616,7 +15340,7 @@ 0 1 - m_bpButton1 + m_openPresetsPath 1 @@ -8631,7 +15355,7 @@ ; ; forward_declare 0 - TAESD models you can download from here: https://github.com/madebyollin/taesd/tree/main + Open folder wxFILTER_NONE wxDefaultValidator @@ -8639,6 +15363,7 @@ + OnOpenFolder @@ -8649,7 +15374,7 @@ 0 - bSizer35 + bSizer21 wxHORIZONTAL none @@ -8661,10 +15386,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -8683,18 +15408,79 @@ 1 0 - 0 + + wxID_ANY + Images output + 0 + + 0 + + + 0 + 150,-1 + 1 + m_staticText180131720 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + wxID_ANY - Controlnet path - 0 0 + Select a folder 0 - 150,-1 + 200,-1 1 - m_staticText23 + m_images_output 1 @@ -8704,38 +15490,47 @@ Resizable 1 - + wxDIRP_SMALL|wxDIRP_DEFAULT_STYLE ; ; forward_declare 0 + + wxFILTER_NONE + wxDefaultValidator + + - -1 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - + wxALIGN_CENTER_VERTICAL + 0 + 1 1 1 1 - + 0 - - + 0 + 0 + 0 + Load From Embedded File; icons/16/file_import.png 1 0 1 1 + + 0 0 + Dock 0 Left @@ -8743,71 +15538,144 @@ 1 1 + 0 0 wxID_ANY + + + 0 0 - Select a folder 0 - 200,-1 + 1 - m_controlnet_dir + m_openOutputPath 1 protected 1 + + Resizable 1 - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL + ; ; forward_declare 0 - + Open folder wxFILTER_NONE wxDefaultValidator - + OnOpenFolder + + + + + Load From Embedded File; icons/16/palette.png + Diffusion + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + + wxID_ANY + + 0 + + + 0 + + 1 + m_settings + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + + sizer2017 + wxVERTICAL + none 5 - wxALL + wxALL|wxEXPAND 0 - + + 2 + 0 - bSizer81 - wxHORIZONTAL + gSizer3 none + 0 + 0 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALL 0 - + 1 1 1 1 - + 0 - - + 0 + 0 1 0 + 1 1 1 @@ -8823,8 +15691,7 @@ 0 0 wxID_ANY - ESRGAN path - 0 + Generate missing base model hash before diffusion 0 @@ -8832,7 +15699,7 @@ 0 1 - m_staticText77 + m_autogen_hash 1 @@ -8841,59 +15708,77 @@ Resizable 1 - 150,-1 + ; ; forward_declare 0 + + wxFILTER_NONE + wxDefaultValidator + - -1 + + + + 5 + wxALL|wxEXPAND + 0 + + 2 + 0 + + sizer2018 + none + 0 + 0 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - + wxALIGN_LEFT|wxALL|wxALIGN_CENTER_VERTICAL + 0 + 1 1 1 1 - + 0 - - + 0 + 0 1 0 + 1 1 - + Keep the model in memory (vRAM or RAM, depends on diffusion type) when it is possible. Text to image and image to image can use the same model. If controlnet model is selected and used, the all new job need to reload the model before run. If type is changed (eg fp16 -> Q4_1), then the model need to be reloaded, but usable with mode diffusion without reload. If you disable this option, the model allways unloaded from memory after the job is finished. 1 0 Dock 0 Left 0 - 1 + 0 1 0 - 0 + wxID_ANY + Keep model in memory 0 - Select a folder 0 - 200,-1 + 230,-1 1 - m_esrgan_dir + m_keep_model_in_memory 1 @@ -8903,15 +15788,14 @@ Resizable 1 - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL + ; ; forward_declare 0 - + Keep model in (v)RAM after diffusions wxFILTER_NONE wxDefaultValidator - @@ -8921,70 +15805,90 @@ 5 - wxEXPAND | wxALL + wxALL|wxEXPAND 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 + + 2 + 0 - 1 - m_staticline7 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_VERTICAL - ; ; forward_declare - 0 - - - - + sizer2019 + none + 0 + 0 + + 5 + wxALIGN_LEFT|wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 0 + + 1 + + 0 + + wxID_ANY + Save all images (intermediate images) + + 0 + + + 0 + -1,-1 + 1 + m_save_all_image + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + 5 - wxALL + wxALL|wxEXPAND 0 - bSizer20 + bSizer10 wxHORIZONTAL none @@ -8996,10 +15900,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -9020,16 +15924,16 @@ 0 0 wxID_ANY - Presets path + Output images format 0 0 0 - 150,-1 + 200,-1 1 - m_staticText19 + m_staticText16 1 @@ -9052,21 +15956,22 @@ 5 wxALL|wxALIGN_CENTER_VERTICAL - 1 - + 0 + 1 1 1 1 - + 0 - - + 0 + 0 1 0 + "JPG" "PNG" 1 1 @@ -9085,12 +15990,11 @@ 0 - Select a folder 0 - 200,-1 + 1 - m_presets_dir + m_image_type 1 @@ -9098,9 +16002,10 @@ 1 Resizable + 0 1 - wxDIRP_DEFAULT_STYLE|wxDIRP_SMALL + ; ; forward_declare 0 @@ -9108,95 +16013,24 @@ wxFILTER_NONE wxDefaultValidator - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - - 1 - m_staticLine223 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_HORIZONTAL - ; ; forward_declare - 0 - - - - - - - - 5 - wxALL - 0 - - - bSizer21 - wxHORIZONTAL - none 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_HORIZONTAL|wxALL|wxALIGN_CENTER_VERTICAL 0 1 1 1 1 - + 0 - - + 0 + 0 @@ -9213,20 +16047,20 @@ 1 1 - + ,93,300,8,70,0 0 - + 0 wxID_ANY - Images output + PNG meta data not supported yet 0 0 0 - 150,-1 + 1 - m_staticText180131720 + m_staticText38 1 @@ -9236,29 +16070,40 @@ Resizable 1 - + wxALIGN_CENTER_HORIZONTAL ; ; forward_declare 0 - 0 + -1 + + + + 5 + wxALL|wxEXPAND + 0 + + + bSizer112 + wxHORIZONTAL + none 5 wxALL|wxALIGN_CENTER_VERTICAL - 1 - + 0 + 1 1 1 1 - + 0 - - + 0 + 0 @@ -9277,17 +16122,18 @@ 1 0 - + 0 wxID_ANY + JPEG quality + 0 0 - Select a folder 0 200,-1 1 - m_images_output + m_staticText61 1 @@ -9297,141 +16143,137 @@ Resizable 1 - wxDIRP_SMALL|wxDIRP_DEFAULT_STYLE + ; ; forward_declare 0 - - wxFILTER_NONE - wxDefaultValidator - - + -1 - - - - - - - Load From Embedded File; icons/16/palette.png - Diffusion - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - - 1 - m_settings - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - sizer2017 - wxVERTICAL - none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + 100 + + 0 + + 0 + + 0 + 250,-1 + 1 + m_image_quality + 1 + + + protected + 1 + + Resizable + 1 + + wxSL_HORIZONTAL|wxSL_LABELS + ; ; forward_declare + 0 + Image output quality, default: 90% + + wxFILTER_NONE + wxDefaultValidator + + 95 + + + + OnImgQualityScroll + + + + 5 - wxALL + wxEXPAND|wxALL 0 - - 2 - 0 + - sizer2018 + bSizer113 + wxHORIZONTAL none - 0 - 0 5 - wxALIGN_LEFT|wxALL|wxALIGN_CENTER_VERTICAL + wxALL|wxALIGN_CENTER_VERTICAL 0 - + 1 1 1 1 - + 0 - - + 0 + 0 1 0 - 1 1 - Keep the model in memory (vRAM or RAM, depends on diffusion type) when it is possible. Text to image and image to image can use the same model. If controlnet model is selected and used, the all new job need to reload the model before run. If type is changed (eg fp16 -> Q4_1), then the model need to be reloaded, but usable with mode diffusion without reload. If you disable this option, the model allways unloaded from memory after the job is finished. + 1 0 Dock 0 Left 0 - 0 + 1 1 0 - + 0 wxID_ANY - Keep model in memory + PNG compression level + 0 0 0 - 230,-1 + 200,-1 1 - m_keep_model_in_memory + m_staticText62 1 @@ -9441,52 +16283,34 @@ Resizable 1 - wxALIGN_RIGHT + ; ; forward_declare 0 - Keep model in (v)RAM after diffusions - - wxFILTER_NONE - wxDefaultValidator - + + -1 - - - - 5 - wxALL - 0 - - 2 - 0 - - sizer2019 - none - 0 - 0 5 - wxALIGN_LEFT|wxALL|wxALIGN_CENTER_VERTICAL + wxALL 0 - + 1 1 1 1 - + 0 - - + 0 + 0 1 0 - 1 1 1 @@ -9495,22 +16319,23 @@ 0 Left 0 - 0 + 1 1 0 - + 0 wxID_ANY - Save all images (intermediate images) + 9 0 + 0 0 - 230,-1 + 250,-1 1 - m_save_all_image + m_png_compression 1 @@ -9520,28 +16345,41 @@ Resizable 1 - wxALIGN_RIGHT + wxSL_HORIZONTAL|wxSL_LABELS ; ; forward_declare 0 - + Image output quality, default: 90% wxFILTER_NONE wxDefaultValidator + 0 + OnPngCompressionScroll 5 - wxALL + wxEXPAND 0 - bSizer10 + bSizer72 + wxVERTICAL + none + + + + 5 + wxALL|wxEXPAND + 0 + + + bSizer22 wxHORIZONTAL none @@ -9553,10 +16391,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -9577,16 +16415,16 @@ 0 0 wxID_ANY - Output images format + Number of CPU cores 0 0 0 - 230,-1 + 200,-1 1 - m_staticText16 + m_staticText191 1 @@ -9610,21 +16448,20 @@ 5 wxALL|wxALIGN_CENTER_VERTICAL 0 - + 1 1 1 1 - + 0 - - + 0 + 0 1 0 - "JPG" "PNG" 1 1 @@ -9640,14 +16477,17 @@ 0 0 wxID_ANY + 2 + 100 0 + -1 0 1 - m_image_type + m_threads 1 @@ -9655,17 +16495,13 @@ 1 Resizable - 0 1 - + wxSP_ARROW_KEYS ; ; forward_declare 0 - - wxFILTER_NONE - wxDefaultValidator - + @@ -9673,17 +16509,17 @@ 5 - wxALL - 0 - + wxALL|wxALIGN_CENTER_VERTICAL + 1 + 1 1 1 1 - + 0 - - + 0 + 0 @@ -9704,53 +16540,59 @@ 0 0 wxID_ANY - 100 + + 0 0 - 0 0 1 - m_image_quality + m_staticNumberOfCores 1 - protected + public 1 Resizable 1 - wxSL_HORIZONTAL + ; ; forward_declare 0 - Image output quality, default: 90% - - wxFILTER_NONE - wxDefaultValidator - - 95 + - OnImgQualityScroll + -1 + + + + 5 + wxEXPAND|wxALL + 0 + + + bSizer114 + wxHORIZONTAL + none 5 wxALL|wxALIGN_CENTER_VERTICAL 0 - + 1 1 1 1 - + 0 - - + 0 + 0 @@ -9771,17 +16613,16 @@ 0 0 wxID_ANY - 95 - 100 + Image name format + 0 0 - - 0 + -1,-1 0 - + 140,-1 1 - m_image_quality_spin + m_staticText621 1 @@ -9791,50 +16632,43 @@ Resizable 1 - wxSP_ARROW_KEYS + wxST_NO_AUTORESIZE ; ; forward_declare 0 - - OnImgQualitySpin + 140 - - - - 5 - wxEXPAND - 0 - - - bSizer72 - wxVERTICAL - none 5 - wxALL|wxEXPAND + wxALIGN_CENTER_VERTICAL 0 - + 1 1 1 1 - + 0 - - + 0 + 0 + 0 + Load From Embedded File; icons/16/interrogation.png 1 0 1 1 + + 0 0 + Dock 0 Left @@ -9842,11 +16676,13 @@ 1 1 - ,93,300,8,70,0 + + 0 0 wxID_ANY - PNG meta data not supported yet + Help + 0 0 @@ -9855,446 +16691,590 @@ 0 1 - m_staticText38 + m_bpButton27 1 protected 1 + + Resizable 1 - wxALIGN_CENTER_HORIZONTAL + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnOutputFileNameFormatHelpClick + + + + 5 + wxALL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_output_filename_format + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare 0 + + wxFILTER_NONE + wxDefaultValidator + + [mode]_[jobid]_[seed]_[width]x[height]_[batch] - -1 + OnOutputFilenameText + + + + + + GUI + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_settings_ui + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + 2 + wxBOTH + 0,1 + + 0 + + fgSizer3 + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 0 + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Show notifications + + 0 + + + 0 + + 1 + m_show_notifications + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + onShowNotificationCheck + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Notification timeout: + 0 + + 0 + + + 0 + + 1 + m_staticText60 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + 60 + 120 + + 0 + + 30 + + 0 + + 1 + m_notification_timeout + 1 + + + protected + 1 + + Resizable + 1 + + wxSP_ARROW_KEYS + ; ; forward_declare + 0 + The timeout is depends on the OS and notification type + + + + + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Language: + 0 + + 0 + + + 0 + 160,-1 + 1 + m_staticText50 + 1 + + + protected + 1 + + Resizable + 1 + + wxALIGN_LEFT + ; ; forward_declare + 0 + + + + + -1 + + 5 wxALL 0 - + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + 160,-1 + 1 + m_language + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Only show favorite models + + 0 + + + 0 - bSizer22 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Number of CPU cores - 0 - - 0 - - - 0 - 230,-1 - 1 - m_staticText191 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 2 - 100 - - 0 - - -1 - - 0 - - 1 - m_threads - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - - - - - - + 1 + m_favorite_models_only + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + Only display the models marked as favorites in the model selector of the main GUI + + wxFILTER_NONE + wxDefaultValidator + + + + - - - - - - GUI - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_settings_ui - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer30 - wxHORIZONTAL - none - + 5 - wxALL + wxEXPAND 1 - - - bSizer31 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Show notifications - - 0 - - - 0 - - 1 - m_show_notifications - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_RIGHT - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onShowNotificationCheck - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Notification timeout: - 0 - - 0 - - - 0 - - 1 - m_staticText60 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 60 - 120 - - 0 - - 30 - - 0 - - 1 - m_notification_timeout - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - The timeout is depends on the OS and notification type - - - - - - + + 0 + protected + 0 - + CivitAi 0 - + 1 1 1 1 - + 0 - - + 0 + 0 @@ -10338,33 +17318,33 @@ wxTAB_TRAVERSAL - + bSizer89 wxVERTICAL none - + 5 - wxEXPAND + wxEXPAND|wxALL 0 - + bSizer90 wxVERTICAL none - + 5 wxALL|wxEXPAND 0 - + 1 1 1 1 - + 0 - - + 0 + 0 @@ -10379,7 +17359,7 @@ 0 Left 0 - 0 + 1 1 @@ -10394,7 +17374,7 @@ 0 1 - m_checkBox11 + m_enableCivitai 1 @@ -10407,7 +17387,7 @@ ; ; forward_declare 0 - + Enable or disable all CivitAi features wxFILTER_NONE wxDefaultValidator @@ -10419,28 +17399,28 @@ - + 5 - wxEXPAND + wxEXPAND|wxALL 0 - + bSizer91 wxHORIZONTAL none - + 5 wxALL|wxALIGN_CENTER_VERTICAL 0 - + 1 1 1 1 - + 0 - - + 0 + 0 @@ -10490,19 +17470,19 @@ -1 - + 5 wxALL|wxALIGN_CENTER_VERTICAL 1 - + 1 1 1 1 - + 0 - - + 0 + 0 @@ -10526,7 +17506,7 @@ 0 - + 0 0 @@ -10555,19 +17535,19 @@ - + 5 wxALL|wxALIGN_CENTER_VERTICAL 0 - + 1 1 1 1 - + 0 - - + 0 + 0 0 @@ -10646,10 +17626,10 @@ 1 1 1 - + 0 - - + 0 + 0 0 @@ -10756,10 +17736,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -10850,10 +17830,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -10903,7 +17883,7 @@ - + 0 wxAUI_MGR_DEFAULT @@ -10932,24 +17912,24 @@ wxTAB_TRAVERSAL 1 - + bSizer82 wxVERTICAL none - + 5 wxEXPAND 1 - + 1 1 1 1 - + 0 - - + 0 + 0 @@ -10993,113 +17973,92 @@ wxTAB_TRAVERSAL - + - bSizer81 - wxVERTICAL + bSizer87 + wxHORIZONTAL none 5 wxEXPAND - 0 - + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 400 + + 0 - bSizer86 - wxHORIZONTAL - none - - 5 - wxALIGN_CENTER_VERTICAL|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - - 0 - - 1 - m_civitai_search - 1 - - - protected - 1 - - Resizable - 1 - 210,-1 - wxTE_PROCESS_ENTER - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - m_civitai_searchOnTextEnter - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - + 1 + m_splitter3 + 1 + + + protected + 1 + + Resizable + 0.0 + 0 + -1 + 1 + + wxSPLIT_VERTICAL + wxSP_3DBORDER + ; ; forward_declare + 0 + + + + + + 1 1 1 1 - + 0 - - - 0 + 0 + 0 - 1 0 1 1 - - 0 0 - Dock 0 Left @@ -11107,14 +18066,10 @@ 1 1 - 0 0 wxID_ANY - Search - - 0 0 @@ -11122,345 +18077,571 @@ 0 1 - m_search + m_panel25 1 protected 1 - - Resizable 1 - ; ; forward_declare 0 - - wxFILTER_NONE - wxDefaultValidator - - - - - m_searchOnButtonClick - - - - 0 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - "Checkpoints" "LORA" "Embeddings" - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 3 - - 0 - - - 0 - - 1 - m_model_type - 1 - - - protected - 1 - - Resizable - 0 - 1 - - wxRA_SPECIFY_COLS - ; ; forward_declare - 0 - Select the model type to filter - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer87 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - - bSizer92 - wxVERTICAL - none - - 5 - wxEXPAND|wxALL - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_dataViewListCtrl5 - protected - - - - ; ; forward_declare - - - - - m_dataViewListCtrl5OnDataViewListCtrlSelectionChanged - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Name - wxDATAVIEW_CELL_INERT - m_dataViewListColumn12 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn13 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Type - wxDATAVIEW_CELL_INERT - m_dataViewListColumn30 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Downloads - wxDATAVIEW_CELL_INERT - m_dataViewListColumn32 + wxTAB_TRAVERSAL + + + bSizer88 + wxVERTICAL + none + + 5 + wxEXPAND|wxALL + 2 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_model_description + 1 + + protected - Text - -1 + 1 + + Resizable + 1 + + wxHW_SCROLLBAR_AUTO + ; ; forward_declare + 0 + + + + wxBORDER_THEME + OnHtmlLinkClicked - - - 5 - wxALL|wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_downloads - protected - - - - ; ; forward_declare - - - - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - File - wxDATAVIEW_CELL_INERT - m_dataViewListColumn26 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Size - wxDATAVIEW_CELL_INERT - m_dataViewListColumn31 + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + ,90,700,-1,70,0 + 0 + 0 + wxID_ANY + Versions + 0 + + 0 + + + 0 + + 1 + m_staticText41 + 1 + + protected - Text - -1 + 1 + + Resizable + 1 + + wxALIGN_CENTER_HORIZONTAL + ; ; forward_declare + 0 + + + + + -1 - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn301 + + + 5 + wxALL|wxEXPAND + 1 + + + + 1 + 0 + 1 + + + 0 + wxID_ANY + + + m_model_details protected - Text - -1 + + + wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES + ; ; forward_declare + + + + wxBORDER_DEFAULT + m_model_detailsOnDataViewListCtrlSelectionChanged + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE + Name + wxDATAVIEW_CELL_INERT + m_dataViewListColumn111 + protected + Text + 200 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + baseModel + wxDATAVIEW_CELL_INERT + m_dataViewListColumn22 + protected + Text + -1 + + + wxALIGN_LEFT + wxELLIPSIZE_NONE + wxDATAVIEW_COL_RESIZABLE + baseModelType + wxDATAVIEW_CELL_INERT + m_dataViewListColumn21 + protected + Text + -1 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE + Published + wxDATAVIEW_CELL_INERT + m_dataViewListColumn33 + protected + Text + -1 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE + Downloads + wxDATAVIEW_CELL_INERT + m_dataViewListColumn34 + protected + Text + -1 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + Status + wxDATAVIEW_CELL_INERT + m_dataViewListColumn221 + protected + Text + -1 + - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn28 + + + 5 + wxALL|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_model_version_description + 1 + + protected - Progress - -1 + 1 + + Resizable + 1 + + wxHW_SCROLLBAR_AUTO + ; ; forward_declare + 0 + + + + wxBORDER_THEME + OnHtmlLinkClicked - - - 5 - wxEXPAND | wxALL - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow4 - 1 - - - public - 1 - - Resizable - 5 - 5 - 1 - - ; ; forward_declare - 0 - - - - wxHSCROLL|wxVSCROLL + + 5 + wxEXPAND + 0 - image_container + bSizer93 wxHORIZONTAL - public + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + ,90,700,-1,70,0 + 0 + 0 + wxID_ANY + Files + 0 + + 0 + + + 0 + + 1 + m_staticText40 + 1 + + + protected + 1 + + Resizable + 1 + + wxALIGN_CENTER_HORIZONTAL + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 0 + + 1 + + + 0 + 0 + wxID_ANY + Download + + 0 + + 0 + + + 0 + + 1 + m_model_download + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + m_model_downloadOnButtonClick + + + + + + 5 + wxALL|wxEXPAND + 1 + + + + 1 + 0 + 1 + + + 0 + wxID_ANY + + + m_model_filelist + protected + + + wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES + ; ; forward_declare + + + + wxBORDER_DEFAULT + m_model_filelistOnDataViewListCtrlSelectionChanged + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE + Name + wxDATAVIEW_CELL_INERT + m_dataViewListColumn1111 + protected + Text + 200 + + + wxALIGN_LEFT + wxELLIPSIZE_NONE + wxDATAVIEW_COL_RESIZABLE + Type + wxDATAVIEW_CELL_INERT + m_dataViewListColumn211 + protected + Text + -1 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + Format + wxDATAVIEW_CELL_INERT + m_dataViewListColumn23 + protected + Text + -1 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE + Size + wxDATAVIEW_CELL_INERT + m_dataViewListColumn24 + protected + Text + -1 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + Fp + wxDATAVIEW_CELL_INERT + m_dataViewListColumn25 + protected + Text + -1 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE + Status + wxDATAVIEW_CELL_INERT + m_dataViewListColumn231 + protected + Text + -1 + + + wxALIGN_LEFT + + wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE + Size + wxDATAVIEW_CELL_INERT + m_dataViewListColumn29 + protected + Text + -1 + - - 5 - wxEXPAND | wxALL - 1 - + + 1 1 1 1 - + 0 - - + 0 + 0 @@ -11488,7 +18669,7 @@ 0 1 - m_panel17 + m_panel24 1 @@ -11504,69 +18685,228 @@ wxTAB_TRAVERSAL - + - bSizer88 + bSizer92 wxVERTICAL none 5 - wxEXPAND|wxALL - 2 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 + wxEXPAND + 0 + - 1 - m_model_description - 1 - - - protected - 1 - - Resizable - 1 - - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - wxBORDER_THEME - OnHtmlLinkClicked + bSizer86 + wxHORIZONTAL + none + + 0 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + "Checkpoints" "LORA" "Embeddings" + 1 + + 0 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 3 + + 0 + + + 0 + + 1 + m_model_type + 1 + + + protected + 1 + + Resizable + 0 + 1 + + wxRA_SPECIFY_ROWS + ; ; forward_declare + 0 + Select the model type to filter + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxLEFT + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_civitai_search + 1 + + + protected + 1 + + Resizable + 1 + 210,-1 + wxTE_PROCESS_ENTER + ; ; forward_declare + 0 + Search for model names + + wxFILTER_NONE + wxDefaultValidator + + + + + + m_civitai_searchOnTextEnter + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + 0 + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 0 + 1 + + 1 + + + 0 + 0 + wxID_ANY + Search + + 0 + + 0 + + + 0 + + 1 + m_search + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + m_searchOnButtonClick + + @@ -11578,10 +18918,10 @@ 1 1 1 - + 0 - - + 0 + 0 @@ -11602,7 +18942,7 @@ 0 0 wxID_ANY - Versions + Models 0 0 @@ -11611,7 +18951,7 @@ 0 1 - m_staticText41 + m_staticText43 1 @@ -11621,7 +18961,7 @@ Resizable 1 - + wxALIGN_CENTER_HORIZONTAL ; ; forward_declare 0 @@ -11631,11 +18971,11 @@ -1 - + 5 - wxALL|wxEXPAND + wxEXPAND|wxALL 1 - + 1 @@ -11647,24 +18987,24 @@ wxID_ANY - m_model_details + m_dataViewListCtrl5 protected - wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES + wxDV_HORIZ_RULES ; ; forward_declare - wxBORDER_DEFAULT - m_model_detailsOnDataViewListCtrlSelectionChanged + + m_dataViewListCtrl5OnDataViewListCtrlSelectionChanged wxALIGN_LEFT wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE Name wxDATAVIEW_CELL_INERT - m_dataViewListColumn111 + m_dataViewListColumn12 protected Text 200 @@ -11673,42 +19013,20 @@ wxALIGN_LEFT wxDATAVIEW_COL_RESIZABLE - baseModel + Status wxDATAVIEW_CELL_INERT - m_dataViewListColumn22 + m_dataViewListColumn13 protected Text -1 - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - baseModelType - wxDATAVIEW_CELL_INERT - m_dataViewListColumn21 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Published - wxDATAVIEW_CELL_INERT - m_dataViewListColumn33 - protected - Text - -1 - - wxALIGN_LEFT - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Downloads + wxDATAVIEW_COL_RESIZABLE + Type wxDATAVIEW_CELL_INERT - m_dataViewListColumn34 + m_dataViewListColumn30 protected Text -1 @@ -11717,9 +19035,9 @@ wxALIGN_LEFT wxDATAVIEW_COL_RESIZABLE - Status + Downloads wxDATAVIEW_CELL_INERT - m_dataViewListColumn221 + m_dataViewListColumn32 protected Text -1 @@ -11729,16 +19047,16 @@ 5 wxALL|wxEXPAND - 1 - + 0 + 1 1 1 1 - + 0 - - + 0 + 0 @@ -11755,186 +19073,40 @@ 1 1 - + ,90,700,-1,70,0 0 0 wxID_ANY + Downloads + 0 0 - - 0 - - 1 - m_model_version_description - 1 - - - protected - 1 - - Resizable - 1 - - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - wxBORDER_THEME - OnHtmlLinkClicked - - - - 5 - wxEXPAND - 0 - - - bSizer93 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,700,-1,70,0 - 0 - 0 - wxID_ANY - Files - 0 - - 0 - - - 0 - - 1 - m_staticText40 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Download - - 0 - - 0 - - - 0 - - 1 - m_model_download - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - m_model_downloadOnButtonClick - - + + 0 + + 1 + m_staticText431 + 1 + + + protected + 1 + + Resizable + 1 + + wxALIGN_CENTER_HORIZONTAL + ; ; forward_declare + 0 + + + + + -1 - + 5 wxALL|wxEXPAND 1 @@ -11950,93 +19122,125 @@ wxID_ANY - m_model_filelist + m_downloads protected - wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES + wxDV_HORIZ_RULES ; ; forward_declare - wxBORDER_DEFAULT - m_model_filelistOnDataViewListCtrlSelectionChanged + wxALIGN_LEFT - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Name - wxDATAVIEW_CELL_INERT - m_dataViewListColumn1111 - protected - Text - 200 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE wxDATAVIEW_COL_RESIZABLE - Type + File wxDATAVIEW_CELL_INERT - m_dataViewListColumn211 + m_dataViewListColumn26 protected Text - -1 + 200 wxALIGN_LEFT wxDATAVIEW_COL_RESIZABLE - Format - wxDATAVIEW_CELL_INERT - m_dataViewListColumn23 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE Size wxDATAVIEW_CELL_INERT - m_dataViewListColumn24 + m_dataViewListColumn31 protected Text - -1 + 200 wxALIGN_LEFT wxDATAVIEW_COL_RESIZABLE - Fp + Status wxDATAVIEW_CELL_INERT - m_dataViewListColumn25 + m_dataViewListColumn301 protected Text - -1 + 120 wxALIGN_LEFT wxDATAVIEW_COL_RESIZABLE - Status + wxDATAVIEW_CELL_INERT - m_dataViewListColumn231 + m_dataViewListColumn28 protected - Text - -1 + Progress + 200 - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Size - wxDATAVIEW_CELL_INERT - m_dataViewListColumn29 - protected - Text - -1 + + + + 5 + wxEXPAND | wxALL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_scrolledWindow4 + 1 + + + public + 1 + + Resizable + 5 + 5 + 1 + + ; ; forward_declare + 0 + + + + wxHSCROLL|wxVSCROLL + + + image_container + wxHORIZONTAL + public @@ -12074,5 +19278,188 @@ + + 0 + wxAUI_MGR_DEFAULT + 77,77,77 + wxBOTH + + 0 + 0 + 1 + impl_virtual + + 255,255,255 + + 0 + wxID_ANY + 400,68 + + DesktopWidget + + 400,68 + wxFRAME_NO_TASKBAR|wxFRAME_SHAPED|wxSTAY_ON_TOP + ; ; forward_declare + + + 0 + wxWS_EX_TRANSIENT + DesktopWidget + wxBORDER_NONE|wxTRANSPARENT_WINDOW + 1 + OnClose + OnMouseEnter + OnIconize + OnMouseLeave + OnLeftMouseDClick + OnMouseLeftDown + OnMouseLeftUp + OnMouseMotion + OnWidgetPaint + + + bSizer122 + wxHORIZONTAL + none + + 10 + wxALL|wxEXPAND + 1 + + + bSizer128 + wxVERTICAL + none + + 0 + wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 0 + 0 + Dock + 0 + Left + 0 + 1 + 255,255,255 + 1 + + 0 + 0 + wxID_ANY + Current job: none + 0 + + 0 + + + 0 + + 1 + m_currentStatus + 1 + + + protected + 1 + + Resizable + 1 + -1,-1 + + ; ; forward_declare + 0 + + wxWS_EX_BLOCK_EVENTS + + + -1 + + + + 0 + wxEXPAND + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + -1,16 + 1 + m_currentProgress + 1 + + + protected + 1 + + 100 + Resizable + 1 + 320,-1 + wxGA_HORIZONTAL + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + 0 + wxWS_EX_BLOCK_EVENTS + + + + + + + + diff --git a/graphics/window_3.2.fbp b/graphics/window_3.2.fbp deleted file mode 100644 index 61c64e2..0000000 --- a/graphics/window_3.2.fbp +++ /dev/null @@ -1,18366 +0,0 @@ - - - - - C++ - ; - 1 - connect - wxSimpleHelpProvider - - - 0 - 0 - ../src/ui/embedded_files - UTF-8 - MainWindow - 1000 - 1 - 1 - UI - MainWindow - ../src/ui - 0 - source_name - 1 - 0 - source_name - - - 1 - 1 - 0 - 0 - - - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - - wxID_ANY - - -1,-1 - mainUI - - 1024,768 - wxDEFAULT_FRAME_STYLE - ; ; forward_declare - sd.cpp.gui - - 0 - - sd.cpp.gui - wxBORDER_DEFAULT - 1 - - -1,-1 - sizer0001 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel10 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - sizer0021 - wxHORIZONTAL - none - - 5 - - 0 - - - bSizer97 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/settings.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Settings - - 0 - - 0 - - - 0 - - 1 - m_settings - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onSettings - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/refresh.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Refresh models - - 0 - - 0 - - - 0 - - 1 - m_refrersh - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onModelsRefresh - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/cube.png - - 1 - 0 - 1 - About the program - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - About - - 0 - - 0 - - - 0 - - 1 - m_about - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - About the sd.cpp.gui.wx - - wxFILTER_NONE - wxDefaultValidator - - - - - OnAboutButton - - - - 5 - wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/civitai.png - - 1 - 0 - 1 - With CivitAi.com model browser, you can search for models or download models - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - About - - 0 - - 0 - - - 0 - - 1 - m_civitai - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open CivitAi.com model browser - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCivitAitButton - - - - 5 - wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/cross_circle.png - - 1 - 0 - 1 - This will send a terminate to the background diffuser process. This will clear up all used memory (eg. freeing up all the loaded models) - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 1 - wxID_ANY - Restart background process - - 0 - - 0 - - - 0 - - 1 - m_stop_background_process - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Stop and restart the background process - - wxFILTER_NONE - wxDefaultValidator - - - - - OnStopBackgroundProcess - - - - 5 - wxEXPAND | wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_staticline5 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_VERTICAL - ; ; forward_declare - 0 - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer98 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Model: - 0 - - 0 - - - 0 - -1,-1 - 1 - m_staticText160 - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - -1,-1 - 1 - m_model - 1 - - - protected - 1 - - Resizable - 0 - 1 - 200,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onModelSelect - - - - - - 5 - wxEXPAND - 0 - - - bSizer100 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Type: - 0 - - 0 - - - 0 - - 1 - m_staticText72 - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_type - 1 - - - protected - 1 - - Resizable - 0 - 1 - 200,-1 - - ; ; forward_declare - 0 - Weight type. If not specified, the default is the type of the weight file. - - wxFILTER_NONE - wxDefaultValidator - - - - - onTypeSelect - - - - - - 5 - wxEXPAND - 1 - - - bSizer119 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Current job: none - 0 - - 0 - - - 0 - 120,-1 - 1 - m_currentJobType - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - -1,-1 - 1 - m_currentProgress - 1 - - - protected - 1 - - 100 - Resizable - 1 - - wxGA_HORIZONTAL|wxGA_SMOOTH - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - 0 - - - - - - - - - - - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel12 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer781 - wxHORIZONTAL - none - - 5 - wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - -1,-1 - - 0 - 300,-1 - 1 - m_scrolledWindow1 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - 300,-1 - ; ; forward_declare - 0 - - - - wxHSCROLL|wxVSCROLL - - 300,-1 - bSizer83 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer76 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer99 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Vae: - 0 - - 0 - - - 0 - -1,-1 - 1 - m_staticText161 - 1 - - - protected - 1 - - Resizable - 1 - 60,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - -1,-1 - 1 - m_vae - 1 - - - protected - 1 - - Resizable - 0 - 1 - 121,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onVaeSelect - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - CPU - - 0 - - - 0 - - 1 - vaeOnCpu - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - VAE on CPU - - wxFILTER_NONE - wxDefaultValidator - - - - - onVAEOnCpu - - - - - - 5 - wxALIGN_CENTER_HORIZONTAL - 0 - - - bSizer87 - wxHORIZONTAL - none - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - VAE tiling - - 0 - - - 0 - - 1 - m_vae_tiling - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Process vae in tiles to reduce memory usage - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - VAE decode only - - 0 - - - 0 - - 1 - m_vae_decode_only - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer22 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - bSizer85 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - CFG: - 0 - - 0 - - - 0 - - 1 - m_staticText231 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 1 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.1 - 0 - 15 - - 0 - - 0 - - 0 - -1,-1 - 1 - m_cfg - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - 7.0 - - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer86 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Clip skip: - 0 - - 0 - - - 0 - - 1 - m_staticText234 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1) <= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x - - - - 0 - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - -1 - 2 - - 0 - - -1 - - 0 - -1,-1 - 1 - m_clip_skip - 1 - - - protected - 1 - - Resizable - 1 - 121,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1) <= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x - 0 - - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - CPU - - 0 - - - 0 - - 1 - clipOnCpu - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - CLIP on CPU - - wxFILTER_NONE - wxDefaultValidator - - - - - onClipOnCpu - - - - - - 5 - wxEXPAND - 1 - - - bSizer88 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - TAESD: - 0 - - 0 - - - 0 - - 1 - m_staticText20 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - Using Tiny AutoEncoder for fast decoding (low quality) - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_taesd - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer9 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer89 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Batch: - 0 - - 0 - - - 0 - - 1 - m_staticText15 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - number of images to generate. - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 1 - 1000 - - 0 - - 1 - - 0 - - 1 - m_batch_count - 1 - - - protected - 1 - - Resizable - 1 - 200,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - number of images to generate. - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer90 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Sampler: - 0 - - 0 - - - 0 - - 1 - m_staticText163 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - sampling method (default: "euler_a") - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - -1,-1 - 1 - m_sampler - 1 - - - protected - 1 - - Resizable - 0 - 1 - 200,-1 - - ; ; forward_declare - 0 - sampling method (default: "euler_a") - - wxFILTER_NONE - wxDefaultValidator - - - - - onSamplerSelect - - - - - - 5 - wxEXPAND - 0 - - - bSizer1002 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Scheduler: - 0 - - 0 - - - 0 - - 1 - m_schedulertext - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scheduler - 1 - - - protected - 1 - - Resizable - 0 - 1 - 200,-1 - - ; ; forward_declare - 0 - Weight type. If not specified, the default is the type of the weight file. - - wxFILTER_NONE - wxDefaultValidator - - - - - onTypeSelect - - - - - - - - 5 - wxEXPAND - 0 - - - sizer0003 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer92 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Seed: - 0 - - 0 - - - 0 - - 1 - m_staticText233 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - -1 - 999999999 - - 0 - - -1 - - 0 - -1,-1 - 1 - m_seed - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - - ; ; forward_declare - 0 - - -1 - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/dice_four.png - - 1 - 0 - 1 - - 0 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_random_seed - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Generate a random seed - - wxFILTER_NONE - wxDefaultValidator - - - - - onRandomGenerateButton - - - - - - 5 - wxEXPAND - 0 - - - bSizer93 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Steps: - 0 - - 0 - - - 0 - - 1 - m_staticText14 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - number of sample steps (default: 20) - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 20 - 100 - - 0 - - 0 - - 0 - -1,-1 - 1 - m_steps - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - number of sample steps (default: 20) - 20 - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer96 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer94 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Width: - 0 - - 0 - - - 0 - - 1 - m_staticText237 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - 512 - 2048 - - 0 - - 256 - - 0 - - 1 - m_width - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - 512 - - - - OnWHChange - OnWHChange - - - - - - 5 - wxEXPAND - 0 - - - bSizer95 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Height: - 0 - - 0 - - - 0 - - 1 - m_staticText239 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - 512 - 2048 - - 0 - - 256 - - 0 - - 1 - m_height - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - 512 - - - - OnWHChange - OnWHChange - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/replace.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_button7 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Swap the resolution - - wxFILTER_NONE - wxDefaultValidator - - - - - onResolutionSwap - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer74 - wxVERTICAL - none - - 5 - wxEXPAND | wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_staticline4 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_HORIZONTAL - ; ; forward_declare - 0 - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,700,-1,70,0 - 0 - 0 - wxID_ANY - Presets - 0 - - 0 - - - 0 - - 1 - m_staticText17 - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxEXPAND - 0 - - - bSizer91 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/disk.png - - 1 - 0 - 1 - Save the current settings into a new preset, or overwrite an exists one - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Save preset - - 0 - - 0 - - - 0 - - 1 - m_save_preset - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Save the current settings into preset - - wxFILTER_NONE - wxDefaultValidator - - - - - onSavePreset - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - Load a selected preset. The preset settings will over write the current generation settings - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Load selected preset - - 0 - - 0 - - - 0 - - 1 - m_load_preset - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Load the selected preset - - wxFILTER_NONE - wxDefaultValidator - - - - - onLoadPreset - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_preset_list - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onSelectPreset - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Delete preset - - 0 - - 0 - - - 0 - - 1 - m_delete_preset - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onDeletePreset - - - - - - 5 - wxEXPAND - 0 - - - bSizer741 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer97999 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Low res.: - 0 - - 0 - - - 0 - - 1 - m_staticText46 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - Lower resolutions for SD1.x - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - "Select one" "640x384" "512x512" "512x768" - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_sd15Res - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - Lower resolutions for SD1.x - - wxFILTER_NONE - wxDefaultValidator - - - - - onSd15ResSelect - - - - - - 5 - wxEXPAND - 1 - - - bSizer971 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - High Res.: - 0 - - 0 - - - 0 - - 1 - m_staticText461 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - Higher resolutions for FLUX/SDXL/SD3.5 - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - "Select one" "1024x1024" "1152x896" "1216x832" "1344x768" "1536x640" - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_sdXlres - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - Higher resolutions for FLUX/SDXL/SD3.5 - - wxFILTER_NONE - wxDefaultValidator - - - - - onSdXLResSelect - - - - - - 5 - wxEXPAND - 1 - - - bSizer979 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Prompt presets - 0 - - 0 - - - 0 - - 1 - m_staticText49 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_promptPresets - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - 5 - wxEXPAND | wxALL - 2 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_panel11 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer771 - wxVERTICAL - none - - 0 - wxALIGN_TOP|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - wxSYS_COLOUR_WINDOW - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - 400,200 - 1 - m_notebook1302 - 1 - - - protected - 1 - - Resizable - 1 - -1,200 - wxBK_DEFAULT - ; ; forward_declare - 0 - - - - - m_notebook1302OnNotebookPageChanged - - Load From Embedded File; icons/16/images.png - Jobs and Images - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_jobs_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - jobs - wxTAB_TRAVERSAL - - - bSizer17 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer18 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/forward.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Resume all - - 0 - - 0 - - - 0 - - 1 - m_start_jobs - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onJobsStart - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/pause.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Pause all - - 0 - - 0 - - - 0 - - 1 - m_pause_jobs - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onJobsPause - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Delete all - - 0 - - 0 - - - 0 - - 1 - m_delete_all_jobs - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onJobsDelete - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Number of jobs: 0 - 0 - - 0 - - - 0 - - 1 - m_static_number_of_jobs - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxEXPAND - 2 - - -1,-1 - bSizer78 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 0 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 200 - - 0 - - 1 - m_splitter2 - 1 - - - protected - 1 - - Resizable - 1 - -200 - -1 - 1 - - wxSPLIT_VERTICAL - wxSP_3D - ; ; forward_declare - 0 - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_panel14 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer79 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - -1,-1 - m_joblist - protected - - - wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VERT_RULES - ; ; forward_declare - - wxWS_EX_VALIDATE_RECURSIVELY - - - OnJobListItemActivated - onContextMenu - OnJobListItemSelection - - wxALIGN_LEFT - - wxDATAVIEW_COL_HIDDEN|wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Id - wxDATAVIEW_CELL_INERT - m_dataViewListColumn32 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Crated at - wxDATAVIEW_CELL_INERT - m_dataViewListColumn321 - protected - Text - 120 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Type - wxDATAVIEW_CELL_INERT - m_dataViewListColumn3211 - protected - Text - 100 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Model - wxDATAVIEW_CELL_INERT - m_dataViewListColumn32111 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Sampler - wxDATAVIEW_CELL_INERT - m_dataViewListColumn321111 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Seed - wxDATAVIEW_CELL_INERT - m_dataViewListColumn3211111 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Progress - wxDATAVIEW_CELL_INERT - m_dataViewListColumn32111111 - protected - Progress - 80 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Speed - wxDATAVIEW_CELL_INERT - m_dataViewListColumn321111111 - protected - Text - 110 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_ACTIVATABLE - m_dataViewListColumn3211111111 - protected - Text - 150 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_ACTIVATABLE - m_dataViewListColumn32111111111 - protected - Text - -1 - - - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - -1,-1 - - 0 - 256,-1 - 1 - m_panel15 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer107 - wxVERTICAL - none - - 5 - wxEXPAND - 2 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - -1,-1 - -1,-1 - m_joblist_item_details - protected - - - wxDV_NO_HEADER|wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES - ; ; forward_declare - - - - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn1 - protected - Text - -1 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn2 - protected - Text - -1 - - - - - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer9011 - wxVERTICAL - none - - 5 - wxEXPAND|wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow41 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - -1,280 - ; ; forward_declare - 0 - - - - wxBORDER_DEFAULT|wxHSCROLL - - - bSizer8911 - wxHORIZONTAL - public - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmap6 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - - - - - - - - - - - - - txt2img - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_text2img_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - onTxt2ImgFileDrop - - -1,100 - sizer0004 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer811 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer82 - wxVERTICAL - none - - 1 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - 0 - - 0 - -1,100 - 1 - m_prompt - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - onTxt2ImgFileDrop - OnPromptText - - - - 1 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - ,90,400,-1,70,0 - 0 - - wxID_ANY - - 0 - - 0 - - 0 - -1,100 - 1 - m_neg_prompt - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - onTxt2ImgFileDrop - OnNegPromptText - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 5 - wxEXPAND - 1 - - - bSizer1011 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer122 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/interrogation.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Help - - 0 - - 0 - - - 0 - - 1 - m_bpButton25 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - What is this? - - wxFILTER_NONE - wxDefaultValidator - - - - - onWhatIsThis - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - For more information, click the button with the question mark icon. To use the FLUX model, select the "Diffusion Model" file picker and choose the FLUX model. For SD3.5, use the dropdown menu at the top to select a model. - 0 - - 0 - - - 0 - - 1 - m_staticText70 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - onTxt2ImgFileDrop - - - - - - 5 - wxEXPAND - 0 - - - bSizer10212 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - SLG scale: - 0 - - 0 - - - 0 - - 1 - m_staticText522 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - skip layer guidance (SLG) scale, only for DiT models: (default: 0.0) - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 1 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.5 - 0 - 100 - - 0 - - 0 - - 0 - - 1 - slgScale - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - skip layer guidance (SLG) scale, only for DiT models: (default: 0.0) - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer102121 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Skip layers: - 0 - - 0 - - - 0 - - 1 - m_staticText5221 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - Layers to skip for SLG steps: (default: [7,8,9]) - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_skipLayers - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Layers to skip for SLG steps: (default: [7,8,9]) - - - wxDefaultValidator - - 7,8,9 - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer1021211 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Skip Layer Start: - 0 - - 0 - - - 0 - - 1 - m_staticText52211 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - SLG enabling point: (default: 0.01) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 2 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.01 - 0.01 - 1 - - 0 - - 0.01 - - 0 - - 1 - skipLayerStart - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - SLG enabling point: (default: 0.01) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer10212111 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Skip Layer End: - 0 - - 0 - - - 0 - - 1 - m_staticText522111 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - SLG disabling point: (default: 0.2) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 2 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.01 - 0.2 - 1 - - 0 - - 0.01 - - 0 - - 1 - skipLayerEnd - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - SLG disabling point: (default: 0.2) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer121 - wxVERTICAL - none - - 5 - wxEXPAND | wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_staticline41 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_HORIZONTAL - ; ; forward_declare - 0 - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer1021111 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Diffusion Model: - 0 - - 0 - - - 0 - - 1 - m_staticText52111 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - Diffusion models, for example FLUX - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - - 1 - m_filePickerDiffusionModel - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf - - - - onFilePickerDiffusionModel - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Flash attention - - 0 - - - 0 - - 1 - diffusionFlashAttn - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Use flash attention in the diffusion model. This will reduce significantly the memory uage (for low vram). Might lower quality, since it implies converting k and v to f16. This might crash if it is not supported by the backend. - - wxFILTER_NONE - wxDefaultValidator - - - - - onDiffusionFlashAttn - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Clean model - - 0 - - 0 - - - 0 - - 1 - m_cleanDiffusionModel - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Clean model - - wxFILTER_NONE - wxDefaultValidator - - - - - onCleanDiffusionModel - - - - - - 5 - wxEXPAND - 0 - - - bSizer1021 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - ClipL: - 0 - - 0 - - - 0 - - 1 - m_staticText52 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - - 1 - m_filePickerClipL - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf - - - - onFilePickerClipL - - - - - - 5 - wxEXPAND - 0 - - - bSizer10211 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - ClipG: - 0 - - 0 - - - 0 - - 1 - m_staticText521 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - - 1 - m_filePickerClipG - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf - - - - onFilePickerClipG - - - - - - 5 - wxEXPAND - 0 - - - bSizer102111 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - T5XXL: - 0 - - 0 - - - 0 - - 1 - m_staticText5211 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - - 1 - m_filePickerT5XXL - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf - - - - onFilePickerT5XXL - - - - - - - - - - 5 - wxEXPAND - 1 - - -1,100 - bSizer331 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_notebook3 - 1 - - - protected - 1 - - Resizable - 1 - - wxNB_LEFT - ; ; forward_declare - 0 - - - - - - - Diffusion - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_diffusionPreviewTab - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer991 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/preview.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_txt2txtDeiffusionPreview - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - ; ; forward_declare - 0 - - - - wxFULL_REPAINT_ON_RESIZE - - - - - - - - Controlnet - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_controlnetPreviewTab - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer981 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/controlnet.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_controlnetImagePreview - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - ; ; forward_declare - 0 - - - - wxFULL_REPAINT_ON_RESIZE - - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer34 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/play.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Queue - - 0 - - 0 - - - 0 - - 1 - m_generate2 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onGenerate - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - 260,-1 - 1 - m_controlnetImageOpen - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG - - - - OnControlnetImageOpen - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - CN on CPU - - 0 - - - 0 - - 1 - cnOnCpu - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Keep controlnet on CPU - - wxFILTER_NONE - wxDefaultValidator - - - - - onCnOnCpu - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - -1,-1 - 1 - m_controlnetModels - 1 - - - protected - 1 - - Resizable - 0 - 1 - 210,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 1 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.1 - 0.9 - 0.9 - - 0 - - 0 - - 0 - - 1 - m_controlnetStrength - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Show full - - 0 - - 0 - - - 0 - - 1 - m_controlnetImagePreviewButton - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Show the original controlnet image - - wxFILTER_NONE - wxDefaultValidator - - - - - OnControlnetImagePreviewButton - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Delete - - 0 - - 0 - - - 0 - - 1 - m_controlnetImageDelete - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Remove control image - - wxFILTER_NONE - wxDefaultValidator - - - - - OnControlnetImageDelete - - - - - - - - - Load From Embedded File; icons/16/picture.png - img2img - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_image2image_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - img2img - wxTAB_TRAVERSAL - Onimg2imgDropFile - - - bSizer24 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - bSizer28 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer33 - wxVERTICAL - none - - 1 - wxEXPAND|wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_prompt2 - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnPromptText - - - - 1 - wxEXPAND|wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_neg_prompt2 - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnNegPromptText - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - - - 5 - wxEXPAND - 1 - - - bSizer29 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_notebook4 - 1 - - - protected - 1 - - Resizable - 1 - - wxNB_LEFT - ; ; forward_declare - 0 - - - - - - - Diffusion - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel23 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer1003 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/preview.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_img2imgDiffusionPreview - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - Onimg2imgDropFile - - - - - - - - Input image - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel22 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer101 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/sd.cpp.gui_blankimage.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_img2img_preview - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - Onimg2imgDropFile - - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer38 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/play.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Queue - - 0 - - 0 - - - 0 - - 1 - m_generate1 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onGenerate - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select an image - - 0 - 470,-1 - 1 - m_img2imgOpen - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG - - - - OnImageOpenFileChanged - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Strength: - 0 - - 0 - - - 0 - - 1 - m_staticText24 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 2 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.1 - 0.75 - 0.99 - - 0 - - 0 - - 0 - - 1 - m_strength - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Show full - - 0 - - 0 - - - 0 - - 1 - m_img2im_preview_img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnImg2ImgPreviewButton - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - MyButton - - 0 - - 0 - - - 0 - - 1 - m_delete_initial_img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnDeleteInitialImage - - - - - - - - - - Upscaler - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_upscaler - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - upscaler - wxTAB_TRAVERSAL - OnUpscalerDropFile - - - bSizer68 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - bSizer999 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer69 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer71 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Source Image - 0 - - 0 - - - 0 - - 1 - m_staticText62 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select an image - - 0 - - 1 - m_upscaler_filepicker - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG - - - - OnImageOpenFilePickerChanged - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - MyButton - - 0 - - 0 - - - 0 - - 1 - m_delete_upscale_image - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnDeleteUpscaleImage - - - - - - 5 - wxEXPAND - 0 - - - bSizer70 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Upscaler model - 0 - - 0 - - - 0 - - 1 - m_staticText61 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_upscaler_model - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnUpscalerModelSelection - - - - - - 5 - wxEXPAND - 0 - - - bSizer72 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Width: - 0 - - 0 - - - 0 - - 1 - m_staticText63 - 1 - - - protected - 1 - - Resizable - 1 - 50,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_width - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Height: - 0 - - 0 - - - 0 - - 1 - m_staticText65 - 1 - - - protected - 1 - - Resizable - 1 - 50,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_height - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxEXPAND - 0 - - - bSizer721 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Width: - 0 - - 0 - - - 0 - - 1 - m_staticText631 - 1 - - - protected - 1 - - Resizable - 1 - 50,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_target_width - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Height: - 0 - - 0 - - - 0 - - 1 - m_staticText651 - 1 - - - protected - 1 - - Resizable - 1 - 50,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_target_height - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxEXPAND - 0 - - - bSizer73 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Upscale factor - 0 - - 0 - - - 0 - - 1 - m_staticText67 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - 4 - 4 - - 0 - - 1 - - 0 - - 1 - m_upscaler_factor - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - - ; ; forward_declare - 0 - - - - - - OnUpscalerFactorChange - - - - - - 5 - wxEXPAND - 1 - - - bSizer951 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - wxSYS_COLOUR_WINDOW - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_upscalerHelp - 1 - - - public - 1 - - Resizable - 1 - - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - - OnHtmlLinkClicked - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer1000 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/sd.cpp.gui_blankimage.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - -1,-1 - - 0 - 200,-1 - 1 - m_upscaler_source_image - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - ; ; forward_declare - 0 - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer77 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/play.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Queue - - 0 - - 0 - - - 0 - - 1 - m_generate_upscaler - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onGenerate - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Keep upscale model in memory - - 0 - - - 0 - - 1 - m_keep_upscaler_in_memory - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - WARNING: If you check this box, the upscaler model will remain in memory for the next job, which could lead to a memory overflow or program crash (segfault). - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Keep checkpoints in memory - - 0 - - - 0 - - 1 - m_keep_other_models_in_memory - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - WARNING: If you check this box, the SD model from the previous job will remain in RAM/VRAM, which could potentially lead to a program crash (segfault). - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - Image info - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_imageinfo - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer115 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 200 - - 0 - - 1 - m_splitter4 - 1 - - - protected - 1 - - Resizable - 0.0 - 0 - -1 - 1 - - wxSPLIT_VERTICAL - wxSP_BORDER - ; ; forward_declare - 0 - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow5 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - - ; ; forward_declare - 0 - - - - wxHSCROLL|wxVSCROLL - - - bSizer117 - wxHORIZONTAL - none - - 5 - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxSHAPED - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - Load From Embedded File; images/sd.cpp.gui_blankimage.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - 1024,1024 - - 0 - 384,384 - 1 - m_imageinfo_preview - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - OnImageInfoDrop - - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow7 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - - ; ; forward_declare - 0 - - - - wxHSCROLL|wxVSCROLL - - - imageInfoSizer - wxVERTICAL - public - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_imageInfoPrompt - 1 - - - protected - 1 - - Resizable - 1 - -1,200 - wxTE_MULTILINE|wxTE_READONLY - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_imageInfoNegPrompt - 1 - - - protected - 1 - - Resizable - 1 - -1,200 - wxTE_MULTILINE|wxTE_READONLY - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxEXPAND - 1 - - 2 - wxBOTH - - - 2 - - fgSizer1 - wxFLEX_GROWMODE_SPECIFIED - public - 0 - 0 - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Seed: - 0 - - 0 - - - 0 - - 1 - m_staticText632 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - N/A - 0 - - 0 - - - 0 - 100,-1 - 1 - m_imageInfoSeed - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - CFG scale: - 0 - - 0 - - - 0 - - 1 - m_staticText652 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - N/A - 0 - - 0 - - - 0 - 100,-1 - 1 - m_imageInfoCfg - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Steps: - 0 - - 0 - - - 0 - - 1 - m_staticText671 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - N/A - 0 - - 0 - - - 0 - 100,-1 - 1 - m_imageInfoSteps - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Size: - 0 - - 0 - - - 0 - - 1 - m_staticText69 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - N/A - 0 - - 0 - - - 0 - 100,-1 - 1 - m_imageInfoSize - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Sampler: - 0 - - 0 - - - 0 - - 1 - m_staticText691 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - N/A - 0 - - 0 - - - 0 - 100,-1 - 1 - m_imageInfoSampler - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Scheduler: - 0 - - 0 - - - 0 - - 1 - m_staticText6912 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - N/A - 0 - - 0 - - - 0 - 100,-1 - 1 - m_imageInfoScheduler - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Model: - 0 - - 0 - - - 0 - - 1 - m_staticText6911 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - N/A - 0 - - 0 - - - 0 - 100,-1 - 1 - m_imageInfoModel - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Model hash: - 0 - - 0 - - - 0 - - 1 - m_staticText69111 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - N/A - 0 - - 0 - - - 0 - 100,-1 - 1 - m_imageInfoModelHash - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer116 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Load all to txt2img - - 0 - - 0 - - - 0 - - 1 - m_imageInfoLoadTotxt - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Load all to img2img - - 0 - - 0 - - - 0 - - 1 - m_imageInfoLoadToimg2img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - 400,-1 - Select a file - - 0 - 200,-1 - 1 - m_imageInfoOpen - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG - - - - OnImageInfoOpen - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Clear - - 0 - - 0 - - - 0 - - 1 - m_cleanImageInfo - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Clear - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCleanImageInfo - - - - - - - - - Load From Embedded File; icons/16/cube.png - Models - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_models_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - models - wxTAB_TRAVERSAL - - - bSizer20 - wxVERTICAL - none - - 5 - wxALL - 0 - - - bSizer63 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Lora - - 0 - - - 0 - - 1 - m_checkbox_lora_filter - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCheckboxLoraFilter - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Checkpoints - - 0 - - - 0 - - 1 - m_checkbox_filter_checkpoints - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCheckboxCheckpointFilter - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Embeddings - - 0 - - - 0 - - 1 - m_checkbox_filter_embeddings - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCheckboxCheckpointFilter - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - 0 - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_modellist_filter - 1 - - - protected - 1 - - Resizable - 1 - 1 - 260,-1 - wxTE_PROCESS_ENTER - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnModellistFilterKeyUp - - - - - - 5 - wxEXPAND - 1 - - - bSizer102 - wxVERTICAL - none - - 5 - wxEXPAND - 2 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 200 - - 0 - - 1 - m_splitter3 - 1 - - - protected - 1 - - Resizable - 1 - -300 - -1 - 1 - - wxSPLIT_VERTICAL - wxSP_3D - ; ; forward_declare - 0 - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_panel16 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer84 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - 300,-1 - m_data_model_list - protected - - - wxDV_HORIZ_RULES|wxDV_ROW_LINES|wxDV_SINGLE - ; ; forward_declare - - - - wxFULL_REPAINT_ON_RESIZE - OnDataModelActivated - onContextMenu - OnDataModelSelected - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Name - wxDATAVIEW_CELL_INERT - m_dataViewListColumn3 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Size - wxDATAVIEW_CELL_INERT - m_dataViewListColumn4 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Type - wxDATAVIEW_CELL_INERT - m_dataViewListColumn5 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Hash - wxDATAVIEW_CELL_INERT - m_dataViewListColumn6 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn8 - protected - Text - 100 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn7 - protected - Progress - -1 - - - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_panel17 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer1001 - wxVERTICAL - public - - 5 - wxEXPAND|wxALL - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_model_details - protected - - - wxDV_NO_HEADER|wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES - ; ; forward_declare - - - - wxBORDER_DEFAULT - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn11 - protected - Text - -1 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn21 - protected - Text - -1 - - - - - 5 - wxALL|wxEXPAND|wxRESERVE_SPACE_EVEN_IF_HIDDEN - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 1 - wxID_ANY - - 0 - - - 0 - - 1 - m_model_details_description - 1 - - - protected - 1 - - Resizable - 1 - -1,110 - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - wxBORDER_THEME - - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer901 - wxVERTICAL - none - - 5 - wxEXPAND|wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow4 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - -1,280 - ; ; forward_declare - 0 - - - - wxBORDER_DEFAULT|wxHSCROLL - - - bSizer891 - wxHORIZONTAL - public - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 0 - 0 - Dock - 0 - Left - 0 - - - 1 - ,90,400,-1,70,0 - 0 - - wxID_ANY - - 0 - - 0 - - 0 - -1,-1 - 1 - logs - 1 - - - protected - 1 - - Resizable - 1 - -1,140 - wxTE_WORDWRAP|wxTE_READONLY|wxTE_MULTILINE|wxTE_AUTO_URL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - wxFULL_REPAINT_ON_RESIZE - - - - - - - 1 - 0 - - - 2 - - - wxID_ANY - - - m_statusBar166 - protected - - - wxSTB_DEFAULT_STYLE - ; ; forward_declare - - - - - - - - - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - - wxID_ANY - - -1,-1 - Settings - - -1,-1 - wxDEFAULT_FRAME_STYLE|wxFRAME_FLOAT_ON_PARENT|wxRESIZE_BORDER|wxSTAY_ON_TOP|wxSYSTEM_MENU - ; ; forward_declare - Settings - - 0 - - sd.cpp.gui.settings - wxFULL_REPAINT_ON_RESIZE|wxTAB_TRAVERSAL|wxBORDER_THEME - 1 - - - sizer2010 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - - 1 - m_notebook1696 - 1 - - - protected - 1 - - Resizable - 1 - - wxBK_DEFAULT - ; ; forward_declare - 0 - - - - - - Load From Embedded File; icons/16/disk.png - Paths - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - - 1 - m_path_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - sizer2011 - wxVERTICAL - none - - 5 - wxALL - 0 - - - bSizer16 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Models path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText172410 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_model_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openModelsPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer19 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Lora path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText18013172027 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_lora_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openLorasPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer17 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Vae path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText18013 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_vae_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openVaesPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer18 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Embedding path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText1801317202731 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_embedding_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openEmbeddingsPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer23 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - TAESD path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText21 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_taesd_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openTaesdPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/interrogation.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - nolabel - - 0 - - 0 - - - 0 - - 1 - m_bpButton1 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - TAESD models you can download from here: https://github.com/madebyollin/taesd/tree/main - - wxFILTER_NONE - wxDefaultValidator - - - - - OnTAESDHelpClick - - - - - - 5 - wxALL - 0 - - - bSizer35 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Controlnet path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText23 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_controlnet_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openControlnetPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer81 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - ESRGAN path - 0 - - 0 - - - 0 - - 1 - m_staticText77 - 1 - - - protected - 1 - - Resizable - 1 - 150,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_esrgan_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openEsrganPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - - 1 - m_staticLine223 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_HORIZONTAL - ; ; forward_declare - 0 - - - - - - - - 5 - wxALL - 0 - - - bSizer20 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Presets path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText19 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_presets_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openPresetsPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer21 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Images output - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText180131720 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_images_output - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_SMALL|wxDIRP_DEFAULT_STYLE - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openOutputPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - - - - Load From Embedded File; icons/16/palette.png - Diffusion - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - - 1 - m_settings - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - sizer2017 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 0 - - 2 - 0 - - sizer2018 - none - 0 - 0 - - 5 - wxALIGN_LEFT|wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - Keep the model in memory (vRAM or RAM, depends on diffusion type) when it is possible. Text to image and image to image can use the same model. If controlnet model is selected and used, the all new job need to reload the model before run. If type is changed (eg fp16 -> Q4_1), then the model need to be reloaded, but usable with mode diffusion without reload. If you disable this option, the model allways unloaded from memory after the job is finished. - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - - wxID_ANY - Keep model in memory - - 0 - - - 0 - 230,-1 - 1 - m_keep_model_in_memory - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_RIGHT - ; ; forward_declare - 0 - Keep model in (v)RAM after diffusions - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - 2 - 0 - - sizer2019 - none - 0 - 0 - - 5 - wxALIGN_LEFT|wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - - wxID_ANY - Save all images (intermediate images) - - 0 - - - 0 - -1,-1 - 1 - m_save_all_image - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_RIGHT - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - - bSizer10 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Output images format - 0 - - 0 - - - 0 - 200,-1 - 1 - m_staticText16 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - "JPG" "PNG" - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_image_type - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALIGN_CENTER_HORIZONTAL|wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,93,300,8,70,0 - 0 - 0 - wxID_ANY - PNG meta data not supported yet - 0 - - 0 - - - 0 - - 1 - m_staticText38 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxALL|wxEXPAND - 0 - - - bSizer112 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - JPEG quality - 0 - - 0 - - - 0 - 200,-1 - 1 - m_staticText61 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 100 - - 0 - - 0 - - 0 - 250,-1 - 1 - m_image_quality - 1 - - - protected - 1 - - Resizable - 1 - - wxSL_HORIZONTAL|wxSL_LABELS - ; ; forward_declare - 0 - Image output quality, default: 90% - - wxFILTER_NONE - wxDefaultValidator - - 95 - - - - OnImgQualityScroll - - - - - - 5 - wxEXPAND|wxALL - 0 - - - bSizer113 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - PNG compression level - 0 - - 0 - - - 0 - 200,-1 - 1 - m_staticText62 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 9 - - 0 - - 0 - - 0 - 250,-1 - 1 - m_png_compression - 1 - - - protected - 1 - - Resizable - 1 - - wxSL_HORIZONTAL|wxSL_LABELS - ; ; forward_declare - 0 - Image output quality, default: 90% - - wxFILTER_NONE - wxDefaultValidator - - 0 - - - - OnPngCompressionScroll - - - - - - 5 - wxEXPAND - 0 - - - bSizer72 - wxVERTICAL - none - - - - 5 - wxALL|wxEXPAND - 0 - - - bSizer22 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Number of CPU cores - 0 - - 0 - - - 0 - 200,-1 - 1 - m_staticText191 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 2 - 100 - - 0 - - -1 - - 0 - - 1 - m_threads - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_staticNumberOfCores - 1 - - - public - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxEXPAND|wxALL - 0 - - - bSizer114 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Image name format - 0 - - 0 - -1,-1 - - 0 - 140,-1 - 1 - m_staticText621 - 1 - - - protected - 1 - - Resizable - 1 - - wxST_NO_AUTORESIZE - ; ; forward_declare - 0 - - - - - 140 - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/interrogation.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Help - - 0 - - 0 - - - 0 - - 1 - m_bpButton27 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOutputFileNameFormatHelpClick - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_output_filename_format - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - [mode]_[jobid]_[seed]_[width]x[height]_[batch] - - - - OnOutputFilenameText - - - - - - - - - - GUI - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_settings_ui - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer30 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 0 - - - bSizer31 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Show notifications - - 0 - - - 0 - - 1 - m_show_notifications - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_RIGHT - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onShowNotificationCheck - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Notification timeout: - 0 - - 0 - - - 0 - - 1 - m_staticText60 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 60 - 120 - - 0 - - 30 - - 0 - - 1 - m_notification_timeout - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - The timeout is depends on the OS and notification type - - - - - - - - - - 5 - wxEXPAND|wxALL - 0 - - - bSizer100 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Language: - 0 - - 0 - - - 0 - 160,-1 - 1 - m_staticText50 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_LEFT - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 160,-1 - 1 - m_language - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - CivitAi - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel18 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer89 - wxVERTICAL - none - - 5 - wxEXPAND|wxALL - 0 - - - bSizer90 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Enable CivitAi features - - 0 - - - 0 - - 1 - m_enableCivitai - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Enable or disable all CivitAi features - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - 5 - wxEXPAND|wxALL - 0 - - - bSizer91 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - CivitAi.com API key - 0 - - 0 - - - 0 - - 1 - m_staticText42 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_civitai_api_key - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_PASSWORD - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/interrogation.png - - 1 - 0 - 1 - Click to the question mark button to get help - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Help - - 0 - - 0 - - - 0 - - 1 - m_bpButton15 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - How to generate API key on CivitAi.com - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCivitaiHelpButton - - - - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/disk.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Save - - 0 - - 0 - - - 0 - - 1 - m_save - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onSave - - - - - - 0 - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - 0 - wxID_ANY - - - ImageDialog - - - wxDEFAULT_DIALOG_STYLE - ; ; forward_declare - - - 0 - - sd.cpp.gui.imagedialog - - - - bSizer27 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmap - 1 - - - public - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - - - - - - 0 - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - 0 - wxID_ANY - - - AboutDialog - - 400,600 - wxDEFAULT_DIALOG_STYLE - ; ; forward_declare - About - - 0 - - - - - - bSizer71 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_about - 1 - - - public - 1 - - Resizable - 1 - - wxHW_NO_SELECTION|wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - - m_aboutOnHtmlLinkClicked - - - - - - 0 - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - 0 - wxID_ANY - - - CivitAiWindow - - 800,600 - wxDEFAULT_FRAME_STYLE - ; ; forward_declare - CivitAI model downloader - - 0 - - - wxTAB_TRAVERSAL - 1 - - - bSizer82 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 0 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel16 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer87 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 400 - - 0 - - 1 - m_splitter3 - 1 - - - protected - 1 - - Resizable - 0.0 - 0 - -1 - 1 - - wxSPLIT_VERTICAL - wxSP_3DBORDER - ; ; forward_declare - 0 - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel25 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer88 - wxVERTICAL - none - - 5 - wxEXPAND|wxALL - 2 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_model_description - 1 - - - protected - 1 - - Resizable - 1 - - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - wxBORDER_THEME - OnHtmlLinkClicked - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,700,-1,70,0 - 0 - 0 - wxID_ANY - Versions - 0 - - 0 - - - 0 - - 1 - m_staticText41 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_model_details - protected - - - wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES - ; ; forward_declare - - - - wxBORDER_DEFAULT - m_model_detailsOnDataViewListCtrlSelectionChanged - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Name - wxDATAVIEW_CELL_INERT - m_dataViewListColumn111 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - baseModel - wxDATAVIEW_CELL_INERT - m_dataViewListColumn22 - protected - Text - -1 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - baseModelType - wxDATAVIEW_CELL_INERT - m_dataViewListColumn21 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Published - wxDATAVIEW_CELL_INERT - m_dataViewListColumn33 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Downloads - wxDATAVIEW_CELL_INERT - m_dataViewListColumn34 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn221 - protected - Text - -1 - - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_model_version_description - 1 - - - protected - 1 - - Resizable - 1 - - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - wxBORDER_THEME - OnHtmlLinkClicked - - - - 5 - wxEXPAND - 0 - - - bSizer93 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,700,-1,70,0 - 0 - 0 - wxID_ANY - Files - 0 - - 0 - - - 0 - - 1 - m_staticText40 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Download - - 0 - - 0 - - - 0 - - 1 - m_model_download - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - m_model_downloadOnButtonClick - - - - - - 5 - wxALL|wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_model_filelist - protected - - - wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES - ; ; forward_declare - - - - wxBORDER_DEFAULT - m_model_filelistOnDataViewListCtrlSelectionChanged - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Name - wxDATAVIEW_CELL_INERT - m_dataViewListColumn1111 - protected - Text - 200 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - Type - wxDATAVIEW_CELL_INERT - m_dataViewListColumn211 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Format - wxDATAVIEW_CELL_INERT - m_dataViewListColumn23 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Size - wxDATAVIEW_CELL_INERT - m_dataViewListColumn24 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Fp - wxDATAVIEW_CELL_INERT - m_dataViewListColumn25 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn231 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Size - wxDATAVIEW_CELL_INERT - m_dataViewListColumn29 - protected - Text - -1 - - - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel24 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer92 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer86 - wxHORIZONTAL - none - - 0 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - "Checkpoints" "LORA" "Embeddings" - 1 - - 0 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 3 - - 0 - - - 0 - - 1 - m_model_type - 1 - - - protected - 1 - - Resizable - 0 - 1 - - wxRA_SPECIFY_ROWS - ; ; forward_declare - 0 - Select the model type to filter - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL|wxLEFT - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_civitai_search - 1 - - - protected - 1 - - Resizable - 1 - 210,-1 - wxTE_PROCESS_ENTER - ; ; forward_declare - 0 - Search for model names - - wxFILTER_NONE - wxDefaultValidator - - - - - - m_civitai_searchOnTextEnter - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Search - - 0 - - 0 - - - 0 - - 1 - m_search - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - m_searchOnButtonClick - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,700,-1,70,0 - 0 - 0 - wxID_ANY - Models - 0 - - 0 - - - 0 - - 1 - m_staticText43 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxEXPAND|wxALL - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_dataViewListCtrl5 - protected - - - wxDV_HORIZ_RULES - ; ; forward_declare - - - - - m_dataViewListCtrl5OnDataViewListCtrlSelectionChanged - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Name - wxDATAVIEW_CELL_INERT - m_dataViewListColumn12 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn13 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Type - wxDATAVIEW_CELL_INERT - m_dataViewListColumn30 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Downloads - wxDATAVIEW_CELL_INERT - m_dataViewListColumn32 - protected - Text - -1 - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,700,-1,70,0 - 0 - 0 - wxID_ANY - Downloads - 0 - - 0 - - - 0 - - 1 - m_staticText431 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_downloads - protected - - - wxDV_HORIZ_RULES - ; ; forward_declare - - - - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - File - wxDATAVIEW_CELL_INERT - m_dataViewListColumn26 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Size - wxDATAVIEW_CELL_INERT - m_dataViewListColumn31 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn301 - protected - Text - 120 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn28 - protected - Progress - 200 - - - - - 5 - wxEXPAND | wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow4 - 1 - - - public - 1 - - Resizable - 5 - 5 - 1 - - ; ; forward_declare - 0 - - - - wxHSCROLL|wxVSCROLL - - - image_container - wxHORIZONTAL - public - - - - - - - - - - - - - - - - 1 - 0 - 1 - - 1 - - 0 - wxID_ANY - - - m_statusBar2 - protected - - - wxSTB_SIZEGRIP - ; ; forward_declare - - - - - - - - diff --git a/graphics/window_3.2_new.fbp b/graphics/window_3.2_new.fbp deleted file mode 100644 index 821c899..0000000 --- a/graphics/window_3.2_new.fbp +++ /dev/null @@ -1,18202 +0,0 @@ - - - - - C++ - ; - 1 - connect - wxSimpleHelpProvider - - - 0 - 0 - ../src/ui/embedded_files - UTF-8 - MainWindow - 1000 - 1 - 1 - UI - MainWindow - ../src/ui - 0 - source_name - 1 - 0 - source_name - - - 1 - 1 - 0 - 0 - - - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - - wxID_ANY - 3072,4096 - 1024,768 - mainUI - - 1024,768 - wxDEFAULT_FRAME_STYLE - ; ; forward_declare - sd.cpp.gui - - 0 - - sd.cpp.gui - wxBORDER_DEFAULT - 1 - - -1,-1 - sizer0001 - wxVERTICAL - public - - 5 - wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel10 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - sizer0021 - wxHORIZONTAL - none - - 5 - - 0 - - - bSizer97 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/settings.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Settings - - 0 - - 0 - - - 0 - - 1 - m_settings - 1 - - - protected - 1 - - - - Resizable - 1 - 32,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onSettings - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/refresh.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Refresh models - - 0 - - 0 - - - 0 - - 1 - m_refrersh - 1 - - - protected - 1 - - - - Resizable - 1 - 32,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onModelsRefresh - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/cube.png - - 1 - 0 - 1 - About the program - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - About - - 0 - - 0 - - - 0 - - 1 - m_about - 1 - - - protected - 1 - - - - Resizable - 1 - 32,-1 - - ; ; forward_declare - 0 - About the sd.cpp.gui.wx - - wxFILTER_NONE - wxDefaultValidator - - - - - OnAboutButton - - - - 5 - wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/civitai.png - - 1 - 0 - 1 - With CivitAi.com model browser, you can search for models or download models - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - About - - 0 - - 0 - - - 0 - - 1 - m_civitai - 1 - - - protected - 1 - - - - Resizable - 1 - 32,-1 - - ; ; forward_declare - 0 - Open CivitAi.com model browser - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCivitAitButton - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - Load From Embedded File; icons/16/images.png - - 1 - 0 - 1 - - 1 - - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Show Widget - - 0 - - 0 - - - 0 - - 1 - m_showWidget - 1 - - - protected - 1 - - - - Resizable - 1 - 32,-1 - ; ; forward_declare - 0 - Show Widget - - wxFILTER_NONE - wxDefaultValidator - - 0 - - - - OnShowWidget - - - - 5 - wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/cross_circle.png - - 1 - 0 - 1 - This will send a terminate to the background diffuser process. This will clear up all used memory (eg. freeing up all the loaded models) - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 1 - wxID_ANY - Restart background process - - 0 - - 0 - - - 0 - - 1 - m_stop_background_process - 1 - - - protected - 1 - - - - Resizable - 1 - 32,-1 - - ; ; forward_declare - 0 - Stop and restart the background process - - wxFILTER_NONE - wxDefaultValidator - - - - - OnStopBackgroundProcess - - - - 5 - wxEXPAND | wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_staticline5 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_VERTICAL - ; ; forward_declare - 0 - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer98 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Model: - 0 - - 0 - - - 0 - -1,-1 - 1 - m_staticText160 - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - -1,-1 - 1 - m_model - 1 - - - protected - 1 - - Resizable - 0 - 1 - 200,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onModelSelect - - - - - - 5 - wxEXPAND - 0 - - - bSizer100 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Type: - 0 - - 0 - - - 0 - - 1 - m_staticText72 - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_type - 1 - - - protected - 1 - - Resizable - 0 - 1 - 200,-1 - - ; ; forward_declare - 0 - Weight type. If not specified, the default is the type of the weight file. - - wxFILTER_NONE - wxDefaultValidator - - - - - onTypeSelect - - - - - - 5 - wxEXPAND - 1 - - - bSizer120 - wxVERTICAL - none - - 5 - wxLEFT|wxTOP - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Current job: none - 0 - - 0 - - - 0 - 300,-1 - 1 - m_currentStatus - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxLEFT - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_currentProgress - 1 - - - protected - 1 - - 100 - Resizable - 1 - 300,-1 - wxGA_HORIZONTAL|wxGA_SMOOTH - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - 0 - - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer123 - wxVERTICAL - none - - - - - - - 0 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel31 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxBORDER_NONE|wxTAB_TRAVERSAL - - - bSizer138 - wxHORIZONTAL - public - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - wxSYS_COLOUR_WINDOW - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - 400,200 - 1 - m_notebook1302 - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxBK_DEFAULT - ; ; forward_declare - 0 - - - - wxBORDER_THEME - m_notebook1302OnNotebookPageChanged - - Load From Embedded File; icons/16/images.png - Jobs and Images - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_jobs_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - jobs - wxTAB_TRAVERSAL - - - bSizer104 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - - bSizer17 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer18 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/forward.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Resume all - - 0 - - 0 - - - 0 - - 1 - m_start_jobs - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onJobsStart - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/pause.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Pause all - - 0 - - 0 - - - 0 - - 1 - m_pause_jobs - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onJobsPause - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Delete all - - 0 - - 0 - - - 0 - - 1 - m_delete_all_jobs - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onJobsDelete - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Number of jobs: 0 - 0 - - 0 - - - 0 - - 1 - m_static_number_of_jobs - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxEXPAND - 2 - - -1,-1 - bSizer78 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 0 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 200 - - 0 - - 1 - m_splitter2 - 1 - - - protected - 1 - - Resizable - 1 - -200 - -1 - 1 - - wxSPLIT_VERTICAL - wxSP_3D - ; ; forward_declare - 0 - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_panel14 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer79 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - -1,-1 - m_joblist - protected - - - wxDV_MULTIPLE|wxDV_ROW_LINES|wxDV_VERT_RULES - ; ; forward_declare - - wxWS_EX_VALIDATE_RECURSIVELY - - - OnJobListItemActivated - onContextMenu - OnJobListItemSelection - - wxALIGN_LEFT - - wxDATAVIEW_COL_HIDDEN|wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Id - wxDATAVIEW_CELL_INERT - m_dataViewListColumn32 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Crated at - wxDATAVIEW_CELL_INERT - m_dataViewListColumn321 - protected - Text - 120 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Type - wxDATAVIEW_CELL_INERT - m_dataViewListColumn3211 - protected - Text - 100 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Model - wxDATAVIEW_CELL_INERT - m_dataViewListColumn32111 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Sampler - wxDATAVIEW_CELL_INERT - m_dataViewListColumn321111 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Seed - wxDATAVIEW_CELL_INERT - m_dataViewListColumn3211111 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Progress - wxDATAVIEW_CELL_INERT - m_dataViewListColumn32111111 - protected - Progress - 80 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Speed - wxDATAVIEW_CELL_INERT - m_dataViewListColumn321111111 - protected - Text - 110 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_ACTIVATABLE - m_dataViewListColumn3211111111 - protected - Text - 150 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_HIDDEN|wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_ACTIVATABLE - m_dataViewListColumn32111111111 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Server - wxDATAVIEW_CELL_INERT - m_dataViewListColumn41 - protected - Text - -1 - - - - - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer9011 - wxVERTICAL - none - - 5 - wxEXPAND|wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow41 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - -1,280 - ; ; forward_declare - 0 - - - - wxBORDER_DEFAULT|wxHSCROLL - - - bSizer8911 - wxHORIZONTAL - public - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmap6 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - - - - - - - - - - - 5 - wxEXPAND - 0 - - -1,-1 - bSizer106 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Job details - 0 - - 0 - -1,-1 - - 0 - - 1 - m_staticText64 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - -1,-1 - -1,-1 - m_joblist_item_details - protected - - 480,-1 - wxDV_NO_HEADER|wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES - ; ; forward_declare - - - JobList - wxBORDER_DEFAULT - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn1 - protected - Text - -1 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn2 - protected - Text - -1 - - - - - - - - - - - txt2img - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_text2img_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - onTxt2ImgFileDrop - - -1,100 - sizer0004 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer811 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - -1,100 - bSizer331 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_notebook3 - 1 - - - protected - 1 - - Resizable - 1 - - wxNB_RIGHT - ; ; forward_declare - 0 - - - - - - - Diffusion - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_diffusionPreviewTab - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer991 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/preview.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_txt2txtDeiffusionPreview - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - ; ; forward_declare - 0 - - - - wxFULL_REPAINT_ON_RESIZE - - - - - - - - Controlnet - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_controlnetPreviewTab - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer981 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/controlnet.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_controlnetImagePreview - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - ; ; forward_declare - 0 - - - - wxFULL_REPAINT_ON_RESIZE - - - - - - - - - - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer82 - wxVERTICAL - none - - 1 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - 0 - - 0 - -1,100 - 1 - m_prompt - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - onTxt2ImgFileDrop - OnPromptText - - - - 1 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - ,90,400,-1,70,0 - 0 - - wxID_ANY - - 0 - - 0 - - 0 - -1,100 - 1 - m_neg_prompt - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - onTxt2ImgFileDrop - OnNegPromptText - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 5 - wxEXPAND - 1 - - - bSizer1011 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer122 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/interrogation.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Help - - 0 - - 0 - - - 0 - - 1 - m_bpButton25 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - What is this? - - wxFILTER_NONE - wxDefaultValidator - - - - - onWhatIsThis - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - For more information, click the button with the question mark icon. To use the FLUX model, select the "Diffusion Model" file picker and choose the FLUX model. For SD3.5, use the dropdown menu at the top to select a model. - 0 - - 0 - - - 0 - - 1 - m_staticText70 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - onTxt2ImgFileDrop - - - - - - 5 - wxEXPAND - 0 - - - bSizer10212 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - SLG scale: - 0 - - 0 - - - 0 - - 1 - m_staticText522 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - skip layer guidance (SLG) scale, only for DiT models: (default: 0.0) - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 1 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.5 - 0 - 100 - - 0 - - 0 - - 0 - - 1 - slgScale - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - skip layer guidance (SLG) scale, only for DiT models: (default: 0.0) - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer102121 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Skip layers: - 0 - - 0 - - - 0 - - 1 - m_staticText5221 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - Layers to skip for SLG steps: (default: [7,8,9]) - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_skipLayers - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Layers to skip for SLG steps: (default: [7,8,9]) - - - wxDefaultValidator - - 7,8,9 - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer1021211 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Skip Layer Start: - 0 - - 0 - - - 0 - - 1 - m_staticText52211 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - SLG enabling point: (default: 0.01) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 2 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.01 - 0.01 - 1 - - 0 - - 0.01 - - 0 - - 1 - skipLayerStart - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - SLG enabling point: (default: 0.01) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer10212111 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Skip Layer End: - 0 - - 0 - - - 0 - - 1 - m_staticText522111 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - SLG disabling point: (default: 0.2) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 2 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.01 - 0.2 - 1 - - 0 - - 0.01 - - 0 - - 1 - skipLayerEnd - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - SLG disabling point: (default: 0.2) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer121 - wxVERTICAL - none - - 5 - wxEXPAND | wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_staticline41 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_HORIZONTAL - ; ; forward_declare - 0 - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer1021111 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Diffusion Model: - 0 - - 0 - - - 0 - - 1 - m_staticText52111 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - Diffusion models, for example FLUX - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - - 1 - m_filePickerDiffusionModel - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf - - - - onFilePickerDiffusionModel - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Flash attention - - 0 - - - 0 - - 1 - diffusionFlashAttn - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Use flash attention in the diffusion model. This will reduce significantly the memory uage (for low vram). Might lower quality, since it implies converting k and v to f16. This might crash if it is not supported by the backend. - - wxFILTER_NONE - wxDefaultValidator - - - - - onDiffusionFlashAttn - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Clean model - - 0 - - 0 - - - 0 - - 1 - m_cleanDiffusionModel - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Clean model - - wxFILTER_NONE - wxDefaultValidator - - - - - onCleanDiffusionModel - - - - - - 5 - wxEXPAND - 0 - - - bSizer1021 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - ClipL: - 0 - - 0 - - - 0 - - 1 - m_staticText52 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - - 1 - m_filePickerClipL - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf - - - - onFilePickerClipL - - - - - - 5 - wxEXPAND - 0 - - - bSizer10211 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - ClipG: - 0 - - 0 - - - 0 - - 1 - m_staticText521 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - - 1 - m_filePickerClipG - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf - - - - onFilePickerClipG - - - - - - 5 - wxEXPAND - 0 - - - bSizer102111 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - T5XXL: - 0 - - 0 - - - 0 - - 1 - m_staticText5211 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - - 1 - m_filePickerT5XXL - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf - - - - onFilePickerT5XXL - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer34 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - 260,-1 - 1 - m_controlnetImageOpen - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG - - - - OnControlnetImageOpen - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - CN on CPU - - 0 - - - 0 - - 1 - cnOnCpu - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Keep controlnet on CPU - - wxFILTER_NONE - wxDefaultValidator - - - - - onCnOnCpu - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - -1,-1 - 1 - m_controlnetModels - 1 - - - protected - 1 - - Resizable - 0 - 1 - 210,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 1 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.1 - 0.9 - 0.9 - - 0 - - 0 - - 0 - - 1 - m_controlnetStrength - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Show full - - 0 - - 0 - - - 0 - - 1 - m_controlnetImagePreviewButton - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Show the original controlnet image - - wxFILTER_NONE - wxDefaultValidator - - - - - OnControlnetImagePreviewButton - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Delete - - 0 - - 0 - - - 0 - - 1 - m_controlnetImageDelete - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Remove control image - - wxFILTER_NONE - wxDefaultValidator - - - - - OnControlnetImageDelete - - - - - - - - - Load From Embedded File; icons/16/picture.png - img2img - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_image2image_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - img2img - wxTAB_TRAVERSAL - Onimg2imgDropFile - - - bSizer24 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - bSizer28 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - - bSizer29 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_notebook4 - 1 - - - protected - 1 - - Resizable - 1 - - wxNB_RIGHT - ; ; forward_declare - 0 - - - - - - - Diffusion - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel23 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer1003 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/preview.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_img2imgDiffusionPreview - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - Onimg2imgDropFile - - - - - - - - Input image - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel22 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer101 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/sd.cpp.gui_blankimage.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_img2img_preview - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - Onimg2imgDropFile - - - - - - - - - - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer33 - wxVERTICAL - none - - 1 - wxEXPAND|wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - -1,100 - 1 - m_prompt2 - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnPromptText - - - - 1 - wxEXPAND|wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - -1,100 - 1 - m_neg_prompt2 - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnNegPromptText - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer38 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select an image - - 0 - 470,-1 - 1 - m_img2imgOpen - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG - - - - OnImageOpenFileChanged - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Strength: - 0 - - 0 - - - 0 - - 1 - m_staticText24 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 2 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.1 - 0.75 - 0.99 - - 0 - - 0 - - 0 - - 1 - m_strength - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Show full - - 0 - - 0 - - - 0 - - 1 - m_img2im_preview_img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnImg2ImgPreviewButton - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - MyButton - - 0 - - 0 - - - 0 - - 1 - m_delete_initial_img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnDeleteInitialImage - - - - - - - - - - Upscaler - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_upscaler - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - upscaler - wxTAB_TRAVERSAL - OnUpscalerDropFile - - - bSizer68 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - bSizer999 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - - bSizer1000 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/sd.cpp.gui_blankimage.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - -1,-1 - - 0 - 200,-1 - 1 - m_upscaler_source_image - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - ; ; forward_declare - 0 - - - - - - - - - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer69 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer71 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Source Image - 0 - - 0 - - - 0 - - 1 - m_staticText62 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select an image - - 0 - - 1 - m_upscaler_filepicker - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG - - - - OnImageOpenFilePickerChanged - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - MyButton - - 0 - - 0 - - - 0 - - 1 - m_delete_upscale_image - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnDeleteUpscaleImage - - - - - - 5 - wxEXPAND - 0 - - - bSizer70 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Upscaler model - 0 - - 0 - - - 0 - - 1 - m_staticText61 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_upscaler_model - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnUpscalerModelSelection - - - - - - 5 - wxEXPAND - 0 - - - bSizer72 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Width: - 0 - - 0 - - - 0 - - 1 - m_staticText63 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_width - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Height: - 0 - - 0 - - - 0 - - 1 - m_staticText65 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_height - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxEXPAND - 0 - - - bSizer721 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Width: - 0 - - 0 - - - 0 - - 1 - m_staticText631 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_target_width - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Height: - 0 - - 0 - - - 0 - - 1 - m_staticText651 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_target_height - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxEXPAND - 0 - - - bSizer73 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Upscale factor - 0 - - 0 - - - 0 - - 1 - m_staticText67 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - 4 - 4 - - 0 - - 1 - - 0 - - 1 - m_upscaler_factor - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - - ; ; forward_declare - 0 - - - - - - OnUpscalerFactorChange - - - - - - 5 - wxEXPAND - 1 - - - bSizer951 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - wxSYS_COLOUR_WINDOW - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_upscalerHelp - 1 - - - public - 1 - - Resizable - 1 - - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - - OnHtmlLinkClicked - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer77 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Keep upscale model in memory - - 0 - - - 0 - - 1 - m_keep_upscaler_in_memory - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - WARNING: If you check this box, the upscaler model will remain in memory for the next job, which could lead to a memory overflow or program crash (segfault). - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Keep checkpoints in memory - - 0 - - - 0 - - 1 - m_keep_other_models_in_memory - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - WARNING: If you check this box, the SD model from the previous job will remain in RAM/VRAM, which could potentially lead to a program crash (segfault). - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - Image info - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_imageinfo - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer115 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 200 - - 0 - - 1 - m_splitter4 - 1 - - - public - 1 - - Resizable - 0.5 - 0 - -1 - 1 - - wxSPLIT_VERTICAL - wxSP_BORDER - ; ; forward_declare - 0 - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow5 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - - ; ; forward_declare - 0 - - - - wxHSCROLL|wxVSCROLL - - - bSizer117 - wxVERTICAL - public - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - Load From Embedded File; images/sd.cpp.gui_blankimage.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - 1024,1024 - - 0 - 384,384 - 1 - m_imageinfo_preview - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - OnImageInfoDrop - - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow7 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - - ; ; forward_declare - 0 - - - - wxHSCROLL|wxVSCROLL - - - imageInfoSizer - wxVERTICAL - public - - 5 - wxEXPAND - 1 - - - bSizer119 - wxVERTICAL - public - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_imageInfoPrompt - 1 - - - protected - 1 - - Resizable - 1 - -1,120 - wxTE_MULTILINE|wxTE_READONLY - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer108 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Copy to txt2img prompt - - 0 - - 0 - - - 0 - - 1 - m_imageInfoPromptTo2txt2img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnImageInfoCopyPrompt - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Copy to img2img prompt - - 0 - - 0 - - - 0 - - 1 - m_imageInfoPromptTo2img2img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnImageInfoCopyPrompt - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_imageInfoNegPrompt - 1 - - - protected - 1 - - Resizable - 1 - -1,120 - wxTE_MULTILINE|wxTE_READONLY - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer1081 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Copy to txt2img prompt - - 0 - - 0 - - - 0 - - 1 - m_imageInfoNegPromptTo2txt2img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnImageInfoCopyPrompt - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Copy to img2img prompt - - 0 - - 0 - - - 0 - - 1 - m_imageInfoNegPromptTo2img2img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnImageInfoCopyPrompt - - - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - -1,120 - 1 - m_imageInfoList - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_LEFT|wxTE_MULTILINE|wxTE_READONLY - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer112 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Find and select model - - 0 - - 0 - - - 0 - - 1 - m_ImageInfoTryFindModel - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Try to find and load the model by the image parameters - - wxFILTER_NONE - wxDefaultValidator - - - - - OnImageInfoTryFindModel - - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer116 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Load all to txt2img - - 0 - - 0 - - - 0 - - 1 - m_imageInfoLoadTotxt - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnImageInfoLoadTxt2img - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Load all to img2img - - 0 - - 0 - - - 0 - - 1 - m_imageInfoLoadToimg2img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnImageInfoLoadImg2img - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - 400,-1 - Select a file - - 0 - 200,-1 - 1 - m_imageInfoOpen - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG - - - - OnImageInfoOpen - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Clear - - 0 - - 0 - - - 0 - - 1 - m_cleanImageInfo - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Clear - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCleanImageInfo - - - - - - - - - Load From Embedded File; icons/16/cube.png - Models - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_models_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - models - wxTAB_TRAVERSAL - - - bSizer20 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - - bSizer102 - wxVERTICAL - none - - 5 - wxEXPAND | wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_modelTreeList - 1 - - - protected - 1 - - Resizable - 1 - - wxTL_MULTIPLE - ; ; forward_declare - 0 - - - - - OnDataModelTreeActivated - OnDataModelTreeContextMenu - OnDataModelTreeSelected - - wxALIGN_LEFT - wxCOL_RESIZABLE|wxCOL_SORTABLE - Name - wxCOL_WIDTH_AUTOSIZE - - - wxALIGN_LEFT - wxCOL_RESIZABLE|wxCOL_SORTABLE - Size - wxCOL_WIDTH_AUTOSIZE - - - wxALIGN_LEFT - wxCOL_RESIZABLE|wxCOL_SORTABLE - Type - wxCOL_WIDTH_AUTOSIZE - - - wxALIGN_LEFT - wxCOL_RESIZABLE - Hash - wxCOL_WIDTH_AUTOSIZE - - - - - 5 - wxEXPAND|wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_modelDetailsImageList - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - -1,280 - ; ; forward_declare - 0 - - - - wxBORDER_DEFAULT|wxHSCROLL - - - bSizer891 - wxHORIZONTAL - public - - - - - - - 5 - wxEXPAND - 0 - - - bSizer1001 - wxVERTICAL - public - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Model details - 0 - - 0 - -1,-1 - - 0 - -1,-1 - 1 - m_staticText641 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxEXPAND - 0 - - - bSizer107 - wxVERTICAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 1 - - wxID_ANY - wxFB Website - - 0 - - - 0 - - 1 - m_model_info_link - - 1 - - - protected - 1 - - Resizable - 1 - - wxHL_DEFAULT_STYLE - ; ; forward_declare - 0 - - http://www.wxformbuilder.org - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 0 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - [F]avorite - - 0 - - - 0 - - 1 - m_ModelFavorite - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnModelFavoriteChange - - - - - - 5 - wxALL|wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_model_details - protected - - 480,-1 - wxDV_NO_HEADER|wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES - ; ; forward_declare - - - - wxBORDER_DEFAULT - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn11 - protected - Text - -1 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn21 - protected - Text - -1 - - - - - 5 - wxALL|wxEXPAND|wxRESERVE_SPACE_EVEN_IF_HIDDEN - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 1 - wxID_ANY - - 0 - -1,-1 - - 0 - -1,300 - 1 - m_model_details_description - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - wxBORDER_DEFAULT|wxFULL_REPAINT_ON_RESIZE|wxHSCROLL|wxVSCROLL - - - - - - - - - - - 5 - wxEXPAND | wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 1 - wxID_ANY - - 0 - - - 0 - - 1 - m_rightMainPanel - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - 330,-1 - ; ; forward_declare - 0 - - - - wxBORDER_THEME|wxHSCROLL|wxVSCROLL - - 2 - wxBOTH - - - 0 - - fgSizer2 - wxFLEX_GROWMODE_NONE - none - 0 - 0 - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Vae: - 0 - - 0 - - - 0 - -1,-1 - 1 - m_staticText161 - 1 - - - protected - 1 - - Resizable - 1 - 60,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxEXPAND - 1 - - - bSizer131 - wxHORIZONTAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - - wxID_ANY - - 0 - -1,-1 - - 0 - -1,-1 - 1 - m_vae - 1 - - - protected - 1 - - Resizable - 0 - 1 - 120,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onVaeSelect - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - CPU - - 0 - - - 0 - - 1 - vaeOnCpu - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - VAE on CPU - - wxFILTER_NONE - wxDefaultValidator - - - - - onVAEOnCpu - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - VAE tiling - - 0 - - - 0 - - 1 - m_vae_tiling - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Process vae in tiles to reduce memory usage - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - VAE decode only - - 0 - - - 0 - - 1 - m_vae_decode_only - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - CFG: - 0 - - 0 - - - 0 - - 1 - m_staticText231 - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 1 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.1 - 0 - 15 - - 0 - -1,-1 - 0 - - 0 - -1,-1 - 1 - m_cfg - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - 7.0 - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Clip skip: - 0 - - 0 - - - 0 - - 1 - m_staticText234 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1) <= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x - - - - 0 - - - - 5 - wxEXPAND - 1 - - - bSizer129 - wxHORIZONTAL - none - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - -1 - 2 - - 0 - - -1 - - 0 - -1,-1 - 1 - m_clip_skip - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1) <= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x - 0 - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - CPU - - 0 - - - 0 - - 1 - clipOnCpu - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - CLIP on CPU - - wxFILTER_NONE - wxDefaultValidator - - - - - onClipOnCpu - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - TAESD: - 0 - - 0 - -1,-1 - - 0 - - 1 - m_staticText20 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - Using Tiny AutoEncoder for fast decoding (low quality) - - - - -1 - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - -1,-1 - - 0 - -1,-1 - 1 - m_taesd - 1 - - - protected - 1 - - Resizable - 0 - 1 - 180,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Batch: - 0 - - 0 - - - 0 - - 1 - m_staticText15 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - number of images to generate. - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 1 - 1000 - - 0 - -1,-1 - 1 - - 0 - - 1 - m_batch_count - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - number of images to generate. - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Sampler: - 0 - - 0 - - - 0 - - 1 - m_staticText163 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - sampling method (default: "euler_a") - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - - - 1 - - 0 - - wxID_ANY - - 0 - -1,-1 - - 0 - -1,-1 - 1 - m_sampler - 1 - - - protected - 1 - - Resizable - 0 - 1 - 180,-1 - - ; ; forward_declare - 0 - sampling method (default: "euler_a") - - wxFILTER_NONE - wxDefaultValidator - - - - - onSamplerSelect - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Scheduler: - 0 - - 0 - - - 0 - - 1 - m_schedulertext - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - -1,-1 - - 0 - - 1 - m_scheduler - 1 - - - protected - 1 - - Resizable - 0 - 1 - 180,-1 - - ; ; forward_declare - 0 - Weight type. If not specified, the default is the type of the weight file. - - wxFILTER_NONE - wxDefaultValidator - - - - - onTypeSelect - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Seed: - 0 - - 0 - - - 0 - - 1 - m_staticText233 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxEXPAND - 1 - - - bSizer128 - wxHORIZONTAL - none - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - -1 - 999999999 - - 0 - - -1 - - 0 - -1,-1 - 1 - m_seed - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - -1 - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/dice_four.png - - 1 - 0 - 1 - - 0 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_random_seed - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Generate a random seed - - wxFILTER_NONE - wxDefaultValidator - - - - - onRandomGenerateButton - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Steps: - 0 - - 0 - - - 0 - - 1 - m_staticText14 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - number of sample steps (default: 20) - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 20 - 100 - - 0 - - 0 - - 0 - -1,-1 - 1 - m_steps - 1 - - - protected - 1 - - Resizable - 1 - 180,-1 - - ; ; forward_declare - 0 - number of sample steps (default: 20) - 20 - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Width: - 0 - - 0 - - - 0 - - 1 - m_staticText237 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - 512 - 2048 - - 0 - - 256 - - 0 - - 1 - m_width - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - 512 - - - - OnWHChange - OnWHChange - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Height: - 0 - - 0 - - - 0 - - 1 - m_staticText239 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 0 - wxEXPAND - 1 - - - bSizer127 - wxHORIZONTAL - none - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - 509 - 2048 - - 0 - - 256 - - 0 - - 1 - m_height - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - 512 - - - - OnWHChange - OnWHChange - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/replace.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_button7 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Swap the resolution - - wxFILTER_NONE - wxDefaultValidator - - - - - onResolutionSwap - - - - - - 0 - wxALIGN_RIGHT - 0 - - - bSizer126 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/disk.png - - 1 - 0 - 1 - Save the current settings into a new preset, or overwrite an exists one - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Save preset - - 0 - - 0 - - - 0 - - 1 - m_save_preset - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Save the current settings into preset - - wxFILTER_NONE - wxDefaultValidator - - - - - onSavePreset - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - Load a selected preset. The preset settings will over write the current generation settings - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Load selected preset - - 0 - - 0 - - - 0 - - 1 - m_load_preset - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Load the selected preset - - wxFILTER_NONE - wxDefaultValidator - - - - - onLoadPreset - - - - - - 5 - wxEXPAND - 1 - - - bSizer91 - wxHORIZONTAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_preset_list - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onSelectPreset - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Delete preset - - 0 - - 0 - - - 0 - - 1 - m_delete_preset - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onDeletePreset - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Low res.: - 0 - - 0 - - - 0 - - 1 - m_staticText46 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - Lower resolutions for SD1.x - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - "Select one" "640x384" "512x512" "512x768" - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_sd15Res - 1 - - - protected - 1 - - Resizable - 0 - 1 - 160,-1 - - ; ; forward_declare - 0 - Lower resolutions for SD1.x - - wxFILTER_NONE - wxDefaultValidator - - - - - onSd15ResSelect - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - High Res.: - 0 - - 0 - - - 0 - - 1 - m_staticText461 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - Higher resolutions for FLUX/SDXL/SD3.5 - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - "Select one" "1024x1024" "1152x896" "1216x832" "1344x768" "1536x640" - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_sdXlres - 1 - - - protected - 1 - - Resizable - 0 - 1 - 160,-1 - - ; ; forward_declare - 0 - Higher resolutions for FLUX/SDXL/SD3.5 - - wxFILTER_NONE - wxDefaultValidator - - - - - onSdXLResSelect - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Prompt presets: - 0 - - 0 - - - 0 - - 1 - m_staticText49 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_promptPresets - 1 - - - protected - 1 - - Resizable - 0 - 1 - 160,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/play.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Queue - - 0 - - 0 - - - 0 - - 1 - m_queue - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onGenerate - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - "local" - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 1 - wxID_ANY - - 0 - - - 0 - - 1 - m_server - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnServerSelect - - - - - - - - - - 5 - wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 0 - 0 - Dock - 0 - Left - 0 - - - 1 - ,90,400,-1,70,0 - 0 - - wxID_ANY - - 0 - -1,200 - 0 - - 0 - -1,-1 - 1 - logs - 1 - - - protected - 1 - - Resizable - 1 - -1,120 - wxTE_WORDWRAP|wxTE_READONLY|wxTE_MULTILINE|wxTE_AUTO_URL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - 1 - 0 - - - 2 - - - wxID_ANY - - - m_statusBar166 - protected - - - wxSTB_DEFAULT_STYLE - ; ; forward_declare - - - - - - - - - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - - wxID_ANY - - -1,-1 - Settings - - -1,-1 - wxDEFAULT_FRAME_STYLE|wxFRAME_FLOAT_ON_PARENT|wxRESIZE_BORDER|wxSTAY_ON_TOP|wxSYSTEM_MENU - ; ; forward_declare - Settings - - 0 - - sd.cpp.gui.settings - wxFULL_REPAINT_ON_RESIZE|wxTAB_TRAVERSAL|wxBORDER_THEME - 1 - - - sizer2010 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - - 1 - m_notebook1696 - 1 - - - protected - 1 - - Resizable - 1 - - wxBK_DEFAULT - ; ; forward_declare - 0 - - - - wxBORDER_THEME - - Load From Embedded File; icons/16/disk.png - Paths - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - - 1 - m_path_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - sizer2011 - wxVERTICAL - none - - 5 - wxALL - 0 - - - bSizer16 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Models path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText172410 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_model_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openModelsPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer19 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Lora path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText18013172027 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_lora_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openLorasPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer17 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Vae path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText18013 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_vae_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openVaesPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer18 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Embedding path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText1801317202731 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_embedding_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openEmbeddingsPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer23 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - TAESD path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText21 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_taesd_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openTaesdPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/interrogation.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - nolabel - - 0 - - 0 - - - 0 - - 1 - m_bpButton1 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - TAESD models you can download from here: https://github.com/madebyollin/taesd/tree/main - - wxFILTER_NONE - wxDefaultValidator - - - - - OnTAESDHelpClick - - - - - - 5 - wxALL - 0 - - - bSizer35 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Controlnet path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText23 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_controlnet_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openControlnetPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer81 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - ESRGAN path - 0 - - 0 - - - 0 - - 1 - m_staticText77 - 1 - - - protected - 1 - - Resizable - 1 - 150,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_esrgan_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openEsrganPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - - 1 - m_staticLine223 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_HORIZONTAL - ; ; forward_declare - 0 - - - - - - - - 5 - wxALL - 0 - - - bSizer20 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Presets path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText19 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_presets_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openPresetsPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer21 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Images output - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText180131720 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_images_output - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_SMALL|wxDIRP_DEFAULT_STYLE - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openOutputPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - - - - Load From Embedded File; icons/16/palette.png - Diffusion - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - - 1 - m_settings - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - sizer2017 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 0 - - 2 - 0 - - gSizer3 - none - 0 - 0 - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Generate missing base model hash before diffusion - - 0 - - - 0 - - 1 - m_autogen_hash - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - 2 - 0 - - sizer2018 - none - 0 - 0 - - 5 - wxALIGN_LEFT|wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - Keep the model in memory (vRAM or RAM, depends on diffusion type) when it is possible. Text to image and image to image can use the same model. If controlnet model is selected and used, the all new job need to reload the model before run. If type is changed (eg fp16 -> Q4_1), then the model need to be reloaded, but usable with mode diffusion without reload. If you disable this option, the model allways unloaded from memory after the job is finished. - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - - wxID_ANY - Keep model in memory - - 0 - - - 0 - 230,-1 - 1 - m_keep_model_in_memory - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Keep model in (v)RAM after diffusions - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - 2 - 0 - - sizer2019 - none - 0 - 0 - - 5 - wxALIGN_LEFT|wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - - wxID_ANY - Save all images (intermediate images) - - 0 - - - 0 - -1,-1 - 1 - m_save_all_image - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - - bSizer10 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Output images format - 0 - - 0 - - - 0 - 200,-1 - 1 - m_staticText16 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - "JPG" "PNG" - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_image_type - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALIGN_CENTER_HORIZONTAL|wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,93,300,8,70,0 - 0 - 0 - wxID_ANY - PNG meta data not supported yet - 0 - - 0 - - - 0 - - 1 - m_staticText38 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxALL|wxEXPAND - 0 - - - bSizer112 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - JPEG quality - 0 - - 0 - - - 0 - 200,-1 - 1 - m_staticText61 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 100 - - 0 - - 0 - - 0 - 250,-1 - 1 - m_image_quality - 1 - - - protected - 1 - - Resizable - 1 - - wxSL_HORIZONTAL|wxSL_LABELS - ; ; forward_declare - 0 - Image output quality, default: 90% - - wxFILTER_NONE - wxDefaultValidator - - 95 - - - - OnImgQualityScroll - - - - - - 5 - wxEXPAND|wxALL - 0 - - - bSizer113 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - PNG compression level - 0 - - 0 - - - 0 - 200,-1 - 1 - m_staticText62 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 9 - - 0 - - 0 - - 0 - 250,-1 - 1 - m_png_compression - 1 - - - protected - 1 - - Resizable - 1 - - wxSL_HORIZONTAL|wxSL_LABELS - ; ; forward_declare - 0 - Image output quality, default: 90% - - wxFILTER_NONE - wxDefaultValidator - - 0 - - - - OnPngCompressionScroll - - - - - - 5 - wxEXPAND - 0 - - - bSizer72 - wxVERTICAL - none - - - - 5 - wxALL|wxEXPAND - 0 - - - bSizer22 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Number of CPU cores - 0 - - 0 - - - 0 - 200,-1 - 1 - m_staticText191 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 2 - 100 - - 0 - - -1 - - 0 - - 1 - m_threads - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_staticNumberOfCores - 1 - - - public - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxEXPAND|wxALL - 0 - - - bSizer114 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Image name format - 0 - - 0 - -1,-1 - - 0 - 140,-1 - 1 - m_staticText621 - 1 - - - protected - 1 - - Resizable - 1 - - wxST_NO_AUTORESIZE - ; ; forward_declare - 0 - - - - - 140 - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/interrogation.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Help - - 0 - - 0 - - - 0 - - 1 - m_bpButton27 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOutputFileNameFormatHelpClick - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_output_filename_format - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - [mode]_[jobid]_[seed]_[width]x[height]_[batch] - - - - OnOutputFilenameText - - - - - - - - - - GUI - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_settings_ui - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - 2 - wxBOTH - 0,1 - - 0 - - fgSizer3 - wxFLEX_GROWMODE_SPECIFIED - none - 0 - 0 - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Show notifications - - 0 - - - 0 - - 1 - m_show_notifications - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onShowNotificationCheck - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Notification timeout: - 0 - - 0 - - - 0 - - 1 - m_staticText60 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 60 - 120 - - 0 - - 30 - - 0 - - 1 - m_notification_timeout - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - The timeout is depends on the OS and notification type - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Language: - 0 - - 0 - - - 0 - 160,-1 - 1 - m_staticText50 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_LEFT - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 160,-1 - 1 - m_language - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Only show favorite models - - 0 - - - 0 - - 1 - m_favorite_models_only - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Only display the models marked as favorites in the model selector of the main GUI - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - - - - - CivitAi - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel18 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer89 - wxVERTICAL - none - - 5 - wxEXPAND|wxALL - 0 - - - bSizer90 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Enable CivitAi features - - 0 - - - 0 - - 1 - m_enableCivitai - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Enable or disable all CivitAi features - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - 5 - wxEXPAND|wxALL - 0 - - - bSizer91 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - CivitAi.com API key - 0 - - 0 - - - 0 - - 1 - m_staticText42 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_civitai_api_key - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_PASSWORD - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/interrogation.png - - 1 - 0 - 1 - Click to the question mark button to get help - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Help - - 0 - - 0 - - - 0 - - 1 - m_bpButton15 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - How to generate API key on CivitAi.com - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCivitaiHelpButton - - - - - - - - - - Servers - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel181 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer891 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_serverList - protected - - - wxDV_HORIZ_RULES|wxDV_MULTIPLE|wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VERT_RULES - ; ; forward_declare - - - remote_server_list - - OnServerListEditingDone - OnServerListEditingStarted - OnServerListStartEditing - OnServerListItemValueChanged - OnServerListSelectionChanged - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Host - wxDATAVIEW_CELL_EDITABLE - m_dataViewListColumn36 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Port - wxDATAVIEW_CELL_EDITABLE - m_dataViewListColumn37 - protected - Text - -1 - - - wxALIGN_LEFT - wxELLIPSIZE_MIDDLE - wxDATAVIEW_COL_RESIZABLE - Auth key - wxDATAVIEW_CELL_EDITABLE - m_dataViewListColumn38 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn39 - protected - Text - -1 - - - - - 5 - - 0 - - - bSizer110 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Enable - - 0 - - 0 - - - 0 - - 1 - m_serverEnable - 1 - - - protected - 1 - - - - Resizable - 1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - 0 - - - - OnServerEnableToggle - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Add server - - 0 - - 0 - - - 0 - - 1 - m_addServer - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnAddServer - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Host/IP: - 0 - - 0 - - - 0 - - 1 - m_staticText68 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_AddServerHost - 1 - - - protected - 1 - - Resizable - 1 - 160,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Port: - 0 - - 0 - - - 0 - - 1 - m_staticText69 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_AddServerPort - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NUMERIC - wxDefaultValidator - - 8191 - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Delete - - 0 - - 0 - - - 0 - - 1 - m_deleteServer - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnDeleteServer - - - - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/disk.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Save - - 0 - - 0 - - - 0 - - 1 - m_save - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onSave - - - - - - 0 - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - 0 - wxID_ANY - - - ImageDialog - - - wxDEFAULT_DIALOG_STYLE - ; ; forward_declare - - - 0 - - sd.cpp.gui.imagedialog - - - - bSizer27 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmap - 1 - - - public - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - - - - - - 0 - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - 0 - wxID_ANY - - - AboutDialog - - 400,600 - wxDEFAULT_DIALOG_STYLE - ; ; forward_declare - About - - 0 - - - - - - bSizer71 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_about - 1 - - - public - 1 - - Resizable - 1 - - wxHW_NO_SELECTION|wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - - m_aboutOnHtmlLinkClicked - - - - - - 0 - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - 0 - wxID_ANY - - - CivitAiWindow - - 800,600 - wxDEFAULT_FRAME_STYLE - ; ; forward_declare - CivitAI model downloader - - 0 - - - wxTAB_TRAVERSAL - 1 - - - bSizer82 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 0 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel16 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer87 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 400 - - 0 - - 1 - m_splitter3 - 1 - - - protected - 1 - - Resizable - 0.0 - 0 - -1 - 1 - - wxSPLIT_VERTICAL - wxSP_3DBORDER - ; ; forward_declare - 0 - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel25 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer88 - wxVERTICAL - none - - 5 - wxEXPAND|wxALL - 2 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_model_description - 1 - - - protected - 1 - - Resizable - 1 - - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - wxBORDER_THEME - OnHtmlLinkClicked - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,700,-1,70,0 - 0 - 0 - wxID_ANY - Versions - 0 - - 0 - - - 0 - - 1 - m_staticText41 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_model_details - protected - - - wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES - ; ; forward_declare - - - - wxBORDER_DEFAULT - m_model_detailsOnDataViewListCtrlSelectionChanged - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Name - wxDATAVIEW_CELL_INERT - m_dataViewListColumn111 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - baseModel - wxDATAVIEW_CELL_INERT - m_dataViewListColumn22 - protected - Text - -1 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - baseModelType - wxDATAVIEW_CELL_INERT - m_dataViewListColumn21 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Published - wxDATAVIEW_CELL_INERT - m_dataViewListColumn33 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Downloads - wxDATAVIEW_CELL_INERT - m_dataViewListColumn34 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn221 - protected - Text - -1 - - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_model_version_description - 1 - - - protected - 1 - - Resizable - 1 - - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - wxBORDER_THEME - OnHtmlLinkClicked - - - - 5 - wxEXPAND - 0 - - - bSizer93 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,700,-1,70,0 - 0 - 0 - wxID_ANY - Files - 0 - - 0 - - - 0 - - 1 - m_staticText40 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Download - - 0 - - 0 - - - 0 - - 1 - m_model_download - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - m_model_downloadOnButtonClick - - - - - - 5 - wxALL|wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_model_filelist - protected - - - wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES - ; ; forward_declare - - - - wxBORDER_DEFAULT - m_model_filelistOnDataViewListCtrlSelectionChanged - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Name - wxDATAVIEW_CELL_INERT - m_dataViewListColumn1111 - protected - Text - 200 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - Type - wxDATAVIEW_CELL_INERT - m_dataViewListColumn211 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Format - wxDATAVIEW_CELL_INERT - m_dataViewListColumn23 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Size - wxDATAVIEW_CELL_INERT - m_dataViewListColumn24 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Fp - wxDATAVIEW_CELL_INERT - m_dataViewListColumn25 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn231 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Size - wxDATAVIEW_CELL_INERT - m_dataViewListColumn29 - protected - Text - -1 - - - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel24 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer92 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer86 - wxHORIZONTAL - none - - 0 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - "Checkpoints" "LORA" "Embeddings" - 1 - - 0 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 3 - - 0 - - - 0 - - 1 - m_model_type - 1 - - - protected - 1 - - Resizable - 0 - 1 - - wxRA_SPECIFY_ROWS - ; ; forward_declare - 0 - Select the model type to filter - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL|wxLEFT - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_civitai_search - 1 - - - protected - 1 - - Resizable - 1 - 210,-1 - wxTE_PROCESS_ENTER - ; ; forward_declare - 0 - Search for model names - - wxFILTER_NONE - wxDefaultValidator - - - - - - m_civitai_searchOnTextEnter - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Search - - 0 - - 0 - - - 0 - - 1 - m_search - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - m_searchOnButtonClick - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,700,-1,70,0 - 0 - 0 - wxID_ANY - Models - 0 - - 0 - - - 0 - - 1 - m_staticText43 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxEXPAND|wxALL - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_dataViewListCtrl5 - protected - - - wxDV_HORIZ_RULES - ; ; forward_declare - - - - - m_dataViewListCtrl5OnDataViewListCtrlSelectionChanged - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Name - wxDATAVIEW_CELL_INERT - m_dataViewListColumn12 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn13 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Type - wxDATAVIEW_CELL_INERT - m_dataViewListColumn30 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Downloads - wxDATAVIEW_CELL_INERT - m_dataViewListColumn32 - protected - Text - -1 - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,700,-1,70,0 - 0 - 0 - wxID_ANY - Downloads - 0 - - 0 - - - 0 - - 1 - m_staticText431 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_downloads - protected - - - wxDV_HORIZ_RULES - ; ; forward_declare - - - - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - File - wxDATAVIEW_CELL_INERT - m_dataViewListColumn26 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Size - wxDATAVIEW_CELL_INERT - m_dataViewListColumn31 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn301 - protected - Text - 120 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn28 - protected - Progress - 200 - - - - - 5 - wxEXPAND | wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow4 - 1 - - - public - 1 - - Resizable - 5 - 5 - 1 - - ; ; forward_declare - 0 - - - - wxHSCROLL|wxVSCROLL - - - image_container - wxHORIZONTAL - public - - - - - - - - - - - - - - - - 1 - 0 - 1 - - 1 - - 0 - wxID_ANY - - - m_statusBar2 - protected - - - wxSTB_SIZEGRIP - ; ; forward_declare - - - - - - - - 0 - wxAUI_MGR_DEFAULT - 77,77,77 - wxBOTH - - 0 - 0 - 1 - impl_virtual - - 255,255,255 - - 0 - wxID_ANY - 400,68 - - DesktopWidget - - 400,68 - wxFRAME_NO_TASKBAR|wxFRAME_SHAPED|wxSTAY_ON_TOP - ; ; forward_declare - - - 0 - wxWS_EX_TRANSIENT - DesktopWidget - wxBORDER_NONE|wxTRANSPARENT_WINDOW - 1 - OnClose - OnMouseEnter - OnIconize - OnMouseLeave - OnLeftMouseDClick - OnMouseLeftDown - OnMouseLeftUp - OnMouseMotion - OnWidgetPaint - - - bSizer122 - wxHORIZONTAL - none - - 10 - wxALL|wxEXPAND - 1 - - - bSizer128 - wxVERTICAL - none - - 0 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 0 - 0 - Dock - 0 - Left - 0 - 1 - 255,255,255 - 1 - - 0 - 0 - wxID_ANY - Current job: none - 0 - - 0 - - - 0 - - 1 - m_currentStatus - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - wxWS_EX_BLOCK_EVENTS - - - -1 - - - - 0 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - -1,16 - 1 - m_currentProgress - 1 - - - protected - 1 - - 100 - Resizable - 1 - 320,-1 - wxGA_HORIZONTAL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - 0 - wxWS_EX_BLOCK_EVENTS - - - - - - - - - - diff --git a/graphics/window_3.2_tmp.fbp b/graphics/window_3.2_tmp.fbp deleted file mode 100644 index 774b44b..0000000 --- a/graphics/window_3.2_tmp.fbp +++ /dev/null @@ -1,17351 +0,0 @@ - - - - - C++ - ; - 1 - connect - wxSimpleHelpProvider - - - 0 - 0 - ../src/ui/embedded_files - UTF-8 - MainWindow - 1000 - 1 - 1 - UI - MainWindow - ../src/ui - 0 - source_name - 1 - 0 - source_name - - - 1 - 1 - 0 - 0 - - - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - - wxID_ANY - - -1,-1 - mainUI - - 1024,768 - wxDEFAULT_FRAME_STYLE - ; ; forward_declare - sd.cpp.gui - - 0 - - sd.cpp.gui - wxBORDER_DEFAULT - 1 - - -1,-1 - sizer0001 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel10 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - sizer0021 - wxHORIZONTAL - none - - 5 - - 0 - - - bSizer97 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/settings.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Settings - - 0 - - 0 - - - 0 - - 1 - m_settings - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onSettings - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/refresh.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Refresh models - - 0 - - 0 - - - 0 - - 1 - m_refrersh - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onModelsRefresh - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/cube.png - - 1 - 0 - 1 - About the program - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - About - - 0 - - 0 - - - 0 - - 1 - m_about - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - About the sd.cpp.gui.wx - - wxFILTER_NONE - wxDefaultValidator - - - - - OnAboutButton - - - - 5 - wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/civitai.png - - 1 - 0 - 1 - With CivitAi.com model browser, you can search for models or download models - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - About - - 0 - - 0 - - - 0 - - 1 - m_civitai - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open CivitAi.com model browser - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCivitAitButton - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - Load From Embedded File; icons/16/images.png - - 1 - 0 - 1 - - 1 - - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Show Widget - - 0 - - 0 - - - 0 - - 1 - m_showWidget - 1 - - - protected - 1 - - - - Resizable - 1 - - ; ; forward_declare - 0 - Show Widget - - wxFILTER_NONE - wxDefaultValidator - - 0 - - - - OnShowWidget - - - - 5 - wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/cross_circle.png - - 1 - 0 - 1 - This will send a terminate to the background diffuser process. This will clear up all used memory (eg. freeing up all the loaded models) - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 1 - wxID_ANY - Restart background process - - 0 - - 0 - - - 0 - - 1 - m_stop_background_process - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Stop and restart the background process - - wxFILTER_NONE - wxDefaultValidator - - - - - OnStopBackgroundProcess - - - - 5 - wxEXPAND | wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_staticline5 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_VERTICAL - ; ; forward_declare - 0 - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer98 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Model: - 0 - - 0 - - - 0 - -1,-1 - 1 - m_staticText160 - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - -1,-1 - 1 - m_model - 1 - - - protected - 1 - - Resizable - 0 - 1 - 200,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onModelSelect - - - - - - 5 - wxEXPAND - 0 - - - bSizer100 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Type: - 0 - - 0 - - - 0 - - 1 - m_staticText72 - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_type - 1 - - - protected - 1 - - Resizable - 0 - 1 - 200,-1 - - ; ; forward_declare - 0 - Weight type. If not specified, the default is the type of the weight file. - - wxFILTER_NONE - wxDefaultValidator - - - - - onTypeSelect - - - - - - 5 - wxEXPAND - 1 - - - bSizer120 - wxVERTICAL - none - - 5 - wxLEFT|wxTOP - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Current job: none - 0 - - 0 - - - 0 - 300,-1 - 1 - m_currentStatus - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxLEFT - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_currentProgress - 1 - - - protected - 1 - - 100 - Resizable - 1 - 300,-1 - wxGA_HORIZONTAL|wxGA_SMOOTH - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - 0 - - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer123 - wxVERTICAL - none - - - - - - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 320 - - 0 - - 1 - m_splitter6 - 1 - - - public - 1 - - Resizable - 0 - 340 - -1 - 1 - - wxSPLIT_VERTICAL - wxSP_3D - ; ; forward_declare - 0 - - - - - OnMainSplitterSashPosChanged - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel32 - 1 - - - public - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer137 - wxHORIZONTAL - public - - 5 - wxEXPAND | wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 1 - wxID_ANY - - 0 - -1,-1 - - 0 - -1,-1 - 1 - m_modelDetailsPanel - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - ; ; forward_declare - 0 - - - - wxBORDER_THEME|wxTAB_TRAVERSAL - - - bSizer1001 - wxVERTICAL - public - - 5 - wxEXPAND|wxALL - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_model_details - protected - - - wxDV_NO_HEADER|wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES - ; ; forward_declare - - - - wxBORDER_NONE - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn11 - protected - Text - -1 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn21 - protected - Text - -1 - - - - - 5 - wxALL|wxEXPAND|wxRESERVE_SPACE_EVEN_IF_HIDDEN - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 1 - wxID_ANY - - 0 - -1,-1 - - 0 - -1,300 - 1 - m_model_details_description - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - wxBORDER_THEME|wxFULL_REPAINT_ON_RESIZE|wxHSCROLL|wxVSCROLL - - - - - - - 5 - wxEXPAND|wxALL - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - -1,-1 - -1,-1 - m_joblist_item_details - protected - - -1,-1 - wxDV_NO_HEADER|wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES - ; ; forward_declare - - - JobList - wxBORDER_THEME - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn1 - protected - Text - -1 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn2 - protected - Text - -1 - - - - - 5 - wxEXPAND | wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 1 - wxID_ANY - - 0 - - - 0 - - 1 - m_rightMainPanel - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - -1,-1 - ; ; forward_declare - 0 - - - - wxBORDER_THEME|wxHSCROLL|wxVSCROLL - - 2 - wxBOTH - - - 0 - - fgSizer2 - wxFLEX_GROWMODE_SPECIFIED - none - 0 - 0 - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Vae: - 0 - - 0 - - - 0 - -1,-1 - 1 - m_staticText161 - 1 - - - protected - 1 - - Resizable - 1 - 60,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxEXPAND - 1 - - - bSizer131 - wxHORIZONTAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - - wxID_ANY - - 0 - -1,-1 - - 0 - -1,-1 - 1 - m_vae - 1 - - - protected - 1 - - Resizable - 0 - 1 - 120,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onVaeSelect - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - CPU - - 0 - - - 0 - - 1 - vaeOnCpu - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - VAE on CPU - - wxFILTER_NONE - wxDefaultValidator - - - - - onVAEOnCpu - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - VAE tiling - - 0 - - - 0 - - 1 - m_vae_tiling - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Process vae in tiles to reduce memory usage - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - VAE decode only - - 0 - - - 0 - - 1 - m_vae_decode_only - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - CFG: - 0 - - 0 - - - 0 - - 1 - m_staticText231 - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 1 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.1 - 0 - 15 - - 0 - -1,-1 - 0 - - 0 - -1,-1 - 1 - m_cfg - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - 7.0 - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Clip skip: - 0 - - 0 - - - 0 - - 1 - m_staticText234 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1) <= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x - - - - 0 - - - - 5 - wxEXPAND - 1 - - - bSizer129 - wxHORIZONTAL - none - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - -1 - 2 - - 0 - - -1 - - 0 - -1,-1 - 1 - m_clip_skip - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1) <= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x - 0 - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - CPU - - 0 - - - 0 - - 1 - clipOnCpu - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - CLIP on CPU - - wxFILTER_NONE - wxDefaultValidator - - - - - onClipOnCpu - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - TAESD: - 0 - - 0 - -1,-1 - - 0 - - 1 - m_staticText20 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - Using Tiny AutoEncoder for fast decoding (low quality) - - - - -1 - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - -1,-1 - - 0 - -1,-1 - 1 - m_taesd - 1 - - - protected - 1 - - Resizable - 0 - 1 - 180,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Batch: - 0 - - 0 - - - 0 - - 1 - m_staticText15 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - number of images to generate. - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 1 - 1000 - - 0 - -1,-1 - 1 - - 0 - - 1 - m_batch_count - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - number of images to generate. - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Sampler: - 0 - - 0 - - - 0 - - 1 - m_staticText163 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - sampling method (default: "euler_a") - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - - - 1 - - 0 - - wxID_ANY - - 0 - -1,-1 - - 0 - -1,-1 - 1 - m_sampler - 1 - - - protected - 1 - - Resizable - 0 - 1 - 180,-1 - - ; ; forward_declare - 0 - sampling method (default: "euler_a") - - wxFILTER_NONE - wxDefaultValidator - - - - - onSamplerSelect - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Scheduler: - 0 - - 0 - - - 0 - - 1 - m_schedulertext - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - -1,-1 - - 0 - - 1 - m_scheduler - 1 - - - protected - 1 - - Resizable - 0 - 1 - 180,-1 - - ; ; forward_declare - 0 - Weight type. If not specified, the default is the type of the weight file. - - wxFILTER_NONE - wxDefaultValidator - - - - - onTypeSelect - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Seed: - 0 - - 0 - - - 0 - - 1 - m_staticText233 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxEXPAND - 1 - - - bSizer128 - wxHORIZONTAL - none - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - -1 - 999999999 - - 0 - - -1 - - 0 - -1,-1 - 1 - m_seed - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - -1 - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/dice_four.png - - 1 - 0 - 1 - - 0 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_random_seed - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Generate a random seed - - wxFILTER_NONE - wxDefaultValidator - - - - - onRandomGenerateButton - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Steps: - 0 - - 0 - - - 0 - - 1 - m_staticText14 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - number of sample steps (default: 20) - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 20 - 100 - - 0 - - 0 - - 0 - -1,-1 - 1 - m_steps - 1 - - - protected - 1 - - Resizable - 1 - 180,-1 - - ; ; forward_declare - 0 - number of sample steps (default: 20) - 20 - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Width: - 0 - - 0 - - - 0 - - 1 - m_staticText237 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - 512 - 2048 - - 0 - - 256 - - 0 - - 1 - m_width - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - 512 - - - - OnWHChange - OnWHChange - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Height: - 0 - - 0 - - - 0 - - 1 - m_staticText239 - 1 - - - protected - 1 - - Resizable - 1 - 80,-1 - - ; ; forward_declare - 0 - - - - - 0 - - - - 0 - wxEXPAND - 1 - - - bSizer127 - wxHORIZONTAL - none - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - 509 - 2048 - - 0 - - 256 - - 0 - - 1 - m_height - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - 512 - - - - OnWHChange - OnWHChange - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/replace.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_button7 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Swap the resolution - - wxFILTER_NONE - wxDefaultValidator - - - - - onResolutionSwap - - - - - - 0 - wxALIGN_RIGHT - 0 - - - bSizer126 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/disk.png - - 1 - 0 - 1 - Save the current settings into a new preset, or overwrite an exists one - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Save preset - - 0 - - 0 - - - 0 - - 1 - m_save_preset - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Save the current settings into preset - - wxFILTER_NONE - wxDefaultValidator - - - - - onSavePreset - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - Load a selected preset. The preset settings will over write the current generation settings - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Load selected preset - - 0 - - 0 - - - 0 - - 1 - m_load_preset - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Load the selected preset - - wxFILTER_NONE - wxDefaultValidator - - - - - onLoadPreset - - - - - - 5 - wxEXPAND - 1 - - - bSizer91 - wxHORIZONTAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_preset_list - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onSelectPreset - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Delete preset - - 0 - - 0 - - - 0 - - 1 - m_delete_preset - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onDeletePreset - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Low res.: - 0 - - 0 - - - 0 - - 1 - m_staticText46 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - Lower resolutions for SD1.x - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - "Select one" "640x384" "512x512" "512x768" - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_sd15Res - 1 - - - protected - 1 - - Resizable - 0 - 1 - 160,-1 - - ; ; forward_declare - 0 - Lower resolutions for SD1.x - - wxFILTER_NONE - wxDefaultValidator - - - - - onSd15ResSelect - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - High Res.: - 0 - - 0 - - - 0 - - 1 - m_staticText461 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - Higher resolutions for FLUX/SDXL/SD3.5 - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - "Select one" "1024x1024" "1152x896" "1216x832" "1344x768" "1536x640" - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_sdXlres - 1 - - - protected - 1 - - Resizable - 0 - 1 - 160,-1 - - ; ; forward_declare - 0 - Higher resolutions for FLUX/SDXL/SD3.5 - - wxFILTER_NONE - wxDefaultValidator - - - - - onSdXLResSelect - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Prompt presets: - 0 - - 0 - - - 0 - - 1 - m_staticText49 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_promptPresets - 1 - - - protected - 1 - - Resizable - 0 - 1 - 160,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel31 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer138 - wxVERTICAL - public - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - wxSYS_COLOUR_WINDOW - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - 400,200 - 1 - m_notebook1302 - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxBK_DEFAULT - ; ; forward_declare - 0 - - - - wxBORDER_THEME - m_notebook1302OnNotebookPageChanged - - Load From Embedded File; icons/16/images.png - Jobs and Images - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_jobs_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - jobs - wxTAB_TRAVERSAL - - - bSizer17 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer18 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/forward.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Resume all - - 0 - - 0 - - - 0 - - 1 - m_start_jobs - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onJobsStart - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/pause.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Pause all - - 0 - - 0 - - - 0 - - 1 - m_pause_jobs - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onJobsPause - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Delete all - - 0 - - 0 - - - 0 - - 1 - m_delete_all_jobs - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onJobsDelete - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Number of jobs: 0 - 0 - - 0 - - - 0 - - 1 - m_static_number_of_jobs - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxEXPAND - 2 - - -1,-1 - bSizer78 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 0 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 200 - - 0 - - 1 - m_splitter2 - 1 - - - protected - 1 - - Resizable - 1 - -200 - -1 - 1 - - wxSPLIT_VERTICAL - wxSP_3D - ; ; forward_declare - 0 - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_panel14 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer79 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - -1,-1 - m_joblist - protected - - - wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VERT_RULES - ; ; forward_declare - - wxWS_EX_VALIDATE_RECURSIVELY - - - OnJobListItemActivated - onContextMenu - OnJobListItemSelection - - wxALIGN_LEFT - - wxDATAVIEW_COL_HIDDEN|wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Id - wxDATAVIEW_CELL_INERT - m_dataViewListColumn32 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Crated at - wxDATAVIEW_CELL_INERT - m_dataViewListColumn321 - protected - Text - 120 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Type - wxDATAVIEW_CELL_INERT - m_dataViewListColumn3211 - protected - Text - 100 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Model - wxDATAVIEW_CELL_INERT - m_dataViewListColumn32111 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Sampler - wxDATAVIEW_CELL_INERT - m_dataViewListColumn321111 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Seed - wxDATAVIEW_CELL_INERT - m_dataViewListColumn3211111 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Progress - wxDATAVIEW_CELL_INERT - m_dataViewListColumn32111111 - protected - Progress - 80 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Speed - wxDATAVIEW_CELL_INERT - m_dataViewListColumn321111111 - protected - Text - 110 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_ACTIVATABLE - m_dataViewListColumn3211111111 - protected - Text - 150 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_ACTIVATABLE - m_dataViewListColumn32111111111 - protected - Text - -1 - - - - - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer9011 - wxVERTICAL - none - - 5 - wxEXPAND|wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow41 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - -1,280 - ; ; forward_declare - 0 - - - - wxBORDER_DEFAULT|wxHSCROLL - - - bSizer8911 - wxHORIZONTAL - public - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmap6 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - - - - - - - - - - - - - txt2img - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_text2img_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - onTxt2ImgFileDrop - - -1,100 - sizer0004 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer811 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer82 - wxVERTICAL - none - - 1 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - 0 - - 0 - -1,100 - 1 - m_prompt - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - onTxt2ImgFileDrop - OnPromptText - - - - 1 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - ,90,400,-1,70,0 - 0 - - wxID_ANY - - 0 - - 0 - - 0 - -1,100 - 1 - m_neg_prompt - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - onTxt2ImgFileDrop - OnNegPromptText - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 5 - wxEXPAND - 1 - - - bSizer1011 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer122 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/interrogation.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Help - - 0 - - 0 - - - 0 - - 1 - m_bpButton25 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - What is this? - - wxFILTER_NONE - wxDefaultValidator - - - - - onWhatIsThis - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - For more information, click the button with the question mark icon. To use the FLUX model, select the "Diffusion Model" file picker and choose the FLUX model. For SD3.5, use the dropdown menu at the top to select a model. - 0 - - 0 - - - 0 - - 1 - m_staticText70 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - onTxt2ImgFileDrop - - - - - - 5 - wxEXPAND - 0 - - - bSizer10212 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - SLG scale: - 0 - - 0 - - - 0 - - 1 - m_staticText522 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - skip layer guidance (SLG) scale, only for DiT models: (default: 0.0) - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 1 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.5 - 0 - 100 - - 0 - - 0 - - 0 - - 1 - slgScale - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - skip layer guidance (SLG) scale, only for DiT models: (default: 0.0) - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer102121 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Skip layers: - 0 - - 0 - - - 0 - - 1 - m_staticText5221 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - Layers to skip for SLG steps: (default: [7,8,9]) - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_skipLayers - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Layers to skip for SLG steps: (default: [7,8,9]) - - - wxDefaultValidator - - 7,8,9 - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer1021211 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Skip Layer Start: - 0 - - 0 - - - 0 - - 1 - m_staticText52211 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - SLG enabling point: (default: 0.01) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 2 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.01 - 0.01 - 1 - - 0 - - 0.01 - - 0 - - 1 - skipLayerStart - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - SLG enabling point: (default: 0.01) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer10212111 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Skip Layer End: - 0 - - 0 - - - 0 - - 1 - m_staticText522111 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - SLG disabling point: (default: 0.2) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 2 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.01 - 0.2 - 1 - - 0 - - 0.01 - - 0 - - 1 - skipLayerEnd - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - SLG disabling point: (default: 0.2) SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END]) - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer121 - wxVERTICAL - none - - 5 - wxEXPAND | wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_staticline41 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_HORIZONTAL - ; ; forward_declare - 0 - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer1021111 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Diffusion Model: - 0 - - 0 - - - 0 - - 1 - m_staticText52111 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - Diffusion models, for example FLUX - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - - 1 - m_filePickerDiffusionModel - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf - - - - onFilePickerDiffusionModel - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Flash attention - - 0 - - - 0 - - 1 - diffusionFlashAttn - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Use flash attention in the diffusion model. This will reduce significantly the memory uage (for low vram). Might lower quality, since it implies converting k and v to f16. This might crash if it is not supported by the backend. - - wxFILTER_NONE - wxDefaultValidator - - - - - onDiffusionFlashAttn - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Clean model - - 0 - - 0 - - - 0 - - 1 - m_cleanDiffusionModel - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Clean model - - wxFILTER_NONE - wxDefaultValidator - - - - - onCleanDiffusionModel - - - - - - 5 - wxEXPAND - 0 - - - bSizer1021 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - ClipL: - 0 - - 0 - - - 0 - - 1 - m_staticText52 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - - 1 - m_filePickerClipL - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf - - - - onFilePickerClipL - - - - - - 5 - wxEXPAND - 0 - - - bSizer10211 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - ClipG: - 0 - - 0 - - - 0 - - 1 - m_staticText521 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - - 1 - m_filePickerClipG - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf - - - - onFilePickerClipG - - - - - - 5 - wxEXPAND - 0 - - - bSizer102111 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - T5XXL: - 0 - - 0 - - - 0 - - 1 - m_staticText5211 - 1 - - - protected - 1 - - Resizable - 1 - 120,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - - 1 - m_filePickerT5XXL - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf - - - - onFilePickerT5XXL - - - - - - - - - - 5 - wxEXPAND - 1 - - -1,100 - bSizer331 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_notebook3 - 1 - - - protected - 1 - - Resizable - 1 - - wxNB_LEFT - ; ; forward_declare - 0 - - - - - - - Diffusion - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_diffusionPreviewTab - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer991 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/preview.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_txt2txtDeiffusionPreview - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - ; ; forward_declare - 0 - - - - wxFULL_REPAINT_ON_RESIZE - - - - - - - - Controlnet - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_controlnetPreviewTab - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer981 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/controlnet.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_controlnetImagePreview - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - ; ; forward_declare - 0 - - - - wxFULL_REPAINT_ON_RESIZE - - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer34 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/play.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Queue - - 0 - - 0 - - - 0 - - 1 - m_generate2 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onGenerate - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a file - - 0 - 260,-1 - 1 - m_controlnetImageOpen - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG - - - - OnControlnetImageOpen - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - CN on CPU - - 0 - - - 0 - - 1 - cnOnCpu - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Keep controlnet on CPU - - wxFILTER_NONE - wxDefaultValidator - - - - - onCnOnCpu - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - -1,-1 - 1 - m_controlnetModels - 1 - - - protected - 1 - - Resizable - 0 - 1 - 210,-1 - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 1 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.1 - 0.9 - 0.9 - - 0 - - 0 - - 0 - - 1 - m_controlnetStrength - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Show full - - 0 - - 0 - - - 0 - - 1 - m_controlnetImagePreviewButton - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Show the original controlnet image - - wxFILTER_NONE - wxDefaultValidator - - - - - OnControlnetImagePreviewButton - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Delete - - 0 - - 0 - - - 0 - - 1 - m_controlnetImageDelete - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Remove control image - - wxFILTER_NONE - wxDefaultValidator - - - - - OnControlnetImageDelete - - - - - - - - - Load From Embedded File; icons/16/picture.png - img2img - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_image2image_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - img2img - wxTAB_TRAVERSAL - Onimg2imgDropFile - - - bSizer24 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - bSizer28 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer33 - wxVERTICAL - none - - 1 - wxEXPAND|wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - -1,100 - 1 - m_prompt2 - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnPromptText - - - - 1 - wxEXPAND|wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - -1,100 - 1 - m_neg_prompt2 - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnNegPromptText - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - - - 5 - wxEXPAND - 1 - - - bSizer29 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_notebook4 - 1 - - - protected - 1 - - Resizable - 1 - - wxNB_LEFT - ; ; forward_declare - 0 - - - - - - - Diffusion - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel23 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer1003 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/preview.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_img2imgDiffusionPreview - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - Onimg2imgDropFile - - - - - - - - Input image - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel22 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer101 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/sd.cpp.gui_blankimage.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 200,-1 - 1 - m_img2img_preview - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - Onimg2imgDropFile - - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer38 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/play.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Queue - - 0 - - 0 - - - 0 - - 1 - m_generate1 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onGenerate - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select an image - - 0 - 470,-1 - 1 - m_img2imgOpen - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG - - - - OnImageOpenFileChanged - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Strength: - 0 - - 0 - - - 0 - - 1 - m_staticText24 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - 2 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 0.1 - 0.75 - 0.99 - - 0 - - 0 - - 0 - - 1 - m_strength - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Show full - - 0 - - 0 - - - 0 - - 1 - m_img2im_preview_img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnImg2ImgPreviewButton - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - MyButton - - 0 - - 0 - - - 0 - - 1 - m_delete_initial_img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnDeleteInitialImage - - - - - - - - - - Upscaler - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_upscaler - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - upscaler - wxTAB_TRAVERSAL - OnUpscalerDropFile - - - bSizer68 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - - bSizer999 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 300,-1 - bSizer69 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer71 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Source Image - 0 - - 0 - - - 0 - - 1 - m_staticText62 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select an image - - 0 - - 1 - m_upscaler_filepicker - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG - - - - OnImageOpenFilePickerChanged - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - MyButton - - 0 - - 0 - - - 0 - - 1 - m_delete_upscale_image - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnDeleteUpscaleImage - - - - - - 5 - wxEXPAND - 0 - - - bSizer70 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Upscaler model - 0 - - 0 - - - 0 - - 1 - m_staticText61 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_upscaler_model - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnUpscalerModelSelection - - - - - - 5 - wxEXPAND - 0 - - - bSizer72 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Width: - 0 - - 0 - - - 0 - - 1 - m_staticText63 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_width - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Height: - 0 - - 0 - - - 0 - - 1 - m_staticText65 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_height - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxEXPAND - 0 - - - bSizer721 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Width: - 0 - - 0 - - - 0 - - 1 - m_staticText631 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_target_width - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Height: - 0 - - 0 - - - 0 - - 1 - m_staticText651 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_static_upscaler_target_height - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxEXPAND - 0 - - - bSizer73 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Upscale factor - 0 - - 0 - - - 0 - - 1 - m_staticText67 - 1 - - - protected - 1 - - Resizable - 1 - 100,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - 0 - wxID_ANY - 4 - 4 - - 0 - - 1 - - 0 - - 1 - m_upscaler_factor - 1 - - - protected - 1 - - Resizable - 1 - 142,-1 - - ; ; forward_declare - 0 - - - - - - OnUpscalerFactorChange - - - - - - 5 - wxEXPAND - 1 - - - bSizer951 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - wxSYS_COLOUR_WINDOW - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_upscalerHelp - 1 - - - public - 1 - - Resizable - 1 - - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - - OnHtmlLinkClicked - - - - - - - - 5 - wxEXPAND - 1 - - - bSizer1000 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - Load From Embedded File; images/sd.cpp.gui_blankimage.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - -1,-1 - - 0 - 200,-1 - 1 - m_upscaler_source_image - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - ; ; forward_declare - 0 - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer77 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/play.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Queue - - 0 - - 0 - - - 0 - - 1 - m_generate_upscaler - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onGenerate - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Keep upscale model in memory - - 0 - - - 0 - - 1 - m_keep_upscaler_in_memory - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - WARNING: If you check this box, the upscaler model will remain in memory for the next job, which could lead to a memory overflow or program crash (segfault). - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Keep checkpoints in memory - - 0 - - - 0 - - 1 - m_keep_other_models_in_memory - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - WARNING: If you check this box, the SD model from the previous job will remain in RAM/VRAM, which could potentially lead to a program crash (segfault). - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - Image info - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_imageinfo - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer115 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 200 - - 0 - - 1 - m_splitter4 - 1 - - - public - 1 - - Resizable - 0.0 - 0 - -1 - 1 - - wxSPLIT_VERTICAL - wxSP_BORDER - ; ; forward_declare - 0 - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - 64,64,64 - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow5 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - - ; ; forward_declare - 0 - - - - wxHSCROLL|wxVSCROLL - - - bSizer117 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - Load From Embedded File; images/sd.cpp.gui_blankimage.png - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - 1024,1024 - - 0 - 384,384 - 1 - m_imageinfo_preview - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - OnImageInfoDrop - - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow7 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - - ; ; forward_declare - 0 - - - - wxHSCROLL|wxVSCROLL - - - imageInfoSizer - wxVERTICAL - public - - 5 - wxEXPAND - 1 - - - bSizer119 - wxVERTICAL - public - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_imageInfoPrompt - 1 - - - protected - 1 - - Resizable - 1 - -1,120 - wxTE_MULTILINE|wxTE_READONLY - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_imageInfoNegPrompt - 1 - - - protected - 1 - - Resizable - 1 - -1,120 - wxTE_MULTILINE|wxTE_READONLY - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - -1,120 - 1 - m_imageInfoList - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_LEFT|wxTE_MULTILINE|wxTE_READONLY - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - 5 - wxEXPAND - 1 - - 2 - wxBOTH - - - 2 - - fgSizer1 - wxFLEX_GROWMODE_SPECIFIED - public - 0 - 0 - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizer116 - wxHORIZONTAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Load all to txt2img - - 0 - - 0 - - - 0 - - 1 - m_imageInfoLoadTotxt - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnImageInfoLoadTxt2img - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Load all to img2img - - 0 - - 0 - - - 0 - - 1 - m_imageInfoLoadToimg2img - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnImageInfoLoadImg2img - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - 400,-1 - Select a file - - 0 - 200,-1 - 1 - m_imageInfoOpen - 1 - - - protected - 1 - - Resizable - 1 - - wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG - - - - OnImageInfoOpen - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/trash.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Clear - - 0 - - 0 - - - 0 - - 1 - m_cleanImageInfo - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Clear - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCleanImageInfo - - - - - - - - - Load From Embedded File; icons/16/cube.png - Models - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 300,-1 - 1 - m_models_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - models - wxTAB_TRAVERSAL - - - bSizer20 - wxVERTICAL - none - - 5 - wxALL - 0 - - - bSizer63 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Lora - - 0 - - - 0 - - 1 - m_checkbox_lora_filter - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCheckboxLoraFilter - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Checkpoints - - 0 - - - 0 - - 1 - m_checkbox_filter_checkpoints - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCheckboxCheckpointFilter - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Embeddings - - 0 - - - 0 - - 1 - m_checkbox_filter_embeddings - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCheckboxCheckpointFilter - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - 0 - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_modellist_filter - 1 - - - protected - 1 - - Resizable - 1 - 1 - 260,-1 - wxTE_PROCESS_ENTER - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnModellistFilterKeyUp - - - - - - 5 - wxEXPAND - 1 - - - bSizer102 - wxVERTICAL - none - - 5 - wxEXPAND | wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_modelTreeList - 1 - - - protected - 1 - - Resizable - 1 - - wxTL_MULTIPLE - ; ; forward_declare - 0 - - - - - OnDataModelTreeActivated - OnDataModelTreeContextMenu - OnDataModelTreeSelected - - wxALIGN_LEFT - wxCOL_RESIZABLE|wxCOL_SORTABLE - Name - wxCOL_WIDTH_AUTOSIZE - - - wxALIGN_LEFT - wxCOL_RESIZABLE|wxCOL_SORTABLE - Size - wxCOL_WIDTH_AUTOSIZE - - - wxALIGN_LEFT - wxCOL_RESIZABLE|wxCOL_SORTABLE - Type - wxCOL_WIDTH_AUTOSIZE - - - wxALIGN_LEFT - wxCOL_RESIZABLE - Hash - wxCOL_WIDTH_AUTOSIZE - - - - - 5 - wxEXPAND|wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow4 - 1 - - - protected - 1 - - Resizable - 5 - 5 - 1 - -1,280 - ; ; forward_declare - 0 - - - - wxBORDER_DEFAULT|wxHSCROLL - - - bSizer891 - wxHORIZONTAL - public - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 0 - 0 - Dock - 0 - Left - 0 - - - 1 - ,90,400,-1,70,0 - 0 - - wxID_ANY - - 0 - - 0 - - 0 - -1,-1 - 1 - logs - 1 - - - protected - 1 - - Resizable - 1 - -1,140 - wxTE_WORDWRAP|wxTE_READONLY|wxTE_MULTILINE|wxTE_AUTO_URL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - wxFULL_REPAINT_ON_RESIZE - - - - - - - 1 - 0 - - - 2 - - - wxID_ANY - - - m_statusBar166 - protected - - - wxSTB_DEFAULT_STYLE - ; ; forward_declare - - - - - - - - - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - - wxID_ANY - - -1,-1 - Settings - - -1,-1 - wxDEFAULT_FRAME_STYLE|wxFRAME_FLOAT_ON_PARENT|wxRESIZE_BORDER|wxSTAY_ON_TOP|wxSYSTEM_MENU - ; ; forward_declare - Settings - - 0 - - sd.cpp.gui.settings - wxFULL_REPAINT_ON_RESIZE|wxTAB_TRAVERSAL|wxBORDER_THEME - 1 - - - sizer2010 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - - 1 - m_notebook1696 - 1 - - - protected - 1 - - Resizable - 1 - - wxBK_DEFAULT - ; ; forward_declare - 0 - - - - - - Load From Embedded File; icons/16/disk.png - Paths - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - - 1 - m_path_panel - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - sizer2011 - wxVERTICAL - none - - 5 - wxALL - 0 - - - bSizer16 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Models path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText172410 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_model_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openModelsPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer19 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Lora path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText18013172027 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_lora_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openLorasPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer17 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Vae path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText18013 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_vae_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openVaesPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer18 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Embedding path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText1801317202731 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_embedding_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openEmbeddingsPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer23 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - TAESD path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText21 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_taesd_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openTaesdPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/interrogation.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - nolabel - - 0 - - 0 - - - 0 - - 1 - m_bpButton1 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - TAESD models you can download from here: https://github.com/madebyollin/taesd/tree/main - - wxFILTER_NONE - wxDefaultValidator - - - - - OnTAESDHelpClick - - - - - - 5 - wxALL - 0 - - - bSizer35 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Controlnet path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText23 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_controlnet_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openControlnetPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer81 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - ESRGAN path - 0 - - 0 - - - 0 - - 1 - m_staticText77 - 1 - - - protected - 1 - - Resizable - 1 - 150,-1 - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_esrgan_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_DIR_MUST_EXIST|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openEsrganPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - - 1 - m_staticLine223 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_HORIZONTAL - ; ; forward_declare - 0 - - - - - - - - 5 - wxALL - 0 - - - bSizer20 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Presets path - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText19 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_presets_dir - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_DEFAULT_STYLE|wxDIRP_SMALL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openPresetsPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - 5 - wxALL - 0 - - - bSizer21 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - Images output - 0 - - 0 - - - 0 - 150,-1 - 1 - m_staticText180131720 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - Select a folder - - 0 - 200,-1 - 1 - m_images_output - 1 - - - protected - 1 - - Resizable - 1 - - wxDIRP_SMALL|wxDIRP_DEFAULT_STYLE - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/file_import.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - - - 0 - - 0 - - - 0 - - 1 - m_openOutputPath - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - Open folder - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOpenFolder - - - - - - - - - Load From Embedded File; icons/16/palette.png - Diffusion - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - - wxID_ANY - - 0 - - - 0 - - 1 - m_settings - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - sizer2017 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 0 - - 2 - 0 - - gSizer3 - none - 0 - 0 - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Generate missing base model hash before diffusion - - 0 - - - 0 - - 1 - m_autogen_hash - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - 2 - 0 - - sizer2018 - none - 0 - 0 - - 5 - wxALIGN_LEFT|wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - Keep the model in memory (vRAM or RAM, depends on diffusion type) when it is possible. Text to image and image to image can use the same model. If controlnet model is selected and used, the all new job need to reload the model before run. If type is changed (eg fp16 -> Q4_1), then the model need to be reloaded, but usable with mode diffusion without reload. If you disable this option, the model allways unloaded from memory after the job is finished. - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - - wxID_ANY - Keep model in memory - - 0 - - - 0 - 230,-1 - 1 - m_keep_model_in_memory - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Keep model in (v)RAM after diffusions - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - 2 - 0 - - sizer2019 - none - 0 - 0 - - 5 - wxALIGN_LEFT|wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 0 - - 1 - - 0 - - wxID_ANY - Save all images (intermediate images) - - 0 - - - 0 - -1,-1 - 1 - m_save_all_image - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - - bSizer10 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Output images format - 0 - - 0 - - - 0 - 200,-1 - 1 - m_staticText16 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - "JPG" "PNG" - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_image_type - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALIGN_CENTER_HORIZONTAL|wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,93,300,8,70,0 - 0 - 0 - wxID_ANY - PNG meta data not supported yet - 0 - - 0 - - - 0 - - 1 - m_staticText38 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxALL|wxEXPAND - 0 - - - bSizer112 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - JPEG quality - 0 - - 0 - - - 0 - 200,-1 - 1 - m_staticText61 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 100 - - 0 - - 0 - - 0 - 250,-1 - 1 - m_image_quality - 1 - - - protected - 1 - - Resizable - 1 - - wxSL_HORIZONTAL|wxSL_LABELS - ; ; forward_declare - 0 - Image output quality, default: 90% - - wxFILTER_NONE - wxDefaultValidator - - 95 - - - - OnImgQualityScroll - - - - - - 5 - wxEXPAND|wxALL - 0 - - - bSizer113 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - PNG compression level - 0 - - 0 - - - 0 - 200,-1 - 1 - m_staticText62 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 9 - - 0 - - 0 - - 0 - 250,-1 - 1 - m_png_compression - 1 - - - protected - 1 - - Resizable - 1 - - wxSL_HORIZONTAL|wxSL_LABELS - ; ; forward_declare - 0 - Image output quality, default: 90% - - wxFILTER_NONE - wxDefaultValidator - - 0 - - - - OnPngCompressionScroll - - - - - - 5 - wxEXPAND - 0 - - - bSizer72 - wxVERTICAL - none - - - - 5 - wxALL|wxEXPAND - 0 - - - bSizer22 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Number of CPU cores - 0 - - 0 - - - 0 - 200,-1 - 1 - m_staticText191 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 2 - 100 - - 0 - - -1 - - 0 - - 1 - m_threads - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - - 0 - - 1 - m_staticNumberOfCores - 1 - - - public - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - - - 5 - wxEXPAND|wxALL - 0 - - - bSizer114 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Image name format - 0 - - 0 - -1,-1 - - 0 - 140,-1 - 1 - m_staticText621 - 1 - - - protected - 1 - - Resizable - 1 - - wxST_NO_AUTORESIZE - ; ; forward_declare - 0 - - - - - 140 - - - - 5 - wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/interrogation.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Help - - 0 - - 0 - - - 0 - - 1 - m_bpButton27 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOutputFileNameFormatHelpClick - - - - 5 - wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_output_filename_format - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - [mode]_[jobid]_[seed]_[width]x[height]_[batch] - - - - OnOutputFilenameText - - - - - - - - - - GUI - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_settings_ui - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer30 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 0 - - - bSizer31 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Show notifications - - 0 - - - 0 - - 1 - m_show_notifications - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_RIGHT - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onShowNotificationCheck - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Notification timeout: - 0 - - 0 - - - 0 - - 1 - m_staticText60 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - 60 - 120 - - 0 - - 30 - - 0 - - 1 - m_notification_timeout - 1 - - - protected - 1 - - Resizable - 1 - - wxSP_ARROW_KEYS - ; ; forward_declare - 0 - The timeout is depends on the OS and notification type - - - - - - - - - - 5 - wxEXPAND|wxALL - 0 - - - bSizer100 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Language: - 0 - - 0 - - - 0 - 160,-1 - 1 - m_staticText50 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_LEFT - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - 160,-1 - 1 - m_language - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - CivitAi - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel18 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer89 - wxVERTICAL - none - - 5 - wxEXPAND|wxALL - 0 - - - bSizer90 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Enable CivitAi features - - 0 - - - 0 - - 1 - m_enableCivitai - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - Enable or disable all CivitAi features - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - 5 - wxEXPAND|wxALL - 0 - - - bSizer91 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - CivitAi.com API key - 0 - - 0 - - - 0 - - 1 - m_staticText42 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_civitai_api_key - 1 - - - protected - 1 - - Resizable - 1 - - wxTE_PASSWORD - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/interrogation.png - - 1 - 0 - 1 - Click to the question mark button to get help - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Help - - 0 - - 0 - - - 0 - - 1 - m_bpButton15 - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - How to generate API key on CivitAi.com - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCivitaiHelpButton - - - - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - Load From Embedded File; icons/16/disk.png - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Save - - 0 - - 0 - - - 0 - - 1 - m_save - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - onSave - - - - - - 0 - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - 0 - wxID_ANY - - - ImageDialog - - - wxDEFAULT_DIALOG_STYLE - ; ; forward_declare - - - 0 - - sd.cpp.gui.imagedialog - - - - bSizer27 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmap - 1 - - - public - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - - - - - - - 0 - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - 0 - wxID_ANY - - - AboutDialog - - 400,600 - wxDEFAULT_DIALOG_STYLE - ; ; forward_declare - About - - 0 - - - - - - bSizer71 - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_about - 1 - - - public - 1 - - Resizable - 1 - - wxHW_NO_SELECTION|wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - - m_aboutOnHtmlLinkClicked - - - - - - 0 - wxAUI_MGR_DEFAULT - - wxBOTH - - 1 - 0 - 1 - impl_virtual - - - - 0 - wxID_ANY - - - CivitAiWindow - - 800,600 - wxDEFAULT_FRAME_STYLE - ; ; forward_declare - CivitAI model downloader - - 0 - - - wxTAB_TRAVERSAL - 1 - - - bSizer82 - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 0 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel16 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer87 - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 400 - - 0 - - 1 - m_splitter3 - 1 - - - protected - 1 - - Resizable - 0.0 - 0 - -1 - 1 - - wxSPLIT_VERTICAL - wxSP_3DBORDER - ; ; forward_declare - 0 - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel25 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer88 - wxVERTICAL - none - - 5 - wxEXPAND|wxALL - 2 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_model_description - 1 - - - protected - 1 - - Resizable - 1 - - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - wxBORDER_THEME - OnHtmlLinkClicked - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,700,-1,70,0 - 0 - 0 - wxID_ANY - Versions - 0 - - 0 - - - 0 - - 1 - m_staticText41 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_model_details - protected - - - wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES - ; ; forward_declare - - - - wxBORDER_DEFAULT - m_model_detailsOnDataViewListCtrlSelectionChanged - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Name - wxDATAVIEW_CELL_INERT - m_dataViewListColumn111 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - baseModel - wxDATAVIEW_CELL_INERT - m_dataViewListColumn22 - protected - Text - -1 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - baseModelType - wxDATAVIEW_CELL_INERT - m_dataViewListColumn21 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Published - wxDATAVIEW_CELL_INERT - m_dataViewListColumn33 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Downloads - wxDATAVIEW_CELL_INERT - m_dataViewListColumn34 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn221 - protected - Text - -1 - - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_model_version_description - 1 - - - protected - 1 - - Resizable - 1 - - wxHW_SCROLLBAR_AUTO - ; ; forward_declare - 0 - - - - wxBORDER_THEME - OnHtmlLinkClicked - - - - 5 - wxEXPAND - 0 - - - bSizer93 - wxHORIZONTAL - none - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,700,-1,70,0 - 0 - 0 - wxID_ANY - Files - 0 - - 0 - - - 0 - - 1 - m_staticText40 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 0 - - 1 - - - 0 - 0 - wxID_ANY - Download - - 0 - - 0 - - - 0 - - 1 - m_model_download - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - m_model_downloadOnButtonClick - - - - - - 5 - wxALL|wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_model_filelist - protected - - - wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VARIABLE_LINE_HEIGHT|wxDV_VERT_RULES - ; ; forward_declare - - - - wxBORDER_DEFAULT - m_model_filelistOnDataViewListCtrlSelectionChanged - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Name - wxDATAVIEW_CELL_INERT - m_dataViewListColumn1111 - protected - Text - 200 - - - wxALIGN_LEFT - wxELLIPSIZE_NONE - wxDATAVIEW_COL_RESIZABLE - Type - wxDATAVIEW_CELL_INERT - m_dataViewListColumn211 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Format - wxDATAVIEW_CELL_INERT - m_dataViewListColumn23 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Size - wxDATAVIEW_CELL_INERT - m_dataViewListColumn24 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Fp - wxDATAVIEW_CELL_INERT - m_dataViewListColumn25 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn231 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Size - wxDATAVIEW_CELL_INERT - m_dataViewListColumn29 - protected - Text - -1 - - - - - - - - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panel24 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - - - - wxTAB_TRAVERSAL - - - bSizer92 - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bSizer86 - wxHORIZONTAL - none - - 0 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - "Checkpoints" "LORA" "Embeddings" - 1 - - 0 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 3 - - 0 - - - 0 - - 1 - m_model_type - 1 - - - protected - 1 - - Resizable - 0 - 1 - - wxRA_SPECIFY_ROWS - ; ; forward_declare - 0 - Select the model type to filter - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL|wxLEFT - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_civitai_search - 1 - - - protected - 1 - - Resizable - 1 - 210,-1 - wxTE_PROCESS_ENTER - ; ; forward_declare - 0 - Search for model names - - wxFILTER_NONE - wxDefaultValidator - - - - - - m_civitai_searchOnTextEnter - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - 0 - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 0 - 1 - - 1 - - - 0 - 0 - wxID_ANY - Search - - 0 - - 0 - - - 0 - - 1 - m_search - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - m_searchOnButtonClick - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,700,-1,70,0 - 0 - 0 - wxID_ANY - Models - 0 - - 0 - - - 0 - - 1 - m_staticText43 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxEXPAND|wxALL - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_dataViewListCtrl5 - protected - - - wxDV_HORIZ_RULES - ; ; forward_declare - - - - - m_dataViewListCtrl5OnDataViewListCtrlSelectionChanged - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE|wxDATAVIEW_COL_SORTABLE - Name - wxDATAVIEW_CELL_INERT - m_dataViewListColumn12 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn13 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Type - wxDATAVIEW_CELL_INERT - m_dataViewListColumn30 - protected - Text - -1 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Downloads - wxDATAVIEW_CELL_INERT - m_dataViewListColumn32 - protected - Text - -1 - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - ,90,700,-1,70,0 - 0 - 0 - wxID_ANY - Downloads - 0 - - 0 - - - 0 - - 1 - m_staticText431 - 1 - - - protected - 1 - - Resizable - 1 - - wxALIGN_CENTER_HORIZONTAL - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 1 - - - - 1 - 0 - 1 - - - 0 - wxID_ANY - - - m_downloads - protected - - - wxDV_HORIZ_RULES - ; ; forward_declare - - - - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - File - wxDATAVIEW_CELL_INERT - m_dataViewListColumn26 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Size - wxDATAVIEW_CELL_INERT - m_dataViewListColumn31 - protected - Text - 200 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - Status - wxDATAVIEW_CELL_INERT - m_dataViewListColumn301 - protected - Text - 120 - - - wxALIGN_LEFT - - wxDATAVIEW_COL_RESIZABLE - - wxDATAVIEW_CELL_INERT - m_dataViewListColumn28 - protected - Progress - 200 - - - - - 5 - wxEXPAND | wxALL - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_scrolledWindow4 - 1 - - - public - 1 - - Resizable - 5 - 5 - 1 - - ; ; forward_declare - 0 - - - - wxHSCROLL|wxVSCROLL - - - image_container - wxHORIZONTAL - public - - - - - - - - - - - - - - - - 1 - 0 - 1 - - 1 - - 0 - wxID_ANY - - - m_statusBar2 - protected - - - wxSTB_SIZEGRIP - ; ; forward_declare - - - - - - - - 0 - wxAUI_MGR_DEFAULT - 77,77,77 - wxBOTH - - 0 - 0 - 1 - impl_virtual - - 255,255,255 - - 0 - wxID_ANY - 400,68 - - DesktopWidget - - 400,68 - wxFRAME_NO_TASKBAR|wxFRAME_SHAPED|wxSTAY_ON_TOP - ; ; forward_declare - - - 0 - wxWS_EX_TRANSIENT - DesktopWidget - wxBORDER_NONE|wxTRANSPARENT_WINDOW - 1 - OnClose - OnMouseEnter - OnIconize - OnMouseLeave - OnLeftMouseDClick - OnMouseLeftDown - OnMouseLeftUp - OnMouseMotion - OnWidgetPaint - - - bSizer122 - wxHORIZONTAL - none - - 10 - wxALL|wxEXPAND - 1 - - - bSizer128 - wxVERTICAL - none - - 0 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 0 - 0 - Dock - 0 - Left - 0 - 1 - 255,255,255 - 1 - - 0 - 0 - wxID_ANY - Current job: none - 0 - - 0 - - - 0 - - 1 - m_currentStatus - 1 - - - protected - 1 - - Resizable - 1 - -1,-1 - - ; ; forward_declare - 0 - - wxWS_EX_BLOCK_EVENTS - - - -1 - - - - 0 - wxEXPAND - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - -1,16 - 1 - m_currentProgress - 1 - - - protected - 1 - - 100 - Resizable - 1 - 320,-1 - wxGA_HORIZONTAL - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - 0 - wxWS_EX_BLOCK_EVENTS - - - - - - - - - - diff --git a/locale/en/stablediffusiongui.po b/locale/en/stablediffusiongui.po index c9291a0..af6254a 100644 --- a/locale/en/stablediffusiongui.po +++ b/locale/en/stablediffusiongui.po @@ -1,13 +1,13 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # -# SPDX-FileCopyrightText: 2024 Ferenc Szontágh +# SPDX-FileCopyrightText: 2024, 2025 Ferenc Szontágh msgid "" msgstr "" "Project-Id-Version: StableDiffusionGUI 0.1.9\n" "Report-Msgid-Bugs-To: sdgui@fsociety.hu\n" -"POT-Creation-Date: 2024-12-15 11:34+0100\n" -"PO-Revision-Date: 2024-12-15 12:05+0100\n" +"POT-Creation-Date: 2025-01-08 11:17+0100\n" +"PO-Revision-Date: 2025-01-08 11:19+0100\n" "Last-Translator: Ferenc Szontágh \n" "Language-Team: Hungarian <>\n" "Language: en_US\n" @@ -23,12 +23,12 @@ msgstr "" msgid "Failed to load model: " msgstr "Failed to load model: " -#: extprocess/src/ApplicationLogic.cpp:208 +#: extprocess/src/ApplicationLogic.cpp:212 #, c-format msgid "Unknown mode: %s" msgstr "Unknown mode: %s" -#: extprocess/src/ApplicationLogic.cpp:419 +#: extprocess/src/ApplicationLogic.cpp:435 msgid "Failed to load image: " msgstr "Failed to load image: " @@ -36,37 +36,37 @@ msgstr "Failed to load image: " msgid "Another program instance is already running, aborting." msgstr "Another program instance is already running, aborting." -#: src/helpers/TreeListManager.h:73 src/ui/MainWindowUI.cpp:1284 +#: src/helpers/TreeListManager.h:73 src/ui/MainWindowUI.cpp:1495 msgid "[F] " msgstr "[F] " -#: src/ui/MainWindow.cpp:76 +#: src/ui/MainWindow.cpp:81 msgid "About the sd.cpp.gui.wx" msgstr "About the sd.cpp.gui.wx" -#: src/ui/MainWindow.cpp:77 +#: src/ui/MainWindow.cpp:82 msgid "About the program" msgstr "About the program" -#: src/ui/MainWindow.cpp:84 +#: src/ui/MainWindow.cpp:89 msgid "Open CivitAi.com model browser" msgstr "Open CivitAi.com model browser" -#: src/ui/MainWindow.cpp:85 +#: src/ui/MainWindow.cpp:90 msgid "" "With CivitAi.com model browser, you can search for models or download models" msgstr "" "With CivitAi.com model browser, you can search for models or download models" -#: src/ui/MainWindow.cpp:92 src/ui/MainWindowUI.cpp:1392 +#: src/ui/MainWindow.cpp:97 src/ui/MainWindowUI.cpp:1602 msgid "Show Widget" msgstr "Show Widget" -#: src/ui/MainWindow.cpp:101 +#: src/ui/MainWindow.cpp:106 msgid "Stop and restart the background process" msgstr "Stop and restart the background process" -#: src/ui/MainWindow.cpp:102 +#: src/ui/MainWindow.cpp:107 msgid "" "This will send a terminate to the background diffuser process. This will " "clear up all used memory (eg. freeing up all the loaded models)" @@ -74,294 +74,262 @@ msgstr "" "This will send a terminate to the background diffuser process. This will " "clear up all used memory (eg. freeing up all the loaded models)" -#: src/ui/MainWindow.cpp:115 +#: src/ui/MainWindow.cpp:120 msgid "Model:" msgstr "Model:" -#: src/ui/MainWindow.cpp:132 +#: src/ui/MainWindow.cpp:137 msgid "Type:" msgstr "Type:" -#: src/ui/MainWindow.cpp:139 src/ui/MainWindow.cpp:1170 +#: src/ui/MainWindow.cpp:144 src/ui/MainWindow.cpp:1462 msgid "" "Weight type. If not specified, the default is the type of the weight file." msgstr "" "Weight type. If not specified, the default is the type of the weight file." -#: src/ui/MainWindow.cpp:149 src/ui/MainWindow.cpp:2325 +#: src/ui/MainWindow.cpp:154 src/ui/MainWindow.cpp:2623 msgid "Current job: none" msgstr "Current job: none" -#: src/ui/MainWindow.cpp:193 +#: src/ui/MainWindow.cpp:206 msgid "Resume all" msgstr "Resume all" -#: src/ui/MainWindow.cpp:198 +#: src/ui/MainWindow.cpp:211 msgid "Pause all" msgstr "Pause all" -#: src/ui/MainWindow.cpp:203 +#: src/ui/MainWindow.cpp:216 msgid "Delete all" msgstr "Delete all" -#: src/ui/MainWindow.cpp:210 +#: src/ui/MainWindow.cpp:223 msgid "Number of jobs: 0" msgstr "Number of jobs: 0" -#: src/ui/MainWindow.cpp:234 +#: src/ui/MainWindow.cpp:247 msgid "Id" msgstr "Id" -#: src/ui/MainWindow.cpp:235 +#: src/ui/MainWindow.cpp:248 msgid "Crated at" msgstr "Crated at" -#: src/ui/MainWindow.cpp:236 src/ui/MainWindow.cpp:992 -#: src/ui/MainWindow.cpp:2192 src/ui/MainWindow.cpp:2240 -#: src/ui/MainWindowUI.cpp:42 src/ui/MainWindowUI.cpp:1765 -#: src/ui/MainWindowUI.cpp:3543 +#: src/ui/MainWindow.cpp:249 src/ui/MainWindow.cpp:988 +#: src/ui/MainWindow.cpp:2490 src/ui/MainWindow.cpp:2538 +#: src/ui/MainWindowUI.cpp:42 src/ui/MainWindowUI.cpp:1916 +#: src/ui/MainWindowUI.cpp:3830 msgid "Type" msgstr "Type" -#: src/ui/MainWindow.cpp:237 src/ui/MainWindowUI.cpp:3515 -#: src/ui/MainWindowUI.cpp:3521 +#: src/ui/MainWindow.cpp:250 src/ui/MainWindowUI.cpp:3802 +#: src/ui/MainWindowUI.cpp:3808 msgid "Model" msgstr "Model" -#: src/ui/MainWindow.cpp:238 src/ui/MainWindowUI.cpp:3599 +#: src/ui/MainWindow.cpp:251 src/ui/MainWindowUI.cpp:3893 msgid "Sampler" msgstr "Sampler" -#: src/ui/MainWindow.cpp:239 src/ui/MainWindowUI.cpp:3579 +#: src/ui/MainWindow.cpp:252 src/ui/MainWindowUI.cpp:3873 msgid "Seed" msgstr "Seed" -#: src/ui/MainWindow.cpp:240 +#: src/ui/MainWindow.cpp:253 msgid "Progress" msgstr "Progress" -#: src/ui/MainWindow.cpp:241 +#: src/ui/MainWindow.cpp:254 msgid "Speed" msgstr "Speed" -#: src/ui/MainWindow.cpp:242 src/ui/MainWindow.cpp:2167 -#: src/ui/MainWindow.cpp:2197 src/ui/MainWindow.cpp:2239 -#: src/ui/MainWindow.cpp:2253 +#: src/ui/MainWindow.cpp:255 src/ui/MainWindow.cpp:2465 +#: src/ui/MainWindow.cpp:2495 src/ui/MainWindow.cpp:2537 +#: src/ui/MainWindow.cpp:2551 msgid "Status" msgstr "Status" -#: src/ui/MainWindow.cpp:280 +#: src/ui/MainWindow.cpp:293 msgid "Job details" msgstr "Job details" -#: src/ui/MainWindow.cpp:297 +#: src/ui/MainWindow.cpp:310 msgid "Jobs and Images" msgstr "Jobs and Images" -#: src/ui/MainWindow.cpp:328 src/ui/MainWindow.cpp:622 -#: src/ui/MainWindow.cpp:1900 +#: src/ui/MainWindow.cpp:349 src/ui/MainWindow.cpp:460 +#: src/ui/MainWindow.cpp:2198 msgid "Diffusion" msgstr "Diffusion" -#: src/ui/MainWindow.cpp:343 +#: src/ui/MainWindow.cpp:364 msgid "Controlnet" msgstr "Controlnet" -#: src/ui/MainWindow.cpp:379 -msgid "What is this?" -msgstr "What is this?" +#: src/ui/MainWindow.cpp:369 +msgid "OpenPose Editor" +msgstr "OpenPose Editor" -#: src/ui/MainWindow.cpp:383 +#: src/ui/MainWindow.cpp:382 src/ui/MainWindow.cpp:519 +#: src/ui/MainWindow.cpp:945 src/ui/MainWindow.cpp:1182 +#: src/ui/MainWindow.cpp:1201 src/ui/MainWindow.cpp:1208 +#: src/ui/MainWindow.cpp:1215 +msgid "Select a file" +msgstr "Select a file" + +#: src/ui/MainWindow.cpp:382 src/ui/MainWindow.cpp:519 +#: src/ui/MainWindow.cpp:643 src/ui/MainWindow.cpp:713 +#: src/ui/MainWindow.cpp:945 msgid "" -"For more information, click the button with the question mark icon.\n" -"\n" -"To use the FLUX model, select the \"Diffusion Model\" file picker and choose " -"the FLUX model.\n" -"For SD3.5, use the dropdown menu at the top to select a model." +"Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;" +"*.JPEG;*.PNG" msgstr "" -"For more information, click the button with the question mark icon.\n" -"\n" -"To use the FLUX model, select the \"Diffusion Model\" file picker and choose " -"the FLUX model.\n" -"For SD3.5, use the dropdown menu at the top to select a model." - -#: src/ui/MainWindow.cpp:393 -msgid "SLG scale:" -msgstr "SLG scale:" - -#: src/ui/MainWindow.cpp:395 src/ui/MainWindow.cpp:401 -msgid "skip layer guidance (SLG) scale, only for DiT models: (default: 0.0)" -msgstr "skip layer guidance (SLG) scale, only for DiT models: (default: 0.0)" - -#: src/ui/MainWindow.cpp:411 -msgid "Skip layers:" -msgstr "Skip layers:" - -#: src/ui/MainWindow.cpp:413 src/ui/MainWindow.cpp:418 -msgid "Layers to skip for SLG steps: (default: [7,8,9])" -msgstr "Layers to skip for SLG steps: (default: [7,8,9])" +"Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;" +"*.JPEG;*.PNG" -#: src/ui/MainWindow.cpp:417 -msgid "7,8,9" -msgstr "7,8,9" +#: src/ui/MainWindow.cpp:387 src/ui/MainWindowUI.cpp:4001 +msgid "CN on CPU" +msgstr "CN on CPU" -#: src/ui/MainWindow.cpp:428 -msgid "Skip Layer Start:" -msgstr "Skip Layer Start:" +#: src/ui/MainWindow.cpp:388 +msgid "Keep controlnet on CPU" +msgstr "Keep controlnet on CPU" -#: src/ui/MainWindow.cpp:430 src/ui/MainWindow.cpp:436 -msgid "" -"SLG enabling point: (default: 0.01)\n" -"SLG will be enabled at step int([STEPS]*[START]) and disabled at " -"int([STEPS]*[END])" -msgstr "" -"SLG enabling point: (default: 0.01)\n" -"SLG will be enabled at step int([STEPS]*[START]) and disabled at " -"int([STEPS]*[END])" +#: src/ui/MainWindow.cpp:403 src/ui/MainWindow.cpp:654 +msgid "Show full" +msgstr "Show full" -#: src/ui/MainWindow.cpp:446 -msgid "Skip Layer End:" -msgstr "Skip Layer End:" +#: src/ui/MainWindow.cpp:405 +msgid "Show the original controlnet image" +msgstr "Show the original controlnet image" -#: src/ui/MainWindow.cpp:448 src/ui/MainWindow.cpp:454 -msgid "" -"SLG disabling point: (default: 0.2)\n" -"SLG will be enabled at step int([STEPS]*[START]) and disabled at " -"int([STEPS]*[END])" -msgstr "" -"SLG disabling point: (default: 0.2)\n" -"SLG will be enabled at step int([STEPS]*[START]) and disabled at " -"int([STEPS]*[END])" +#: src/ui/MainWindow.cpp:413 +msgid "Remove control image" +msgstr "Remove control image" -#: src/ui/MainWindow.cpp:473 -msgid "Diffusion Model:" -msgstr "Diffusion Model:" +#: src/ui/MainWindow.cpp:424 +msgid "txt2img" +msgstr "txt2img" -#: src/ui/MainWindow.cpp:475 -msgid "Diffusion models, for example FLUX" -msgstr "Diffusion models, for example FLUX" +#: src/ui/MainWindow.cpp:472 +msgid "Brush" +msgstr "Brush" -#: src/ui/MainWindow.cpp:479 src/ui/MainWindow.cpp:504 -#: src/ui/MainWindow.cpp:517 src/ui/MainWindow.cpp:530 -#: src/ui/MainWindow.cpp:548 src/ui/MainWindow.cpp:959 -msgid "Select a file" -msgstr "Select a file" +#: src/ui/MainWindow.cpp:481 +msgid "Zoom" +msgstr "Zoom" -#: src/ui/MainWindow.cpp:479 src/ui/MainWindow.cpp:504 -#: src/ui/MainWindow.cpp:517 src/ui/MainWindow.cpp:530 -msgid "Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf" -msgstr "Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf" +#: src/ui/MainWindow.cpp:493 +msgid "Save the mask into png" +msgstr "Save the mask into png" -#: src/ui/MainWindow.cpp:482 -msgid "Flash attention" -msgstr "Flash attention" +#: src/ui/MainWindow.cpp:500 +msgid "Invert mask" +msgstr "Invert mask" -#: src/ui/MainWindow.cpp:483 +#: src/ui/MainWindow.cpp:507 msgid "" -"Use flash attention in the diffusion model. This will reduce significantly " -"the memory uage (for low vram).\n" -"Might lower quality, since it implies converting k and v to f16.\n" -"This might crash if it is not supported by the backend.\n" -"\n" +"Resize the image to fit into the diffusion's width and height.\n" +"WARNING: this will delete the current mask if have!" msgstr "" -"Use flash attention in the diffusion model. This will reduce significantly " -"the memory uage (for low vram).\n" -"Might lower quality, since it implies converting k and v to f16.\n" -"This might crash if it is not supported by the backend.\n" -"\n" +"Resize the image to fit into the diffusion's width and height.\n" +"WARNING: this will delete the current mask if have!" -#: src/ui/MainWindow.cpp:490 -msgid "Clean model" -msgstr "Clean model" +#: src/ui/MainWindow.cpp:515 +msgid "Clear the mask" +msgstr "Clear the mask" -#: src/ui/MainWindow.cpp:500 -msgid "ClipL:" -msgstr "Clean model" +#: src/ui/MainWindow.cpp:520 +msgid "Open a mask image from file" +msgstr "Open a mask image from file" -#: src/ui/MainWindow.cpp:513 -msgid "ClipG:" -msgstr "ClipG:" +#: src/ui/MainWindow.cpp:534 +msgid "Change the brush shape to circle" +msgstr "Change the brush shape to circle" -#: src/ui/MainWindow.cpp:526 -msgid "T5XXL:" -msgstr "T5XXL:" +#: src/ui/MainWindow.cpp:541 +msgid "Change the brush shape to square" +msgstr "Change the brush shape to square" + +#: src/ui/MainWindow.cpp:548 +msgid "Change the brush shape to triangle" +msgstr "Change the brush shape to triangle" -#: src/ui/MainWindow.cpp:548 src/ui/MainWindow.cpp:671 -#: src/ui/MainWindow.cpp:735 src/ui/MainWindow.cpp:959 +#: src/ui/MainWindow.cpp:558 msgid "" -"Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;" -"*.JPEG;*.PNG" +"Ctrl + Mouse wheel to ZOOM\n" +"Shift + Mouse wheel to Change brush size" msgstr "" -"Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;" -"*.JPEG;*.PNG" +"Ctrl + Mouse wheel to ZOOM\n" +"Shift + Mouse wheel to Change brush size" -#: src/ui/MainWindow.cpp:553 src/ui/MainWindowUI.cpp:3707 -msgid "CN on CPU" -msgstr "CN on CPU" +#: src/ui/MainWindow.cpp:592 +msgid "Outpaint Top:" +msgstr "Outpaint Top:" -#: src/ui/MainWindow.cpp:554 -msgid "Keep controlnet on CPU" -msgstr "Keep controlnet on CPU" +#: src/ui/MainWindow.cpp:596 src/ui/MainWindow.cpp:603 +#: src/ui/MainWindow.cpp:610 src/ui/MainWindow.cpp:617 +msgid "0" +msgstr "0" -#: src/ui/MainWindow.cpp:569 src/ui/MainWindow.cpp:684 -msgid "Show full" -msgstr "Show full" +#: src/ui/MainWindow.cpp:599 +msgid "Right:" +msgstr "Right:" -#: src/ui/MainWindow.cpp:571 -msgid "Show the original controlnet image" -msgstr "Show the original controlnet image" +#: src/ui/MainWindow.cpp:606 +msgid "Bottom:" +msgstr "Bottom:" -#: src/ui/MainWindow.cpp:579 -msgid "Remove control image" -msgstr "Remove control image" +#: src/ui/MainWindow.cpp:613 +msgid "Left:" +msgstr "Left:" -#: src/ui/MainWindow.cpp:590 -msgid "txt2img" -msgstr "txt2img" +#: src/ui/MainWindow.cpp:620 +msgid "Resize" +msgstr "Resize" -#: src/ui/MainWindow.cpp:638 -msgid "Input image" -msgstr "Input image" +#: src/ui/MainWindow.cpp:633 +msgid "Preview and InPaint" +msgstr "Preview and InPaint" -#: src/ui/MainWindow.cpp:671 src/ui/MainWindow.cpp:735 +#: src/ui/MainWindow.cpp:643 src/ui/MainWindow.cpp:713 msgid "Select an image" msgstr "Select an image" -#: src/ui/MainWindow.cpp:676 +#: src/ui/MainWindow.cpp:646 msgid "Strength:" msgstr "Strength:" -#: src/ui/MainWindow.cpp:701 +#: src/ui/MainWindow.cpp:671 msgid "img2img" msgstr "img2img" -#: src/ui/MainWindow.cpp:731 +#: src/ui/MainWindow.cpp:709 msgid "Source Image" msgstr "Source Image" -#: src/ui/MainWindow.cpp:749 +#: src/ui/MainWindow.cpp:727 msgid "Upscaler model" msgstr "Upscaler model" -#: src/ui/MainWindow.cpp:764 src/ui/MainWindow.cpp:786 -#: src/ui/MainWindow.cpp:1205 +#: src/ui/MainWindow.cpp:742 src/ui/MainWindow.cpp:764 msgid "Width:" msgstr "Width:" -#: src/ui/MainWindow.cpp:772 src/ui/MainWindow.cpp:794 -#: src/ui/MainWindow.cpp:1212 +#: src/ui/MainWindow.cpp:750 src/ui/MainWindow.cpp:772 msgid "Height:" msgstr "Height:" -#: src/ui/MainWindow.cpp:808 +#: src/ui/MainWindow.cpp:786 msgid "Upscale factor" msgstr "Upscale factor" -#: src/ui/MainWindow.cpp:840 +#: src/ui/MainWindow.cpp:818 msgid "Keep upscale model in memory" msgstr "Keep upscale model in memory" -#: src/ui/MainWindow.cpp:841 +#: src/ui/MainWindow.cpp:819 msgid "" "WARNING: If you check this box, the upscaler model will remain in memory for " "the next job, which could lead to a memory overflow or program crash " @@ -371,11 +339,11 @@ msgstr "" "the next job, which could lead to a memory overflow or program crash " "(segfault)." -#: src/ui/MainWindow.cpp:845 +#: src/ui/MainWindow.cpp:823 msgid "Keep checkpoints in memory" msgstr "Keep checkpoints in memory" -#: src/ui/MainWindow.cpp:846 +#: src/ui/MainWindow.cpp:824 msgid "" "WARNING: If you check this box, the SD model from the previous job will " "remain in RAM/VRAM, which could potentially lead to a program crash " @@ -385,108 +353,215 @@ msgstr "" "remain in RAM/VRAM, which could potentially lead to a program crash " "(segfault)." -#: src/ui/MainWindow.cpp:857 +#: src/ui/MainWindow.cpp:835 msgid "Upscaler" msgstr "Upscaler" -#: src/ui/MainWindow.cpp:896 src/ui/MainWindow.cpp:911 +#: src/ui/MainWindow.cpp:882 src/ui/MainWindow.cpp:897 msgid "Copy to txt2img prompt" msgstr "Copy to txt2img prompt" -#: src/ui/MainWindow.cpp:899 src/ui/MainWindow.cpp:914 +#: src/ui/MainWindow.cpp:885 src/ui/MainWindow.cpp:900 msgid "Copy to img2img prompt" msgstr "Copy to img2img prompt" -#: src/ui/MainWindow.cpp:928 +#: src/ui/MainWindow.cpp:914 msgid "Find and select model" msgstr "Find and select model" -#: src/ui/MainWindow.cpp:929 +#: src/ui/MainWindow.cpp:915 msgid "Try to find and load the model by the image parameters" msgstr "Try to find and load the model by the image parameters" -#: src/ui/MainWindow.cpp:949 +#: src/ui/MainWindow.cpp:919 msgid "Load all to txt2img" msgstr "Load all to txt2img" -#: src/ui/MainWindow.cpp:954 +#: src/ui/MainWindow.cpp:924 msgid "Load all to img2img" msgstr "Load all to img2img" -#: src/ui/MainWindow.cpp:968 +#: src/ui/MainWindow.cpp:954 msgid "Clear" msgstr "Clear" -#: src/ui/MainWindow.cpp:979 +#: src/ui/MainWindow.cpp:965 msgid "Image info" msgstr "Image info" -#: src/ui/MainWindow.cpp:990 src/ui/MainWindow.cpp:2161 -#: src/ui/MainWindow.cpp:2191 src/ui/MainWindow.cpp:2238 -#: src/ui/MainWindowUI.cpp:40 src/ui/MainWindowUI.cpp:1747 +#: src/ui/MainWindow.cpp:986 src/ui/MainWindow.cpp:2459 +#: src/ui/MainWindow.cpp:2489 src/ui/MainWindow.cpp:2536 +#: src/ui/MainWindowUI.cpp:40 src/ui/MainWindowUI.cpp:1898 msgid "Name" msgstr "Name" -#: src/ui/MainWindow.cpp:991 src/ui/MainWindow.cpp:2195 -#: src/ui/MainWindow.cpp:2198 src/ui/MainWindow.cpp:2252 +#: src/ui/MainWindow.cpp:987 src/ui/MainWindow.cpp:2493 +#: src/ui/MainWindow.cpp:2496 src/ui/MainWindow.cpp:2550 #: src/ui/MainWindowUI.cpp:41 msgid "Size" msgstr "Size" -#: src/ui/MainWindow.cpp:993 src/ui/MainWindowUI.cpp:43 -#: src/ui/MainWindowUI.cpp:1759 +#: src/ui/MainWindow.cpp:989 src/ui/MainWindowUI.cpp:43 +#: src/ui/MainWindowUI.cpp:1910 msgid "Hash" msgstr "Hash" -#: src/ui/MainWindow.cpp:1011 +#: src/ui/MainWindow.cpp:1007 msgid "Model details" msgstr "Model details" -#: src/ui/MainWindow.cpp:1018 -msgid "wxFB Website" -msgstr "wxFB Website" - -#: src/ui/MainWindow.cpp:1023 +#: src/ui/MainWindow.cpp:1014 msgid "[F]avorite" msgstr "[F]avorite" -#: src/ui/MainWindow.cpp:1050 src/ui/MainWindow.cpp:2231 +#: src/ui/MainWindow.cpp:1019 +msgid "wxFB Website" +msgstr "wxFB Website" + +#: src/ui/MainWindow.cpp:1046 src/ui/MainWindow.cpp:2529 msgid "Models" msgstr "Models" -#: src/ui/MainWindow.cpp:1063 -msgid "Vae:" -msgstr "Vae:" +#: src/ui/MainWindow.cpp:1067 +msgid "Prompt:" +msgstr "Prompt:" + +#: src/ui/MainWindow.cpp:1082 +msgid "Negative prompt:" +msgstr "Negative prompt:" + +#: src/ui/MainWindow.cpp:1098 +msgid "Prompt presets:" +msgstr "Prompt presets:" + +#: src/ui/MainWindow.cpp:1122 +msgid "What is this?" +msgstr "What is this?" + +#: src/ui/MainWindow.cpp:1129 +msgid "SLG scale:" +msgstr "SLG scale:" -#: src/ui/MainWindow.cpp:1077 src/ui/MainWindow.cpp:1118 +#: src/ui/MainWindow.cpp:1131 src/ui/MainWindow.cpp:1137 +msgid "skip layer guidance (SLG) scale, only for DiT models: (default: 0.0)" +msgstr "skip layer guidance (SLG) scale, only for DiT models: (default: 0.0)" + +#: src/ui/MainWindow.cpp:1141 +msgid "Skip layers:" +msgstr "Skip layers:" + +#: src/ui/MainWindow.cpp:1143 src/ui/MainWindow.cpp:1148 +msgid "Layers to skip for SLG steps: (default: [7,8,9])" +msgstr "Layers to skip for SLG steps: (default: [7,8,9])" + +#: src/ui/MainWindow.cpp:1147 +msgid "7,8,9" +msgstr "7,8,9" + +#: src/ui/MainWindow.cpp:1152 +msgid "Skip Layer Start:" +msgstr "Skip Layer Start:" + +#: src/ui/MainWindow.cpp:1154 src/ui/MainWindow.cpp:1160 +msgid "" +"SLG enabling point: (default: 0.01)\n" +"SLG will be enabled at step int([STEPS]*[START]) and disabled at " +"int([STEPS]*[END])" +msgstr "" +"SLG enabling point: (default: 0.01)\n" +"SLG will be enabled at step int([STEPS]*[START]) and disabled at " +"int([STEPS]*[END])" + +#: src/ui/MainWindow.cpp:1164 +msgid "Skip Layer End:" +msgstr "Skip Layer End:" + +#: src/ui/MainWindow.cpp:1166 src/ui/MainWindow.cpp:1172 +msgid "" +"SLG disabling point: (default: 0.2)\n" +"SLG will be enabled at step int([STEPS]*[START]) and disabled at " +"int([STEPS]*[END])" +msgstr "" +"SLG disabling point: (default: 0.2)\n" +"SLG will be enabled at step int([STEPS]*[START]) and disabled at " +"int([STEPS]*[END])" + +#: src/ui/MainWindow.cpp:1176 +msgid "Diffusion Model:" +msgstr "Diffusion Model:" + +#: src/ui/MainWindow.cpp:1178 +msgid "Diffusion models, for example FLUX" +msgstr "Diffusion models, for example FLUX" + +#: src/ui/MainWindow.cpp:1182 src/ui/MainWindow.cpp:1201 +#: src/ui/MainWindow.cpp:1208 src/ui/MainWindow.cpp:1215 +msgid "Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf" +msgstr "Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf" + +#: src/ui/MainWindow.cpp:1188 +msgid "Clean models" +msgstr "Clean models" + +#: src/ui/MainWindow.cpp:1192 +msgid "Flash attention" +msgstr "Flash attention" + +#: src/ui/MainWindow.cpp:1193 +msgid "" +"Use flash attention in the diffusion model. This will reduce significantly " +"the memory uage (for low vram).\n" +"Might lower quality, since it implies converting k and v to f16.\n" +"This might crash if it is not supported by the backend.\n" +"\n" +msgstr "" +"Use flash attention in the diffusion model. This will reduce significantly " +"the memory uage (for low vram).\n" +"Might lower quality, since it implies converting k and v to f16.\n" +"This might crash if it is not supported by the backend.\n" +"\n" + +#: src/ui/MainWindow.cpp:1197 +msgid "ClipL:" +msgstr "Clean model" + +#: src/ui/MainWindow.cpp:1204 +msgid "ClipG:" +msgstr "ClipG:" + +#: src/ui/MainWindow.cpp:1211 +msgid "T5XXL:" +msgstr "T5XXL:" + +#: src/ui/MainWindow.cpp:1240 src/ui/MainWindowUI.cpp:3926 +msgid "VAE" +msgstr "VAE" + +#: src/ui/MainWindow.cpp:1256 src/ui/MainWindow.cpp:1288 msgid "CPU" msgstr "CPU" -#: src/ui/MainWindow.cpp:1078 src/ui/MainWindowUI.cpp:3638 +#: src/ui/MainWindow.cpp:1257 src/ui/MainWindowUI.cpp:3932 msgid "VAE on CPU" msgstr "VAE on CPU" -#: src/ui/MainWindow.cpp:1085 src/ui/MainWindowUI.cpp:3643 -msgid "VAE tiling" -msgstr "VAE tiling" +#: src/ui/MainWindow.cpp:1261 +msgid "Tiling" +msgstr "Tiling" -#: src/ui/MainWindow.cpp:1086 +#: src/ui/MainWindow.cpp:1262 msgid "Process vae in tiles to reduce memory usage" msgstr "Process vae in tiles to reduce memory usage" -#: src/ui/MainWindow.cpp:1090 -msgid "VAE decode only" -msgstr "VAE decode only" +#: src/ui/MainWindow.cpp:1269 +msgid "Decode only" +msgstr "Decode only" -#: src/ui/MainWindow.cpp:1096 -msgid "CFG:" -msgstr "CFG:" - -#: src/ui/MainWindow.cpp:1104 -msgid "Clip skip:" -msgstr "Clip skip:" +#: src/ui/MainWindow.cpp:1278 +msgid "CLIP" +msgstr "CLIP" -#: src/ui/MainWindow.cpp:1106 src/ui/MainWindow.cpp:1114 +#: src/ui/MainWindow.cpp:1281 src/ui/MainWindow.cpp:1294 msgid "" "ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer " "(default: -1)\n" @@ -496,176 +571,182 @@ msgstr "" "(default: -1)\n" "<= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x" -#: src/ui/MainWindow.cpp:1119 +#: src/ui/MainWindow.cpp:1289 msgid "CLIP on CPU" msgstr "CLIP on CPU" -#: src/ui/MainWindow.cpp:1126 +#: src/ui/MainWindow.cpp:1307 msgid "TAESD:" msgstr "TAESD:" -#: src/ui/MainWindow.cpp:1128 +#: src/ui/MainWindow.cpp:1309 msgid "Using Tiny AutoEncoder for fast decoding (low quality)" msgstr "Using Tiny AutoEncoder for fast decoding (low quality)" -#: src/ui/MainWindow.cpp:1139 -msgid "Batch:" -msgstr "Batch:" - -#: src/ui/MainWindow.cpp:1141 src/ui/MainWindow.cpp:1146 -msgid "number of images to generate." -msgstr "number of images to generate." +#: src/ui/MainWindow.cpp:1313 src/ui/MainWindowUI.cpp:2687 +#: src/ui/MainWindowUI.cpp:2694 src/ui/MainWindowUI.cpp:2709 +#: src/ui/MainWindowUI.cpp:2715 +msgid "Not selected" +msgstr "Not selected" -#: src/ui/MainWindow.cpp:1150 -msgid "Sampler:" -msgstr "Sampler:" +#: src/ui/MainWindow.cpp:1327 +msgid "SEED" +msgstr "SEED" -#: src/ui/MainWindow.cpp:1152 src/ui/MainWindow.cpp:1159 -msgid "sampling method (default: \"euler_a\")" -msgstr "sampling method (default: \"euler_a\")" - -#: src/ui/MainWindow.cpp:1163 -msgid "Scheduler:" -msgstr "Scheduler:" - -#: src/ui/MainWindow.cpp:1174 -msgid "Seed:" -msgstr "Seed:" - -#: src/ui/MainWindow.cpp:1187 +#: src/ui/MainWindow.cpp:1342 msgid "Generate a random seed" msgstr "Generate a random seed" -#: src/ui/MainWindow.cpp:1194 -msgid "Steps:" -msgstr "Steps:" - -#: src/ui/MainWindow.cpp:1196 src/ui/MainWindow.cpp:1201 -msgid "number of sample steps (default: 20)" -msgstr "number of sample steps (default: 20)" +#: src/ui/MainWindow.cpp:1349 +msgid "RESOLUTIONS" +msgstr "RESOLUTIONS" -#: src/ui/MainWindow.cpp:1225 +#: src/ui/MainWindow.cpp:1358 msgid "Swap the resolution" msgstr "Swap the resolution" -#: src/ui/MainWindow.cpp:1238 -msgid "Save the current settings into preset" -msgstr "Save the current settings into preset" +#: src/ui/MainWindow.cpp:1365 src/ui/MainWindow.cpp:1376 +msgid "512" +msgstr "512" -#: src/ui/MainWindow.cpp:1239 -msgid "Save the current settings into a new preset, or overwrite an exists one" -msgstr "" -"Save the current settings into a new preset, or overwrite an exists one" - -#: src/ui/MainWindow.cpp:1246 -msgid "Load the selected preset" -msgstr "Load the selected preset" - -#: src/ui/MainWindow.cpp:1247 -msgid "" -"Load a selected preset. The preset settings will over write the current " -"generation settings" -msgstr "" -"Load a selected preset. The preset settings will over write the current " -"generation settings" - -#: src/ui/MainWindow.cpp:1274 -msgid "Low res.:" -msgstr "Low res.:" +#: src/ui/MainWindow.cpp:1390 +msgid "Small resolutions" +msgstr "Small resolutions" -#: src/ui/MainWindow.cpp:1276 src/ui/MainWindow.cpp:1284 -msgid "Lower resolutions for SD1.x" -msgstr "Lower resolutions for SD1.x" - -#: src/ui/MainWindow.cpp:1280 src/ui/MainWindow.cpp:1294 -msgid "Select one" -msgstr "Select one" - -#: src/ui/MainWindow.cpp:1280 +#: src/ui/MainWindow.cpp:1390 msgid "640x384" msgstr "640x384" -#: src/ui/MainWindow.cpp:1280 +#: src/ui/MainWindow.cpp:1390 msgid "512x512" msgstr "512x512" -#: src/ui/MainWindow.cpp:1280 +#: src/ui/MainWindow.cpp:1390 msgid "512x768" msgstr "512x768" -#: src/ui/MainWindow.cpp:1288 -msgid "High Res.:" -msgstr "High Res.:" +#: src/ui/MainWindow.cpp:1394 +msgid "Lower resolutions for SD1.x" +msgstr "Lower resolutions for SD1.x" -#: src/ui/MainWindow.cpp:1290 src/ui/MainWindow.cpp:1298 -msgid "Higher resolutions for FLUX/SDXL/SD3.5" -msgstr "Higher resolutions for FLUX/SDXL/SD3.5" +#: src/ui/MainWindow.cpp:1398 +msgid "Large resolutions" +msgstr "Large resolutions" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1024x1024" msgstr "1024x1024" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1152x896" msgstr "1152x896" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1216x832" msgstr "1216x832" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1344x768" msgstr "1344x768" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1536x640" msgstr "1536x640" -#: src/ui/MainWindow.cpp:1302 -msgid "Prompt presets:" -msgstr "Prompt presets:" +#: src/ui/MainWindow.cpp:1402 +msgid "Higher resolutions for FLUX/SDXL/SD3.5" +msgstr "Higher resolutions for FLUX/SDXL/SD3.5" + +#: src/ui/MainWindow.cpp:1409 +msgid "No presets" +msgstr "No presets" + +#: src/ui/MainWindow.cpp:1423 +msgid "Load the selected preset" +msgstr "Load the selected preset" + +#: src/ui/MainWindow.cpp:1424 +msgid "" +"Load a selected preset. The preset settings will over write the current " +"generation settings" +msgstr "" +"Load a selected preset. The preset settings will over write the current " +"generation settings" + +#: src/ui/MainWindow.cpp:1431 +msgid "Save the current settings into preset" +msgstr "Save the current settings into preset" + +#: src/ui/MainWindow.cpp:1432 +msgid "Save the current settings into a new preset, or overwrite an exists one" +msgstr "" +"Save the current settings into a new preset, or overwrite an exists one" + +#: src/ui/MainWindow.cpp:1455 +msgid "sampling method (default: \"euler_a\")" +msgstr "sampling method (default: \"euler_a\")" + +#: src/ui/MainWindow.cpp:1472 +msgid "Steps:" +msgstr "Steps:" + +#: src/ui/MainWindow.cpp:1474 src/ui/MainWindow.cpp:1479 +msgid "number of sample steps (default: 20)" +msgstr "number of sample steps (default: 20)" + +#: src/ui/MainWindow.cpp:1489 +msgid "Batch:" +msgstr "Batch:" + +#: src/ui/MainWindow.cpp:1491 src/ui/MainWindow.cpp:1496 +msgid "number of images to generate." +msgstr "number of images to generate." + +#: src/ui/MainWindow.cpp:1506 +msgid "CFG:" +msgstr "CFG:" -#: src/ui/MainWindow.cpp:1313 +#: src/ui/MainWindow.cpp:1523 msgid "Queue" msgstr "Queue" -#: src/ui/MainWindow.cpp:1524 +#: src/ui/MainWindow.cpp:1822 msgid "Models path" msgstr "Models path" -#: src/ui/MainWindow.cpp:1530 src/ui/MainWindow.cpp:1554 -#: src/ui/MainWindow.cpp:1578 src/ui/MainWindow.cpp:1602 -#: src/ui/MainWindow.cpp:1626 src/ui/MainWindow.cpp:1657 -#: src/ui/MainWindow.cpp:1679 src/ui/MainWindow.cpp:1706 -#: src/ui/MainWindow.cpp:1730 +#: src/ui/MainWindow.cpp:1828 src/ui/MainWindow.cpp:1852 +#: src/ui/MainWindow.cpp:1876 src/ui/MainWindow.cpp:1900 +#: src/ui/MainWindow.cpp:1924 src/ui/MainWindow.cpp:1955 +#: src/ui/MainWindow.cpp:1977 src/ui/MainWindow.cpp:2004 +#: src/ui/MainWindow.cpp:2028 msgid "Select a folder" msgstr "Select a folder" -#: src/ui/MainWindow.cpp:1538 src/ui/MainWindow.cpp:1562 -#: src/ui/MainWindow.cpp:1586 src/ui/MainWindow.cpp:1610 -#: src/ui/MainWindow.cpp:1634 src/ui/MainWindow.cpp:1665 -#: src/ui/MainWindow.cpp:1687 src/ui/MainWindow.cpp:1714 -#: src/ui/MainWindow.cpp:1738 src/ui/MainWindowUI.cpp:715 +#: src/ui/MainWindow.cpp:1836 src/ui/MainWindow.cpp:1860 +#: src/ui/MainWindow.cpp:1884 src/ui/MainWindow.cpp:1908 +#: src/ui/MainWindow.cpp:1932 src/ui/MainWindow.cpp:1963 +#: src/ui/MainWindow.cpp:1985 src/ui/MainWindow.cpp:2012 +#: src/ui/MainWindow.cpp:2036 src/ui/MainWindowUI.cpp:850 msgid "Open folder" msgstr "Open folder" -#: src/ui/MainWindow.cpp:1548 +#: src/ui/MainWindow.cpp:1846 msgid "Lora path" msgstr "Lora path" -#: src/ui/MainWindow.cpp:1572 +#: src/ui/MainWindow.cpp:1870 msgid "Vae path" msgstr "Vae path" -#: src/ui/MainWindow.cpp:1596 +#: src/ui/MainWindow.cpp:1894 msgid "Embedding path" msgstr "Embedding path" -#: src/ui/MainWindow.cpp:1620 +#: src/ui/MainWindow.cpp:1918 msgid "TAESD path" msgstr "TAESD path" -#: src/ui/MainWindow.cpp:1641 +#: src/ui/MainWindow.cpp:1939 msgid "" "TAESD models you can download from here: https://github.com/madebyollin/" "taesd/tree/main" @@ -673,39 +754,39 @@ msgstr "" "TAESD models you can download from here: https://github.com/madebyollin/" "taesd/tree/main" -#: src/ui/MainWindow.cpp:1651 +#: src/ui/MainWindow.cpp:1949 msgid "Controlnet path" msgstr "Controlnet path" -#: src/ui/MainWindow.cpp:1675 +#: src/ui/MainWindow.cpp:1973 msgid "ESRGAN path" msgstr "ESRGAN path" -#: src/ui/MainWindow.cpp:1700 +#: src/ui/MainWindow.cpp:1998 msgid "Presets path" msgstr "Presets path" -#: src/ui/MainWindow.cpp:1724 +#: src/ui/MainWindow.cpp:2022 msgid "Images output" msgstr "Images output" -#: src/ui/MainWindow.cpp:1749 +#: src/ui/MainWindow.cpp:2047 msgid "Paths" msgstr "Paths" -#: src/ui/MainWindow.cpp:1757 +#: src/ui/MainWindow.cpp:2055 msgid "Generate missing base model hash before diffusion" msgstr "Generate missing base model hash before diffusion" -#: src/ui/MainWindow.cpp:1767 +#: src/ui/MainWindow.cpp:2065 msgid "Keep model in memory" msgstr "Keep model in memory" -#: src/ui/MainWindow.cpp:1770 +#: src/ui/MainWindow.cpp:2068 msgid "Keep model in (v)RAM after diffusions" msgstr "Keep model in (v)RAM after diffusions" -#: src/ui/MainWindow.cpp:1771 +#: src/ui/MainWindow.cpp:2069 msgid "" "Keep the model in memory (vRAM or RAM, depends on diffusion type) when it is " "possible. \n" @@ -729,71 +810,71 @@ msgstr "" "If you disable this option, the model allways unloaded from memory after the " "job is finished. " -#: src/ui/MainWindow.cpp:1782 +#: src/ui/MainWindow.cpp:2080 msgid "Save all images (intermediate images)" msgstr "Save all images (intermediate images)" -#: src/ui/MainWindow.cpp:1794 +#: src/ui/MainWindow.cpp:2092 msgid "Output images format" msgstr "Output images format" -#: src/ui/MainWindow.cpp:1800 +#: src/ui/MainWindow.cpp:2098 msgid "JPG" msgstr "JPG" -#: src/ui/MainWindow.cpp:1800 +#: src/ui/MainWindow.cpp:2098 msgid "PNG" msgstr "PNG" -#: src/ui/MainWindow.cpp:1806 +#: src/ui/MainWindow.cpp:2104 msgid "PNG meta data not supported yet" msgstr "PNG meta data not supported yet" -#: src/ui/MainWindow.cpp:1818 +#: src/ui/MainWindow.cpp:2116 msgid "JPEG quality" msgstr "JPEG quality" -#: src/ui/MainWindow.cpp:1825 src/ui/MainWindow.cpp:1843 +#: src/ui/MainWindow.cpp:2123 src/ui/MainWindow.cpp:2141 msgid "Image output quality, default: 90%" msgstr "Image output quality, default: 90%" -#: src/ui/MainWindow.cpp:1836 +#: src/ui/MainWindow.cpp:2134 msgid "PNG compression level" msgstr "PNG compression level" -#: src/ui/MainWindow.cpp:1860 +#: src/ui/MainWindow.cpp:2158 msgid "Number of CPU cores" msgstr "Number of CPU cores" -#: src/ui/MainWindow.cpp:1879 +#: src/ui/MainWindow.cpp:2177 msgid "Image name format" msgstr "Image name format" -#: src/ui/MainWindow.cpp:1890 +#: src/ui/MainWindow.cpp:2188 msgid "[mode]_[jobid]_[seed]_[width]x[height]_[batch]" msgstr "[mode]_[jobid]_[seed]_[width]x[height]_[batch]" -#: src/ui/MainWindow.cpp:1909 +#: src/ui/MainWindow.cpp:2207 msgid "Show notifications" msgstr "Show notifications" -#: src/ui/MainWindow.cpp:1916 +#: src/ui/MainWindow.cpp:2214 msgid "Notification timeout:" msgstr "Notification timeout:" -#: src/ui/MainWindow.cpp:1921 +#: src/ui/MainWindow.cpp:2219 msgid "The timeout is depends on the OS and notification type" msgstr "The timeout is depends on the OS and notification type" -#: src/ui/MainWindow.cpp:1925 +#: src/ui/MainWindow.cpp:2223 msgid "Language:" msgstr "Language:" -#: src/ui/MainWindow.cpp:1938 +#: src/ui/MainWindow.cpp:2236 msgid "Only show favorite models" msgstr "Only show favorite models" -#: src/ui/MainWindow.cpp:1939 +#: src/ui/MainWindow.cpp:2237 msgid "" "Only display the models marked as favorites in the model selector of the " "main GUI" @@ -801,116 +882,116 @@ msgstr "" "Only display the models marked as favorites in the model selector of the " "main GUI" -#: src/ui/MainWindow.cpp:1950 +#: src/ui/MainWindow.cpp:2248 msgid "GUI" msgstr "GUI" -#: src/ui/MainWindow.cpp:1958 +#: src/ui/MainWindow.cpp:2256 msgid "Enable CivitAi features" msgstr "Enable CivitAi features" -#: src/ui/MainWindow.cpp:1960 +#: src/ui/MainWindow.cpp:2258 msgid "Enable or disable all CivitAi features" msgstr "Enable or disable all CivitAi features" -#: src/ui/MainWindow.cpp:1970 +#: src/ui/MainWindow.cpp:2268 msgid "CivitAi.com API key" msgstr "CivitAi.com API key" -#: src/ui/MainWindow.cpp:1980 +#: src/ui/MainWindow.cpp:2278 msgid "How to generate API key on CivitAi.com" msgstr "How to generate API key on CivitAi.com" -#: src/ui/MainWindow.cpp:1981 +#: src/ui/MainWindow.cpp:2279 msgid "Click to the question mark button to get help" msgstr "Click to the question mark button to get help" -#: src/ui/MainWindow.cpp:1992 +#: src/ui/MainWindow.cpp:2290 msgid "CivitAi" msgstr "CivitAi" -#: src/ui/MainWindow.cpp:1996 +#: src/ui/MainWindow.cpp:2294 msgid "Save" msgstr "Save" -#: src/ui/MainWindow.cpp:2154 +#: src/ui/MainWindow.cpp:2452 msgid "Versions" msgstr "Versions" -#: src/ui/MainWindow.cpp:2162 +#: src/ui/MainWindow.cpp:2460 msgid "baseModel" msgstr "baseModel" -#: src/ui/MainWindow.cpp:2163 +#: src/ui/MainWindow.cpp:2461 msgid "baseModelType" msgstr "baseModelType" -#: src/ui/MainWindow.cpp:2165 +#: src/ui/MainWindow.cpp:2463 msgid "Published" msgstr "Published" -#: src/ui/MainWindow.cpp:2166 src/ui/MainWindow.cpp:2241 -#: src/ui/MainWindow.cpp:2244 +#: src/ui/MainWindow.cpp:2464 src/ui/MainWindow.cpp:2539 +#: src/ui/MainWindow.cpp:2542 msgid "Downloads" msgstr "Downloads" -#: src/ui/MainWindow.cpp:2176 +#: src/ui/MainWindow.cpp:2474 msgid "Files" msgstr "Files" -#: src/ui/MainWindow.cpp:2182 +#: src/ui/MainWindow.cpp:2480 msgid "Download" msgstr "Download" -#: src/ui/MainWindow.cpp:2194 +#: src/ui/MainWindow.cpp:2492 msgid "Format" msgstr "Format" -#: src/ui/MainWindow.cpp:2196 +#: src/ui/MainWindow.cpp:2494 msgid "Fp" msgstr "Fp" -#: src/ui/MainWindow.cpp:2212 +#: src/ui/MainWindow.cpp:2510 msgid "Checkpoints" msgstr "Checkpoints" -#: src/ui/MainWindow.cpp:2212 +#: src/ui/MainWindow.cpp:2510 msgid "LORA" msgstr "LORA" -#: src/ui/MainWindow.cpp:2212 +#: src/ui/MainWindow.cpp:2510 msgid "Embeddings" msgstr "Embeddings" -#: src/ui/MainWindow.cpp:2216 +#: src/ui/MainWindow.cpp:2514 msgid "Select the model type to filter" msgstr "Select the model type to filter" -#: src/ui/MainWindow.cpp:2221 +#: src/ui/MainWindow.cpp:2519 msgid "Search for model names" msgstr "Search for model names" -#: src/ui/MainWindow.cpp:2225 +#: src/ui/MainWindow.cpp:2523 msgid "Search" msgstr "Search" -#: src/ui/MainWindow.cpp:2251 +#: src/ui/MainWindow.cpp:2549 msgid "File" msgstr "File" -#: src/ui/MainWindow.h:315 +#: src/ui/MainWindow.h:370 msgid "sd.cpp.gui" msgstr "sd.cpp.gui" -#: src/ui/MainWindow.h:417 +#: src/ui/MainWindow.h:472 msgid "Settings" msgstr "Settings" -#: src/ui/MainWindow.h:457 +#: src/ui/MainWindow.h:512 msgid "About" msgstr "About" -#: src/ui/MainWindow.h:526 +#: src/ui/MainWindow.h:581 msgid "CivitAI model downloader" msgstr "CivitAI model downloader" @@ -984,7 +1065,7 @@ msgstr "Parsing items" #: src/ui/MainWindowCivitAiWindow.cpp:661 #: src/ui/MainWindowCivitAiWindow.cpp:834 #: src/ui/MainWindowCivitAiWindow.cpp:849 -#: src/ui/MainWindowCivitAiWindow.cpp:854 src/ui/MainWindowUI.cpp:235 +#: src/ui/MainWindowCivitAiWindow.cpp:854 src/ui/MainWindowUI.cpp:242 msgid "N/A" msgstr "N/A" @@ -1001,11 +1082,11 @@ msgstr "Loading, please wait..." msgid "Current job: %s %s %s" msgstr "Current job: %s %s %s" -#: src/ui/MainWindowUI.cpp:78 src/ui/MainWindowUI.cpp:1388 +#: src/ui/MainWindowUI.cpp:81 src/ui/MainWindowUI.cpp:1598 msgid "Hide Widget" msgstr "Hide Widget" -#: src/ui/MainWindowUI.cpp:98 +#: src/ui/MainWindowUI.cpp:102 #, c-format msgid "" "Officially from sd.cpp, the following upscaler model is supported:
RealESRGAN_x4Plus Anime 6B
This is working sometimes " "too: RealESRGAN_x4Plus" -#: src/ui/MainWindowUI.cpp:121 src/ui/MainWindowUI.cpp:122 +#: src/ui/MainWindowUI.cpp:125 src/ui/MainWindowUI.cpp:126 #, c-format msgid "" "An error occurred when trying to start external process: %s.\n" @@ -1025,13 +1106,14 @@ msgstr "" "An error occurred when trying to start external process: %s.\n" " Please try again." -#: src/ui/MainWindowUI.cpp:121 src/ui/MainWindowUI.cpp:135 -#: src/ui/MainWindowUI.cpp:157 src/ui/MainWindowUI.cpp:2125 -#: src/ui/MainWindowUI.cpp:2310 +#: src/ui/MainWindowUI.cpp:125 src/ui/MainWindowUI.cpp:139 +#: src/ui/MainWindowUI.cpp:161 src/ui/MainWindowUI.cpp:2288 +#: src/ui/MainWindowUI.cpp:2476 src/ui/MainWindowUI.cpp:5143 +#: src/ui/MainWindowUI.cpp:5153 msgid "Error" msgstr "Error" -#: src/ui/MainWindowUI.cpp:135 src/ui/MainWindowUI.cpp:136 +#: src/ui/MainWindowUI.cpp:139 src/ui/MainWindowUI.cpp:140 #, c-format msgid "" "An error occurred when trying to start external process. Shared lib not " @@ -1042,22 +1124,22 @@ msgstr "" "found: %s.\n" " Please try again." -#: src/ui/MainWindowUI.cpp:151 +#: src/ui/MainWindowUI.cpp:155 #, c-format msgid "Starting external process: %s %s" msgstr "Starting external process: %s %s" -#: src/ui/MainWindowUI.cpp:157 +#: src/ui/MainWindowUI.cpp:161 msgid "" "An error occurred when trying to start external process. Please try again." msgstr "" "An error occurred when trying to start external process. Please try again." -#: src/ui/MainWindowUI.cpp:172 +#: src/ui/MainWindowUI.cpp:176 msgid "Please wait to finish the currently running jobs!" msgstr "Please wait to finish the currently running jobs!" -#: src/ui/MainWindowUI.cpp:205 +#: src/ui/MainWindowUI.cpp:212 msgid "" "

Disclaimer

Use of this application is at your own " "risk. The developer assumes no responsibility or liability for any potential " @@ -1069,368 +1151,405 @@ msgstr "" "data loss, damage, or other issues arising from its usage. By using this " "application, you acknowledge and accept these terms.

" -#: src/ui/MainWindowUI.cpp:212 +#: src/ui/MainWindowUI.cpp:219 #, c-format msgid "

Version: %s

" msgstr "

Version: %s

" -#: src/ui/MainWindowUI.cpp:213 +#: src/ui/MainWindowUI.cpp:220 #, c-format msgid "

Git version: %s

" msgstr "

Git version: %s

" -#: src/ui/MainWindowUI.cpp:214 +#: src/ui/MainWindowUI.cpp:221 #, c-format msgid "

Stable Diffusion CPP version: %s

" msgstr "

Stable Diffusion CPP verzió: %s

" -#: src/ui/MainWindowUI.cpp:215 +#: src/ui/MainWindowUI.cpp:222 #, c-format msgid "

Website: %s

" msgstr "

Website: %s

" -#: src/ui/MainWindowUI.cpp:217 +#: src/ui/MainWindowUI.cpp:224 #, c-format msgid "

Loaded backend: %s

" msgstr "

Loaded backend: %s

" -#: src/ui/MainWindowUI.cpp:219 +#: src/ui/MainWindowUI.cpp:226 msgid "Configuration folder:" msgstr "Configuration folder:" -#: src/ui/MainWindowUI.cpp:223 +#: src/ui/MainWindowUI.cpp:230 msgid "Model folder:" msgstr "Model folder:" -#: src/ui/MainWindowUI.cpp:224 +#: src/ui/MainWindowUI.cpp:231 msgid "Embedding folder:" msgstr "Embedding folder:" -#: src/ui/MainWindowUI.cpp:225 +#: src/ui/MainWindowUI.cpp:232 msgid "Lora folder:" msgstr "Lora folder:" -#: src/ui/MainWindowUI.cpp:226 +#: src/ui/MainWindowUI.cpp:233 msgid "Vae folder:" msgstr "Vae folder:" -#: src/ui/MainWindowUI.cpp:227 +#: src/ui/MainWindowUI.cpp:234 msgid "Controlnet folder:" msgstr "Controlnet folder:" -#: src/ui/MainWindowUI.cpp:228 +#: src/ui/MainWindowUI.cpp:235 msgid "ESRGAN folder:" msgstr "ESRGAN folder:" -#: src/ui/MainWindowUI.cpp:229 +#: src/ui/MainWindowUI.cpp:236 msgid "TAESD folder:" msgstr "TAESD folder:" -#: src/ui/MainWindowUI.cpp:230 +#: src/ui/MainWindowUI.cpp:237 msgid "Output folder:" msgstr "Output folder:" -#: src/ui/MainWindowUI.cpp:231 +#: src/ui/MainWindowUI.cpp:238 msgid "Jobs folder:" msgstr "Jobs folder:" -#: src/ui/MainWindowUI.cpp:232 +#: src/ui/MainWindowUI.cpp:239 msgid "Presets folder:" msgstr "Presets folder:" -#: src/ui/MainWindowUI.cpp:280 +#: src/ui/MainWindowUI.cpp:287 msgid "No model selected" msgstr "No model selected" -#: src/ui/MainWindowUI.cpp:287 src/ui/MainWindowUI.cpp:288 +#: src/ui/MainWindowUI.cpp:294 src/ui/MainWindowUI.cpp:295 #, c-format msgid "Model: %s" msgstr "Model: %s" -#: src/ui/MainWindowUI.cpp:534 +#: src/ui/MainWindowUI.cpp:582 src/ui/MainWindowUI.cpp:651 +#: src/ui/MainWindowUI.cpp:2111 src/ui/MainWindowUI.cpp:2505 +#, c-format +msgid "Number of jobs: %d" +msgstr "Number of jobs: %d" + +#: src/ui/MainWindowUI.cpp:634 +msgid "Error: rows_to_del.size() != items_to_del.size()" +msgstr "Error: rows_to_del.size() != items_to_del.size()" + +#: src/ui/MainWindowUI.cpp:639 +#, c-format +msgid "Delete %d items" +msgstr "Delete %d items" + +#: src/ui/MainWindowUI.cpp:668 msgid "Requeue" msgstr "Requeue" -#: src/ui/MainWindowUI.cpp:551 +#: src/ui/MainWindowUI.cpp:685 msgid "Load parameters" msgstr "Load parameters" -#: src/ui/MainWindowUI.cpp:552 src/ui/MainWindowUI.cpp:3770 +#: src/ui/MainWindowUI.cpp:686 src/ui/MainWindowUI.cpp:1987 +#: src/ui/MainWindowUI.cpp:4064 msgid "Copy prompts to text2img" msgstr "Copy prompts to text2img" -#: src/ui/MainWindowUI.cpp:553 src/ui/MainWindowUI.cpp:3771 +#: src/ui/MainWindowUI.cpp:687 src/ui/MainWindowUI.cpp:1988 +#: src/ui/MainWindowUI.cpp:4065 msgid "Copy prompts to img2img" msgstr "Copy prompts to img2img" -#: src/ui/MainWindowUI.cpp:554 +#: src/ui/MainWindowUI.cpp:688 src/ui/MainWindowUI.cpp:2003 #, c-format msgid "Select model %s" msgstr "Select model %s" -#: src/ui/MainWindowUI.cpp:557 +#: src/ui/MainWindowUI.cpp:691 msgid "Send the last image to the Upscale tab" msgstr "Send the last image to the Upscale tab" -#: src/ui/MainWindowUI.cpp:558 +#: src/ui/MainWindowUI.cpp:692 msgid "Send the last image to the img2img tab" msgstr "Send the last image to the img2img tab" -#: src/ui/MainWindowUI.cpp:563 +#: src/ui/MainWindowUI.cpp:697 msgid "Upscale again" msgstr "Upscale again" -#: src/ui/MainWindowUI.cpp:570 +#: src/ui/MainWindowUI.cpp:704 msgid "Pause" msgstr "Pause" -#: src/ui/MainWindowUI.cpp:570 +#: src/ui/MainWindowUI.cpp:704 msgid "Resume" msgstr "Resume" -#: src/ui/MainWindowUI.cpp:574 +#: src/ui/MainWindowUI.cpp:708 msgid "Delete" msgstr "Delete" -#: src/ui/MainWindowUI.cpp:622 +#: src/ui/MainWindowUI.cpp:757 #, c-format msgid "Create subfolder in: '%s'" msgstr "Create subfolder in: '%s'" -#: src/ui/MainWindowUI.cpp:627 +#: src/ui/MainWindowUI.cpp:762 msgid "RE-Calculate &Hash" msgstr "RE-Calculate &Hash" -#: src/ui/MainWindowUI.cpp:629 +#: src/ui/MainWindowUI.cpp:764 msgid "Calculate &Hash" msgstr "Calculate &Hash" -#: src/ui/MainWindowUI.cpp:635 +#: src/ui/MainWindowUI.cpp:770 msgid "Force update info from &CivitAi" msgstr "Force update info from &CivitAi" -#: src/ui/MainWindowUI.cpp:637 +#: src/ui/MainWindowUI.cpp:772 msgid "Update info from &CivitAi" msgstr "Update info from &CivitAi" -#: src/ui/MainWindowUI.cpp:642 +#: src/ui/MainWindowUI.cpp:777 #, c-format msgid "&Select model %s to the next job" msgstr "&Select model %s to the next job" -#: src/ui/MainWindowUI.cpp:644 +#: src/ui/MainWindowUI.cpp:779 msgid "Open model on CivitAi.com in default browser" msgstr "Open model on CivitAi.com in default browser" -#: src/ui/MainWindowUI.cpp:648 +#: src/ui/MainWindowUI.cpp:783 #, c-format msgid "Convert model to %s gguf format" msgstr "Convert model to %s gguf format" -#: src/ui/MainWindowUI.cpp:657 +#: src/ui/MainWindowUI.cpp:792 #, c-format msgid "Append to text2img prompt " msgstr "Append to text2img prompt " -#: src/ui/MainWindowUI.cpp:658 +#: src/ui/MainWindowUI.cpp:793 #, c-format msgid "Append to text2img neg. prompt " msgstr "Append to text2img neg. prompt " -#: src/ui/MainWindowUI.cpp:659 +#: src/ui/MainWindowUI.cpp:794 #, c-format msgid "Append to img2img prompt " msgstr "Append to img2img prompt " -#: src/ui/MainWindowUI.cpp:660 +#: src/ui/MainWindowUI.cpp:795 #, c-format msgid "Append to img2img neg. prompt " msgstr "Append to img2img neg. prompt " -#: src/ui/MainWindowUI.cpp:664 +#: src/ui/MainWindowUI.cpp:799 #, c-format msgid "Append to text2img prompt %s" msgstr "Append to text2img prompt %s" -#: src/ui/MainWindowUI.cpp:665 +#: src/ui/MainWindowUI.cpp:800 #, c-format msgid "Append to text2img neg. prompt %s" msgstr "Append to text2img neg. prompt %s" -#: src/ui/MainWindowUI.cpp:666 +#: src/ui/MainWindowUI.cpp:801 #, c-format msgid "Append to img2img prompt %s" msgstr "Append to img2img prompt %s" -#: src/ui/MainWindowUI.cpp:667 +#: src/ui/MainWindowUI.cpp:802 #, c-format msgid "Append to img2img neg. prompt %s" msgstr "Append to img2img neg. prompt %s" -#: src/ui/MainWindowUI.cpp:678 +#: src/ui/MainWindowUI.cpp:813 msgid "&Move model into another sub folder" msgstr "&Move model into another sub folder" -#: src/ui/MainWindowUI.cpp:682 +#: src/ui/MainWindowUI.cpp:817 #, c-format msgid "Move the model into the checkoints folder: %s" msgstr "Move the model into the checkoints folder: %s" -#: src/ui/MainWindowUI.cpp:683 +#: src/ui/MainWindowUI.cpp:818 #, c-format msgid "Move the model into the VAE folder: %s" msgstr "Move the model into the VAE folder: %s" -#: src/ui/MainWindowUI.cpp:684 +#: src/ui/MainWindowUI.cpp:819 #, c-format msgid "Move the model into the Lora folder: %s" msgstr "Move the model into the Lora folder: %s" -#: src/ui/MainWindowUI.cpp:685 +#: src/ui/MainWindowUI.cpp:820 #, c-format msgid "Move the model into the Embedding folder: %s" msgstr "Move the model into the Embedding folder: %s" -#: src/ui/MainWindowUI.cpp:686 +#: src/ui/MainWindowUI.cpp:821 #, c-format msgid "Move the model into the TaeSD folder: %s" msgstr "Move the model into the TaeSD folder: %s" -#: src/ui/MainWindowUI.cpp:687 +#: src/ui/MainWindowUI.cpp:822 #, c-format msgid "Move the model into the ESRGAN (upscalers) folder: %s" msgstr "Move the model into the ESRGAN (upscalers) folder: %s" -#: src/ui/MainWindowUI.cpp:688 +#: src/ui/MainWindowUI.cpp:823 #, c-format msgid "Move the model into the ControlNet folder: %s" msgstr "Move the model into the ControlNet folder: %s" -#: src/ui/MainWindowUI.cpp:696 +#: src/ui/MainWindowUI.cpp:831 msgid "&Move to another folder" msgstr "&Move to another folder" -#: src/ui/MainWindowUI.cpp:698 +#: src/ui/MainWindowUI.cpp:833 msgid "&Delete model file" msgstr "&Delete model file" -#: src/ui/MainWindowUI.cpp:743 src/ui/MainWindowUI.cpp:749 +#: src/ui/MainWindowUI.cpp:891 src/ui/MainWindowUI.cpp:897 #, c-format msgid "Image type not supported: %s" msgstr "Image type not supported: %s" -#: src/ui/MainWindowUI.cpp:759 +#: src/ui/MainWindowUI.cpp:907 msgid "Load generation parameters from image?" msgstr "Load generation parameters from image?" -#: src/ui/MainWindowUI.cpp:759 +#: src/ui/MainWindowUI.cpp:907 msgid "Load parameters?" msgstr "Load parameters?" -#: src/ui/MainWindowUI.cpp:849 +#: src/ui/MainWindowUI.cpp:1004 msgid "No upscaler model found!" msgstr "No upscaler model found!" -#: src/ui/MainWindowUI.cpp:892 +#: src/ui/MainWindowUI.cpp:1047 msgid "No taesd model found!" msgstr "No taesd model found!" -#: src/ui/MainWindowUI.cpp:902 +#: src/ui/MainWindowUI.cpp:1057 msgid "No vae model found!" msgstr "No vae model found!" -#: src/ui/MainWindowUI.cpp:1030 +#: src/ui/MainWindowUI.cpp:1232 #, c-format msgid "Skipping controlnet with diffusion model: %s" msgstr "Skipping controlnet with diffusion model: %s" -#: src/ui/MainWindowUI.cpp:1034 +#: src/ui/MainWindowUI.cpp:1236 msgid "No controlnet model found!" msgstr "No controlnet model found!" -#: src/ui/MainWindowUI.cpp:1096 +#: src/ui/MainWindowUI.cpp:1298 #, c-format msgid "Controlnet Image %dx%dpx" msgstr "Controlnet Image %dx%dpx" -#: src/ui/MainWindowUI.cpp:1183 +#: src/ui/MainWindowUI.cpp:1387 msgid "IMG2IMG - original image" msgstr "IMG2IMG - original image" -#: src/ui/MainWindowUI.cpp:1241 src/ui/MainWindowUI.cpp:1242 -#: src/ui/MainWindowUI.cpp:1247 src/ui/MainWindowUI.cpp:1248 +#: src/ui/MainWindowUI.cpp:1451 src/ui/MainWindowUI.cpp:1452 +#: src/ui/MainWindowUI.cpp:1457 src/ui/MainWindowUI.cpp:1458 #, c-format msgid "%dpx" msgstr "%dpx" -#: src/ui/MainWindowUI.cpp:1284 +#: src/ui/MainWindowUI.cpp:1495 #, c-format msgid "%s %s" msgstr "%s %s" -#: src/ui/MainWindowUI.cpp:1487 +#: src/ui/MainWindowUI.cpp:1625 msgid "Please specify a name (only alphanumeric)" msgstr "Please specify a name (only alphanumeric)" -#: src/ui/MainWindowUI.cpp:1673 +#: src/ui/MainWindowUI.cpp:1824 msgid "Taesd file not found: " msgstr "Taesd file not found: " -#: src/ui/MainWindowUI.cpp:1691 +#: src/ui/MainWindowUI.cpp:1842 msgid "Vae file not found: " msgstr "Vae file not found: " -#: src/ui/MainWindowUI.cpp:1714 +#: src/ui/MainWindowUI.cpp:1865 msgid "Controlnet file not found: " msgstr "Controlnet file not found: " -#: src/ui/MainWindowUI.cpp:1753 +#: src/ui/MainWindowUI.cpp:1904 msgid "File name" msgstr "File name" -#: src/ui/MainWindowUI.cpp:1777 +#: src/ui/MainWindowUI.cpp:1928 msgid "Last modified" msgstr "Last modified" -#: src/ui/MainWindowUI.cpp:1794 +#: src/ui/MainWindowUI.cpp:1945 #, c-format msgid "#%d id" msgstr "#%d id" -#: src/ui/MainWindowUI.cpp:1799 +#: src/ui/MainWindowUI.cpp:1950 #, c-format msgid "#%d name" msgstr "#%d name" -#: src/ui/MainWindowUI.cpp:1804 +#: src/ui/MainWindowUI.cpp:1955 #, c-format msgid "#%d format" msgstr "#%d format" -#: src/ui/MainWindowUI.cpp:1809 +#: src/ui/MainWindowUI.cpp:1960 #, c-format msgid "#%d type" msgstr "#%d type" -#: src/ui/MainWindowUI.cpp:1826 +#: src/ui/MainWindowUI.cpp:1977 #, c-format msgid "Resolution: %s Seed: % Steps: %d" msgstr "Resolution: %s Seed: % Steps: %d" -#: src/ui/MainWindowUI.cpp:1826 +#: src/ui/MainWindowUI.cpp:1977 msgid "Unknown" msgstr "Unknown" -#: src/ui/MainWindowUI.cpp:1843 -msgid "Open Image on CivitAi.com" -msgstr "Open Image on CivitAi.com" +#: src/ui/MainWindowUI.cpp:1989 +msgid "Send to img2img" +msgstr "Send to img2img" + +#: src/ui/MainWindowUI.cpp:1995 +msgid "Load available parameters" +msgstr "Load available parameters" -#: src/ui/MainWindowUI.cpp:1952 src/ui/MainWindowUI.cpp:2341 +#: src/ui/MainWindowUI.cpp:1996 +msgid "Open the original image in the web browser" +msgstr "Open the original image in the web browser" + +#: src/ui/MainWindowUI.cpp:2007 +msgid "Send to Image Info tab" +msgstr "Send to Image Info tab" + +#: src/ui/MainWindowUI.cpp:2057 #, c-format -msgid "Number of jobs: %d" -msgstr "Number of jobs: %d" +msgid "" +"Open the original image in the web browser?\n" +" %s" +msgstr "" +"Open the original image in the web browser?\n" +" %s" -#: src/ui/MainWindowUI.cpp:2115 +#: src/ui/MainWindowUI.cpp:2057 +msgid "Open original image" +msgstr "Open original image" + +#: src/ui/MainWindowUI.cpp:2278 #, c-format msgid "" "Create subfolder in: \n" @@ -1443,33 +1562,33 @@ msgstr "" "The folder will remain hidden within the application until a compatible " "model file is added to it." -#: src/ui/MainWindowUI.cpp:2115 +#: src/ui/MainWindowUI.cpp:2278 msgid "Create folder" msgstr "Create folder" -#: src/ui/MainWindowUI.cpp:2125 +#: src/ui/MainWindowUI.cpp:2288 msgid "Folder already exists" msgstr "Folder already exists" -#: src/ui/MainWindowUI.cpp:2128 +#: src/ui/MainWindowUI.cpp:2291 #, c-format msgid "Created folder: %s" msgstr "Created folder: %s" -#: src/ui/MainWindowUI.cpp:2132 +#: src/ui/MainWindowUI.cpp:2295 #, c-format msgid "Can not create folder: %s" msgstr "Can not create folder: %s" -#: src/ui/MainWindowUI.cpp:2176 +#: src/ui/MainWindowUI.cpp:2339 msgid "Select the directory to move the model" msgstr "Select the directory to move the model" -#: src/ui/MainWindowUI.cpp:2176 +#: src/ui/MainWindowUI.cpp:2339 msgid "Move Model" msgstr "Move Model" -#: src/ui/MainWindowUI.cpp:2183 +#: src/ui/MainWindowUI.cpp:2346 #, c-format msgid "" "Are you sure you want to delete this model?\n" @@ -1478,54 +1597,66 @@ msgstr "" "Are you sure you want to delete this model?\n" "%s" -#: src/ui/MainWindowUI.cpp:2183 +#: src/ui/MainWindowUI.cpp:2346 msgid "Delete Model" msgstr "Delete Model" -#: src/ui/MainWindowUI.cpp:2310 +#: src/ui/MainWindowUI.cpp:2476 msgid "Diffusion model not found" msgstr "Diffusion model not found" -#: src/ui/MainWindowUI.cpp:2501 src/ui/MainWindowUI.cpp:2510 -#: src/ui/MainWindowUI.cpp:2517 src/ui/MainWindowUI.cpp:2524 -#: src/ui/MainWindowUI.cpp:2530 src/ui/MainWindowUI.cpp:2539 -#: src/ui/MainWindowUI.cpp:2545 -msgid "-none-" -msgstr "-none-" +#: src/ui/MainWindowUI.cpp:2671 src/ui/MainWindowUI.cpp:2680 +#: src/ui/MainWindowUI.cpp:2700 +msgid "Select one" +msgstr "Select one" -#: src/ui/MainWindowUI.cpp:2645 +#: src/ui/MainWindowUI.cpp:2815 #, c-format msgid "Failed to parse preset: %s" msgstr "Failed to parse preset: %s" -#: src/ui/MainWindowUI.cpp:2662 +#: src/ui/MainWindowUI.cpp:2832 #, c-format msgid "Failed to parse prompt template: %s" msgstr "Failed to parse prompt template: %s" -#: src/ui/MainWindowUI.cpp:2674 src/ui/MainWindowUI.cpp:2676 +#: src/ui/MainWindowUI.cpp:2852 src/ui/MainWindowUI.cpp:2854 #, c-format msgid "Loaded %s: %d" msgstr "Loaded %s: %d" -#: src/ui/MainWindowUI.cpp:2851 +#: src/ui/MainWindowUI.cpp:3032 +#, c-format +msgid "" +"Image size (%d x %d) is smaller than the original size (%d x %d). Please " +"increase the size to at least (%d x %d)." +msgstr "" +"Image size (%d x %d) is smaller than the original size (%d x %d). Please " +"increase the size to at least (%d x %d)." + +#: src/ui/MainWindowUI.cpp:3059 msgid "Can not open image!" msgstr "Can not open image!" -#: src/ui/MainWindowUI.cpp:2857 +#: src/ui/MainWindowUI.cpp:3118 +#, c-format +msgid "No metadata found in image: %s" +msgstr "No metadata found in image: %s" + +#: src/ui/MainWindowUI.cpp:3151 msgid "Upscaler image open: file name is empty" msgstr "Upscaler image open: file name is empty" -#: src/ui/MainWindowUI.cpp:2863 +#: src/ui/MainWindowUI.cpp:3157 #, c-format msgid "Upscaler image open: file not found: %s" msgstr "Upscaler image open: file not found: %s" -#: src/ui/MainWindowUI.cpp:2900 +#: src/ui/MainWindowUI.cpp:3194 msgid "Error accessing to the background process. Please try again." msgstr "Error accessing to the background process. Please try again." -#: src/ui/MainWindowUI.cpp:3075 +#: src/ui/MainWindowUI.cpp:3369 #, c-format msgid "" "%s is just stared to generate %d images\n" @@ -1534,11 +1665,11 @@ msgstr "" "%s is just stared to generate %d images\n" "Model: %s" -#: src/ui/MainWindowUI.cpp:3078 +#: src/ui/MainWindowUI.cpp:3372 msgid "Upscaling started" msgstr "Upscaling started" -#: src/ui/MainWindowUI.cpp:3079 +#: src/ui/MainWindowUI.cpp:3373 #, c-format msgid "" "Upscaling the image is started: %s\n" @@ -1547,11 +1678,11 @@ msgstr "" "Upscaling the image is started: %s\n" "Model: %s" -#: src/ui/MainWindowUI.cpp:3081 +#: src/ui/MainWindowUI.cpp:3375 msgid "Conversion started" msgstr "Conversion started" -#: src/ui/MainWindowUI.cpp:3082 +#: src/ui/MainWindowUI.cpp:3376 #, c-format msgid "" "Conversion the model is started: %s\n" @@ -1560,16 +1691,16 @@ msgstr "" "Conversion the model is started: %s\n" "Model: %s" -#: src/ui/MainWindowUI.cpp:3085 +#: src/ui/MainWindowUI.cpp:3379 #, c-format msgid "%d images generation started" msgstr "%d images generation started" -#: src/ui/MainWindowUI.cpp:3087 +#: src/ui/MainWindowUI.cpp:3381 msgid "One image generation started!" msgstr "One image generation started!" -#: src/ui/MainWindowUI.cpp:3088 +#: src/ui/MainWindowUI.cpp:3382 #, c-format msgid "" "%s is just started to generate the image\n" @@ -1578,7 +1709,7 @@ msgstr "" "%s is just started to generate the image\n" "Model: %s" -#: src/ui/MainWindowUI.cpp:3103 +#: src/ui/MainWindowUI.cpp:3397 #, c-format msgid "" "%s is just finished to generate %d images\n" @@ -1587,11 +1718,11 @@ msgstr "" "%s is just finished to generate %d images\n" "Model: %s" -#: src/ui/MainWindowUI.cpp:3105 +#: src/ui/MainWindowUI.cpp:3399 msgid "Upscaling done" msgstr "Upscaling done" -#: src/ui/MainWindowUI.cpp:3106 +#: src/ui/MainWindowUI.cpp:3400 #, c-format msgid "" "Upscaling the image is done: \n" @@ -1602,11 +1733,11 @@ msgstr "" "%s\n" "Model: %s" -#: src/ui/MainWindowUI.cpp:3108 +#: src/ui/MainWindowUI.cpp:3402 msgid "Conversion done" msgstr "Conversion done" -#: src/ui/MainWindowUI.cpp:3109 +#: src/ui/MainWindowUI.cpp:3403 #, c-format msgid "" "Conversion the model is done: \n" @@ -1617,389 +1748,450 @@ msgstr "" "%s\n" "Model: %s" -#: src/ui/MainWindowUI.cpp:3113 +#: src/ui/MainWindowUI.cpp:3412 #, c-format msgid "%d images generation done" msgstr "%d images generation done" -#: src/ui/MainWindowUI.cpp:3115 +#: src/ui/MainWindowUI.cpp:3414 msgid "Image generation done!" msgstr "Image generation done!" -#: src/ui/MainWindowUI.cpp:3116 +#: src/ui/MainWindowUI.cpp:3415 #, c-format msgid "%s is just finished to generate the image with model: %s" msgstr "%s is just finished to generate the image with model: %s" -#: src/ui/MainWindowUI.cpp:3125 +#: src/ui/MainWindowUI.cpp:3424 #, c-format msgid "%d jobs and %d steps without a segfault" msgstr "%d jobs and %d steps without a segfault" -#: src/ui/MainWindowUI.cpp:3127 +#: src/ui/MainWindowUI.cpp:3426 #, c-format msgid "%d job and %d step without a segfault" msgstr "%d job and %d step without a segfault" -#: src/ui/MainWindowUI.cpp:3141 +#: src/ui/MainWindowUI.cpp:3440 #, c-format msgid "Model loaded: %s\n" msgstr "Model loaded: %s\n" -#: src/ui/MainWindowUI.cpp:3145 +#: src/ui/MainWindowUI.cpp:3444 #, c-format msgid "Model load started: %s\n" msgstr "Model load started: %s\n" -#: src/ui/MainWindowUI.cpp:3149 +#: src/ui/MainWindowUI.cpp:3448 #, c-format msgid "Model load failed: %s\n" msgstr "Model load failed: %s\n" -#: src/ui/MainWindowUI.cpp:3150 +#: src/ui/MainWindowUI.cpp:3449 msgid "Model load failed" msgstr "Model load failed" -#: src/ui/MainWindowUI.cpp:3151 +#: src/ui/MainWindowUI.cpp:3450 #, c-format msgid "The '%s' just failed to load... for more details please see the logs!" msgstr "The '%s' just failed to load... for more details please see the logs!" -#: src/ui/MainWindowUI.cpp:3159 +#: src/ui/MainWindowUI.cpp:3458 #, c-format msgid "" "Diffusion started. Seed: % Batch: %d %dx%dpx Cfg: %.1f Steps: %d" msgstr "" "Diffusion started. Seed: % Batch: %d %dx%dpx Cfg: %.1f Steps: %d" -#: src/ui/MainWindowUI.cpp:3165 +#: src/ui/MainWindowUI.cpp:3464 #, c-format msgid "Upscale start, factor: %d image: %s\n" msgstr "Upscale start, factor: %d image: %s\n" -#: src/ui/MainWindowUI.cpp:3170 +#: src/ui/MainWindowUI.cpp:3469 #, c-format msgid "Generation error: %s\n" msgstr "Generation error: %s\n" -#: src/ui/MainWindowUI.cpp:3181 +#: src/ui/MainWindowUI.cpp:3480 #, c-format msgid "Model civitai image downloaded for model: %s\n" msgstr "Model civitai image downloaded for model: %s\n" -#: src/ui/MainWindowUI.cpp:3198 src/ui/MainWindowUI.cpp:3203 +#: src/ui/MainWindowUI.cpp:3497 src/ui/MainWindowUI.cpp:3502 #, c-format msgid "Moving: %s%%" msgstr "Moving: %s%%" -#: src/ui/MainWindowUI.cpp:3209 +#: src/ui/MainWindowUI.cpp:3508 #, c-format msgid "Model move error: %s\n" msgstr "Model move error: %s\n" -#: src/ui/MainWindowUI.cpp:3215 +#: src/ui/MainWindowUI.cpp:3514 #, c-format msgid "Model civitai % image(s) download started for model: %s\n" msgstr "Model civitai % image(s) download started for model: %s\n" -#: src/ui/MainWindowUI.cpp:3221 +#: src/ui/MainWindowUI.cpp:3520 #, c-format msgid "Model civitai info download error: %s\n" msgstr "Model civitai info download error: %s\n" -#: src/ui/MainWindowUI.cpp:3226 +#: src/ui/MainWindowUI.cpp:3525 #, c-format msgid "Model civitai info download start: %s\n" msgstr "Model civitai info download start: %s\n" -#: src/ui/MainWindowUI.cpp:3234 +#: src/ui/MainWindowUI.cpp:3533 #, c-format msgid "Model civitai info download finished: %s\n" msgstr "Model civitai info download finished: %s\n" -#: src/ui/MainWindowUI.cpp:3238 +#: src/ui/MainWindowUI.cpp:3537 #, c-format msgid "Model civitai info not found: %s Hash: %s\n" msgstr "Model civitai info not found: %s Hash: %s\n" -#: src/ui/MainWindowUI.cpp:3241 +#: src/ui/MainWindowUI.cpp:3540 #, c-format msgid "Model civitai info unkown parsing error happened: %s Hash: %s\n" msgstr "Model civitai info unkown parsing error happened: %s Hash: %s\n" -#: src/ui/MainWindowUI.cpp:3424 +#: src/ui/MainWindowUI.cpp:3707 msgid "Model download finished" msgstr "Model download finished" -#: src/ui/MainWindowUI.cpp:3425 +#: src/ui/MainWindowUI.cpp:3708 #, c-format msgid "The model download is finished: %s" msgstr "The model download is finished: %s" -#: src/ui/MainWindowUI.cpp:3432 +#: src/ui/MainWindowUI.cpp:3715 msgid "Model download failed" msgstr "Model download failed" -#: src/ui/MainWindowUI.cpp:3433 +#: src/ui/MainWindowUI.cpp:3716 #, c-format msgid "The model download is failed: %s" msgstr "The model download is failed: %s" -#: src/ui/MainWindowUI.cpp:3473 +#: src/ui/MainWindowUI.cpp:3760 msgid "ID" msgstr "ID" -#: src/ui/MainWindowUI.cpp:3478 +#: src/ui/MainWindowUI.cpp:3765 msgid "Created at" msgstr "Created at" -#: src/ui/MainWindowUI.cpp:3483 +#: src/ui/MainWindowUI.cpp:3770 msgid "Started at" msgstr "Started at" -#: src/ui/MainWindowUI.cpp:3492 +#: src/ui/MainWindowUI.cpp:3779 msgid "Finished at" msgstr "Finished at" -#: src/ui/MainWindowUI.cpp:3501 +#: src/ui/MainWindowUI.cpp:3788 msgid "Udated at" msgstr "Udated at" -#: src/ui/MainWindowUI.cpp:3510 +#: src/ui/MainWindowUI.cpp:3797 msgid "Mode" msgstr "Mode" -#: src/ui/MainWindowUI.cpp:3527 +#: src/ui/MainWindowUI.cpp:3814 msgid "Threads" msgstr "Threads" -#: src/ui/MainWindowUI.cpp:3533 +#: src/ui/MainWindowUI.cpp:3820 msgid "Factor" msgstr "Factor" -#: src/ui/MainWindowUI.cpp:3548 +#: src/ui/MainWindowUI.cpp:3835 msgid "Scheduler" msgstr "Scheduler" -#: src/ui/MainWindowUI.cpp:3556 +#: src/ui/MainWindowUI.cpp:3843 msgid "Init image" msgstr "Init image" -#: src/ui/MainWindowUI.cpp:3561 +#: src/ui/MainWindowUI.cpp:3849 +msgid "Mask image" +msgstr "Mask image" + +#: src/ui/MainWindowUI.cpp:3855 msgid "Strength" msgstr "Strength" -#: src/ui/MainWindowUI.cpp:3569 +#: src/ui/MainWindowUI.cpp:3863 msgid "Prompt" msgstr "Prompt" -#: src/ui/MainWindowUI.cpp:3574 +#: src/ui/MainWindowUI.cpp:3868 msgid "Neg. prompt" msgstr "Neg. prompt" -#: src/ui/MainWindowUI.cpp:3584 +#: src/ui/MainWindowUI.cpp:3878 msgid "Clip skip" msgstr "Clip skip" -#: src/ui/MainWindowUI.cpp:3589 +#: src/ui/MainWindowUI.cpp:3883 msgid "Clip on CPU" msgstr "Clip on CPU" -#: src/ui/MainWindowUI.cpp:3590 src/ui/MainWindowUI.cpp:3639 -#: src/ui/MainWindowUI.cpp:3644 src/ui/MainWindowUI.cpp:3708 -#: src/ui/MainWindowUI.cpp:3715 +#: src/ui/MainWindowUI.cpp:3884 src/ui/MainWindowUI.cpp:3933 +#: src/ui/MainWindowUI.cpp:3938 src/ui/MainWindowUI.cpp:4002 +#: src/ui/MainWindowUI.cpp:4009 msgid "yes" msgstr "yes" -#: src/ui/MainWindowUI.cpp:3590 src/ui/MainWindowUI.cpp:3639 -#: src/ui/MainWindowUI.cpp:3644 src/ui/MainWindowUI.cpp:3708 -#: src/ui/MainWindowUI.cpp:3715 +#: src/ui/MainWindowUI.cpp:3884 src/ui/MainWindowUI.cpp:3933 +#: src/ui/MainWindowUI.cpp:3938 src/ui/MainWindowUI.cpp:4002 +#: src/ui/MainWindowUI.cpp:4009 msgid "no" msgstr "no" -#: src/ui/MainWindowUI.cpp:3594 +#: src/ui/MainWindowUI.cpp:3888 msgid "Cfg scale" msgstr "Cfg scale" -#: src/ui/MainWindowUI.cpp:3604 +#: src/ui/MainWindowUI.cpp:3898 msgid "Steps" msgstr "Steps" -#: src/ui/MainWindowUI.cpp:3610 +#: src/ui/MainWindowUI.cpp:3904 msgid "Time min." msgstr "Time min." -#: src/ui/MainWindowUI.cpp:3615 +#: src/ui/MainWindowUI.cpp:3909 msgid "Time max." msgstr "Time max." -#: src/ui/MainWindowUI.cpp:3620 +#: src/ui/MainWindowUI.cpp:3914 msgid "Time avg." msgstr "Time avg." -#: src/ui/MainWindowUI.cpp:3625 +#: src/ui/MainWindowUI.cpp:3919 msgid "Time total" msgstr "Time total" -#: src/ui/MainWindowUI.cpp:3632 -msgid "VAE" -msgstr "VAE" +#: src/ui/MainWindowUI.cpp:3937 +msgid "VAE tiling" +msgstr "VAE tiling" -#: src/ui/MainWindowUI.cpp:3649 +#: src/ui/MainWindowUI.cpp:3943 msgid "CLIP L" msgstr "CLIP L" -#: src/ui/MainWindowUI.cpp:3655 +#: src/ui/MainWindowUI.cpp:3949 msgid "CLIP G" msgstr "CLIP G" -#: src/ui/MainWindowUI.cpp:3662 +#: src/ui/MainWindowUI.cpp:3956 msgid "T5xxl" msgstr "T5xxl" -#: src/ui/MainWindowUI.cpp:3669 +#: src/ui/MainWindowUI.cpp:3963 msgid "TAESD" msgstr "TAESD" -#: src/ui/MainWindowUI.cpp:3676 +#: src/ui/MainWindowUI.cpp:3970 msgid "Width" msgstr "Width" -#: src/ui/MainWindowUI.cpp:3681 +#: src/ui/MainWindowUI.cpp:3975 msgid "Height" msgstr "Height" -#: src/ui/MainWindowUI.cpp:3686 +#: src/ui/MainWindowUI.cpp:3980 msgid "Batch count" msgstr "Batch count" -#: src/ui/MainWindowUI.cpp:3692 +#: src/ui/MainWindowUI.cpp:3986 msgid "CN model" msgstr "CN model" -#: src/ui/MainWindowUI.cpp:3697 +#: src/ui/MainWindowUI.cpp:3991 msgid "CN img" msgstr "CN img" -#: src/ui/MainWindowUI.cpp:3702 +#: src/ui/MainWindowUI.cpp:3996 msgid "CN strength" msgstr "CN strength" -#: src/ui/MainWindowUI.cpp:3714 +#: src/ui/MainWindowUI.cpp:4008 msgid "Flash Attention" msgstr "Flash Attention" -#: src/ui/MainWindowUI.cpp:3719 +#: src/ui/MainWindowUI.cpp:4013 msgid "SLG scale" msgstr "SLG scale" -#: src/ui/MainWindowUI.cpp:3724 +#: src/ui/MainWindowUI.cpp:4018 msgid "Skip layers" msgstr "Skip layers" -#: src/ui/MainWindowUI.cpp:3735 +#: src/ui/MainWindowUI.cpp:4029 msgid "Skip Layer Start" msgstr "Skip Layer Start" -#: src/ui/MainWindowUI.cpp:3740 +#: src/ui/MainWindowUI.cpp:4034 msgid "Skip Layer End" msgstr "Skip Layer End" -#: src/ui/MainWindowUI.cpp:3765 +#: src/ui/MainWindowUI.cpp:4059 msgid "Open image" msgstr "Open image" -#: src/ui/MainWindowUI.cpp:3766 +#: src/ui/MainWindowUI.cpp:4060 msgid "Open parent folder" msgstr "Open parent folder" -#: src/ui/MainWindowUI.cpp:3769 +#: src/ui/MainWindowUI.cpp:4063 #, c-format msgid "Copy seed %" msgstr "Copy seed %" -#: src/ui/MainWindowUI.cpp:3772 +#: src/ui/MainWindowUI.cpp:4066 src/ui/MainWindowUI.cpp:4076 msgid "Send the image to img2img" msgstr "Send the image to img2img" -#: src/ui/MainWindowUI.cpp:3773 +#: src/ui/MainWindowUI.cpp:4067 msgid "Upscale" msgstr "Upscale" -#: src/ui/MainWindowUI.cpp:3777 +#: src/ui/MainWindowUI.cpp:4071 msgid "Send image to the controlnet image" msgstr "Send image to the controlnet image" -#: src/ui/MainWindowUI.cpp:3830 +#: src/ui/MainWindowUI.cpp:4080 +msgid "Send image to img2img mask" +msgstr "Send image to img2img mask" + +#: src/ui/MainWindowUI.cpp:4165 msgid "Invalid image from diffusion: " msgstr "Invalid image from diffusion: " -#: src/ui/MainWindowUI.cpp:3858 +#: src/ui/MainWindowUI.cpp:4174 src/ui/MainWindowUI.cpp:4959 #, c-format msgid "Failed to save image into %s" msgstr "Failed to save image into %s" -#: src/ui/MainWindowUI.cpp:4217 +#: src/ui/MainWindowUI.cpp:4532 +#, c-format +msgid "Converting model %s to %s" +msgstr "Converting model %s to %s" + +#: src/ui/MainWindowUI.cpp:4566 #, c-format msgid "Do you want to convert model %s with quantation %s to gguf format?" msgstr "Do you want to convert model %s with quantation %s to gguf format?" -#: src/ui/MainWindowUI.cpp:4220 +#: src/ui/MainWindowUI.cpp:4569 #, c-format msgid "" "Do you want to convert model %s with quantation %s and vae %s to gguf format?" msgstr "" "Do you want to convert model %s with quantation %s and vae %s to gguf format?" -#: src/ui/MainWindowUI.cpp:4223 +#: src/ui/MainWindowUI.cpp:4572 #, c-format msgid "Convert model %s?" msgstr "Convert model %s?" -#: src/ui/MainWindowUI.cpp:4226 +#: src/ui/MainWindowUI.cpp:4575 #, c-format msgid "The file %s already exists. Do you want to overwrite it?" msgstr "The file %s already exists. Do you want to overwrite it?" -#: src/ui/MainWindowUI.cpp:4227 +#: src/ui/MainWindowUI.cpp:4576 msgid "Overwrite File?" msgstr "Overwrite File?" -#: src/ui/MainWindowUI.cpp:4383 +#: src/ui/MainWindowUI.cpp:4587 +msgid "Open Link?" +msgstr "Open Link?" + +#: src/ui/MainWindowUI.cpp:4733 msgid "Stopping..." msgstr "Stopping..." -#: src/ui/MainWindowUI.cpp:4402 +#: src/ui/MainWindowUI.cpp:4752 msgid "Process is ready" msgstr "Process is ready" -#: src/ui/MainWindowUI.cpp:4420 +#: src/ui/MainWindowUI.cpp:4770 msgid "External process stopped" msgstr "External process stopped" -#: src/ui/MainWindowUI.cpp:4423 +#: src/ui/MainWindowUI.cpp:4773 msgid "Process is stopped" msgstr "Process is stopped" -#: src/ui/MainWindowUI.cpp:4436 +#: src/ui/MainWindowUI.cpp:4786 msgid "Failed to restart the background process..." msgstr "Failed to restart the background process..." -#: src/ui/MainWindowUI.cpp:4455 +#: src/ui/MainWindowUI.cpp:4805 #, c-format msgid "%s started" msgstr "%s started" -#: src/ui/MainWindowUI.cpp:4464 +#: src/ui/MainWindowUI.cpp:4814 #, c-format msgid "%s exited" msgstr "%s exited" -#: src/ui/MainWindowUI.cpp:4499 +#: src/ui/MainWindowUI.cpp:4851 #, c-format msgid "Current job: %s %s" msgstr "Current job: %s %s" +#: src/ui/MainWindowUI.cpp:4936 +msgid "Save mask image file" +msgstr "Save mask image file" + +#: src/ui/MainWindowUI.cpp:4937 +msgid "PNG files (*.png)|*.png|All files (*.*)|*.*" +msgstr "PNG files (*.png)|*.png|All files (*.*)|*.*" + +#: src/ui/MainWindowUI.cpp:5084 src/ui/MainWindowUI.cpp:5213 +#, c-format +msgid "%i x %i" +msgstr "%i x %i" + +#: src/ui/MainWindowUI.cpp:5086 src/ui/MainWindowUI.cpp:5215 +#, c-format +msgid "%i x %i (%i x %i)" +msgstr "%i x %i (%i x %i)" + +#: src/ui/MainWindowUI.cpp:5134 +#, c-format +msgid "Inpaint mask open: file not found: %s" +msgstr "Inpaint mask open: file not found: %s" + +#: src/ui/MainWindowUI.cpp:5143 +msgid "" +"No image loaded into the img2img, please load a base image before open the " +"mask!" +msgstr "" +"No image loaded into the img2img, please load a base image before open the " +"mask!" + +#: src/ui/MainWindowUI.cpp:5151 +#, c-format +msgid "" +"Inpaint mask open: the resolution of the mask does not match the resolution " +"of the image: %s" +msgstr "" +"Inpaint mask open: the resolution of the mask does not match the resolution " +"of the image: %s" + +#: src/ui/MainWindowUI.cpp:5153 +msgid "The resolution of the mask does not match the resolution of the image" +msgstr "The resolution of the mask does not match the resolution of the image" + #: src/ui/QueueManager.h:39 msgid "pending" msgstr "pending" @@ -2028,6 +2220,76 @@ msgstr "finished" msgid "model hashing..." msgstr "model hashing..." +#~ msgid "Vae:" +#~ msgstr "Vae:" + +#~ msgid "Clip skip:" +#~ msgstr "Clip skip:" + +#~ msgid "Sampler:" +#~ msgstr "Sampler:" + +#~ msgid "Scheduler:" +#~ msgstr "Scheduler:" + +#~ msgid "Seed:" +#~ msgstr "Seed:" + +#~ msgid "Low res.:" +#~ msgstr "Low res.:" + +#~ msgid "High Res.:" +#~ msgstr "High Res.:" + +#~ msgid "FLUX" +#~ msgstr "FLUX" + +#, c-format +#~ msgid "Failed to save mask image to %s" +#~ msgstr "Failed to save mask image to %s" + +#, c-format +#~ msgid "Saved mask image to %s" +#~ msgstr "Saved mask image to %s" + +#, c-format +#~ msgid "Failed to save initial image to %s" +#~ msgstr "Failed to save initial image to %s" + +#, c-format +#~ msgid "Saved initial tmp image to %s %dx%d" +#~ msgstr "Saved initial tmp image to %s %dx%d" + +#, c-format +#~ msgid "Saved mask tmp image to %s %dx%d" +#~ msgstr "Saved mask tmp image to %s %dx%d" + +#~ msgid "-none-" +#~ msgstr "-none-" + +#, c-format +#~ msgid "Zoom: %.0f%%" +#~ msgstr "Zoom: %.0f%%" + +#~ msgid "" +#~ "For more information, click the button with the question mark icon.\n" +#~ "\n" +#~ "To use the FLUX model, select the \"Diffusion Model\" file picker and " +#~ "choose the FLUX model.\n" +#~ "For SD3.5, use the dropdown menu at the top to select a model." +#~ msgstr "" +#~ "For more information, click the button with the question mark icon.\n" +#~ "\n" +#~ "To use the FLUX model, select the \"Diffusion Model\" file picker and " +#~ "choose the FLUX model.\n" +#~ "For SD3.5, use the dropdown menu at the top to select a model." + +#~ msgid "Open Image on CivitAi.com" +#~ msgstr "Open Image on CivitAi.com" + +#~ msgid "Input image" +#~ msgstr "Input image" + #~ msgid "Presets" #~ msgstr "Presets" @@ -2109,11 +2371,6 @@ msgstr "model hashing..." #~ "%s is just finished to generate the image\n" #~ "Model: %s" -#, c-format -#~| msgid "Can not open file: %s" -#~ msgid "Can not open initial image: %s" -#~ msgstr "Can not open initial image: %s" - #~ msgid "Failed to load img2img symbol from backend!" #~ msgstr "Failed to load img2img symbol from backend!" @@ -2126,9 +2383,6 @@ msgstr "model hashing..." #~ msgid "Failed to load upscale symbol from backend!" #~ msgstr "Failed to load upscale symbol from backend!" -#~ msgid "PNG files (*.png)|*.png|JPEG (*.jpg)|*.jpg" -#~ msgstr "PNG files (*.png)|*.png|JPEG (*.jpg)|*.jpg" - #~ msgid "Please wait to finish the currently running running jobs!" #~ msgstr "Please wait to finish the currently running running jobs!" diff --git a/locale/hu/stablediffusiongui.po b/locale/hu/stablediffusiongui.po index 57452aa..4270496 100644 --- a/locale/hu/stablediffusiongui.po +++ b/locale/hu/stablediffusiongui.po @@ -1,13 +1,13 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # -# SPDX-FileCopyrightText: 2024 Ferenc Szontágh +# SPDX-FileCopyrightText: 2024, 2025 Ferenc Szontágh msgid "" msgstr "" "Project-Id-Version: StableDiffusionGUI 0.1.9\n" "Report-Msgid-Bugs-To: sdgui@fsociety.hu\n" -"POT-Creation-Date: 2024-12-15 11:34+0100\n" -"PO-Revision-Date: 2024-12-15 12:01+0100\n" +"POT-Creation-Date: 2025-01-08 11:17+0100\n" +"PO-Revision-Date: 2025-01-08 11:22+0100\n" "Last-Translator: Ferenc Szontágh \n" "Language-Team: Hungarian <>\n" "Language: hu_HU\n" @@ -23,12 +23,12 @@ msgstr "" msgid "Failed to load model: " msgstr "A model betöltése nem sikerült: " -#: extprocess/src/ApplicationLogic.cpp:208 +#: extprocess/src/ApplicationLogic.cpp:212 #, c-format msgid "Unknown mode: %s" msgstr "Ismeretlen mód: %s" -#: extprocess/src/ApplicationLogic.cpp:419 +#: extprocess/src/ApplicationLogic.cpp:435 msgid "Failed to load image: " msgstr "A kép betöltése nem sikerült: " @@ -36,38 +36,38 @@ msgstr "A kép betöltése nem sikerült: " msgid "Another program instance is already running, aborting." msgstr "Az alkalmazás egy példánya már fut, kilépés." -#: src/helpers/TreeListManager.h:73 src/ui/MainWindowUI.cpp:1284 +#: src/helpers/TreeListManager.h:73 src/ui/MainWindowUI.cpp:1495 msgid "[F] " msgstr "[K]" -#: src/ui/MainWindow.cpp:76 +#: src/ui/MainWindow.cpp:81 msgid "About the sd.cpp.gui.wx" msgstr "Az sd.cpp.gui.wx programról" -#: src/ui/MainWindow.cpp:77 +#: src/ui/MainWindow.cpp:82 msgid "About the program" msgstr "Az alkalmazásról" -#: src/ui/MainWindow.cpp:84 +#: src/ui/MainWindow.cpp:89 msgid "Open CivitAi.com model browser" msgstr "A CivitAi.com model letöltő megnyitása" -#: src/ui/MainWindow.cpp:85 +#: src/ui/MainWindow.cpp:90 msgid "" "With CivitAi.com model browser, you can search for models or download models" msgstr "" "A CivitAi.com model böngészővel lehetőséged van modellek keresésére és " "letöltésére" -#: src/ui/MainWindow.cpp:92 src/ui/MainWindowUI.cpp:1392 +#: src/ui/MainWindow.cpp:97 src/ui/MainWindowUI.cpp:1602 msgid "Show Widget" msgstr "Widget megjelenítése" -#: src/ui/MainWindow.cpp:101 +#: src/ui/MainWindow.cpp:106 msgid "Stop and restart the background process" msgstr "A háttérfolyamat leállítása és elindítása" -#: src/ui/MainWindow.cpp:102 +#: src/ui/MainWindow.cpp:107 msgid "" "This will send a terminate to the background diffuser process. This will " "clear up all used memory (eg. freeing up all the loaded models)" @@ -75,293 +75,261 @@ msgstr "" "Ez megszakítja a háttér diffúziós folyamatot. Felszabadítja az általa " "lefoglalt memóriát (az eddig betöltött modelleket kiüríti)" -#: src/ui/MainWindow.cpp:115 +#: src/ui/MainWindow.cpp:120 msgid "Model:" msgstr "Model:" -#: src/ui/MainWindow.cpp:132 +#: src/ui/MainWindow.cpp:137 msgid "Type:" msgstr "Típus:" -#: src/ui/MainWindow.cpp:139 src/ui/MainWindow.cpp:1170 +#: src/ui/MainWindow.cpp:144 src/ui/MainWindow.cpp:1462 msgid "" "Weight type. If not specified, the default is the type of the weight file." msgstr "Súlyozás típus. Ha nincs megadva, a fájl típusa lesz használva." -#: src/ui/MainWindow.cpp:149 src/ui/MainWindow.cpp:2325 +#: src/ui/MainWindow.cpp:154 src/ui/MainWindow.cpp:2623 msgid "Current job: none" msgstr "Aktuális feladat: nincs" -#: src/ui/MainWindow.cpp:193 +#: src/ui/MainWindow.cpp:206 msgid "Resume all" msgstr "Összes folytatása" -#: src/ui/MainWindow.cpp:198 +#: src/ui/MainWindow.cpp:211 msgid "Pause all" msgstr "Mindet szüneteltet" -#: src/ui/MainWindow.cpp:203 +#: src/ui/MainWindow.cpp:216 msgid "Delete all" msgstr "Összes törlése" -#: src/ui/MainWindow.cpp:210 +#: src/ui/MainWindow.cpp:223 msgid "Number of jobs: 0" msgstr "Feladatok száma: 0" -#: src/ui/MainWindow.cpp:234 +#: src/ui/MainWindow.cpp:247 msgid "Id" msgstr "Id" -#: src/ui/MainWindow.cpp:235 +#: src/ui/MainWindow.cpp:248 msgid "Crated at" msgstr "Létrehozva" -#: src/ui/MainWindow.cpp:236 src/ui/MainWindow.cpp:992 -#: src/ui/MainWindow.cpp:2192 src/ui/MainWindow.cpp:2240 -#: src/ui/MainWindowUI.cpp:42 src/ui/MainWindowUI.cpp:1765 -#: src/ui/MainWindowUI.cpp:3543 +#: src/ui/MainWindow.cpp:249 src/ui/MainWindow.cpp:988 +#: src/ui/MainWindow.cpp:2490 src/ui/MainWindow.cpp:2538 +#: src/ui/MainWindowUI.cpp:42 src/ui/MainWindowUI.cpp:1916 +#: src/ui/MainWindowUI.cpp:3830 msgid "Type" msgstr "Típus" -#: src/ui/MainWindow.cpp:237 src/ui/MainWindowUI.cpp:3515 -#: src/ui/MainWindowUI.cpp:3521 +#: src/ui/MainWindow.cpp:250 src/ui/MainWindowUI.cpp:3802 +#: src/ui/MainWindowUI.cpp:3808 msgid "Model" msgstr "Model" -#: src/ui/MainWindow.cpp:238 src/ui/MainWindowUI.cpp:3599 +#: src/ui/MainWindow.cpp:251 src/ui/MainWindowUI.cpp:3893 msgid "Sampler" msgstr "Mintavevő" -#: src/ui/MainWindow.cpp:239 src/ui/MainWindowUI.cpp:3579 +#: src/ui/MainWindow.cpp:252 src/ui/MainWindowUI.cpp:3873 msgid "Seed" msgstr "Seed" -#: src/ui/MainWindow.cpp:240 +#: src/ui/MainWindow.cpp:253 msgid "Progress" msgstr "Folyamat" -#: src/ui/MainWindow.cpp:241 +#: src/ui/MainWindow.cpp:254 msgid "Speed" msgstr "Sebesség" -#: src/ui/MainWindow.cpp:242 src/ui/MainWindow.cpp:2167 -#: src/ui/MainWindow.cpp:2197 src/ui/MainWindow.cpp:2239 -#: src/ui/MainWindow.cpp:2253 +#: src/ui/MainWindow.cpp:255 src/ui/MainWindow.cpp:2465 +#: src/ui/MainWindow.cpp:2495 src/ui/MainWindow.cpp:2537 +#: src/ui/MainWindow.cpp:2551 msgid "Status" msgstr "Állapot" -#: src/ui/MainWindow.cpp:280 +#: src/ui/MainWindow.cpp:293 msgid "Job details" msgstr "Feladat részletei" -#: src/ui/MainWindow.cpp:297 +#: src/ui/MainWindow.cpp:310 msgid "Jobs and Images" msgstr "Feladatok és képek" -#: src/ui/MainWindow.cpp:328 src/ui/MainWindow.cpp:622 -#: src/ui/MainWindow.cpp:1900 +#: src/ui/MainWindow.cpp:349 src/ui/MainWindow.cpp:460 +#: src/ui/MainWindow.cpp:2198 msgid "Diffusion" msgstr "Diffúzió" -#: src/ui/MainWindow.cpp:343 +#: src/ui/MainWindow.cpp:364 msgid "Controlnet" msgstr "Controlnet" -#: src/ui/MainWindow.cpp:379 -msgid "What is this?" -msgstr "Mi is ez?" +#: src/ui/MainWindow.cpp:369 +msgid "OpenPose Editor" +msgstr "OpenPose Szerkesztő" -#: src/ui/MainWindow.cpp:383 -msgid "" -"For more information, click the button with the question mark icon.\n" -"\n" -"To use the FLUX model, select the \"Diffusion Model\" file picker and choose " -"the FLUX model.\n" -"For SD3.5, use the dropdown menu at the top to select a model." -msgstr "" -"További információkért, kattints a kérdőjeles gombra.\n" -"\n" -"FLUX model használatához, válassz egy modelt a 'Diffúziós Model' " -"fájlválasztóval.\n" -"SD3.5 model esetén, a fenti Model választóból válaszd ki a modelt." - -#: src/ui/MainWindow.cpp:393 -msgid "SLG scale:" -msgstr "Cfg skála:" +#: src/ui/MainWindow.cpp:382 src/ui/MainWindow.cpp:519 +#: src/ui/MainWindow.cpp:945 src/ui/MainWindow.cpp:1182 +#: src/ui/MainWindow.cpp:1201 src/ui/MainWindow.cpp:1208 +#: src/ui/MainWindow.cpp:1215 +msgid "Select a file" +msgstr "Válassz egy fájlt" -#: src/ui/MainWindow.cpp:395 src/ui/MainWindow.cpp:401 -msgid "skip layer guidance (SLG) scale, only for DiT models: (default: 0.0)" +#: src/ui/MainWindow.cpp:382 src/ui/MainWindow.cpp:519 +#: src/ui/MainWindow.cpp:643 src/ui/MainWindow.cpp:713 +#: src/ui/MainWindow.cpp:945 +msgid "" +"Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;" +"*.JPEG;*.PNG" msgstr "" -"skip layer guidance (SLG) skála, csak DiT modellekhez: (alapértelmezett: 0,0)" - -#: src/ui/MainWindow.cpp:411 -msgid "Skip layers:" -msgstr "Réteg kihagyás:" - -#: src/ui/MainWindow.cpp:413 src/ui/MainWindow.cpp:418 -msgid "Layers to skip for SLG steps: (default: [7,8,9])" -msgstr "Kihagyandó rétegek az SLG lépéseknél: (alapértelmezett: [7,8,9])" +"Képek (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*." +"JPEG;*.PNG" -#: src/ui/MainWindow.cpp:417 -msgid "7,8,9" -msgstr "7,8,9" +#: src/ui/MainWindow.cpp:387 src/ui/MainWindowUI.cpp:4001 +msgid "CN on CPU" +msgstr "CN CPU-ban" -#: src/ui/MainWindow.cpp:428 -msgid "Skip Layer Start:" -msgstr "Kihagyás kezdete:" +#: src/ui/MainWindow.cpp:388 +msgid "Keep controlnet on CPU" +msgstr "Controlnet CPU-ban hagyása" -#: src/ui/MainWindow.cpp:430 src/ui/MainWindow.cpp:436 -msgid "" -"SLG enabling point: (default: 0.01)\n" -"SLG will be enabled at step int([STEPS]*[START]) and disabled at " -"int([STEPS]*[END])" -msgstr "" -"SLG engedélyezési pont: (alapért.: 0.01)\n" -"A következő lépésnél lesz az SLG bekapcsolva: int([STEPS]*[START]) és " -"kikapcsolva int([STEPS]*[END])" +#: src/ui/MainWindow.cpp:403 src/ui/MainWindow.cpp:654 +msgid "Show full" +msgstr "Teljes mutatása" -#: src/ui/MainWindow.cpp:446 -msgid "Skip Layer End:" -msgstr "Kihagyás vége:" +#: src/ui/MainWindow.cpp:405 +msgid "Show the original controlnet image" +msgstr "Eredeti controlnet kép mutatása" -#: src/ui/MainWindow.cpp:448 src/ui/MainWindow.cpp:454 -msgid "" -"SLG disabling point: (default: 0.2)\n" -"SLG will be enabled at step int([STEPS]*[START]) and disabled at " -"int([STEPS]*[END])" -msgstr "" -"SLG kikapcsolási pont: (alapért.: 0.01)\n" -"A következő lépésnél lesz az SLG bekapcsolva: int([STEPS]*[START]) és " -"kikapcsolva int([STEPS]*[END])" +#: src/ui/MainWindow.cpp:413 +msgid "Remove control image" +msgstr "Irányító kép eltávolítása" -#: src/ui/MainWindow.cpp:473 -msgid "Diffusion Model:" -msgstr "Diffúziós Model:" +#: src/ui/MainWindow.cpp:424 +msgid "txt2img" +msgstr "txt2img" -#: src/ui/MainWindow.cpp:475 -msgid "Diffusion models, for example FLUX" -msgstr "Diffúziós modellek, például FLUX" +#: src/ui/MainWindow.cpp:472 +msgid "Brush" +msgstr "Ecset" -#: src/ui/MainWindow.cpp:479 src/ui/MainWindow.cpp:504 -#: src/ui/MainWindow.cpp:517 src/ui/MainWindow.cpp:530 -#: src/ui/MainWindow.cpp:548 src/ui/MainWindow.cpp:959 -msgid "Select a file" -msgstr "Válassz egy fájlt" +#: src/ui/MainWindow.cpp:481 +msgid "Zoom" +msgstr "Nagyítás" -#: src/ui/MainWindow.cpp:479 src/ui/MainWindow.cpp:504 -#: src/ui/MainWindow.cpp:517 src/ui/MainWindow.cpp:530 -msgid "Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf" -msgstr "Model fájlok (*.safetensors;*.gguf)|*.safetensors;*.gguf" +#: src/ui/MainWindow.cpp:493 +msgid "Save the mask into png" +msgstr "Maszk mentése png-be" -#: src/ui/MainWindow.cpp:482 -msgid "Flash attention" -msgstr "Flash attention" +#: src/ui/MainWindow.cpp:500 +msgid "Invert mask" +msgstr "Maszk invertálása" -#: src/ui/MainWindow.cpp:483 +#: src/ui/MainWindow.cpp:507 msgid "" -"Use flash attention in the diffusion model. This will reduce significantly " -"the memory uage (for low vram).\n" -"Might lower quality, since it implies converting k and v to f16.\n" -"This might crash if it is not supported by the backend.\n" -"\n" +"Resize the image to fit into the diffusion's width and height.\n" +"WARNING: this will delete the current mask if have!" msgstr "" -"Flash Attention bekapcsolása a diffúziós modellben. Ez jelentősen csökkenti " -"a memóriahasználatot (alacsony VRAM esetén).\n" -" Csökkentheti a minőséget, mivel k és v f16-ra konvertálását jelenti.\n" -" Ez összeomláshoz vezethet, ha a háttérrendszer nem támogatja.\n" +"Kép átméretezése a diffúziós képméretekhez.\n" +"FIGYELEM: ez törli a jelenlegi maszkot, ha van!" -#: src/ui/MainWindow.cpp:490 -msgid "Clean model" -msgstr "Model eltávolítása" +#: src/ui/MainWindow.cpp:515 +msgid "Clear the mask" +msgstr "Maszk törlése" -#: src/ui/MainWindow.cpp:500 -msgid "ClipL:" -msgstr "ClipL:" +#: src/ui/MainWindow.cpp:520 +msgid "Open a mask image from file" +msgstr "Maszk betöltése képből" -#: src/ui/MainWindow.cpp:513 -msgid "ClipG:" -msgstr "ClipG:" +#: src/ui/MainWindow.cpp:534 +msgid "Change the brush shape to circle" +msgstr "Ecset forma módosítása kör alakúra" -#: src/ui/MainWindow.cpp:526 -msgid "T5XXL:" -msgstr "T5XXL:" +#: src/ui/MainWindow.cpp:541 +msgid "Change the brush shape to square" +msgstr "Ecset forma módosítása négyszög alakúra" + +#: src/ui/MainWindow.cpp:548 +msgid "Change the brush shape to triangle" +msgstr "Ecset forma módosítása háromszög alakúra" -#: src/ui/MainWindow.cpp:548 src/ui/MainWindow.cpp:671 -#: src/ui/MainWindow.cpp:735 src/ui/MainWindow.cpp:959 +#: src/ui/MainWindow.cpp:558 msgid "" -"Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;" -"*.JPEG;*.PNG" +"Ctrl + Mouse wheel to ZOOM\n" +"Shift + Mouse wheel to Change brush size" msgstr "" -"Képek (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*." -"JPEG;*.PNG" +"Ctrl + egérgörgő a nagyításhoz\n" +"Shift + egérgörgő az ecset méretezéshez" -#: src/ui/MainWindow.cpp:553 src/ui/MainWindowUI.cpp:3707 -msgid "CN on CPU" -msgstr "CN CPU-ban" +#: src/ui/MainWindow.cpp:592 +msgid "Outpaint Top:" +msgstr "Outpaint Fent:" -#: src/ui/MainWindow.cpp:554 -msgid "Keep controlnet on CPU" -msgstr "Controlnet CPU-ban hagyása" +#: src/ui/MainWindow.cpp:596 src/ui/MainWindow.cpp:603 +#: src/ui/MainWindow.cpp:610 src/ui/MainWindow.cpp:617 +msgid "0" +msgstr "0" -#: src/ui/MainWindow.cpp:569 src/ui/MainWindow.cpp:684 -msgid "Show full" -msgstr "Teljes mutatása" +#: src/ui/MainWindow.cpp:599 +msgid "Right:" +msgstr "Jobb:" -#: src/ui/MainWindow.cpp:571 -msgid "Show the original controlnet image" -msgstr "Eredeti controlnet kép mutatása" +#: src/ui/MainWindow.cpp:606 +msgid "Bottom:" +msgstr "Lent:" -#: src/ui/MainWindow.cpp:579 -msgid "Remove control image" -msgstr "Irányító kép eltávolítása" +#: src/ui/MainWindow.cpp:613 +msgid "Left:" +msgstr "Bal:" -#: src/ui/MainWindow.cpp:590 -msgid "txt2img" -msgstr "txt2img" +#: src/ui/MainWindow.cpp:620 +msgid "Resize" +msgstr "Átméretezés" -#: src/ui/MainWindow.cpp:638 -msgid "Input image" -msgstr "Bemeneti kép" +#: src/ui/MainWindow.cpp:633 +msgid "Preview and InPaint" +msgstr "Előnézet és InPaint" -#: src/ui/MainWindow.cpp:671 src/ui/MainWindow.cpp:735 +#: src/ui/MainWindow.cpp:643 src/ui/MainWindow.cpp:713 msgid "Select an image" msgstr "Válassz egy képet" -#: src/ui/MainWindow.cpp:676 +#: src/ui/MainWindow.cpp:646 msgid "Strength:" msgstr "Erő:" -#: src/ui/MainWindow.cpp:701 +#: src/ui/MainWindow.cpp:671 msgid "img2img" msgstr "img2img" -#: src/ui/MainWindow.cpp:731 +#: src/ui/MainWindow.cpp:709 msgid "Source Image" msgstr "Forrás kép" -#: src/ui/MainWindow.cpp:749 +#: src/ui/MainWindow.cpp:727 msgid "Upscaler model" msgstr "Nagyítás model" -#: src/ui/MainWindow.cpp:764 src/ui/MainWindow.cpp:786 -#: src/ui/MainWindow.cpp:1205 +#: src/ui/MainWindow.cpp:742 src/ui/MainWindow.cpp:764 msgid "Width:" msgstr "Szélesség:" -#: src/ui/MainWindow.cpp:772 src/ui/MainWindow.cpp:794 -#: src/ui/MainWindow.cpp:1212 +#: src/ui/MainWindow.cpp:750 src/ui/MainWindow.cpp:772 msgid "Height:" msgstr "Magasság:" -#: src/ui/MainWindow.cpp:808 +#: src/ui/MainWindow.cpp:786 msgid "Upscale factor" msgstr "Nagyítási tényező" -#: src/ui/MainWindow.cpp:840 +#: src/ui/MainWindow.cpp:818 msgid "Keep upscale model in memory" msgstr "Upscale model memóriában tartása" -#: src/ui/MainWindow.cpp:841 +#: src/ui/MainWindow.cpp:819 msgid "" "WARNING: If you check this box, the upscaler model will remain in memory for " "the next job, which could lead to a memory overflow or program crash " @@ -371,11 +339,11 @@ msgstr "" "következő feladat futásakor, amely potenciálisan túl sok memóriát foglalhat " "le és a program hirtelen leállásához vezethet (segfault)." -#: src/ui/MainWindow.cpp:845 +#: src/ui/MainWindow.cpp:823 msgid "Keep checkpoints in memory" msgstr "Model memóriában tartása" -#: src/ui/MainWindow.cpp:846 +#: src/ui/MainWindow.cpp:824 msgid "" "WARNING: If you check this box, the SD model from the previous job will " "remain in RAM/VRAM, which could potentially lead to a program crash " @@ -385,108 +353,215 @@ msgstr "" "marad (RAM/VRAM), amely potenciálisan túl sok memóriát foglalhat le és a " "program hirtelen leállásához vezethet (segfault)." -#: src/ui/MainWindow.cpp:857 +#: src/ui/MainWindow.cpp:835 msgid "Upscaler" msgstr "Nagyítás" -#: src/ui/MainWindow.cpp:896 src/ui/MainWindow.cpp:911 +#: src/ui/MainWindow.cpp:882 src/ui/MainWindow.cpp:897 msgid "Copy to txt2img prompt" msgstr "txt2img promptba másolás" -#: src/ui/MainWindow.cpp:899 src/ui/MainWindow.cpp:914 +#: src/ui/MainWindow.cpp:885 src/ui/MainWindow.cpp:900 msgid "Copy to img2img prompt" msgstr "img2img promptba másolás" -#: src/ui/MainWindow.cpp:928 +#: src/ui/MainWindow.cpp:914 msgid "Find and select model" msgstr "Model keresése és kiválasztása" -#: src/ui/MainWindow.cpp:929 +#: src/ui/MainWindow.cpp:915 msgid "Try to find and load the model by the image parameters" msgstr "Model keresése és betöltése a kép paraméterei alapján" -#: src/ui/MainWindow.cpp:949 +#: src/ui/MainWindow.cpp:919 msgid "Load all to txt2img" msgstr "Betöltés txt2img-be" -#: src/ui/MainWindow.cpp:954 +#: src/ui/MainWindow.cpp:924 msgid "Load all to img2img" msgstr "Betöltés img2img-be" -#: src/ui/MainWindow.cpp:968 +#: src/ui/MainWindow.cpp:954 msgid "Clear" msgstr "Ürítés" -#: src/ui/MainWindow.cpp:979 +#: src/ui/MainWindow.cpp:965 msgid "Image info" msgstr "Kép infó" -#: src/ui/MainWindow.cpp:990 src/ui/MainWindow.cpp:2161 -#: src/ui/MainWindow.cpp:2191 src/ui/MainWindow.cpp:2238 -#: src/ui/MainWindowUI.cpp:40 src/ui/MainWindowUI.cpp:1747 +#: src/ui/MainWindow.cpp:986 src/ui/MainWindow.cpp:2459 +#: src/ui/MainWindow.cpp:2489 src/ui/MainWindow.cpp:2536 +#: src/ui/MainWindowUI.cpp:40 src/ui/MainWindowUI.cpp:1898 msgid "Name" msgstr "Név" -#: src/ui/MainWindow.cpp:991 src/ui/MainWindow.cpp:2195 -#: src/ui/MainWindow.cpp:2198 src/ui/MainWindow.cpp:2252 +#: src/ui/MainWindow.cpp:987 src/ui/MainWindow.cpp:2493 +#: src/ui/MainWindow.cpp:2496 src/ui/MainWindow.cpp:2550 #: src/ui/MainWindowUI.cpp:41 msgid "Size" msgstr "Méret" -#: src/ui/MainWindow.cpp:993 src/ui/MainWindowUI.cpp:43 -#: src/ui/MainWindowUI.cpp:1759 +#: src/ui/MainWindow.cpp:989 src/ui/MainWindowUI.cpp:43 +#: src/ui/MainWindowUI.cpp:1910 msgid "Hash" msgstr "Hash" -#: src/ui/MainWindow.cpp:1011 +#: src/ui/MainWindow.cpp:1007 msgid "Model details" msgstr "Model tulajdonságai" -#: src/ui/MainWindow.cpp:1018 -msgid "wxFB Website" -msgstr "wxFB Weboldal" - -#: src/ui/MainWindow.cpp:1023 +#: src/ui/MainWindow.cpp:1014 msgid "[F]avorite" msgstr "[K]edvenc" -#: src/ui/MainWindow.cpp:1050 src/ui/MainWindow.cpp:2231 +#: src/ui/MainWindow.cpp:1019 +msgid "wxFB Website" +msgstr "wxFB Weboldal" + +#: src/ui/MainWindow.cpp:1046 src/ui/MainWindow.cpp:2529 msgid "Models" msgstr "Modellek" -#: src/ui/MainWindow.cpp:1063 -msgid "Vae:" -msgstr "Vae:" +#: src/ui/MainWindow.cpp:1067 +msgid "Prompt:" +msgstr "Prompt:" + +#: src/ui/MainWindow.cpp:1082 +msgid "Negative prompt:" +msgstr "Negatív prompt:" + +#: src/ui/MainWindow.cpp:1098 +msgid "Prompt presets:" +msgstr "Prompt sablonok:" + +#: src/ui/MainWindow.cpp:1122 +msgid "What is this?" +msgstr "Mi is ez?" + +#: src/ui/MainWindow.cpp:1129 +msgid "SLG scale:" +msgstr "Cfg skála:" + +#: src/ui/MainWindow.cpp:1131 src/ui/MainWindow.cpp:1137 +msgid "skip layer guidance (SLG) scale, only for DiT models: (default: 0.0)" +msgstr "" +"skip layer guidance (SLG) skála, csak DiT modellekhez: (alapértelmezett: 0,0)" + +#: src/ui/MainWindow.cpp:1141 +msgid "Skip layers:" +msgstr "Réteg kihagyás:" + +#: src/ui/MainWindow.cpp:1143 src/ui/MainWindow.cpp:1148 +msgid "Layers to skip for SLG steps: (default: [7,8,9])" +msgstr "Kihagyandó rétegek az SLG lépéseknél: (alapértelmezett: [7,8,9])" + +#: src/ui/MainWindow.cpp:1147 +msgid "7,8,9" +msgstr "7,8,9" + +#: src/ui/MainWindow.cpp:1152 +msgid "Skip Layer Start:" +msgstr "Kihagyás kezdete:" + +#: src/ui/MainWindow.cpp:1154 src/ui/MainWindow.cpp:1160 +msgid "" +"SLG enabling point: (default: 0.01)\n" +"SLG will be enabled at step int([STEPS]*[START]) and disabled at " +"int([STEPS]*[END])" +msgstr "" +"SLG engedélyezési pont: (alapért.: 0.01)\n" +"A következő lépésnél lesz az SLG bekapcsolva: int([STEPS]*[START]) és " +"kikapcsolva int([STEPS]*[END])" + +#: src/ui/MainWindow.cpp:1164 +msgid "Skip Layer End:" +msgstr "Kihagyás vége:" + +#: src/ui/MainWindow.cpp:1166 src/ui/MainWindow.cpp:1172 +msgid "" +"SLG disabling point: (default: 0.2)\n" +"SLG will be enabled at step int([STEPS]*[START]) and disabled at " +"int([STEPS]*[END])" +msgstr "" +"SLG kikapcsolási pont: (alapért.: 0.01)\n" +"A következő lépésnél lesz az SLG bekapcsolva: int([STEPS]*[START]) és " +"kikapcsolva int([STEPS]*[END])" + +#: src/ui/MainWindow.cpp:1176 +msgid "Diffusion Model:" +msgstr "Diffúziós Model:" + +#: src/ui/MainWindow.cpp:1178 +msgid "Diffusion models, for example FLUX" +msgstr "Diffúziós modellek, például FLUX" + +#: src/ui/MainWindow.cpp:1182 src/ui/MainWindow.cpp:1201 +#: src/ui/MainWindow.cpp:1208 src/ui/MainWindow.cpp:1215 +msgid "Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf" +msgstr "Model fájlok (*.safetensors;*.gguf)|*.safetensors;*.gguf" + +#: src/ui/MainWindow.cpp:1188 +msgid "Clean models" +msgstr "Modellek eltávolítása" + +#: src/ui/MainWindow.cpp:1192 +msgid "Flash attention" +msgstr "Flash attention" + +#: src/ui/MainWindow.cpp:1193 +msgid "" +"Use flash attention in the diffusion model. This will reduce significantly " +"the memory uage (for low vram).\n" +"Might lower quality, since it implies converting k and v to f16.\n" +"This might crash if it is not supported by the backend.\n" +"\n" +msgstr "" +"Flash Attention bekapcsolása a diffúziós modellben. Ez jelentősen csökkenti " +"a memóriahasználatot (alacsony VRAM esetén).\n" +" Csökkentheti a minőséget, mivel k és v f16-ra konvertálását jelenti.\n" +" Ez összeomláshoz vezethet, ha a háttérrendszer nem támogatja.\n" + +#: src/ui/MainWindow.cpp:1197 +msgid "ClipL:" +msgstr "ClipL:" + +#: src/ui/MainWindow.cpp:1204 +msgid "ClipG:" +msgstr "ClipG:" + +#: src/ui/MainWindow.cpp:1211 +msgid "T5XXL:" +msgstr "T5XXL:" + +#: src/ui/MainWindow.cpp:1240 src/ui/MainWindowUI.cpp:3926 +msgid "VAE" +msgstr "VAE" -#: src/ui/MainWindow.cpp:1077 src/ui/MainWindow.cpp:1118 +#: src/ui/MainWindow.cpp:1256 src/ui/MainWindow.cpp:1288 msgid "CPU" msgstr "CPU" -#: src/ui/MainWindow.cpp:1078 src/ui/MainWindowUI.cpp:3638 +#: src/ui/MainWindow.cpp:1257 src/ui/MainWindowUI.cpp:3932 msgid "VAE on CPU" msgstr "VAE CPU-n" -#: src/ui/MainWindow.cpp:1085 src/ui/MainWindowUI.cpp:3643 -msgid "VAE tiling" -msgstr "VAE darabolása" +#: src/ui/MainWindow.cpp:1261 +msgid "Tiling" +msgstr "Darabolás" -#: src/ui/MainWindow.cpp:1086 +#: src/ui/MainWindow.cpp:1262 msgid "Process vae in tiles to reduce memory usage" msgstr "VAE-k feldolgozása csempékre bontva memória spóroláshoz" -#: src/ui/MainWindow.cpp:1090 -msgid "VAE decode only" -msgstr "VAE csak dekódoljon" +#: src/ui/MainWindow.cpp:1269 +msgid "Decode only" +msgstr "Csak dekódolás" -#: src/ui/MainWindow.cpp:1096 -msgid "CFG:" -msgstr "CFG:" +#: src/ui/MainWindow.cpp:1278 +msgid "CLIP" +msgstr "CLIP" -#: src/ui/MainWindow.cpp:1104 -msgid "Clip skip:" -msgstr "Clip kihagy.:" - -#: src/ui/MainWindow.cpp:1106 src/ui/MainWindow.cpp:1114 +#: src/ui/MainWindow.cpp:1281 src/ui/MainWindow.cpp:1294 msgid "" "ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer " "(default: -1)\n" @@ -496,178 +571,184 @@ msgstr "" "kihagyása (alapért.: -1)\n" "<= meghatározatlan esetén, 1 lesz SD1.x-nél, 2 SD2.x esetén" -#: src/ui/MainWindow.cpp:1119 +#: src/ui/MainWindow.cpp:1289 msgid "CLIP on CPU" msgstr "CLIP CPU-n" -#: src/ui/MainWindow.cpp:1126 +#: src/ui/MainWindow.cpp:1307 msgid "TAESD:" msgstr "TAESD:" -#: src/ui/MainWindow.cpp:1128 +#: src/ui/MainWindow.cpp:1309 msgid "Using Tiny AutoEncoder for fast decoding (low quality)" msgstr "" "Használjon Tiny AutoEncoder-t a gyorsabb dekódoláshoz (rosszabb képminőség)" -#: src/ui/MainWindow.cpp:1139 -msgid "Batch:" -msgstr "Mennyiség:" +#: src/ui/MainWindow.cpp:1313 src/ui/MainWindowUI.cpp:2687 +#: src/ui/MainWindowUI.cpp:2694 src/ui/MainWindowUI.cpp:2709 +#: src/ui/MainWindowUI.cpp:2715 +msgid "Not selected" +msgstr "Nincs kiválasztva" -#: src/ui/MainWindow.cpp:1141 src/ui/MainWindow.cpp:1146 -msgid "number of images to generate." -msgstr "a generált képek száma." - -#: src/ui/MainWindow.cpp:1150 -msgid "Sampler:" -msgstr "Mintavevő:" - -#: src/ui/MainWindow.cpp:1152 src/ui/MainWindow.cpp:1159 -msgid "sampling method (default: \"euler_a\")" -msgstr "mintavételezés típusa (alapért.: \"euler_a\")" +#: src/ui/MainWindow.cpp:1327 +msgid "SEED" +msgstr "SEED" -#: src/ui/MainWindow.cpp:1163 -msgid "Scheduler:" -msgstr "Ütemező:" - -#: src/ui/MainWindow.cpp:1174 -msgid "Seed:" -msgstr "Seed:" - -#: src/ui/MainWindow.cpp:1187 +#: src/ui/MainWindow.cpp:1342 msgid "Generate a random seed" msgstr "Véletlen seed generálása" -#: src/ui/MainWindow.cpp:1194 -msgid "Steps:" -msgstr "Lépések:" - -#: src/ui/MainWindow.cpp:1196 src/ui/MainWindow.cpp:1201 -msgid "number of sample steps (default: 20)" -msgstr "mintavételezés száma (alapért.: 20)" +#: src/ui/MainWindow.cpp:1349 +msgid "RESOLUTIONS" +msgstr "FELBONTÁS" -#: src/ui/MainWindow.cpp:1225 +#: src/ui/MainWindow.cpp:1358 msgid "Swap the resolution" msgstr "Felbontás megcserélése" -#: src/ui/MainWindow.cpp:1238 -msgid "Save the current settings into preset" -msgstr "Jelenlegi paraméterek mentése új Előbeállításba" +#: src/ui/MainWindow.cpp:1365 src/ui/MainWindow.cpp:1376 +msgid "512" +msgstr "512" -#: src/ui/MainWindow.cpp:1239 -msgid "Save the current settings into a new preset, or overwrite an exists one" -msgstr "" -"Jelenlegi paraméterek mentése új Előbeállításba, vagy egy már meglévő " -"felülírása" - -#: src/ui/MainWindow.cpp:1246 -msgid "Load the selected preset" -msgstr "A kiválasztott előbeállítás betöltése" - -#: src/ui/MainWindow.cpp:1247 -msgid "" -"Load a selected preset. The preset settings will over write the current " -"generation settings" -msgstr "" -"A kiválasztott Beállítás betöltése. A Beállítás paraméterei felülírják a " -"jelenlegi paramétereket" - -#: src/ui/MainWindow.cpp:1274 -msgid "Low res.:" -msgstr "Kis felb.:" +#: src/ui/MainWindow.cpp:1390 +msgid "Small resolutions" +msgstr "Kis felbontások" -#: src/ui/MainWindow.cpp:1276 src/ui/MainWindow.cpp:1284 -msgid "Lower resolutions for SD1.x" -msgstr "Alacsonyabb felbontások SD1.x-hez" - -#: src/ui/MainWindow.cpp:1280 src/ui/MainWindow.cpp:1294 -msgid "Select one" -msgstr "Válassz egyet" - -#: src/ui/MainWindow.cpp:1280 +#: src/ui/MainWindow.cpp:1390 msgid "640x384" msgstr "640x384" -#: src/ui/MainWindow.cpp:1280 +#: src/ui/MainWindow.cpp:1390 msgid "512x512" msgstr "512x512" -#: src/ui/MainWindow.cpp:1280 +#: src/ui/MainWindow.cpp:1390 msgid "512x768" msgstr "512x768" -#: src/ui/MainWindow.cpp:1288 -msgid "High Res.:" -msgstr "Mag. felb.:" +#: src/ui/MainWindow.cpp:1394 +msgid "Lower resolutions for SD1.x" +msgstr "Alacsonyabb felbontások SD1.x-hez" -#: src/ui/MainWindow.cpp:1290 src/ui/MainWindow.cpp:1298 -msgid "Higher resolutions for FLUX/SDXL/SD3.5" -msgstr "Magsabb felbontások FLUX/SDXL/SD3.5 modellekhez" +#: src/ui/MainWindow.cpp:1398 +msgid "Large resolutions" +msgstr "Nagyobb felbontások" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1024x1024" msgstr "1024x1024" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1152x896" msgstr "1152x896" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1216x832" msgstr "1216x832" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1344x768" msgstr "1344x768" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1536x640" msgstr "1536x640" -#: src/ui/MainWindow.cpp:1302 -msgid "Prompt presets:" -msgstr "Prompt sablonok:" +#: src/ui/MainWindow.cpp:1402 +msgid "Higher resolutions for FLUX/SDXL/SD3.5" +msgstr "Magsabb felbontások FLUX/SDXL/SD3.5 modellekhez" + +#: src/ui/MainWindow.cpp:1409 +msgid "No presets" +msgstr "Nincsenek sablonok" + +#: src/ui/MainWindow.cpp:1423 +msgid "Load the selected preset" +msgstr "A kiválasztott előbeállítás betöltése" + +#: src/ui/MainWindow.cpp:1424 +msgid "" +"Load a selected preset. The preset settings will over write the current " +"generation settings" +msgstr "" +"A kiválasztott Beállítás betöltése. A Beállítás paraméterei felülírják a " +"jelenlegi paramétereket" -#: src/ui/MainWindow.cpp:1313 +#: src/ui/MainWindow.cpp:1431 +msgid "Save the current settings into preset" +msgstr "Jelenlegi paraméterek mentése új Előbeállításba" + +#: src/ui/MainWindow.cpp:1432 +msgid "Save the current settings into a new preset, or overwrite an exists one" +msgstr "" +"Jelenlegi paraméterek mentése új Előbeállításba, vagy egy már meglévő " +"felülírása" + +#: src/ui/MainWindow.cpp:1455 +msgid "sampling method (default: \"euler_a\")" +msgstr "mintavételezés típusa (alapért.: \"euler_a\")" + +#: src/ui/MainWindow.cpp:1472 +msgid "Steps:" +msgstr "Lépések:" + +#: src/ui/MainWindow.cpp:1474 src/ui/MainWindow.cpp:1479 +msgid "number of sample steps (default: 20)" +msgstr "mintavételezés száma (alapért.: 20)" + +#: src/ui/MainWindow.cpp:1489 +msgid "Batch:" +msgstr "Mennyiség:" + +#: src/ui/MainWindow.cpp:1491 src/ui/MainWindow.cpp:1496 +msgid "number of images to generate." +msgstr "a generált képek száma." + +#: src/ui/MainWindow.cpp:1506 +msgid "CFG:" +msgstr "CFG:" + +#: src/ui/MainWindow.cpp:1523 msgid "Queue" msgstr "Indítás" -#: src/ui/MainWindow.cpp:1524 +#: src/ui/MainWindow.cpp:1822 msgid "Models path" msgstr "Model mappa" -#: src/ui/MainWindow.cpp:1530 src/ui/MainWindow.cpp:1554 -#: src/ui/MainWindow.cpp:1578 src/ui/MainWindow.cpp:1602 -#: src/ui/MainWindow.cpp:1626 src/ui/MainWindow.cpp:1657 -#: src/ui/MainWindow.cpp:1679 src/ui/MainWindow.cpp:1706 -#: src/ui/MainWindow.cpp:1730 +#: src/ui/MainWindow.cpp:1828 src/ui/MainWindow.cpp:1852 +#: src/ui/MainWindow.cpp:1876 src/ui/MainWindow.cpp:1900 +#: src/ui/MainWindow.cpp:1924 src/ui/MainWindow.cpp:1955 +#: src/ui/MainWindow.cpp:1977 src/ui/MainWindow.cpp:2004 +#: src/ui/MainWindow.cpp:2028 msgid "Select a folder" msgstr "Válassz egy mappát" -#: src/ui/MainWindow.cpp:1538 src/ui/MainWindow.cpp:1562 -#: src/ui/MainWindow.cpp:1586 src/ui/MainWindow.cpp:1610 -#: src/ui/MainWindow.cpp:1634 src/ui/MainWindow.cpp:1665 -#: src/ui/MainWindow.cpp:1687 src/ui/MainWindow.cpp:1714 -#: src/ui/MainWindow.cpp:1738 src/ui/MainWindowUI.cpp:715 +#: src/ui/MainWindow.cpp:1836 src/ui/MainWindow.cpp:1860 +#: src/ui/MainWindow.cpp:1884 src/ui/MainWindow.cpp:1908 +#: src/ui/MainWindow.cpp:1932 src/ui/MainWindow.cpp:1963 +#: src/ui/MainWindow.cpp:1985 src/ui/MainWindow.cpp:2012 +#: src/ui/MainWindow.cpp:2036 src/ui/MainWindowUI.cpp:850 msgid "Open folder" msgstr "Mappa megnyitása" -#: src/ui/MainWindow.cpp:1548 +#: src/ui/MainWindow.cpp:1846 msgid "Lora path" msgstr "Lora mappa" -#: src/ui/MainWindow.cpp:1572 +#: src/ui/MainWindow.cpp:1870 msgid "Vae path" msgstr "Vae mappa" -#: src/ui/MainWindow.cpp:1596 +#: src/ui/MainWindow.cpp:1894 msgid "Embedding path" msgstr "Embedding mappa" -#: src/ui/MainWindow.cpp:1620 +#: src/ui/MainWindow.cpp:1918 msgid "TAESD path" msgstr "TAESD mappa" -#: src/ui/MainWindow.cpp:1641 +#: src/ui/MainWindow.cpp:1939 msgid "" "TAESD models you can download from here: https://github.com/madebyollin/" "taesd/tree/main" @@ -675,39 +756,39 @@ msgstr "" "TAESD model-t innen tölthetsz le: https://github.com/madebyollin/taesd/tree/" "main" -#: src/ui/MainWindow.cpp:1651 +#: src/ui/MainWindow.cpp:1949 msgid "Controlnet path" msgstr "Controlnet mappa" -#: src/ui/MainWindow.cpp:1675 +#: src/ui/MainWindow.cpp:1973 msgid "ESRGAN path" msgstr "ESRGAN mappa" -#: src/ui/MainWindow.cpp:1700 +#: src/ui/MainWindow.cpp:1998 msgid "Presets path" msgstr "Előbeállítások mappa" -#: src/ui/MainWindow.cpp:1724 +#: src/ui/MainWindow.cpp:2022 msgid "Images output" msgstr "Képek kimenete" -#: src/ui/MainWindow.cpp:1749 +#: src/ui/MainWindow.cpp:2047 msgid "Paths" msgstr "Útvonalak" -#: src/ui/MainWindow.cpp:1757 +#: src/ui/MainWindow.cpp:2055 msgid "Generate missing base model hash before diffusion" msgstr "Hiányzó model hash generálása diffúzió előtt" -#: src/ui/MainWindow.cpp:1767 +#: src/ui/MainWindow.cpp:2065 msgid "Keep model in memory" msgstr "Model memóriában tartása" -#: src/ui/MainWindow.cpp:1770 +#: src/ui/MainWindow.cpp:2068 msgid "Keep model in (v)RAM after diffusions" msgstr "Diffúzió után tartsa a modelt a memóriában" -#: src/ui/MainWindow.cpp:1771 +#: src/ui/MainWindow.cpp:2069 msgid "" "Keep the model in memory (vRAM or RAM, depends on diffusion type) when it is " "possible. \n" @@ -731,188 +812,188 @@ msgstr "" "If you disable this option, the model allways unloaded from memory after the " "job is finished. " -#: src/ui/MainWindow.cpp:1782 +#: src/ui/MainWindow.cpp:2080 msgid "Save all images (intermediate images)" msgstr "Minden kép mentése (közbülső képek)" -#: src/ui/MainWindow.cpp:1794 +#: src/ui/MainWindow.cpp:2092 msgid "Output images format" msgstr "Kimeneti kép formátuma" -#: src/ui/MainWindow.cpp:1800 +#: src/ui/MainWindow.cpp:2098 msgid "JPG" msgstr "JPG" -#: src/ui/MainWindow.cpp:1800 +#: src/ui/MainWindow.cpp:2098 msgid "PNG" msgstr "PNG" -#: src/ui/MainWindow.cpp:1806 +#: src/ui/MainWindow.cpp:2104 msgid "PNG meta data not supported yet" msgstr "PNG meta adat nem támogatott jelenleg" -#: src/ui/MainWindow.cpp:1818 +#: src/ui/MainWindow.cpp:2116 msgid "JPEG quality" msgstr "JPEG minőség" -#: src/ui/MainWindow.cpp:1825 src/ui/MainWindow.cpp:1843 +#: src/ui/MainWindow.cpp:2123 src/ui/MainWindow.cpp:2141 msgid "Image output quality, default: 90%" msgstr "Kép mentési minősége, alapért.: 90%" -#: src/ui/MainWindow.cpp:1836 +#: src/ui/MainWindow.cpp:2134 msgid "PNG compression level" msgstr "PNG tömörítés" -#: src/ui/MainWindow.cpp:1860 +#: src/ui/MainWindow.cpp:2158 msgid "Number of CPU cores" msgstr "CPU magok száma" -#: src/ui/MainWindow.cpp:1879 +#: src/ui/MainWindow.cpp:2177 msgid "Image name format" msgstr "Kép fájlnév formátum" -#: src/ui/MainWindow.cpp:1890 +#: src/ui/MainWindow.cpp:2188 msgid "[mode]_[jobid]_[seed]_[width]x[height]_[batch]" msgstr "[mode]_[jobid]_[seed]_[width]x[height]_[batch]" -#: src/ui/MainWindow.cpp:1909 +#: src/ui/MainWindow.cpp:2207 msgid "Show notifications" msgstr "Értesítések mutatása" -#: src/ui/MainWindow.cpp:1916 +#: src/ui/MainWindow.cpp:2214 msgid "Notification timeout:" msgstr "Értesítés lejárati ideje:" -#: src/ui/MainWindow.cpp:1921 +#: src/ui/MainWindow.cpp:2219 msgid "The timeout is depends on the OS and notification type" msgstr "Az időtúllépés függ az OS-től és az értesítés típusától" -#: src/ui/MainWindow.cpp:1925 +#: src/ui/MainWindow.cpp:2223 msgid "Language:" msgstr "Nyelv:" -#: src/ui/MainWindow.cpp:1938 +#: src/ui/MainWindow.cpp:2236 msgid "Only show favorite models" msgstr "Csak a kedvencnek jelölt modelleket mutassa" -#: src/ui/MainWindow.cpp:1939 +#: src/ui/MainWindow.cpp:2237 msgid "" "Only display the models marked as favorites in the model selector of the " "main GUI" msgstr "" -"Csak azokat a modelleket listázza ki a fő felület model - választójában," -" amelyek kedvencnek lettek jelölve. " +"Csak azokat a modelleket listázza ki a fő felület model - választójában, " +"amelyek kedvencnek lettek jelölve. " -#: src/ui/MainWindow.cpp:1950 +#: src/ui/MainWindow.cpp:2248 msgid "GUI" msgstr "GUI" -#: src/ui/MainWindow.cpp:1958 +#: src/ui/MainWindow.cpp:2256 msgid "Enable CivitAi features" msgstr "CivitAi funkciók bekapcsolása" -#: src/ui/MainWindow.cpp:1960 +#: src/ui/MainWindow.cpp:2258 msgid "Enable or disable all CivitAi features" msgstr "CivitAi funkciók ki vagy bekapcsolása" -#: src/ui/MainWindow.cpp:1970 +#: src/ui/MainWindow.cpp:2268 msgid "CivitAi.com API key" msgstr "CivitAi.com API kulcs" -#: src/ui/MainWindow.cpp:1980 +#: src/ui/MainWindow.cpp:2278 msgid "How to generate API key on CivitAi.com" msgstr "Hogyan generáljunk API kulcsot CivitAi.com-on" -#: src/ui/MainWindow.cpp:1981 +#: src/ui/MainWindow.cpp:2279 msgid "Click to the question mark button to get help" msgstr "Kattints a kérdőjeles gombra további információkért" -#: src/ui/MainWindow.cpp:1992 +#: src/ui/MainWindow.cpp:2290 msgid "CivitAi" msgstr "CivitAi" -#: src/ui/MainWindow.cpp:1996 +#: src/ui/MainWindow.cpp:2294 msgid "Save" msgstr "Mentés" -#: src/ui/MainWindow.cpp:2154 +#: src/ui/MainWindow.cpp:2452 msgid "Versions" msgstr "Verziók" -#: src/ui/MainWindow.cpp:2162 +#: src/ui/MainWindow.cpp:2460 msgid "baseModel" msgstr "alapModel" -#: src/ui/MainWindow.cpp:2163 +#: src/ui/MainWindow.cpp:2461 msgid "baseModelType" msgstr "alapModelTípus" -#: src/ui/MainWindow.cpp:2165 +#: src/ui/MainWindow.cpp:2463 msgid "Published" msgstr "Publikálva" -#: src/ui/MainWindow.cpp:2166 src/ui/MainWindow.cpp:2241 -#: src/ui/MainWindow.cpp:2244 +#: src/ui/MainWindow.cpp:2464 src/ui/MainWindow.cpp:2539 +#: src/ui/MainWindow.cpp:2542 msgid "Downloads" msgstr "Letöltések" -#: src/ui/MainWindow.cpp:2176 +#: src/ui/MainWindow.cpp:2474 msgid "Files" msgstr "Fájlok" -#: src/ui/MainWindow.cpp:2182 +#: src/ui/MainWindow.cpp:2480 msgid "Download" msgstr "Letöltés" -#: src/ui/MainWindow.cpp:2194 +#: src/ui/MainWindow.cpp:2492 msgid "Format" msgstr "Formátum" -#: src/ui/MainWindow.cpp:2196 +#: src/ui/MainWindow.cpp:2494 msgid "Fp" msgstr "Fp" -#: src/ui/MainWindow.cpp:2212 +#: src/ui/MainWindow.cpp:2510 msgid "Checkpoints" msgstr "Checkpoints" -#: src/ui/MainWindow.cpp:2212 +#: src/ui/MainWindow.cpp:2510 msgid "LORA" msgstr "LORA" -#: src/ui/MainWindow.cpp:2212 +#: src/ui/MainWindow.cpp:2510 msgid "Embeddings" msgstr "Embeddings" -#: src/ui/MainWindow.cpp:2216 +#: src/ui/MainWindow.cpp:2514 msgid "Select the model type to filter" msgstr "Válassz egy model típust a szűréshez" -#: src/ui/MainWindow.cpp:2221 +#: src/ui/MainWindow.cpp:2519 msgid "Search for model names" msgstr "Model nevére keresés" -#: src/ui/MainWindow.cpp:2225 +#: src/ui/MainWindow.cpp:2523 msgid "Search" msgstr "Keresés" -#: src/ui/MainWindow.cpp:2251 +#: src/ui/MainWindow.cpp:2549 msgid "File" msgstr "Fájl" -#: src/ui/MainWindow.h:315 +#: src/ui/MainWindow.h:370 msgid "sd.cpp.gui" msgstr "sd.cpp.gui" -#: src/ui/MainWindow.h:417 +#: src/ui/MainWindow.h:472 msgid "Settings" msgstr "Beállítások" -#: src/ui/MainWindow.h:457 +#: src/ui/MainWindow.h:512 msgid "About" msgstr "Az alkalmazásról" -#: src/ui/MainWindow.h:526 +#: src/ui/MainWindow.h:581 msgid "CivitAI model downloader" msgstr "CivitAi.com model letöltő" @@ -986,7 +1067,7 @@ msgstr "Elemek feldolgozása" #: src/ui/MainWindowCivitAiWindow.cpp:661 #: src/ui/MainWindowCivitAiWindow.cpp:834 #: src/ui/MainWindowCivitAiWindow.cpp:849 -#: src/ui/MainWindowCivitAiWindow.cpp:854 src/ui/MainWindowUI.cpp:235 +#: src/ui/MainWindowCivitAiWindow.cpp:854 src/ui/MainWindowUI.cpp:242 msgid "N/A" msgstr "N/A" @@ -1003,11 +1084,11 @@ msgstr "Töltés, kérlek várj..." msgid "Current job: %s %s %s" msgstr "Aktuális feladat: %s %s %s" -#: src/ui/MainWindowUI.cpp:78 src/ui/MainWindowUI.cpp:1388 +#: src/ui/MainWindowUI.cpp:81 src/ui/MainWindowUI.cpp:1598 msgid "Hide Widget" msgstr "Widget elrejtése" -#: src/ui/MainWindowUI.cpp:98 +#: src/ui/MainWindowUI.cpp:102 #, c-format msgid "" "Officially from sd.cpp, the following upscaler model is supported:
RealESRGAN_x4Plus Anime 6B
Az alábbi szintén működik " "néhány esetben: RealESRGAN_x4Plus" -#: src/ui/MainWindowUI.cpp:121 src/ui/MainWindowUI.cpp:122 +#: src/ui/MainWindowUI.cpp:125 src/ui/MainWindowUI.cpp:126 #, c-format msgid "" "An error occurred when trying to start external process: %s.\n" @@ -1027,13 +1108,14 @@ msgstr "" "Hiba történt a háttérfolyamat elindításakor: %s.\n" " Kérlek próbáld újra." -#: src/ui/MainWindowUI.cpp:121 src/ui/MainWindowUI.cpp:135 -#: src/ui/MainWindowUI.cpp:157 src/ui/MainWindowUI.cpp:2125 -#: src/ui/MainWindowUI.cpp:2310 +#: src/ui/MainWindowUI.cpp:125 src/ui/MainWindowUI.cpp:139 +#: src/ui/MainWindowUI.cpp:161 src/ui/MainWindowUI.cpp:2288 +#: src/ui/MainWindowUI.cpp:2476 src/ui/MainWindowUI.cpp:5143 +#: src/ui/MainWindowUI.cpp:5153 msgid "Error" msgstr "Hiba" -#: src/ui/MainWindowUI.cpp:135 src/ui/MainWindowUI.cpp:136 +#: src/ui/MainWindowUI.cpp:139 src/ui/MainWindowUI.cpp:140 #, c-format msgid "" "An error occurred when trying to start external process. Shared lib not " @@ -1044,21 +1126,21 @@ msgstr "" "található: %s\n" "Kérlek próbáld meg újra." -#: src/ui/MainWindowUI.cpp:151 +#: src/ui/MainWindowUI.cpp:155 #, c-format msgid "Starting external process: %s %s" msgstr "Külső folyamat indítása: %s %s" -#: src/ui/MainWindowUI.cpp:157 +#: src/ui/MainWindowUI.cpp:161 msgid "" "An error occurred when trying to start external process. Please try again." msgstr "Hiba történt a háttér folyamat indításakor. Kérlek próbáld újra." -#: src/ui/MainWindowUI.cpp:172 +#: src/ui/MainWindowUI.cpp:176 msgid "Please wait to finish the currently running jobs!" msgstr "Kérlek várd meg, míg a jelenleg futó feladatok be nem fejeződnek!" -#: src/ui/MainWindowUI.cpp:205 +#: src/ui/MainWindowUI.cpp:212 msgid "" "

Disclaimer

Use of this application is at your own " "risk. The developer assumes no responsibility or liability for any potential " @@ -1071,368 +1153,405 @@ msgstr "" "alkalmazás használatával Ön tudomásul veszi és elfogadja ezeket a " "feltételeket.

" -#: src/ui/MainWindowUI.cpp:212 +#: src/ui/MainWindowUI.cpp:219 #, c-format msgid "

Version: %s

" msgstr "

Verzió: %s

" -#: src/ui/MainWindowUI.cpp:213 +#: src/ui/MainWindowUI.cpp:220 #, c-format msgid "

Git version: %s

" msgstr "

Git verzió: %s

" -#: src/ui/MainWindowUI.cpp:214 +#: src/ui/MainWindowUI.cpp:221 #, c-format msgid "

Stable Diffusion CPP version: %s

" msgstr "

Stable Diffusion CPP vrzió: %s

" -#: src/ui/MainWindowUI.cpp:215 +#: src/ui/MainWindowUI.cpp:222 #, c-format msgid "

Website: %s

" msgstr "

Weboldal: %s

" -#: src/ui/MainWindowUI.cpp:217 +#: src/ui/MainWindowUI.cpp:224 #, c-format msgid "

Loaded backend: %s

" msgstr "

Betöltött backend: %s

" -#: src/ui/MainWindowUI.cpp:219 +#: src/ui/MainWindowUI.cpp:226 msgid "Configuration folder:" msgstr "Beállítások mappája:" -#: src/ui/MainWindowUI.cpp:223 +#: src/ui/MainWindowUI.cpp:230 msgid "Model folder:" msgstr "Model mappa:" -#: src/ui/MainWindowUI.cpp:224 +#: src/ui/MainWindowUI.cpp:231 msgid "Embedding folder:" msgstr "Embeddings mappa:" -#: src/ui/MainWindowUI.cpp:225 +#: src/ui/MainWindowUI.cpp:232 msgid "Lora folder:" msgstr "Lora mappa:" -#: src/ui/MainWindowUI.cpp:226 +#: src/ui/MainWindowUI.cpp:233 msgid "Vae folder:" msgstr "Vae mappa:" -#: src/ui/MainWindowUI.cpp:227 +#: src/ui/MainWindowUI.cpp:234 msgid "Controlnet folder:" msgstr "Controlnet mappa:" -#: src/ui/MainWindowUI.cpp:228 +#: src/ui/MainWindowUI.cpp:235 msgid "ESRGAN folder:" msgstr "ESRGAN mappa:" -#: src/ui/MainWindowUI.cpp:229 +#: src/ui/MainWindowUI.cpp:236 msgid "TAESD folder:" msgstr "TAESD mappa:" -#: src/ui/MainWindowUI.cpp:230 +#: src/ui/MainWindowUI.cpp:237 msgid "Output folder:" msgstr "Kimeneti mappa:" -#: src/ui/MainWindowUI.cpp:231 +#: src/ui/MainWindowUI.cpp:238 msgid "Jobs folder:" msgstr "Feladatok mappája:" -#: src/ui/MainWindowUI.cpp:232 +#: src/ui/MainWindowUI.cpp:239 msgid "Presets folder:" msgstr "Előbeállítások mappája:" -#: src/ui/MainWindowUI.cpp:280 +#: src/ui/MainWindowUI.cpp:287 msgid "No model selected" msgstr "Nincs model kiválasztva" -#: src/ui/MainWindowUI.cpp:287 src/ui/MainWindowUI.cpp:288 +#: src/ui/MainWindowUI.cpp:294 src/ui/MainWindowUI.cpp:295 #, c-format msgid "Model: %s" msgstr "Model: %s" -#: src/ui/MainWindowUI.cpp:534 +#: src/ui/MainWindowUI.cpp:582 src/ui/MainWindowUI.cpp:651 +#: src/ui/MainWindowUI.cpp:2111 src/ui/MainWindowUI.cpp:2505 +#, c-format +msgid "Number of jobs: %d" +msgstr "Feladatok száma: %d" + +#: src/ui/MainWindowUI.cpp:634 +msgid "Error: rows_to_del.size() != items_to_del.size()" +msgstr "Hiba: rows_to_del.size() != items_to_del.size()" + +#: src/ui/MainWindowUI.cpp:639 +#, c-format +msgid "Delete %d items" +msgstr "%d db törlése" + +#: src/ui/MainWindowUI.cpp:668 msgid "Requeue" msgstr "Újra sorbaállítás" -#: src/ui/MainWindowUI.cpp:551 +#: src/ui/MainWindowUI.cpp:685 msgid "Load parameters" msgstr "Paraméterek betöltése" -#: src/ui/MainWindowUI.cpp:552 src/ui/MainWindowUI.cpp:3770 +#: src/ui/MainWindowUI.cpp:686 src/ui/MainWindowUI.cpp:1987 +#: src/ui/MainWindowUI.cpp:4064 msgid "Copy prompts to text2img" msgstr "Promptok másolása a text2img -be" -#: src/ui/MainWindowUI.cpp:553 src/ui/MainWindowUI.cpp:3771 +#: src/ui/MainWindowUI.cpp:687 src/ui/MainWindowUI.cpp:1988 +#: src/ui/MainWindowUI.cpp:4065 msgid "Copy prompts to img2img" msgstr "Promptok másolása az img2img-be" -#: src/ui/MainWindowUI.cpp:554 +#: src/ui/MainWindowUI.cpp:688 src/ui/MainWindowUI.cpp:2003 #, c-format msgid "Select model %s" msgstr "Model választása %s" -#: src/ui/MainWindowUI.cpp:557 +#: src/ui/MainWindowUI.cpp:691 msgid "Send the last image to the Upscale tab" msgstr "Az utolsó kép küldése a Kép nagyításhoz" -#: src/ui/MainWindowUI.cpp:558 +#: src/ui/MainWindowUI.cpp:692 msgid "Send the last image to the img2img tab" msgstr "Utolsó kép küldése az img2img-be" -#: src/ui/MainWindowUI.cpp:563 +#: src/ui/MainWindowUI.cpp:697 msgid "Upscale again" msgstr "Felnagyítás újra" -#: src/ui/MainWindowUI.cpp:570 +#: src/ui/MainWindowUI.cpp:704 msgid "Pause" msgstr "Szünet" -#: src/ui/MainWindowUI.cpp:570 +#: src/ui/MainWindowUI.cpp:704 msgid "Resume" msgstr "Folytatás" -#: src/ui/MainWindowUI.cpp:574 +#: src/ui/MainWindowUI.cpp:708 msgid "Delete" msgstr "Törlés" -#: src/ui/MainWindowUI.cpp:622 +#: src/ui/MainWindowUI.cpp:757 #, c-format msgid "Create subfolder in: '%s'" msgstr "Almappa létrehozása: '%s'" -#: src/ui/MainWindowUI.cpp:627 +#: src/ui/MainWindowUI.cpp:762 msgid "RE-Calculate &Hash" msgstr "&Hash újraszámítása" -#: src/ui/MainWindowUI.cpp:629 +#: src/ui/MainWindowUI.cpp:764 msgid "Calculate &Hash" msgstr "&Hash számítása" -#: src/ui/MainWindowUI.cpp:635 +#: src/ui/MainWindowUI.cpp:770 msgid "Force update info from &CivitAi" msgstr "Újra frissítés &CivitAi-ról" -#: src/ui/MainWindowUI.cpp:637 +#: src/ui/MainWindowUI.cpp:772 msgid "Update info from &CivitAi" msgstr "Frissítés &CivitAi-ról" -#: src/ui/MainWindowUI.cpp:642 +#: src/ui/MainWindowUI.cpp:777 #, c-format msgid "&Select model %s to the next job" msgstr "Model %s vála&sztása a következő futáshoz" -#: src/ui/MainWindowUI.cpp:644 +#: src/ui/MainWindowUI.cpp:779 msgid "Open model on CivitAi.com in default browser" msgstr "Model megnyitása böngészőben a CivitAi.com-on" -#: src/ui/MainWindowUI.cpp:648 +#: src/ui/MainWindowUI.cpp:783 #, c-format msgid "Convert model to %s gguf format" msgstr "Model átalakítása %s gguf formátumá" -#: src/ui/MainWindowUI.cpp:657 +#: src/ui/MainWindowUI.cpp:792 #, c-format msgid "Append to text2img prompt " msgstr "Hozzáfűzés a text2img prompthoz " -#: src/ui/MainWindowUI.cpp:658 +#: src/ui/MainWindowUI.cpp:793 #, c-format msgid "Append to text2img neg. prompt " msgstr "Hozzáfűzés a text2img neg. prompthoz " -#: src/ui/MainWindowUI.cpp:659 +#: src/ui/MainWindowUI.cpp:794 #, c-format msgid "Append to img2img prompt " msgstr "Hozzáfűzés az img2img prompthoz " -#: src/ui/MainWindowUI.cpp:660 +#: src/ui/MainWindowUI.cpp:795 #, c-format msgid "Append to img2img neg. prompt " msgstr "Hozzáfűzés az img2img neg. prompthoz " -#: src/ui/MainWindowUI.cpp:664 +#: src/ui/MainWindowUI.cpp:799 #, c-format msgid "Append to text2img prompt %s" msgstr "Hozzáfűzés a text2img prompthoz %s" -#: src/ui/MainWindowUI.cpp:665 +#: src/ui/MainWindowUI.cpp:800 #, c-format msgid "Append to text2img neg. prompt %s" msgstr "Hozzáfűzés a text2img neg. prompthoz %s" -#: src/ui/MainWindowUI.cpp:666 +#: src/ui/MainWindowUI.cpp:801 #, c-format msgid "Append to img2img prompt %s" msgstr "Hozzűáfűzés az img2img prompthoz %s" -#: src/ui/MainWindowUI.cpp:667 +#: src/ui/MainWindowUI.cpp:802 #, c-format msgid "Append to img2img neg. prompt %s" msgstr "Hozzáfűzés az img2img neg. prompthoz %s" -#: src/ui/MainWindowUI.cpp:678 +#: src/ui/MainWindowUI.cpp:813 msgid "&Move model into another sub folder" msgstr "&Model mozgatása másik mappába" -#: src/ui/MainWindowUI.cpp:682 +#: src/ui/MainWindowUI.cpp:817 #, c-format msgid "Move the model into the checkoints folder: %s" msgstr "Model mozgatása a checkpoints mappába: %s" -#: src/ui/MainWindowUI.cpp:683 +#: src/ui/MainWindowUI.cpp:818 #, c-format msgid "Move the model into the VAE folder: %s" msgstr "Model mozgatása a VAE mappába: %s" -#: src/ui/MainWindowUI.cpp:684 +#: src/ui/MainWindowUI.cpp:819 #, c-format msgid "Move the model into the Lora folder: %s" msgstr "Model mozgatása a Lora mappába: %s" -#: src/ui/MainWindowUI.cpp:685 +#: src/ui/MainWindowUI.cpp:820 #, c-format msgid "Move the model into the Embedding folder: %s" msgstr "Model mozgatása az Embedding mappába: %s" -#: src/ui/MainWindowUI.cpp:686 +#: src/ui/MainWindowUI.cpp:821 #, c-format msgid "Move the model into the TaeSD folder: %s" msgstr "Model mozgatása a TaeSD mappába: %s" -#: src/ui/MainWindowUI.cpp:687 +#: src/ui/MainWindowUI.cpp:822 #, c-format msgid "Move the model into the ESRGAN (upscalers) folder: %s" msgstr "Model mozgatása az ESRGAN (felnagyító) mappájába: %s" -#: src/ui/MainWindowUI.cpp:688 +#: src/ui/MainWindowUI.cpp:823 #, c-format msgid "Move the model into the ControlNet folder: %s" msgstr "Model mozgatása a ConrolNet mappába: %s" -#: src/ui/MainWindowUI.cpp:696 +#: src/ui/MainWindowUI.cpp:831 msgid "&Move to another folder" msgstr "&Másik mappába mozgatás" -#: src/ui/MainWindowUI.cpp:698 +#: src/ui/MainWindowUI.cpp:833 msgid "&Delete model file" msgstr "Mo&del fájl törlése" -#: src/ui/MainWindowUI.cpp:743 src/ui/MainWindowUI.cpp:749 +#: src/ui/MainWindowUI.cpp:891 src/ui/MainWindowUI.cpp:897 #, c-format msgid "Image type not supported: %s" msgstr "A képtípus nem támogatott: %s" -#: src/ui/MainWindowUI.cpp:759 +#: src/ui/MainWindowUI.cpp:907 msgid "Load generation parameters from image?" msgstr "Generálási információk betöltése a képből?" -#: src/ui/MainWindowUI.cpp:759 +#: src/ui/MainWindowUI.cpp:907 msgid "Load parameters?" msgstr "Paraméterek betöltése?" -#: src/ui/MainWindowUI.cpp:849 +#: src/ui/MainWindowUI.cpp:1004 msgid "No upscaler model found!" msgstr "Nem található upscaler model!" -#: src/ui/MainWindowUI.cpp:892 +#: src/ui/MainWindowUI.cpp:1047 msgid "No taesd model found!" msgstr "Nem található taesd model!" -#: src/ui/MainWindowUI.cpp:902 +#: src/ui/MainWindowUI.cpp:1057 msgid "No vae model found!" msgstr "Nem található vae model!" -#: src/ui/MainWindowUI.cpp:1030 +#: src/ui/MainWindowUI.cpp:1232 #, c-format msgid "Skipping controlnet with diffusion model: %s" msgstr "Controlnet kihagyása diffúziós model miatt: %s" -#: src/ui/MainWindowUI.cpp:1034 +#: src/ui/MainWindowUI.cpp:1236 msgid "No controlnet model found!" msgstr "Nem található controlnet model!" -#: src/ui/MainWindowUI.cpp:1096 +#: src/ui/MainWindowUI.cpp:1298 #, c-format msgid "Controlnet Image %dx%dpx" msgstr "Controlnet Kép %dx%dpx" -#: src/ui/MainWindowUI.cpp:1183 +#: src/ui/MainWindowUI.cpp:1387 msgid "IMG2IMG - original image" msgstr "IMG2IMG - eredeti kép" -#: src/ui/MainWindowUI.cpp:1241 src/ui/MainWindowUI.cpp:1242 -#: src/ui/MainWindowUI.cpp:1247 src/ui/MainWindowUI.cpp:1248 +#: src/ui/MainWindowUI.cpp:1451 src/ui/MainWindowUI.cpp:1452 +#: src/ui/MainWindowUI.cpp:1457 src/ui/MainWindowUI.cpp:1458 #, c-format msgid "%dpx" msgstr "%dpx" -#: src/ui/MainWindowUI.cpp:1284 +#: src/ui/MainWindowUI.cpp:1495 #, c-format msgid "%s %s" msgstr "%s %s" -#: src/ui/MainWindowUI.cpp:1487 +#: src/ui/MainWindowUI.cpp:1625 msgid "Please specify a name (only alphanumeric)" msgstr "Kérlek adj meg egy nevet (csak alfanumerikus)" -#: src/ui/MainWindowUI.cpp:1673 +#: src/ui/MainWindowUI.cpp:1824 msgid "Taesd file not found: " msgstr "Taesd fájl nem található:" -#: src/ui/MainWindowUI.cpp:1691 +#: src/ui/MainWindowUI.cpp:1842 msgid "Vae file not found: " msgstr "VAE fájl nem található:" -#: src/ui/MainWindowUI.cpp:1714 +#: src/ui/MainWindowUI.cpp:1865 msgid "Controlnet file not found: " msgstr "Controlnet fájl nem található:" -#: src/ui/MainWindowUI.cpp:1753 +#: src/ui/MainWindowUI.cpp:1904 msgid "File name" msgstr "Fájlnév" -#: src/ui/MainWindowUI.cpp:1777 +#: src/ui/MainWindowUI.cpp:1928 msgid "Last modified" msgstr "Módosítva" -#: src/ui/MainWindowUI.cpp:1794 +#: src/ui/MainWindowUI.cpp:1945 #, c-format msgid "#%d id" msgstr "#%d id" -#: src/ui/MainWindowUI.cpp:1799 +#: src/ui/MainWindowUI.cpp:1950 #, c-format msgid "#%d name" msgstr "#%d név" -#: src/ui/MainWindowUI.cpp:1804 +#: src/ui/MainWindowUI.cpp:1955 #, c-format msgid "#%d format" msgstr "#%d formátum" -#: src/ui/MainWindowUI.cpp:1809 +#: src/ui/MainWindowUI.cpp:1960 #, c-format msgid "#%d type" msgstr "#%d típus" -#: src/ui/MainWindowUI.cpp:1826 +#: src/ui/MainWindowUI.cpp:1977 #, c-format msgid "Resolution: %s Seed: % Steps: %d" msgstr "Felbontás: %s Seed: % Lépések: %d" -#: src/ui/MainWindowUI.cpp:1826 +#: src/ui/MainWindowUI.cpp:1977 msgid "Unknown" msgstr "Ismeretlen" -#: src/ui/MainWindowUI.cpp:1843 -msgid "Open Image on CivitAi.com" -msgstr "Kép megnyitása CivitAi.com -on" +#: src/ui/MainWindowUI.cpp:1989 +msgid "Send to img2img" +msgstr "Küldés az img2img-be" + +#: src/ui/MainWindowUI.cpp:1995 +msgid "Load available parameters" +msgstr "Elérhető paraméterek betöltése" -#: src/ui/MainWindowUI.cpp:1952 src/ui/MainWindowUI.cpp:2341 +#: src/ui/MainWindowUI.cpp:1996 +msgid "Open the original image in the web browser" +msgstr "Eredeti kép megnyitása böngészőben" + +#: src/ui/MainWindowUI.cpp:2007 +msgid "Send to Image Info tab" +msgstr "Küldés a Kép Infó fülbe" + +#: src/ui/MainWindowUI.cpp:2057 #, c-format -msgid "Number of jobs: %d" -msgstr "Feladatok száma: %d" +msgid "" +"Open the original image in the web browser?\n" +" %s" +msgstr "" +"Eredeti kép megnyitása böngészőben?\n" +" %s" -#: src/ui/MainWindowUI.cpp:2115 +#: src/ui/MainWindowUI.cpp:2057 +msgid "Open original image" +msgstr "Eredeti kép megnyitása" + +#: src/ui/MainWindowUI.cpp:2278 #, c-format msgid "" "Create subfolder in: \n" @@ -1442,36 +1561,36 @@ msgid "" msgstr "" "Almappa létrehozása: \n" "%s\n" -"A létrehozott mappa addig nem lesz látható az alkalmazáson belül, amíg egy" -" kompatibilis model fájl nem kerül bele." +"A létrehozott mappa addig nem lesz látható az alkalmazáson belül, amíg egy " +"kompatibilis model fájl nem kerül bele." -#: src/ui/MainWindowUI.cpp:2115 +#: src/ui/MainWindowUI.cpp:2278 msgid "Create folder" msgstr "Mappa létrehozása" -#: src/ui/MainWindowUI.cpp:2125 +#: src/ui/MainWindowUI.cpp:2288 msgid "Folder already exists" msgstr "A mappa már létezik" -#: src/ui/MainWindowUI.cpp:2128 +#: src/ui/MainWindowUI.cpp:2291 #, c-format msgid "Created folder: %s" msgstr "Létrehozott mappa: %s" -#: src/ui/MainWindowUI.cpp:2132 +#: src/ui/MainWindowUI.cpp:2295 #, c-format msgid "Can not create folder: %s" msgstr "Nem lehet a mappát létrehozni: %s" -#: src/ui/MainWindowUI.cpp:2176 +#: src/ui/MainWindowUI.cpp:2339 msgid "Select the directory to move the model" msgstr "Válassz cél mappát a model áthelyezéséhez" -#: src/ui/MainWindowUI.cpp:2176 +#: src/ui/MainWindowUI.cpp:2339 msgid "Move Model" msgstr "Model áthelyezése" -#: src/ui/MainWindowUI.cpp:2183 +#: src/ui/MainWindowUI.cpp:2346 #, c-format msgid "" "Are you sure you want to delete this model?\n" @@ -1480,54 +1599,66 @@ msgstr "" "Biztosan törölni szeretnéd a modelt?\n" "%s" -#: src/ui/MainWindowUI.cpp:2183 +#: src/ui/MainWindowUI.cpp:2346 msgid "Delete Model" msgstr "Model törlése" -#: src/ui/MainWindowUI.cpp:2310 +#: src/ui/MainWindowUI.cpp:2476 msgid "Diffusion model not found" msgstr "A diffúziós modell nem található" -#: src/ui/MainWindowUI.cpp:2501 src/ui/MainWindowUI.cpp:2510 -#: src/ui/MainWindowUI.cpp:2517 src/ui/MainWindowUI.cpp:2524 -#: src/ui/MainWindowUI.cpp:2530 src/ui/MainWindowUI.cpp:2539 -#: src/ui/MainWindowUI.cpp:2545 -msgid "-none-" -msgstr "-nincs-" +#: src/ui/MainWindowUI.cpp:2671 src/ui/MainWindowUI.cpp:2680 +#: src/ui/MainWindowUI.cpp:2700 +msgid "Select one" +msgstr "Válassz egyet" -#: src/ui/MainWindowUI.cpp:2645 +#: src/ui/MainWindowUI.cpp:2815 #, c-format msgid "Failed to parse preset: %s" msgstr "A preset betöltése nem sikerült: %s" -#: src/ui/MainWindowUI.cpp:2662 +#: src/ui/MainWindowUI.cpp:2832 #, c-format msgid "Failed to parse prompt template: %s" msgstr "A prompt sablon betöltése nem sikerült: %s" -#: src/ui/MainWindowUI.cpp:2674 src/ui/MainWindowUI.cpp:2676 +#: src/ui/MainWindowUI.cpp:2852 src/ui/MainWindowUI.cpp:2854 #, c-format msgid "Loaded %s: %d" msgstr "Betöltve %s: %d" -#: src/ui/MainWindowUI.cpp:2851 +#: src/ui/MainWindowUI.cpp:3032 +#, c-format +msgid "" +"Image size (%d x %d) is smaller than the original size (%d x %d). Please " +"increase the size to at least (%d x %d)." +msgstr "" +"A kép mérete (%d x %d) kisebb mint az eredeti méret (%d x %d). Kérlek növeld " +"a kép méretét legalább (%d x %d)." + +#: src/ui/MainWindowUI.cpp:3059 msgid "Can not open image!" msgstr "Nem lehet a képet megnyitni!" -#: src/ui/MainWindowUI.cpp:2857 +#: src/ui/MainWindowUI.cpp:3118 +#, c-format +msgid "No metadata found in image: %s" +msgstr "Nem találhatóak meta információk a képben: %s" + +#: src/ui/MainWindowUI.cpp:3151 msgid "Upscaler image open: file name is empty" msgstr "Felnagyítandó kép megnyitása: a fájl neve üres" -#: src/ui/MainWindowUI.cpp:2863 +#: src/ui/MainWindowUI.cpp:3157 #, c-format msgid "Upscaler image open: file not found: %s" msgstr "Felnagyítandó kép megnyitása: a fájl nem található: %s" -#: src/ui/MainWindowUI.cpp:2900 +#: src/ui/MainWindowUI.cpp:3194 msgid "Error accessing to the background process. Please try again." msgstr "Hiba történt a háttérfolyamat elérésekor. Kérlek próbáld újra." -#: src/ui/MainWindowUI.cpp:3075 +#: src/ui/MainWindowUI.cpp:3369 #, c-format msgid "" "%s is just stared to generate %d images\n" @@ -1536,11 +1667,11 @@ msgstr "" "%s elkezdte %d kép generálását\n" "Model: %s" -#: src/ui/MainWindowUI.cpp:3078 +#: src/ui/MainWindowUI.cpp:3372 msgid "Upscaling started" msgstr "Nagyítás elkezdve" -#: src/ui/MainWindowUI.cpp:3079 +#: src/ui/MainWindowUI.cpp:3373 #, c-format msgid "" "Upscaling the image is started: %s\n" @@ -1549,11 +1680,11 @@ msgstr "" "A kép felnagyítása elkezdve: %s\n" "Model: %s" -#: src/ui/MainWindowUI.cpp:3081 +#: src/ui/MainWindowUI.cpp:3375 msgid "Conversion started" msgstr "Átalakítás elkezdve" -#: src/ui/MainWindowUI.cpp:3082 +#: src/ui/MainWindowUI.cpp:3376 #, c-format msgid "" "Conversion the model is started: %s\n" @@ -1562,16 +1693,16 @@ msgstr "" "A model átalakítás elkezdődött: %s\n" "Model: %s" -#: src/ui/MainWindowUI.cpp:3085 +#: src/ui/MainWindowUI.cpp:3379 #, c-format msgid "%d images generation started" msgstr "%d kép generálása elkezdve" -#: src/ui/MainWindowUI.cpp:3087 +#: src/ui/MainWindowUI.cpp:3381 msgid "One image generation started!" msgstr "Egy kép generálása elkezdve!" -#: src/ui/MainWindowUI.cpp:3088 +#: src/ui/MainWindowUI.cpp:3382 #, c-format msgid "" "%s is just started to generate the image\n" @@ -1580,7 +1711,7 @@ msgstr "" "%s elkezdte a kép geneálását\n" "Model: %s" -#: src/ui/MainWindowUI.cpp:3103 +#: src/ui/MainWindowUI.cpp:3397 #, c-format msgid "" "%s is just finished to generate %d images\n" @@ -1589,11 +1720,11 @@ msgstr "" "%s kész %d kép geneálással\n" "Model: %s" -#: src/ui/MainWindowUI.cpp:3105 +#: src/ui/MainWindowUI.cpp:3399 msgid "Upscaling done" msgstr "Nagyítás kész" -#: src/ui/MainWindowUI.cpp:3106 +#: src/ui/MainWindowUI.cpp:3400 #, c-format msgid "" "Upscaling the image is done: \n" @@ -1604,11 +1735,11 @@ msgstr "" "%s\n" "Model: %s" -#: src/ui/MainWindowUI.cpp:3108 +#: src/ui/MainWindowUI.cpp:3402 msgid "Conversion done" msgstr "Az átalakítás kész" -#: src/ui/MainWindowUI.cpp:3109 +#: src/ui/MainWindowUI.cpp:3403 #, c-format msgid "" "Conversion the model is done: \n" @@ -1619,116 +1750,116 @@ msgstr "" "%s\n" "Model: %s" -#: src/ui/MainWindowUI.cpp:3113 +#: src/ui/MainWindowUI.cpp:3412 #, c-format msgid "%d images generation done" msgstr "%d kép generálása kész" -#: src/ui/MainWindowUI.cpp:3115 +#: src/ui/MainWindowUI.cpp:3414 msgid "Image generation done!" msgstr "Képgenerálás kész!" -#: src/ui/MainWindowUI.cpp:3116 +#: src/ui/MainWindowUI.cpp:3415 #, c-format msgid "%s is just finished to generate the image with model: %s" msgstr "%s befejezte a képgenerálást %s modellel" -#: src/ui/MainWindowUI.cpp:3125 +#: src/ui/MainWindowUI.cpp:3424 #, c-format msgid "%d jobs and %d steps without a segfault" msgstr "%d feladat és %d lépés segfault nélkül" -#: src/ui/MainWindowUI.cpp:3127 +#: src/ui/MainWindowUI.cpp:3426 #, c-format msgid "%d job and %d step without a segfault" msgstr "%d feladat és %d lépés segfault nélkül" -#: src/ui/MainWindowUI.cpp:3141 +#: src/ui/MainWindowUI.cpp:3440 #, c-format msgid "Model loaded: %s\n" msgstr "Model betöltve: %s\n" -#: src/ui/MainWindowUI.cpp:3145 +#: src/ui/MainWindowUI.cpp:3444 #, c-format msgid "Model load started: %s\n" msgstr "A model betöltése elkezdve: %s\n" -#: src/ui/MainWindowUI.cpp:3149 +#: src/ui/MainWindowUI.cpp:3448 #, c-format msgid "Model load failed: %s\n" msgstr "A model betöltése nem sikerült: %s\n" -#: src/ui/MainWindowUI.cpp:3150 +#: src/ui/MainWindowUI.cpp:3449 msgid "Model load failed" msgstr "A model betöltése nem sikerült" -#: src/ui/MainWindowUI.cpp:3151 +#: src/ui/MainWindowUI.cpp:3450 #, c-format msgid "The '%s' just failed to load... for more details please see the logs!" msgstr "" "A(z) '%s'-t nem sikerült betölteni... a részletekért kérlek nézd meg " "alogokat!" -#: src/ui/MainWindowUI.cpp:3159 +#: src/ui/MainWindowUI.cpp:3458 #, c-format msgid "" "Diffusion started. Seed: % Batch: %d %dx%dpx Cfg: %.1f Steps: %d" msgstr "" "Diffúzió elkezdve. Seed: % Tételek: %d %dx%dpx Cfg: %.1f Lépések: %d" -#: src/ui/MainWindowUI.cpp:3165 +#: src/ui/MainWindowUI.cpp:3464 #, c-format msgid "Upscale start, factor: %d image: %s\n" msgstr "Nagyítás elkezdve, tényező: %d kép %s\n" -#: src/ui/MainWindowUI.cpp:3170 +#: src/ui/MainWindowUI.cpp:3469 #, c-format msgid "Generation error: %s\n" msgstr "Generálási hiba: %s\n" -#: src/ui/MainWindowUI.cpp:3181 +#: src/ui/MainWindowUI.cpp:3480 #, c-format msgid "Model civitai image downloaded for model: %s\n" msgstr "Civitai kép letöltve a modelhez: %s\n" -#: src/ui/MainWindowUI.cpp:3198 src/ui/MainWindowUI.cpp:3203 +#: src/ui/MainWindowUI.cpp:3497 src/ui/MainWindowUI.cpp:3502 #, c-format msgid "Moving: %s%%" msgstr "Mozgatás: %s%%" -#: src/ui/MainWindowUI.cpp:3209 +#: src/ui/MainWindowUI.cpp:3508 #, c-format msgid "Model move error: %s\n" msgstr "Model mozgatási hiba: %s\n" -#: src/ui/MainWindowUI.cpp:3215 +#: src/ui/MainWindowUI.cpp:3514 #, c-format msgid "Model civitai % image(s) download started for model: %s\n" msgstr "" "% db model kép letöltése megkezdve a modelhez: %s\n" "\n" -#: src/ui/MainWindowUI.cpp:3221 +#: src/ui/MainWindowUI.cpp:3520 #, c-format msgid "Model civitai info download error: %s\n" msgstr "Civitai kép letöltése közben hiba lépett fel: %s\n" -#: src/ui/MainWindowUI.cpp:3226 +#: src/ui/MainWindowUI.cpp:3525 #, c-format msgid "Model civitai info download start: %s\n" msgstr "Civitai adatok letöltése elkezdve a modelhez: %s\n" -#: src/ui/MainWindowUI.cpp:3234 +#: src/ui/MainWindowUI.cpp:3533 #, c-format msgid "Model civitai info download finished: %s\n" msgstr "Civitai adatok letöltve a modelhez: %s\n" -#: src/ui/MainWindowUI.cpp:3238 +#: src/ui/MainWindowUI.cpp:3537 #, c-format msgid "Model civitai info not found: %s Hash: %s\n" msgstr "Civitai adatok nem találhatóak a modelhez: %s Hash: %s\n" -#: src/ui/MainWindowUI.cpp:3241 +#: src/ui/MainWindowUI.cpp:3540 #, c-format msgid "Model civitai info unkown parsing error happened: %s Hash: %s\n" msgstr "" @@ -1736,225 +1867,238 @@ msgstr "" "%s Hash: %s\n" "\n" -#: src/ui/MainWindowUI.cpp:3424 +#: src/ui/MainWindowUI.cpp:3707 msgid "Model download finished" msgstr "Model letöltés kész" -#: src/ui/MainWindowUI.cpp:3425 +#: src/ui/MainWindowUI.cpp:3708 #, c-format msgid "The model download is finished: %s" msgstr "A model letöltve: %s" -#: src/ui/MainWindowUI.cpp:3432 +#: src/ui/MainWindowUI.cpp:3715 msgid "Model download failed" msgstr "A model letöltése nem sikerült" -#: src/ui/MainWindowUI.cpp:3433 +#: src/ui/MainWindowUI.cpp:3716 #, c-format msgid "The model download is failed: %s" msgstr "A model letöltése sikertelen: %s" -#: src/ui/MainWindowUI.cpp:3473 +#: src/ui/MainWindowUI.cpp:3760 msgid "ID" msgstr "ID" -#: src/ui/MainWindowUI.cpp:3478 +#: src/ui/MainWindowUI.cpp:3765 msgid "Created at" msgstr "Létrehozva" -#: src/ui/MainWindowUI.cpp:3483 +#: src/ui/MainWindowUI.cpp:3770 msgid "Started at" msgstr "Elindítva" -#: src/ui/MainWindowUI.cpp:3492 +#: src/ui/MainWindowUI.cpp:3779 msgid "Finished at" msgstr "Elkészült" -#: src/ui/MainWindowUI.cpp:3501 +#: src/ui/MainWindowUI.cpp:3788 msgid "Udated at" msgstr "Frissítve" # There is a mispelling Mode -> Model -#: src/ui/MainWindowUI.cpp:3510 +#: src/ui/MainWindowUI.cpp:3797 msgid "Mode" msgstr "Mód" -#: src/ui/MainWindowUI.cpp:3527 +#: src/ui/MainWindowUI.cpp:3814 msgid "Threads" msgstr "Szálak" -#: src/ui/MainWindowUI.cpp:3533 +#: src/ui/MainWindowUI.cpp:3820 msgid "Factor" msgstr "Faktor" -#: src/ui/MainWindowUI.cpp:3548 +#: src/ui/MainWindowUI.cpp:3835 msgid "Scheduler" msgstr "Ütemező" -#: src/ui/MainWindowUI.cpp:3556 +#: src/ui/MainWindowUI.cpp:3843 msgid "Init image" msgstr "Kezdő kép" -#: src/ui/MainWindowUI.cpp:3561 +#: src/ui/MainWindowUI.cpp:3849 +msgid "Mask image" +msgstr "Maszk kép" + +#: src/ui/MainWindowUI.cpp:3855 msgid "Strength" msgstr "Erő" -#: src/ui/MainWindowUI.cpp:3569 +#: src/ui/MainWindowUI.cpp:3863 msgid "Prompt" msgstr "Prompt" -#: src/ui/MainWindowUI.cpp:3574 +#: src/ui/MainWindowUI.cpp:3868 msgid "Neg. prompt" msgstr "Neg. prompt" -#: src/ui/MainWindowUI.cpp:3584 +#: src/ui/MainWindowUI.cpp:3878 msgid "Clip skip" msgstr "Clip kihagyás" -#: src/ui/MainWindowUI.cpp:3589 +#: src/ui/MainWindowUI.cpp:3883 msgid "Clip on CPU" msgstr "Clip a CPU-n" -#: src/ui/MainWindowUI.cpp:3590 src/ui/MainWindowUI.cpp:3639 -#: src/ui/MainWindowUI.cpp:3644 src/ui/MainWindowUI.cpp:3708 -#: src/ui/MainWindowUI.cpp:3715 +#: src/ui/MainWindowUI.cpp:3884 src/ui/MainWindowUI.cpp:3933 +#: src/ui/MainWindowUI.cpp:3938 src/ui/MainWindowUI.cpp:4002 +#: src/ui/MainWindowUI.cpp:4009 msgid "yes" msgstr "igen" -#: src/ui/MainWindowUI.cpp:3590 src/ui/MainWindowUI.cpp:3639 -#: src/ui/MainWindowUI.cpp:3644 src/ui/MainWindowUI.cpp:3708 -#: src/ui/MainWindowUI.cpp:3715 +#: src/ui/MainWindowUI.cpp:3884 src/ui/MainWindowUI.cpp:3933 +#: src/ui/MainWindowUI.cpp:3938 src/ui/MainWindowUI.cpp:4002 +#: src/ui/MainWindowUI.cpp:4009 msgid "no" msgstr "nem" -#: src/ui/MainWindowUI.cpp:3594 +#: src/ui/MainWindowUI.cpp:3888 msgid "Cfg scale" msgstr "Cfg skála" -#: src/ui/MainWindowUI.cpp:3604 +#: src/ui/MainWindowUI.cpp:3898 msgid "Steps" msgstr "Lépések" -#: src/ui/MainWindowUI.cpp:3610 +#: src/ui/MainWindowUI.cpp:3904 msgid "Time min." msgstr "Idő min." -#: src/ui/MainWindowUI.cpp:3615 +#: src/ui/MainWindowUI.cpp:3909 msgid "Time max." msgstr "Idő max." -#: src/ui/MainWindowUI.cpp:3620 +#: src/ui/MainWindowUI.cpp:3914 msgid "Time avg." msgstr "Idő átl." -#: src/ui/MainWindowUI.cpp:3625 +#: src/ui/MainWindowUI.cpp:3919 msgid "Time total" msgstr "Teljes idő" -#: src/ui/MainWindowUI.cpp:3632 -msgid "VAE" -msgstr "VAE" +#: src/ui/MainWindowUI.cpp:3937 +msgid "VAE tiling" +msgstr "VAE darabolása" -#: src/ui/MainWindowUI.cpp:3649 +#: src/ui/MainWindowUI.cpp:3943 msgid "CLIP L" msgstr "CLIP L" -#: src/ui/MainWindowUI.cpp:3655 +#: src/ui/MainWindowUI.cpp:3949 msgid "CLIP G" msgstr "CLIP G" -#: src/ui/MainWindowUI.cpp:3662 +#: src/ui/MainWindowUI.cpp:3956 msgid "T5xxl" msgstr "T5xxl" -#: src/ui/MainWindowUI.cpp:3669 +#: src/ui/MainWindowUI.cpp:3963 msgid "TAESD" msgstr "TAESD" -#: src/ui/MainWindowUI.cpp:3676 +#: src/ui/MainWindowUI.cpp:3970 msgid "Width" msgstr "Szélesség" -#: src/ui/MainWindowUI.cpp:3681 +#: src/ui/MainWindowUI.cpp:3975 msgid "Height" msgstr "Magasság" -#: src/ui/MainWindowUI.cpp:3686 +#: src/ui/MainWindowUI.cpp:3980 msgid "Batch count" msgstr "Tételek száma" -#: src/ui/MainWindowUI.cpp:3692 +#: src/ui/MainWindowUI.cpp:3986 msgid "CN model" msgstr "CN model" -#: src/ui/MainWindowUI.cpp:3697 +#: src/ui/MainWindowUI.cpp:3991 msgid "CN img" msgstr "CN kép" -#: src/ui/MainWindowUI.cpp:3702 +#: src/ui/MainWindowUI.cpp:3996 msgid "CN strength" msgstr "CN ereje" -#: src/ui/MainWindowUI.cpp:3714 +#: src/ui/MainWindowUI.cpp:4008 msgid "Flash Attention" msgstr "Flash attention" -#: src/ui/MainWindowUI.cpp:3719 +#: src/ui/MainWindowUI.cpp:4013 msgid "SLG scale" msgstr "SLG skála" -#: src/ui/MainWindowUI.cpp:3724 +#: src/ui/MainWindowUI.cpp:4018 msgid "Skip layers" msgstr "Rétegkihagyás" -#: src/ui/MainWindowUI.cpp:3735 +#: src/ui/MainWindowUI.cpp:4029 msgid "Skip Layer Start" msgstr "Rétegkihagyás start" -#: src/ui/MainWindowUI.cpp:3740 +#: src/ui/MainWindowUI.cpp:4034 msgid "Skip Layer End" msgstr "Rétegkihagyás vége" -#: src/ui/MainWindowUI.cpp:3765 +#: src/ui/MainWindowUI.cpp:4059 msgid "Open image" msgstr "Kép megnyitása" -#: src/ui/MainWindowUI.cpp:3766 +#: src/ui/MainWindowUI.cpp:4060 msgid "Open parent folder" msgstr "Szülő mappa megnyitása" -#: src/ui/MainWindowUI.cpp:3769 +#: src/ui/MainWindowUI.cpp:4063 #, c-format msgid "Copy seed %" msgstr "Seed másolása %" -#: src/ui/MainWindowUI.cpp:3772 +#: src/ui/MainWindowUI.cpp:4066 src/ui/MainWindowUI.cpp:4076 msgid "Send the image to img2img" -msgstr "Utolsó kép küldése az img2img-be" +msgstr "Kép küldése az img2img-be" -#: src/ui/MainWindowUI.cpp:3773 +#: src/ui/MainWindowUI.cpp:4067 msgid "Upscale" msgstr "Felnagyítás" -#: src/ui/MainWindowUI.cpp:3777 +#: src/ui/MainWindowUI.cpp:4071 msgid "Send image to the controlnet image" msgstr "Kép küldése controlnet képbe" -#: src/ui/MainWindowUI.cpp:3830 +#: src/ui/MainWindowUI.cpp:4080 +msgid "Send image to img2img mask" +msgstr "Kép küldése img2img maszknak" + +#: src/ui/MainWindowUI.cpp:4165 msgid "Invalid image from diffusion: " msgstr "Hibás kép a diffúzióból: " -#: src/ui/MainWindowUI.cpp:3858 +#: src/ui/MainWindowUI.cpp:4174 src/ui/MainWindowUI.cpp:4959 #, c-format msgid "Failed to save image into %s" msgstr "Nem sikerült a kép mentése ide %s" -#: src/ui/MainWindowUI.cpp:4217 +#: src/ui/MainWindowUI.cpp:4532 +#, c-format +msgid "Converting model %s to %s" +msgstr "Model átalakítása %s erre: %s" + +#: src/ui/MainWindowUI.cpp:4566 #, c-format msgid "Do you want to convert model %s with quantation %s to gguf format?" msgstr "Szeretnéd átalakítani a modelt %s %s kvantitációra gguf formátumra?" -#: src/ui/MainWindowUI.cpp:4220 +#: src/ui/MainWindowUI.cpp:4569 #, c-format msgid "" "Do you want to convert model %s with quantation %s and vae %s to gguf format?" @@ -1962,55 +2106,103 @@ msgstr "" "Szeretnéd átalakítani a modelt %s %s kvantitációra gguf formátumra %s vae -" "val?" -#: src/ui/MainWindowUI.cpp:4223 +#: src/ui/MainWindowUI.cpp:4572 #, c-format msgid "Convert model %s?" msgstr "Model átalakítása %s?" -#: src/ui/MainWindowUI.cpp:4226 +#: src/ui/MainWindowUI.cpp:4575 #, c-format msgid "The file %s already exists. Do you want to overwrite it?" msgstr "A fájl %s már létezik. Szeretnéd felülírni?" -#: src/ui/MainWindowUI.cpp:4227 +#: src/ui/MainWindowUI.cpp:4576 msgid "Overwrite File?" msgstr "Fájl felülírása?" -#: src/ui/MainWindowUI.cpp:4383 +#: src/ui/MainWindowUI.cpp:4587 +msgid "Open Link?" +msgstr "Link megnyitása?" + +#: src/ui/MainWindowUI.cpp:4733 msgid "Stopping..." msgstr "Leállítás..." -#: src/ui/MainWindowUI.cpp:4402 +#: src/ui/MainWindowUI.cpp:4752 msgid "Process is ready" msgstr "A folyamat fut" -#: src/ui/MainWindowUI.cpp:4420 +#: src/ui/MainWindowUI.cpp:4770 msgid "External process stopped" msgstr "A külső folyamat leállt" -#: src/ui/MainWindowUI.cpp:4423 +#: src/ui/MainWindowUI.cpp:4773 msgid "Process is stopped" msgstr "A folyamat leállt" -#: src/ui/MainWindowUI.cpp:4436 +#: src/ui/MainWindowUI.cpp:4786 msgid "Failed to restart the background process..." msgstr "Nem sikerült újraindítani a háttérfolyamatot..." -#: src/ui/MainWindowUI.cpp:4455 +#: src/ui/MainWindowUI.cpp:4805 #, c-format msgid "%s started" msgstr "%s elindult" -#: src/ui/MainWindowUI.cpp:4464 +#: src/ui/MainWindowUI.cpp:4814 #, c-format msgid "%s exited" msgstr "%s kilépett" -#: src/ui/MainWindowUI.cpp:4499 +#: src/ui/MainWindowUI.cpp:4851 #, c-format msgid "Current job: %s %s" msgstr "Aktuális feladat: %s %s" +#: src/ui/MainWindowUI.cpp:4936 +msgid "Save mask image file" +msgstr "Maszk kép mentése fájlba" + +#: src/ui/MainWindowUI.cpp:4937 +msgid "PNG files (*.png)|*.png|All files (*.*)|*.*" +msgstr "PNG fájlok (*.png)|*.png|All files (*.*)|*.*" + +#: src/ui/MainWindowUI.cpp:5084 src/ui/MainWindowUI.cpp:5213 +#, c-format +msgid "%i x %i" +msgstr "%i x %i" + +#: src/ui/MainWindowUI.cpp:5086 src/ui/MainWindowUI.cpp:5215 +#, c-format +msgid "%i x %i (%i x %i)" +msgstr "%i x %i (%i x %i)" + +#: src/ui/MainWindowUI.cpp:5134 +#, c-format +msgid "Inpaint mask open: file not found: %s" +msgstr "Inpaint maszk megnyitása: a fájl nem található: %s" + +#: src/ui/MainWindowUI.cpp:5143 +msgid "" +"No image loaded into the img2img, please load a base image before open the " +"mask!" +msgstr "" +"Nincs kép betöltve az img2img -be, kérlek először nyiss meg egy képet és" +" utána töltsd be a maszkot!" + +#: src/ui/MainWindowUI.cpp:5151 +#, c-format +msgid "" +"Inpaint mask open: the resolution of the mask does not match the resolution " +"of the image: %s" +msgstr "" +"Inpaint maszk megnyitása: a maszk kép felbontása nem egyezik a kép " +"felbontásával: %s" + +#: src/ui/MainWindowUI.cpp:5153 +msgid "The resolution of the mask does not match the resolution of the image" +msgstr "A maszk kép felbontása nem egyezik a kép felbontásával" + #: src/ui/QueueManager.h:39 msgid "pending" msgstr "függőben" @@ -2039,6 +2231,76 @@ msgstr "kész" msgid "model hashing..." msgstr "model hash-elés..." +#~ msgid "Vae:" +#~ msgstr "Vae:" + +#~ msgid "Clip skip:" +#~ msgstr "Clip kihagy.:" + +#~ msgid "Sampler:" +#~ msgstr "Mintavevő:" + +#~ msgid "Scheduler:" +#~ msgstr "Ütemező:" + +#~ msgid "Seed:" +#~ msgstr "Seed:" + +#~ msgid "Low res.:" +#~ msgstr "Kis felb.:" + +#~ msgid "High Res.:" +#~ msgstr "Mag. felb.:" + +#~ msgid "FLUX" +#~ msgstr "FLUX" + +#, c-format +#~ msgid "Failed to save mask image to %s" +#~ msgstr "Nem sikerült a maszk kép mentése ide %s" + +#, c-format +#~ msgid "Saved mask image to %s" +#~ msgstr "Maszk kép mentve %s" + +#, c-format +#~ msgid "Failed to save initial image to %s" +#~ msgstr "Nem sikerült a kezdeti képet menteni %s" + +#, c-format +#~ msgid "Saved initial tmp image to %s %dx%d" +#~ msgstr "Ideiglenes kezdő kép mentve %s %dx%d " + +#, c-format +#~ msgid "Saved mask tmp image to %s %dx%d" +#~ msgstr "Ideiglenes maszk kép mentve %s %dx%d" + +#~ msgid "-none-" +#~ msgstr "-nincs-" + +#, c-format +#~ msgid "Zoom: %.0f%%" +#~ msgstr "Nagyítás: %.0f%%" + +#~ msgid "" +#~ "For more information, click the button with the question mark icon.\n" +#~ "\n" +#~ "To use the FLUX model, select the \"Diffusion Model\" file picker and " +#~ "choose the FLUX model.\n" +#~ "For SD3.5, use the dropdown menu at the top to select a model." +#~ msgstr "" +#~ "További információkért, kattints a kérdőjeles gombra.\n" +#~ "\n" +#~ "FLUX model használatához, válassz egy modelt a 'Diffúziós Model' " +#~ "fájlválasztóval.\n" +#~ "SD3.5 model esetén, a fenti Model választóból válaszd ki a modelt." + +#~ msgid "Open Image on CivitAi.com" +#~ msgstr "Kép megnyitása CivitAi.com -on" + +#~ msgid "Input image" +#~ msgstr "Bemeneti kép" + #~ msgid "Presets" #~ msgstr "Sablonok" @@ -2120,10 +2382,6 @@ msgstr "model hash-elés..." #~ "%s befejezte a kép geneálást\n" #~ "Model: %s" -#, c-format -#~ msgid "Can not open initial image: %s" -#~ msgstr "A kezdeti képet nem lehet megnyitni: %s" - #~ msgid "Failed to load img2img symbol from backend!" #~ msgstr "Hiba történt az img2img szimbólum betöltésekor!" @@ -2136,9 +2394,6 @@ msgstr "model hash-elés..." #~ msgid "Failed to load upscale symbol from backend!" #~ msgstr "Hiba történt az upscale szimbólum betöltésekor!" -#~ msgid "PNG files (*.png)|*.png|JPEG (*.jpg)|*.jpg" -#~ msgstr "PNG fájlok (*.png)|*.png|JPEG (*.jpg)|*.jpg" - #~ msgid "Please wait to finish the currently running running jobs!" #~ msgstr "Kérlek várd meg, míg a jelenleg futó feladatnak nincs vége!" diff --git a/locale/stablediffusiongui.pot b/locale/stablediffusiongui.pot index 64e4fa6..ae46732 100644 --- a/locale/stablediffusiongui.pot +++ b/locale/stablediffusiongui.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: StableDiffusionGUI 0.2.2\n" +"Project-Id-Version: StableDiffusionGUI 0.2.4\n" "Report-Msgid-Bugs-To: sdgui@fsociety.hu\n" -"POT-Creation-Date: 2024-12-15 11:34+0100\n" +"POT-Creation-Date: 2025-01-08 11:17+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,12 +22,12 @@ msgstr "" msgid "Failed to load model: " msgstr "" -#: extprocess/src/ApplicationLogic.cpp:208 +#: extprocess/src/ApplicationLogic.cpp:212 #, c-format msgid "Unknown mode: %s" msgstr "" -#: extprocess/src/ApplicationLogic.cpp:419 +#: extprocess/src/ApplicationLogic.cpp:435 msgid "Failed to load image: " msgstr "" @@ -35,639 +35,720 @@ msgstr "" msgid "Another program instance is already running, aborting." msgstr "" -#: src/helpers/TreeListManager.h:73 src/ui/MainWindowUI.cpp:1284 +#: src/helpers/TreeListManager.h:73 src/ui/MainWindowUI.cpp:1495 msgid "[F] " msgstr "" -#: src/ui/MainWindow.cpp:76 +#: src/ui/MainWindow.cpp:81 msgid "About the sd.cpp.gui.wx" msgstr "" -#: src/ui/MainWindow.cpp:77 +#: src/ui/MainWindow.cpp:82 msgid "About the program" msgstr "" -#: src/ui/MainWindow.cpp:84 +#: src/ui/MainWindow.cpp:89 msgid "Open CivitAi.com model browser" msgstr "" -#: src/ui/MainWindow.cpp:85 +#: src/ui/MainWindow.cpp:90 msgid "" "With CivitAi.com model browser, you can search for models or download models" msgstr "" -#: src/ui/MainWindow.cpp:92 src/ui/MainWindowUI.cpp:1392 +#: src/ui/MainWindow.cpp:97 src/ui/MainWindowUI.cpp:1602 msgid "Show Widget" msgstr "" -#: src/ui/MainWindow.cpp:101 +#: src/ui/MainWindow.cpp:106 msgid "Stop and restart the background process" msgstr "" -#: src/ui/MainWindow.cpp:102 +#: src/ui/MainWindow.cpp:107 msgid "" "This will send a terminate to the background diffuser process. This will " "clear up all used memory (eg. freeing up all the loaded models)" msgstr "" -#: src/ui/MainWindow.cpp:115 +#: src/ui/MainWindow.cpp:120 msgid "Model:" msgstr "" -#: src/ui/MainWindow.cpp:132 +#: src/ui/MainWindow.cpp:137 msgid "Type:" msgstr "" -#: src/ui/MainWindow.cpp:139 src/ui/MainWindow.cpp:1170 +#: src/ui/MainWindow.cpp:144 src/ui/MainWindow.cpp:1462 msgid "" "Weight type. If not specified, the default is the type of the weight file." msgstr "" -#: src/ui/MainWindow.cpp:149 src/ui/MainWindow.cpp:2325 +#: src/ui/MainWindow.cpp:154 src/ui/MainWindow.cpp:2623 msgid "Current job: none" msgstr "" -#: src/ui/MainWindow.cpp:193 +#: src/ui/MainWindow.cpp:206 msgid "Resume all" msgstr "" -#: src/ui/MainWindow.cpp:198 +#: src/ui/MainWindow.cpp:211 msgid "Pause all" msgstr "" -#: src/ui/MainWindow.cpp:203 +#: src/ui/MainWindow.cpp:216 msgid "Delete all" msgstr "" -#: src/ui/MainWindow.cpp:210 +#: src/ui/MainWindow.cpp:223 msgid "Number of jobs: 0" msgstr "" -#: src/ui/MainWindow.cpp:234 +#: src/ui/MainWindow.cpp:247 msgid "Id" msgstr "" -#: src/ui/MainWindow.cpp:235 +#: src/ui/MainWindow.cpp:248 msgid "Crated at" msgstr "" -#: src/ui/MainWindow.cpp:236 src/ui/MainWindow.cpp:992 -#: src/ui/MainWindow.cpp:2192 src/ui/MainWindow.cpp:2240 -#: src/ui/MainWindowUI.cpp:42 src/ui/MainWindowUI.cpp:1765 -#: src/ui/MainWindowUI.cpp:3543 +#: src/ui/MainWindow.cpp:249 src/ui/MainWindow.cpp:988 +#: src/ui/MainWindow.cpp:2490 src/ui/MainWindow.cpp:2538 +#: src/ui/MainWindowUI.cpp:42 src/ui/MainWindowUI.cpp:1916 +#: src/ui/MainWindowUI.cpp:3830 msgid "Type" msgstr "" -#: src/ui/MainWindow.cpp:237 src/ui/MainWindowUI.cpp:3515 -#: src/ui/MainWindowUI.cpp:3521 +#: src/ui/MainWindow.cpp:250 src/ui/MainWindowUI.cpp:3802 +#: src/ui/MainWindowUI.cpp:3808 msgid "Model" msgstr "" -#: src/ui/MainWindow.cpp:238 src/ui/MainWindowUI.cpp:3599 +#: src/ui/MainWindow.cpp:251 src/ui/MainWindowUI.cpp:3893 msgid "Sampler" msgstr "" -#: src/ui/MainWindow.cpp:239 src/ui/MainWindowUI.cpp:3579 +#: src/ui/MainWindow.cpp:252 src/ui/MainWindowUI.cpp:3873 msgid "Seed" msgstr "" -#: src/ui/MainWindow.cpp:240 +#: src/ui/MainWindow.cpp:253 msgid "Progress" msgstr "" -#: src/ui/MainWindow.cpp:241 +#: src/ui/MainWindow.cpp:254 msgid "Speed" msgstr "" -#: src/ui/MainWindow.cpp:242 src/ui/MainWindow.cpp:2167 -#: src/ui/MainWindow.cpp:2197 src/ui/MainWindow.cpp:2239 -#: src/ui/MainWindow.cpp:2253 +#: src/ui/MainWindow.cpp:255 src/ui/MainWindow.cpp:2465 +#: src/ui/MainWindow.cpp:2495 src/ui/MainWindow.cpp:2537 +#: src/ui/MainWindow.cpp:2551 msgid "Status" msgstr "" -#: src/ui/MainWindow.cpp:280 +#: src/ui/MainWindow.cpp:293 msgid "Job details" msgstr "" -#: src/ui/MainWindow.cpp:297 +#: src/ui/MainWindow.cpp:310 msgid "Jobs and Images" msgstr "" -#: src/ui/MainWindow.cpp:328 src/ui/MainWindow.cpp:622 -#: src/ui/MainWindow.cpp:1900 +#: src/ui/MainWindow.cpp:349 src/ui/MainWindow.cpp:460 +#: src/ui/MainWindow.cpp:2198 msgid "Diffusion" msgstr "" -#: src/ui/MainWindow.cpp:343 +#: src/ui/MainWindow.cpp:364 msgid "Controlnet" msgstr "" -#: src/ui/MainWindow.cpp:379 -msgid "What is this?" -msgstr "" - -#: src/ui/MainWindow.cpp:383 -msgid "" -"For more information, click the button with the question mark icon.\n" -"\n" -"To use the FLUX model, select the \"Diffusion Model\" file picker and choose " -"the FLUX model.\n" -"For SD3.5, use the dropdown menu at the top to select a model." -msgstr "" - -#: src/ui/MainWindow.cpp:393 -msgid "SLG scale:" +#: src/ui/MainWindow.cpp:369 +msgid "OpenPose Editor" msgstr "" -#: src/ui/MainWindow.cpp:395 src/ui/MainWindow.cpp:401 -msgid "skip layer guidance (SLG) scale, only for DiT models: (default: 0.0)" +#: src/ui/MainWindow.cpp:382 src/ui/MainWindow.cpp:519 src/ui/MainWindow.cpp:945 +#: src/ui/MainWindow.cpp:1182 src/ui/MainWindow.cpp:1201 +#: src/ui/MainWindow.cpp:1208 src/ui/MainWindow.cpp:1215 +msgid "Select a file" msgstr "" -#: src/ui/MainWindow.cpp:411 -msgid "Skip layers:" +#: src/ui/MainWindow.cpp:382 src/ui/MainWindow.cpp:519 src/ui/MainWindow.cpp:643 +#: src/ui/MainWindow.cpp:713 src/ui/MainWindow.cpp:945 +msgid "" +"Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;" +"*.JPEG;*.PNG" msgstr "" -#: src/ui/MainWindow.cpp:413 src/ui/MainWindow.cpp:418 -msgid "Layers to skip for SLG steps: (default: [7,8,9])" +#: src/ui/MainWindow.cpp:387 src/ui/MainWindowUI.cpp:4001 +msgid "CN on CPU" msgstr "" -#: src/ui/MainWindow.cpp:417 -msgid "7,8,9" +#: src/ui/MainWindow.cpp:388 +msgid "Keep controlnet on CPU" msgstr "" -#: src/ui/MainWindow.cpp:428 -msgid "Skip Layer Start:" +#: src/ui/MainWindow.cpp:403 src/ui/MainWindow.cpp:654 +msgid "Show full" msgstr "" -#: src/ui/MainWindow.cpp:430 src/ui/MainWindow.cpp:436 -msgid "" -"SLG enabling point: (default: 0.01)\n" -"SLG will be enabled at step int([STEPS]*[START]) and disabled at " -"int([STEPS]*[END])" +#: src/ui/MainWindow.cpp:405 +msgid "Show the original controlnet image" msgstr "" -#: src/ui/MainWindow.cpp:446 -msgid "Skip Layer End:" +#: src/ui/MainWindow.cpp:413 +msgid "Remove control image" msgstr "" -#: src/ui/MainWindow.cpp:448 src/ui/MainWindow.cpp:454 -msgid "" -"SLG disabling point: (default: 0.2)\n" -"SLG will be enabled at step int([STEPS]*[START]) and disabled at " -"int([STEPS]*[END])" +#: src/ui/MainWindow.cpp:424 +msgid "txt2img" msgstr "" -#: src/ui/MainWindow.cpp:473 -msgid "Diffusion Model:" +#: src/ui/MainWindow.cpp:472 +msgid "Brush" msgstr "" -#: src/ui/MainWindow.cpp:475 -msgid "Diffusion models, for example FLUX" +#: src/ui/MainWindow.cpp:481 +msgid "Zoom" msgstr "" -#: src/ui/MainWindow.cpp:479 src/ui/MainWindow.cpp:504 src/ui/MainWindow.cpp:517 -#: src/ui/MainWindow.cpp:530 src/ui/MainWindow.cpp:548 src/ui/MainWindow.cpp:959 -msgid "Select a file" +#: src/ui/MainWindow.cpp:493 +msgid "Save the mask into png" msgstr "" -#: src/ui/MainWindow.cpp:479 src/ui/MainWindow.cpp:504 src/ui/MainWindow.cpp:517 -#: src/ui/MainWindow.cpp:530 -msgid "Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf" +#: src/ui/MainWindow.cpp:500 +msgid "Invert mask" msgstr "" -#: src/ui/MainWindow.cpp:482 -msgid "Flash attention" +#: src/ui/MainWindow.cpp:507 +msgid "" +"Resize the image to fit into the diffusion's width and height.\n" +"WARNING: this will delete the current mask if have!" msgstr "" -#: src/ui/MainWindow.cpp:483 -msgid "" -"Use flash attention in the diffusion model. This will reduce significantly " -"the memory uage (for low vram).\n" -"Might lower quality, since it implies converting k and v to f16.\n" -"This might crash if it is not supported by the backend.\n" -"\n" +#: src/ui/MainWindow.cpp:515 +msgid "Clear the mask" msgstr "" -#: src/ui/MainWindow.cpp:490 -msgid "Clean model" +#: src/ui/MainWindow.cpp:520 +msgid "Open a mask image from file" msgstr "" -#: src/ui/MainWindow.cpp:500 -msgid "ClipL:" +#: src/ui/MainWindow.cpp:534 +msgid "Change the brush shape to circle" msgstr "" -#: src/ui/MainWindow.cpp:513 -msgid "ClipG:" +#: src/ui/MainWindow.cpp:541 +msgid "Change the brush shape to square" msgstr "" -#: src/ui/MainWindow.cpp:526 -msgid "T5XXL:" +#: src/ui/MainWindow.cpp:548 +msgid "Change the brush shape to triangle" msgstr "" -#: src/ui/MainWindow.cpp:548 src/ui/MainWindow.cpp:671 src/ui/MainWindow.cpp:735 -#: src/ui/MainWindow.cpp:959 +#: src/ui/MainWindow.cpp:558 msgid "" -"Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;" -"*.JPEG;*.PNG" +"Ctrl + Mouse wheel to ZOOM\n" +"Shift + Mouse wheel to Change brush size" msgstr "" -#: src/ui/MainWindow.cpp:553 src/ui/MainWindowUI.cpp:3707 -msgid "CN on CPU" +#: src/ui/MainWindow.cpp:592 +msgid "Outpaint Top:" msgstr "" -#: src/ui/MainWindow.cpp:554 -msgid "Keep controlnet on CPU" +#: src/ui/MainWindow.cpp:596 src/ui/MainWindow.cpp:603 src/ui/MainWindow.cpp:610 +#: src/ui/MainWindow.cpp:617 +msgid "0" msgstr "" -#: src/ui/MainWindow.cpp:569 src/ui/MainWindow.cpp:684 -msgid "Show full" +#: src/ui/MainWindow.cpp:599 +msgid "Right:" msgstr "" -#: src/ui/MainWindow.cpp:571 -msgid "Show the original controlnet image" +#: src/ui/MainWindow.cpp:606 +msgid "Bottom:" msgstr "" -#: src/ui/MainWindow.cpp:579 -msgid "Remove control image" +#: src/ui/MainWindow.cpp:613 +msgid "Left:" msgstr "" -#: src/ui/MainWindow.cpp:590 -msgid "txt2img" +#: src/ui/MainWindow.cpp:620 +msgid "Resize" msgstr "" -#: src/ui/MainWindow.cpp:638 -msgid "Input image" +#: src/ui/MainWindow.cpp:633 +msgid "Preview and InPaint" msgstr "" -#: src/ui/MainWindow.cpp:671 src/ui/MainWindow.cpp:735 +#: src/ui/MainWindow.cpp:643 src/ui/MainWindow.cpp:713 msgid "Select an image" msgstr "" -#: src/ui/MainWindow.cpp:676 +#: src/ui/MainWindow.cpp:646 msgid "Strength:" msgstr "" -#: src/ui/MainWindow.cpp:701 +#: src/ui/MainWindow.cpp:671 msgid "img2img" msgstr "" -#: src/ui/MainWindow.cpp:731 +#: src/ui/MainWindow.cpp:709 msgid "Source Image" msgstr "" -#: src/ui/MainWindow.cpp:749 +#: src/ui/MainWindow.cpp:727 msgid "Upscaler model" msgstr "" -#: src/ui/MainWindow.cpp:764 src/ui/MainWindow.cpp:786 -#: src/ui/MainWindow.cpp:1205 +#: src/ui/MainWindow.cpp:742 src/ui/MainWindow.cpp:764 msgid "Width:" msgstr "" -#: src/ui/MainWindow.cpp:772 src/ui/MainWindow.cpp:794 -#: src/ui/MainWindow.cpp:1212 +#: src/ui/MainWindow.cpp:750 src/ui/MainWindow.cpp:772 msgid "Height:" msgstr "" -#: src/ui/MainWindow.cpp:808 +#: src/ui/MainWindow.cpp:786 msgid "Upscale factor" msgstr "" -#: src/ui/MainWindow.cpp:840 +#: src/ui/MainWindow.cpp:818 msgid "Keep upscale model in memory" msgstr "" -#: src/ui/MainWindow.cpp:841 +#: src/ui/MainWindow.cpp:819 msgid "" "WARNING: If you check this box, the upscaler model will remain in memory for " "the next job, which could lead to a memory overflow or program crash " "(segfault)." msgstr "" -#: src/ui/MainWindow.cpp:845 +#: src/ui/MainWindow.cpp:823 msgid "Keep checkpoints in memory" msgstr "" -#: src/ui/MainWindow.cpp:846 +#: src/ui/MainWindow.cpp:824 msgid "" "WARNING: If you check this box, the SD model from the previous job will " "remain in RAM/VRAM, which could potentially lead to a program crash " "(segfault)." msgstr "" -#: src/ui/MainWindow.cpp:857 +#: src/ui/MainWindow.cpp:835 msgid "Upscaler" msgstr "" -#: src/ui/MainWindow.cpp:896 src/ui/MainWindow.cpp:911 +#: src/ui/MainWindow.cpp:882 src/ui/MainWindow.cpp:897 msgid "Copy to txt2img prompt" msgstr "" -#: src/ui/MainWindow.cpp:899 src/ui/MainWindow.cpp:914 +#: src/ui/MainWindow.cpp:885 src/ui/MainWindow.cpp:900 msgid "Copy to img2img prompt" msgstr "" -#: src/ui/MainWindow.cpp:928 +#: src/ui/MainWindow.cpp:914 msgid "Find and select model" msgstr "" -#: src/ui/MainWindow.cpp:929 +#: src/ui/MainWindow.cpp:915 msgid "Try to find and load the model by the image parameters" msgstr "" -#: src/ui/MainWindow.cpp:949 +#: src/ui/MainWindow.cpp:919 msgid "Load all to txt2img" msgstr "" -#: src/ui/MainWindow.cpp:954 +#: src/ui/MainWindow.cpp:924 msgid "Load all to img2img" msgstr "" -#: src/ui/MainWindow.cpp:968 +#: src/ui/MainWindow.cpp:954 msgid "Clear" msgstr "" -#: src/ui/MainWindow.cpp:979 +#: src/ui/MainWindow.cpp:965 msgid "Image info" msgstr "" -#: src/ui/MainWindow.cpp:990 src/ui/MainWindow.cpp:2161 -#: src/ui/MainWindow.cpp:2191 src/ui/MainWindow.cpp:2238 -#: src/ui/MainWindowUI.cpp:40 src/ui/MainWindowUI.cpp:1747 +#: src/ui/MainWindow.cpp:986 src/ui/MainWindow.cpp:2459 +#: src/ui/MainWindow.cpp:2489 src/ui/MainWindow.cpp:2536 +#: src/ui/MainWindowUI.cpp:40 src/ui/MainWindowUI.cpp:1898 msgid "Name" msgstr "" -#: src/ui/MainWindow.cpp:991 src/ui/MainWindow.cpp:2195 -#: src/ui/MainWindow.cpp:2198 src/ui/MainWindow.cpp:2252 +#: src/ui/MainWindow.cpp:987 src/ui/MainWindow.cpp:2493 +#: src/ui/MainWindow.cpp:2496 src/ui/MainWindow.cpp:2550 #: src/ui/MainWindowUI.cpp:41 msgid "Size" msgstr "" -#: src/ui/MainWindow.cpp:993 src/ui/MainWindowUI.cpp:43 -#: src/ui/MainWindowUI.cpp:1759 +#: src/ui/MainWindow.cpp:989 src/ui/MainWindowUI.cpp:43 +#: src/ui/MainWindowUI.cpp:1910 msgid "Hash" msgstr "" -#: src/ui/MainWindow.cpp:1011 +#: src/ui/MainWindow.cpp:1007 msgid "Model details" msgstr "" -#: src/ui/MainWindow.cpp:1018 -msgid "wxFB Website" +#: src/ui/MainWindow.cpp:1014 +msgid "[F]avorite" msgstr "" -#: src/ui/MainWindow.cpp:1023 -msgid "[F]avorite" +#: src/ui/MainWindow.cpp:1019 +msgid "wxFB Website" msgstr "" -#: src/ui/MainWindow.cpp:1050 src/ui/MainWindow.cpp:2231 +#: src/ui/MainWindow.cpp:1046 src/ui/MainWindow.cpp:2529 msgid "Models" msgstr "" -#: src/ui/MainWindow.cpp:1063 -msgid "Vae:" +#: src/ui/MainWindow.cpp:1067 +msgid "Prompt:" msgstr "" -#: src/ui/MainWindow.cpp:1077 src/ui/MainWindow.cpp:1118 -msgid "CPU" +#: src/ui/MainWindow.cpp:1082 +msgid "Negative prompt:" msgstr "" -#: src/ui/MainWindow.cpp:1078 src/ui/MainWindowUI.cpp:3638 -msgid "VAE on CPU" +#: src/ui/MainWindow.cpp:1098 +msgid "Prompt presets:" msgstr "" -#: src/ui/MainWindow.cpp:1085 src/ui/MainWindowUI.cpp:3643 -msgid "VAE tiling" +#: src/ui/MainWindow.cpp:1122 +msgid "What is this?" msgstr "" -#: src/ui/MainWindow.cpp:1086 -msgid "Process vae in tiles to reduce memory usage" +#: src/ui/MainWindow.cpp:1129 +msgid "SLG scale:" msgstr "" -#: src/ui/MainWindow.cpp:1090 -msgid "VAE decode only" +#: src/ui/MainWindow.cpp:1131 src/ui/MainWindow.cpp:1137 +msgid "skip layer guidance (SLG) scale, only for DiT models: (default: 0.0)" msgstr "" -#: src/ui/MainWindow.cpp:1096 -msgid "CFG:" +#: src/ui/MainWindow.cpp:1141 +msgid "Skip layers:" +msgstr "" + +#: src/ui/MainWindow.cpp:1143 src/ui/MainWindow.cpp:1148 +msgid "Layers to skip for SLG steps: (default: [7,8,9])" +msgstr "" + +#: src/ui/MainWindow.cpp:1147 +msgid "7,8,9" msgstr "" -#: src/ui/MainWindow.cpp:1104 -msgid "Clip skip:" +#: src/ui/MainWindow.cpp:1152 +msgid "Skip Layer Start:" msgstr "" -#: src/ui/MainWindow.cpp:1106 src/ui/MainWindow.cpp:1114 +#: src/ui/MainWindow.cpp:1154 src/ui/MainWindow.cpp:1160 msgid "" -"ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer " -"(default: -1)\n" -"<= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x" +"SLG enabling point: (default: 0.01)\n" +"SLG will be enabled at step int([STEPS]*[START]) and disabled at " +"int([STEPS]*[END])" msgstr "" -#: src/ui/MainWindow.cpp:1119 -msgid "CLIP on CPU" +#: src/ui/MainWindow.cpp:1164 +msgid "Skip Layer End:" msgstr "" -#: src/ui/MainWindow.cpp:1126 -msgid "TAESD:" +#: src/ui/MainWindow.cpp:1166 src/ui/MainWindow.cpp:1172 +msgid "" +"SLG disabling point: (default: 0.2)\n" +"SLG will be enabled at step int([STEPS]*[START]) and disabled at " +"int([STEPS]*[END])" msgstr "" -#: src/ui/MainWindow.cpp:1128 -msgid "Using Tiny AutoEncoder for fast decoding (low quality)" +#: src/ui/MainWindow.cpp:1176 +msgid "Diffusion Model:" msgstr "" -#: src/ui/MainWindow.cpp:1139 -msgid "Batch:" +#: src/ui/MainWindow.cpp:1178 +msgid "Diffusion models, for example FLUX" msgstr "" -#: src/ui/MainWindow.cpp:1141 src/ui/MainWindow.cpp:1146 -msgid "number of images to generate." +#: src/ui/MainWindow.cpp:1182 src/ui/MainWindow.cpp:1201 +#: src/ui/MainWindow.cpp:1208 src/ui/MainWindow.cpp:1215 +msgid "Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf" msgstr "" -#: src/ui/MainWindow.cpp:1150 -msgid "Sampler:" +#: src/ui/MainWindow.cpp:1188 +msgid "Clean models" msgstr "" -#: src/ui/MainWindow.cpp:1152 src/ui/MainWindow.cpp:1159 -msgid "sampling method (default: \"euler_a\")" +#: src/ui/MainWindow.cpp:1192 +msgid "Flash attention" +msgstr "" + +#: src/ui/MainWindow.cpp:1193 +msgid "" +"Use flash attention in the diffusion model. This will reduce significantly " +"the memory uage (for low vram).\n" +"Might lower quality, since it implies converting k and v to f16.\n" +"This might crash if it is not supported by the backend.\n" +"\n" msgstr "" -#: src/ui/MainWindow.cpp:1163 -msgid "Scheduler:" +#: src/ui/MainWindow.cpp:1197 +msgid "ClipL:" msgstr "" -#: src/ui/MainWindow.cpp:1174 -msgid "Seed:" +#: src/ui/MainWindow.cpp:1204 +msgid "ClipG:" msgstr "" -#: src/ui/MainWindow.cpp:1187 -msgid "Generate a random seed" +#: src/ui/MainWindow.cpp:1211 +msgid "T5XXL:" msgstr "" -#: src/ui/MainWindow.cpp:1194 -msgid "Steps:" +#: src/ui/MainWindow.cpp:1240 src/ui/MainWindowUI.cpp:3926 +msgid "VAE" msgstr "" -#: src/ui/MainWindow.cpp:1196 src/ui/MainWindow.cpp:1201 -msgid "number of sample steps (default: 20)" +#: src/ui/MainWindow.cpp:1256 src/ui/MainWindow.cpp:1288 +msgid "CPU" msgstr "" -#: src/ui/MainWindow.cpp:1225 -msgid "Swap the resolution" +#: src/ui/MainWindow.cpp:1257 src/ui/MainWindowUI.cpp:3932 +msgid "VAE on CPU" msgstr "" -#: src/ui/MainWindow.cpp:1238 -msgid "Save the current settings into preset" +#: src/ui/MainWindow.cpp:1261 +msgid "Tiling" msgstr "" -#: src/ui/MainWindow.cpp:1239 -msgid "Save the current settings into a new preset, or overwrite an exists one" +#: src/ui/MainWindow.cpp:1262 +msgid "Process vae in tiles to reduce memory usage" msgstr "" -#: src/ui/MainWindow.cpp:1246 -msgid "Load the selected preset" +#: src/ui/MainWindow.cpp:1269 +msgid "Decode only" msgstr "" -#: src/ui/MainWindow.cpp:1247 +#: src/ui/MainWindow.cpp:1278 +msgid "CLIP" +msgstr "" + +#: src/ui/MainWindow.cpp:1281 src/ui/MainWindow.cpp:1294 msgid "" -"Load a selected preset. The preset settings will over write the current " -"generation settings" +"ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer " +"(default: -1)\n" +"<= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x" msgstr "" -#: src/ui/MainWindow.cpp:1274 -msgid "Low res.:" +#: src/ui/MainWindow.cpp:1289 +msgid "CLIP on CPU" msgstr "" -#: src/ui/MainWindow.cpp:1276 src/ui/MainWindow.cpp:1284 -msgid "Lower resolutions for SD1.x" +#: src/ui/MainWindow.cpp:1307 +msgid "TAESD:" msgstr "" -#: src/ui/MainWindow.cpp:1280 src/ui/MainWindow.cpp:1294 -msgid "Select one" +#: src/ui/MainWindow.cpp:1309 +msgid "Using Tiny AutoEncoder for fast decoding (low quality)" +msgstr "" + +#: src/ui/MainWindow.cpp:1313 src/ui/MainWindowUI.cpp:2687 +#: src/ui/MainWindowUI.cpp:2694 src/ui/MainWindowUI.cpp:2709 +#: src/ui/MainWindowUI.cpp:2715 +msgid "Not selected" +msgstr "" + +#: src/ui/MainWindow.cpp:1327 +msgid "SEED" +msgstr "" + +#: src/ui/MainWindow.cpp:1342 +msgid "Generate a random seed" +msgstr "" + +#: src/ui/MainWindow.cpp:1349 +msgid "RESOLUTIONS" +msgstr "" + +#: src/ui/MainWindow.cpp:1358 +msgid "Swap the resolution" +msgstr "" + +#: src/ui/MainWindow.cpp:1365 src/ui/MainWindow.cpp:1376 +msgid "512" msgstr "" -#: src/ui/MainWindow.cpp:1280 +#: src/ui/MainWindow.cpp:1390 +msgid "Small resolutions" +msgstr "" + +#: src/ui/MainWindow.cpp:1390 msgid "640x384" msgstr "" -#: src/ui/MainWindow.cpp:1280 +#: src/ui/MainWindow.cpp:1390 msgid "512x512" msgstr "" -#: src/ui/MainWindow.cpp:1280 +#: src/ui/MainWindow.cpp:1390 msgid "512x768" msgstr "" -#: src/ui/MainWindow.cpp:1288 -msgid "High Res.:" +#: src/ui/MainWindow.cpp:1394 +msgid "Lower resolutions for SD1.x" msgstr "" -#: src/ui/MainWindow.cpp:1290 src/ui/MainWindow.cpp:1298 -msgid "Higher resolutions for FLUX/SDXL/SD3.5" +#: src/ui/MainWindow.cpp:1398 +msgid "Large resolutions" msgstr "" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1024x1024" msgstr "" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1152x896" msgstr "" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1216x832" msgstr "" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1344x768" msgstr "" -#: src/ui/MainWindow.cpp:1294 +#: src/ui/MainWindow.cpp:1398 msgid "1536x640" msgstr "" -#: src/ui/MainWindow.cpp:1302 -msgid "Prompt presets:" +#: src/ui/MainWindow.cpp:1402 +msgid "Higher resolutions for FLUX/SDXL/SD3.5" +msgstr "" + +#: src/ui/MainWindow.cpp:1409 +msgid "No presets" +msgstr "" + +#: src/ui/MainWindow.cpp:1423 +msgid "Load the selected preset" +msgstr "" + +#: src/ui/MainWindow.cpp:1424 +msgid "" +"Load a selected preset. The preset settings will over write the current " +"generation settings" +msgstr "" + +#: src/ui/MainWindow.cpp:1431 +msgid "Save the current settings into preset" msgstr "" -#: src/ui/MainWindow.cpp:1313 +#: src/ui/MainWindow.cpp:1432 +msgid "Save the current settings into a new preset, or overwrite an exists one" +msgstr "" + +#: src/ui/MainWindow.cpp:1455 +msgid "sampling method (default: \"euler_a\")" +msgstr "" + +#: src/ui/MainWindow.cpp:1472 +msgid "Steps:" +msgstr "" + +#: src/ui/MainWindow.cpp:1474 src/ui/MainWindow.cpp:1479 +msgid "number of sample steps (default: 20)" +msgstr "" + +#: src/ui/MainWindow.cpp:1489 +msgid "Batch:" +msgstr "" + +#: src/ui/MainWindow.cpp:1491 src/ui/MainWindow.cpp:1496 +msgid "number of images to generate." +msgstr "" + +#: src/ui/MainWindow.cpp:1506 +msgid "CFG:" +msgstr "" + +#: src/ui/MainWindow.cpp:1523 msgid "Queue" msgstr "" -#: src/ui/MainWindow.cpp:1524 +#: src/ui/MainWindow.cpp:1822 msgid "Models path" msgstr "" -#: src/ui/MainWindow.cpp:1530 src/ui/MainWindow.cpp:1554 -#: src/ui/MainWindow.cpp:1578 src/ui/MainWindow.cpp:1602 -#: src/ui/MainWindow.cpp:1626 src/ui/MainWindow.cpp:1657 -#: src/ui/MainWindow.cpp:1679 src/ui/MainWindow.cpp:1706 -#: src/ui/MainWindow.cpp:1730 +#: src/ui/MainWindow.cpp:1828 src/ui/MainWindow.cpp:1852 +#: src/ui/MainWindow.cpp:1876 src/ui/MainWindow.cpp:1900 +#: src/ui/MainWindow.cpp:1924 src/ui/MainWindow.cpp:1955 +#: src/ui/MainWindow.cpp:1977 src/ui/MainWindow.cpp:2004 +#: src/ui/MainWindow.cpp:2028 msgid "Select a folder" msgstr "" -#: src/ui/MainWindow.cpp:1538 src/ui/MainWindow.cpp:1562 -#: src/ui/MainWindow.cpp:1586 src/ui/MainWindow.cpp:1610 -#: src/ui/MainWindow.cpp:1634 src/ui/MainWindow.cpp:1665 -#: src/ui/MainWindow.cpp:1687 src/ui/MainWindow.cpp:1714 -#: src/ui/MainWindow.cpp:1738 src/ui/MainWindowUI.cpp:715 +#: src/ui/MainWindow.cpp:1836 src/ui/MainWindow.cpp:1860 +#: src/ui/MainWindow.cpp:1884 src/ui/MainWindow.cpp:1908 +#: src/ui/MainWindow.cpp:1932 src/ui/MainWindow.cpp:1963 +#: src/ui/MainWindow.cpp:1985 src/ui/MainWindow.cpp:2012 +#: src/ui/MainWindow.cpp:2036 src/ui/MainWindowUI.cpp:850 msgid "Open folder" msgstr "" -#: src/ui/MainWindow.cpp:1548 +#: src/ui/MainWindow.cpp:1846 msgid "Lora path" msgstr "" -#: src/ui/MainWindow.cpp:1572 +#: src/ui/MainWindow.cpp:1870 msgid "Vae path" msgstr "" -#: src/ui/MainWindow.cpp:1596 +#: src/ui/MainWindow.cpp:1894 msgid "Embedding path" msgstr "" -#: src/ui/MainWindow.cpp:1620 +#: src/ui/MainWindow.cpp:1918 msgid "TAESD path" msgstr "" -#: src/ui/MainWindow.cpp:1641 +#: src/ui/MainWindow.cpp:1939 msgid "" "TAESD models you can download from here: https://github.com/madebyollin/taesd/" "tree/main" msgstr "" -#: src/ui/MainWindow.cpp:1651 +#: src/ui/MainWindow.cpp:1949 msgid "Controlnet path" msgstr "" -#: src/ui/MainWindow.cpp:1675 +#: src/ui/MainWindow.cpp:1973 msgid "ESRGAN path" msgstr "" -#: src/ui/MainWindow.cpp:1700 +#: src/ui/MainWindow.cpp:1998 msgid "Presets path" msgstr "" -#: src/ui/MainWindow.cpp:1724 +#: src/ui/MainWindow.cpp:2022 msgid "Images output" msgstr "" -#: src/ui/MainWindow.cpp:1749 +#: src/ui/MainWindow.cpp:2047 msgid "Paths" msgstr "" -#: src/ui/MainWindow.cpp:1757 +#: src/ui/MainWindow.cpp:2055 msgid "Generate missing base model hash before diffusion" msgstr "" -#: src/ui/MainWindow.cpp:1767 +#: src/ui/MainWindow.cpp:2065 msgid "Keep model in memory" msgstr "" -#: src/ui/MainWindow.cpp:1770 +#: src/ui/MainWindow.cpp:2068 msgid "Keep model in (v)RAM after diffusions" msgstr "" -#: src/ui/MainWindow.cpp:1771 +#: src/ui/MainWindow.cpp:2069 msgid "" "Keep the model in memory (vRAM or RAM, depends on diffusion type) when it is " "possible. \n" @@ -681,186 +762,186 @@ msgid "" "job is finished. " msgstr "" -#: src/ui/MainWindow.cpp:1782 +#: src/ui/MainWindow.cpp:2080 msgid "Save all images (intermediate images)" msgstr "" -#: src/ui/MainWindow.cpp:1794 +#: src/ui/MainWindow.cpp:2092 msgid "Output images format" msgstr "" -#: src/ui/MainWindow.cpp:1800 +#: src/ui/MainWindow.cpp:2098 msgid "JPG" msgstr "" -#: src/ui/MainWindow.cpp:1800 +#: src/ui/MainWindow.cpp:2098 msgid "PNG" msgstr "" -#: src/ui/MainWindow.cpp:1806 +#: src/ui/MainWindow.cpp:2104 msgid "PNG meta data not supported yet" msgstr "" -#: src/ui/MainWindow.cpp:1818 +#: src/ui/MainWindow.cpp:2116 msgid "JPEG quality" msgstr "" -#: src/ui/MainWindow.cpp:1825 src/ui/MainWindow.cpp:1843 +#: src/ui/MainWindow.cpp:2123 src/ui/MainWindow.cpp:2141 msgid "Image output quality, default: 90%" msgstr "" -#: src/ui/MainWindow.cpp:1836 +#: src/ui/MainWindow.cpp:2134 msgid "PNG compression level" msgstr "" -#: src/ui/MainWindow.cpp:1860 +#: src/ui/MainWindow.cpp:2158 msgid "Number of CPU cores" msgstr "" -#: src/ui/MainWindow.cpp:1879 +#: src/ui/MainWindow.cpp:2177 msgid "Image name format" msgstr "" -#: src/ui/MainWindow.cpp:1890 +#: src/ui/MainWindow.cpp:2188 msgid "[mode]_[jobid]_[seed]_[width]x[height]_[batch]" msgstr "" -#: src/ui/MainWindow.cpp:1909 +#: src/ui/MainWindow.cpp:2207 msgid "Show notifications" msgstr "" -#: src/ui/MainWindow.cpp:1916 +#: src/ui/MainWindow.cpp:2214 msgid "Notification timeout:" msgstr "" -#: src/ui/MainWindow.cpp:1921 +#: src/ui/MainWindow.cpp:2219 msgid "The timeout is depends on the OS and notification type" msgstr "" -#: src/ui/MainWindow.cpp:1925 +#: src/ui/MainWindow.cpp:2223 msgid "Language:" msgstr "" -#: src/ui/MainWindow.cpp:1938 +#: src/ui/MainWindow.cpp:2236 msgid "Only show favorite models" msgstr "" -#: src/ui/MainWindow.cpp:1939 +#: src/ui/MainWindow.cpp:2237 msgid "" "Only display the models marked as favorites in the model selector of the main " "GUI" msgstr "" -#: src/ui/MainWindow.cpp:1950 +#: src/ui/MainWindow.cpp:2248 msgid "GUI" msgstr "" -#: src/ui/MainWindow.cpp:1958 +#: src/ui/MainWindow.cpp:2256 msgid "Enable CivitAi features" msgstr "" -#: src/ui/MainWindow.cpp:1960 +#: src/ui/MainWindow.cpp:2258 msgid "Enable or disable all CivitAi features" msgstr "" -#: src/ui/MainWindow.cpp:1970 +#: src/ui/MainWindow.cpp:2268 msgid "CivitAi.com API key" msgstr "" -#: src/ui/MainWindow.cpp:1980 +#: src/ui/MainWindow.cpp:2278 msgid "How to generate API key on CivitAi.com" msgstr "" -#: src/ui/MainWindow.cpp:1981 +#: src/ui/MainWindow.cpp:2279 msgid "Click to the question mark button to get help" msgstr "" -#: src/ui/MainWindow.cpp:1992 +#: src/ui/MainWindow.cpp:2290 msgid "CivitAi" msgstr "" -#: src/ui/MainWindow.cpp:1996 +#: src/ui/MainWindow.cpp:2294 msgid "Save" msgstr "" -#: src/ui/MainWindow.cpp:2154 +#: src/ui/MainWindow.cpp:2452 msgid "Versions" msgstr "" -#: src/ui/MainWindow.cpp:2162 +#: src/ui/MainWindow.cpp:2460 msgid "baseModel" msgstr "" -#: src/ui/MainWindow.cpp:2163 +#: src/ui/MainWindow.cpp:2461 msgid "baseModelType" msgstr "" -#: src/ui/MainWindow.cpp:2165 +#: src/ui/MainWindow.cpp:2463 msgid "Published" msgstr "" -#: src/ui/MainWindow.cpp:2166 src/ui/MainWindow.cpp:2241 -#: src/ui/MainWindow.cpp:2244 +#: src/ui/MainWindow.cpp:2464 src/ui/MainWindow.cpp:2539 +#: src/ui/MainWindow.cpp:2542 msgid "Downloads" msgstr "" -#: src/ui/MainWindow.cpp:2176 +#: src/ui/MainWindow.cpp:2474 msgid "Files" msgstr "" -#: src/ui/MainWindow.cpp:2182 +#: src/ui/MainWindow.cpp:2480 msgid "Download" msgstr "" -#: src/ui/MainWindow.cpp:2194 +#: src/ui/MainWindow.cpp:2492 msgid "Format" msgstr "" -#: src/ui/MainWindow.cpp:2196 +#: src/ui/MainWindow.cpp:2494 msgid "Fp" msgstr "" -#: src/ui/MainWindow.cpp:2212 +#: src/ui/MainWindow.cpp:2510 msgid "Checkpoints" msgstr "" -#: src/ui/MainWindow.cpp:2212 +#: src/ui/MainWindow.cpp:2510 msgid "LORA" msgstr "" -#: src/ui/MainWindow.cpp:2212 +#: src/ui/MainWindow.cpp:2510 msgid "Embeddings" msgstr "" -#: src/ui/MainWindow.cpp:2216 +#: src/ui/MainWindow.cpp:2514 msgid "Select the model type to filter" msgstr "" -#: src/ui/MainWindow.cpp:2221 +#: src/ui/MainWindow.cpp:2519 msgid "Search for model names" msgstr "" -#: src/ui/MainWindow.cpp:2225 +#: src/ui/MainWindow.cpp:2523 msgid "Search" msgstr "" -#: src/ui/MainWindow.cpp:2251 +#: src/ui/MainWindow.cpp:2549 msgid "File" msgstr "" -#: src/ui/MainWindow.h:315 +#: src/ui/MainWindow.h:370 msgid "sd.cpp.gui" msgstr "" -#: src/ui/MainWindow.h:417 +#: src/ui/MainWindow.h:472 msgid "Settings" msgstr "" -#: src/ui/MainWindow.h:457 +#: src/ui/MainWindow.h:512 msgid "About" msgstr "" -#: src/ui/MainWindow.h:526 +#: src/ui/MainWindow.h:581 msgid "CivitAI model downloader" msgstr "" @@ -925,7 +1006,7 @@ msgstr "" #: src/ui/MainWindowCivitAiWindow.cpp:661 src/ui/MainWindowCivitAiWindow.cpp:834 #: src/ui/MainWindowCivitAiWindow.cpp:849 src/ui/MainWindowCivitAiWindow.cpp:854 -#: src/ui/MainWindowUI.cpp:235 +#: src/ui/MainWindowUI.cpp:242 msgid "N/A" msgstr "" @@ -942,11 +1023,11 @@ msgstr "" msgid "Current job: %s %s %s" msgstr "" -#: src/ui/MainWindowUI.cpp:78 src/ui/MainWindowUI.cpp:1388 +#: src/ui/MainWindowUI.cpp:81 src/ui/MainWindowUI.cpp:1598 msgid "Hide Widget" msgstr "" -#: src/ui/MainWindowUI.cpp:98 +#: src/ui/MainWindowUI.cpp:102 #, c-format msgid "" "Officially from sd.cpp, the following upscaler model is supported:
RealESRGAN_x4Plus" msgstr "" -#: src/ui/MainWindowUI.cpp:121 src/ui/MainWindowUI.cpp:122 +#: src/ui/MainWindowUI.cpp:125 src/ui/MainWindowUI.cpp:126 #, c-format msgid "" "An error occurred when trying to start external process: %s.\n" " Please try again." msgstr "" -#: src/ui/MainWindowUI.cpp:121 src/ui/MainWindowUI.cpp:135 -#: src/ui/MainWindowUI.cpp:157 src/ui/MainWindowUI.cpp:2125 -#: src/ui/MainWindowUI.cpp:2310 +#: src/ui/MainWindowUI.cpp:125 src/ui/MainWindowUI.cpp:139 +#: src/ui/MainWindowUI.cpp:161 src/ui/MainWindowUI.cpp:2288 +#: src/ui/MainWindowUI.cpp:2476 src/ui/MainWindowUI.cpp:5143 +#: src/ui/MainWindowUI.cpp:5153 msgid "Error" msgstr "" -#: src/ui/MainWindowUI.cpp:135 src/ui/MainWindowUI.cpp:136 +#: src/ui/MainWindowUI.cpp:139 src/ui/MainWindowUI.cpp:140 #, c-format msgid "" "An error occurred when trying to start external process. Shared lib not " @@ -975,21 +1057,21 @@ msgid "" " Please try again." msgstr "" -#: src/ui/MainWindowUI.cpp:151 +#: src/ui/MainWindowUI.cpp:155 #, c-format msgid "Starting external process: %s %s" msgstr "" -#: src/ui/MainWindowUI.cpp:157 +#: src/ui/MainWindowUI.cpp:161 msgid "" "An error occurred when trying to start external process. Please try again." msgstr "" -#: src/ui/MainWindowUI.cpp:172 +#: src/ui/MainWindowUI.cpp:176 msgid "Please wait to finish the currently running jobs!" msgstr "" -#: src/ui/MainWindowUI.cpp:205 +#: src/ui/MainWindowUI.cpp:212 msgid "" "

Disclaimer

Use of this application is at your own " "risk. The developer assumes no responsibility or liability for any potential " @@ -997,368 +1079,403 @@ msgid "" "application, you acknowledge and accept these terms.

" msgstr "" -#: src/ui/MainWindowUI.cpp:212 +#: src/ui/MainWindowUI.cpp:219 #, c-format msgid "

Version: %s

" msgstr "" -#: src/ui/MainWindowUI.cpp:213 +#: src/ui/MainWindowUI.cpp:220 #, c-format msgid "

Git version: %s

" msgstr "" -#: src/ui/MainWindowUI.cpp:214 +#: src/ui/MainWindowUI.cpp:221 #, c-format msgid "

Stable Diffusion CPP version: %s

" msgstr "" -#: src/ui/MainWindowUI.cpp:215 +#: src/ui/MainWindowUI.cpp:222 #, c-format msgid "

Website: %s

" msgstr "" -#: src/ui/MainWindowUI.cpp:217 +#: src/ui/MainWindowUI.cpp:224 #, c-format msgid "

Loaded backend: %s

" msgstr "" -#: src/ui/MainWindowUI.cpp:219 +#: src/ui/MainWindowUI.cpp:226 msgid "Configuration folder:" msgstr "" -#: src/ui/MainWindowUI.cpp:223 +#: src/ui/MainWindowUI.cpp:230 msgid "Model folder:" msgstr "" -#: src/ui/MainWindowUI.cpp:224 +#: src/ui/MainWindowUI.cpp:231 msgid "Embedding folder:" msgstr "" -#: src/ui/MainWindowUI.cpp:225 +#: src/ui/MainWindowUI.cpp:232 msgid "Lora folder:" msgstr "" -#: src/ui/MainWindowUI.cpp:226 +#: src/ui/MainWindowUI.cpp:233 msgid "Vae folder:" msgstr "" -#: src/ui/MainWindowUI.cpp:227 +#: src/ui/MainWindowUI.cpp:234 msgid "Controlnet folder:" msgstr "" -#: src/ui/MainWindowUI.cpp:228 +#: src/ui/MainWindowUI.cpp:235 msgid "ESRGAN folder:" msgstr "" -#: src/ui/MainWindowUI.cpp:229 +#: src/ui/MainWindowUI.cpp:236 msgid "TAESD folder:" msgstr "" -#: src/ui/MainWindowUI.cpp:230 +#: src/ui/MainWindowUI.cpp:237 msgid "Output folder:" msgstr "" -#: src/ui/MainWindowUI.cpp:231 +#: src/ui/MainWindowUI.cpp:238 msgid "Jobs folder:" msgstr "" -#: src/ui/MainWindowUI.cpp:232 +#: src/ui/MainWindowUI.cpp:239 msgid "Presets folder:" msgstr "" -#: src/ui/MainWindowUI.cpp:280 +#: src/ui/MainWindowUI.cpp:287 msgid "No model selected" msgstr "" -#: src/ui/MainWindowUI.cpp:287 src/ui/MainWindowUI.cpp:288 +#: src/ui/MainWindowUI.cpp:294 src/ui/MainWindowUI.cpp:295 #, c-format msgid "Model: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:534 +#: src/ui/MainWindowUI.cpp:582 src/ui/MainWindowUI.cpp:651 +#: src/ui/MainWindowUI.cpp:2111 src/ui/MainWindowUI.cpp:2505 +#, c-format +msgid "Number of jobs: %d" +msgstr "" + +#: src/ui/MainWindowUI.cpp:634 +msgid "Error: rows_to_del.size() != items_to_del.size()" +msgstr "" + +#: src/ui/MainWindowUI.cpp:639 +#, c-format +msgid "Delete %d items" +msgstr "" + +#: src/ui/MainWindowUI.cpp:668 msgid "Requeue" msgstr "" -#: src/ui/MainWindowUI.cpp:551 +#: src/ui/MainWindowUI.cpp:685 msgid "Load parameters" msgstr "" -#: src/ui/MainWindowUI.cpp:552 src/ui/MainWindowUI.cpp:3770 +#: src/ui/MainWindowUI.cpp:686 src/ui/MainWindowUI.cpp:1987 +#: src/ui/MainWindowUI.cpp:4064 msgid "Copy prompts to text2img" msgstr "" -#: src/ui/MainWindowUI.cpp:553 src/ui/MainWindowUI.cpp:3771 +#: src/ui/MainWindowUI.cpp:687 src/ui/MainWindowUI.cpp:1988 +#: src/ui/MainWindowUI.cpp:4065 msgid "Copy prompts to img2img" msgstr "" -#: src/ui/MainWindowUI.cpp:554 +#: src/ui/MainWindowUI.cpp:688 src/ui/MainWindowUI.cpp:2003 #, c-format msgid "Select model %s" msgstr "" -#: src/ui/MainWindowUI.cpp:557 +#: src/ui/MainWindowUI.cpp:691 msgid "Send the last image to the Upscale tab" msgstr "" -#: src/ui/MainWindowUI.cpp:558 +#: src/ui/MainWindowUI.cpp:692 msgid "Send the last image to the img2img tab" msgstr "" -#: src/ui/MainWindowUI.cpp:563 +#: src/ui/MainWindowUI.cpp:697 msgid "Upscale again" msgstr "" -#: src/ui/MainWindowUI.cpp:570 +#: src/ui/MainWindowUI.cpp:704 msgid "Pause" msgstr "" -#: src/ui/MainWindowUI.cpp:570 +#: src/ui/MainWindowUI.cpp:704 msgid "Resume" msgstr "" -#: src/ui/MainWindowUI.cpp:574 +#: src/ui/MainWindowUI.cpp:708 msgid "Delete" msgstr "" -#: src/ui/MainWindowUI.cpp:622 +#: src/ui/MainWindowUI.cpp:757 #, c-format msgid "Create subfolder in: '%s'" msgstr "" -#: src/ui/MainWindowUI.cpp:627 +#: src/ui/MainWindowUI.cpp:762 msgid "RE-Calculate &Hash" msgstr "" -#: src/ui/MainWindowUI.cpp:629 +#: src/ui/MainWindowUI.cpp:764 msgid "Calculate &Hash" msgstr "" -#: src/ui/MainWindowUI.cpp:635 +#: src/ui/MainWindowUI.cpp:770 msgid "Force update info from &CivitAi" msgstr "" -#: src/ui/MainWindowUI.cpp:637 +#: src/ui/MainWindowUI.cpp:772 msgid "Update info from &CivitAi" msgstr "" -#: src/ui/MainWindowUI.cpp:642 +#: src/ui/MainWindowUI.cpp:777 #, c-format msgid "&Select model %s to the next job" msgstr "" -#: src/ui/MainWindowUI.cpp:644 +#: src/ui/MainWindowUI.cpp:779 msgid "Open model on CivitAi.com in default browser" msgstr "" -#: src/ui/MainWindowUI.cpp:648 +#: src/ui/MainWindowUI.cpp:783 #, c-format msgid "Convert model to %s gguf format" msgstr "" -#: src/ui/MainWindowUI.cpp:657 +#: src/ui/MainWindowUI.cpp:792 #, c-format msgid "Append to text2img prompt " msgstr "" -#: src/ui/MainWindowUI.cpp:658 +#: src/ui/MainWindowUI.cpp:793 #, c-format msgid "Append to text2img neg. prompt " msgstr "" -#: src/ui/MainWindowUI.cpp:659 +#: src/ui/MainWindowUI.cpp:794 #, c-format msgid "Append to img2img prompt " msgstr "" -#: src/ui/MainWindowUI.cpp:660 +#: src/ui/MainWindowUI.cpp:795 #, c-format msgid "Append to img2img neg. prompt " msgstr "" -#: src/ui/MainWindowUI.cpp:664 +#: src/ui/MainWindowUI.cpp:799 #, c-format msgid "Append to text2img prompt %s" msgstr "" -#: src/ui/MainWindowUI.cpp:665 +#: src/ui/MainWindowUI.cpp:800 #, c-format msgid "Append to text2img neg. prompt %s" msgstr "" -#: src/ui/MainWindowUI.cpp:666 +#: src/ui/MainWindowUI.cpp:801 #, c-format msgid "Append to img2img prompt %s" msgstr "" -#: src/ui/MainWindowUI.cpp:667 +#: src/ui/MainWindowUI.cpp:802 #, c-format msgid "Append to img2img neg. prompt %s" msgstr "" -#: src/ui/MainWindowUI.cpp:678 +#: src/ui/MainWindowUI.cpp:813 msgid "&Move model into another sub folder" msgstr "" -#: src/ui/MainWindowUI.cpp:682 +#: src/ui/MainWindowUI.cpp:817 #, c-format msgid "Move the model into the checkoints folder: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:683 +#: src/ui/MainWindowUI.cpp:818 #, c-format msgid "Move the model into the VAE folder: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:684 +#: src/ui/MainWindowUI.cpp:819 #, c-format msgid "Move the model into the Lora folder: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:685 +#: src/ui/MainWindowUI.cpp:820 #, c-format msgid "Move the model into the Embedding folder: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:686 +#: src/ui/MainWindowUI.cpp:821 #, c-format msgid "Move the model into the TaeSD folder: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:687 +#: src/ui/MainWindowUI.cpp:822 #, c-format msgid "Move the model into the ESRGAN (upscalers) folder: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:688 +#: src/ui/MainWindowUI.cpp:823 #, c-format msgid "Move the model into the ControlNet folder: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:696 +#: src/ui/MainWindowUI.cpp:831 msgid "&Move to another folder" msgstr "" -#: src/ui/MainWindowUI.cpp:698 +#: src/ui/MainWindowUI.cpp:833 msgid "&Delete model file" msgstr "" -#: src/ui/MainWindowUI.cpp:743 src/ui/MainWindowUI.cpp:749 +#: src/ui/MainWindowUI.cpp:891 src/ui/MainWindowUI.cpp:897 #, c-format msgid "Image type not supported: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:759 +#: src/ui/MainWindowUI.cpp:907 msgid "Load generation parameters from image?" msgstr "" -#: src/ui/MainWindowUI.cpp:759 +#: src/ui/MainWindowUI.cpp:907 msgid "Load parameters?" msgstr "" -#: src/ui/MainWindowUI.cpp:849 +#: src/ui/MainWindowUI.cpp:1004 msgid "No upscaler model found!" msgstr "" -#: src/ui/MainWindowUI.cpp:892 +#: src/ui/MainWindowUI.cpp:1047 msgid "No taesd model found!" msgstr "" -#: src/ui/MainWindowUI.cpp:902 +#: src/ui/MainWindowUI.cpp:1057 msgid "No vae model found!" msgstr "" -#: src/ui/MainWindowUI.cpp:1030 +#: src/ui/MainWindowUI.cpp:1232 #, c-format msgid "Skipping controlnet with diffusion model: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:1034 +#: src/ui/MainWindowUI.cpp:1236 msgid "No controlnet model found!" msgstr "" -#: src/ui/MainWindowUI.cpp:1096 +#: src/ui/MainWindowUI.cpp:1298 #, c-format msgid "Controlnet Image %dx%dpx" msgstr "" -#: src/ui/MainWindowUI.cpp:1183 +#: src/ui/MainWindowUI.cpp:1387 msgid "IMG2IMG - original image" msgstr "" -#: src/ui/MainWindowUI.cpp:1241 src/ui/MainWindowUI.cpp:1242 -#: src/ui/MainWindowUI.cpp:1247 src/ui/MainWindowUI.cpp:1248 +#: src/ui/MainWindowUI.cpp:1451 src/ui/MainWindowUI.cpp:1452 +#: src/ui/MainWindowUI.cpp:1457 src/ui/MainWindowUI.cpp:1458 #, c-format msgid "%dpx" msgstr "" -#: src/ui/MainWindowUI.cpp:1284 +#: src/ui/MainWindowUI.cpp:1495 #, c-format msgid "%s %s" msgstr "" -#: src/ui/MainWindowUI.cpp:1487 +#: src/ui/MainWindowUI.cpp:1625 msgid "Please specify a name (only alphanumeric)" msgstr "" -#: src/ui/MainWindowUI.cpp:1673 +#: src/ui/MainWindowUI.cpp:1824 msgid "Taesd file not found: " msgstr "" -#: src/ui/MainWindowUI.cpp:1691 +#: src/ui/MainWindowUI.cpp:1842 msgid "Vae file not found: " msgstr "" -#: src/ui/MainWindowUI.cpp:1714 +#: src/ui/MainWindowUI.cpp:1865 msgid "Controlnet file not found: " msgstr "" -#: src/ui/MainWindowUI.cpp:1753 +#: src/ui/MainWindowUI.cpp:1904 msgid "File name" msgstr "" -#: src/ui/MainWindowUI.cpp:1777 +#: src/ui/MainWindowUI.cpp:1928 msgid "Last modified" msgstr "" -#: src/ui/MainWindowUI.cpp:1794 +#: src/ui/MainWindowUI.cpp:1945 #, c-format msgid "#%d id" msgstr "" -#: src/ui/MainWindowUI.cpp:1799 +#: src/ui/MainWindowUI.cpp:1950 #, c-format msgid "#%d name" msgstr "" -#: src/ui/MainWindowUI.cpp:1804 +#: src/ui/MainWindowUI.cpp:1955 #, c-format msgid "#%d format" msgstr "" -#: src/ui/MainWindowUI.cpp:1809 +#: src/ui/MainWindowUI.cpp:1960 #, c-format msgid "#%d type" msgstr "" -#: src/ui/MainWindowUI.cpp:1826 +#: src/ui/MainWindowUI.cpp:1977 #, c-format msgid "Resolution: %s Seed: % Steps: %d" msgstr "" -#: src/ui/MainWindowUI.cpp:1826 +#: src/ui/MainWindowUI.cpp:1977 msgid "Unknown" msgstr "" -#: src/ui/MainWindowUI.cpp:1843 -msgid "Open Image on CivitAi.com" +#: src/ui/MainWindowUI.cpp:1989 +msgid "Send to img2img" +msgstr "" + +#: src/ui/MainWindowUI.cpp:1995 +msgid "Load available parameters" msgstr "" -#: src/ui/MainWindowUI.cpp:1952 src/ui/MainWindowUI.cpp:2341 +#: src/ui/MainWindowUI.cpp:1996 +msgid "Open the original image in the web browser" +msgstr "" + +#: src/ui/MainWindowUI.cpp:2007 +msgid "Send to Image Info tab" +msgstr "" + +#: src/ui/MainWindowUI.cpp:2057 #, c-format -msgid "Number of jobs: %d" +msgid "" +"Open the original image in the web browser?\n" +" %s" +msgstr "" + +#: src/ui/MainWindowUI.cpp:2057 +msgid "Open original image" msgstr "" -#: src/ui/MainWindowUI.cpp:2115 +#: src/ui/MainWindowUI.cpp:2278 #, c-format msgid "" "Create subfolder in: \n" @@ -1367,143 +1484,153 @@ msgid "" "file is added to it." msgstr "" -#: src/ui/MainWindowUI.cpp:2115 +#: src/ui/MainWindowUI.cpp:2278 msgid "Create folder" msgstr "" -#: src/ui/MainWindowUI.cpp:2125 +#: src/ui/MainWindowUI.cpp:2288 msgid "Folder already exists" msgstr "" -#: src/ui/MainWindowUI.cpp:2128 +#: src/ui/MainWindowUI.cpp:2291 #, c-format msgid "Created folder: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:2132 +#: src/ui/MainWindowUI.cpp:2295 #, c-format msgid "Can not create folder: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:2176 +#: src/ui/MainWindowUI.cpp:2339 msgid "Select the directory to move the model" msgstr "" -#: src/ui/MainWindowUI.cpp:2176 +#: src/ui/MainWindowUI.cpp:2339 msgid "Move Model" msgstr "" -#: src/ui/MainWindowUI.cpp:2183 +#: src/ui/MainWindowUI.cpp:2346 #, c-format msgid "" "Are you sure you want to delete this model?\n" "%s" msgstr "" -#: src/ui/MainWindowUI.cpp:2183 +#: src/ui/MainWindowUI.cpp:2346 msgid "Delete Model" msgstr "" -#: src/ui/MainWindowUI.cpp:2310 +#: src/ui/MainWindowUI.cpp:2476 msgid "Diffusion model not found" msgstr "" -#: src/ui/MainWindowUI.cpp:2501 src/ui/MainWindowUI.cpp:2510 -#: src/ui/MainWindowUI.cpp:2517 src/ui/MainWindowUI.cpp:2524 -#: src/ui/MainWindowUI.cpp:2530 src/ui/MainWindowUI.cpp:2539 -#: src/ui/MainWindowUI.cpp:2545 -msgid "-none-" +#: src/ui/MainWindowUI.cpp:2671 src/ui/MainWindowUI.cpp:2680 +#: src/ui/MainWindowUI.cpp:2700 +msgid "Select one" msgstr "" -#: src/ui/MainWindowUI.cpp:2645 +#: src/ui/MainWindowUI.cpp:2815 #, c-format msgid "Failed to parse preset: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:2662 +#: src/ui/MainWindowUI.cpp:2832 #, c-format msgid "Failed to parse prompt template: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:2674 src/ui/MainWindowUI.cpp:2676 +#: src/ui/MainWindowUI.cpp:2852 src/ui/MainWindowUI.cpp:2854 #, c-format msgid "Loaded %s: %d" msgstr "" -#: src/ui/MainWindowUI.cpp:2851 +#: src/ui/MainWindowUI.cpp:3032 +#, c-format +msgid "" +"Image size (%d x %d) is smaller than the original size (%d x %d). Please " +"increase the size to at least (%d x %d)." +msgstr "" + +#: src/ui/MainWindowUI.cpp:3059 msgid "Can not open image!" msgstr "" -#: src/ui/MainWindowUI.cpp:2857 +#: src/ui/MainWindowUI.cpp:3118 +#, c-format +msgid "No metadata found in image: %s" +msgstr "" + +#: src/ui/MainWindowUI.cpp:3151 msgid "Upscaler image open: file name is empty" msgstr "" -#: src/ui/MainWindowUI.cpp:2863 +#: src/ui/MainWindowUI.cpp:3157 #, c-format msgid "Upscaler image open: file not found: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:2900 +#: src/ui/MainWindowUI.cpp:3194 msgid "Error accessing to the background process. Please try again." msgstr "" -#: src/ui/MainWindowUI.cpp:3075 +#: src/ui/MainWindowUI.cpp:3369 #, c-format msgid "" "%s is just stared to generate %d images\n" "Model: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:3078 +#: src/ui/MainWindowUI.cpp:3372 msgid "Upscaling started" msgstr "" -#: src/ui/MainWindowUI.cpp:3079 +#: src/ui/MainWindowUI.cpp:3373 #, c-format msgid "" "Upscaling the image is started: %s\n" "Model: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:3081 +#: src/ui/MainWindowUI.cpp:3375 msgid "Conversion started" msgstr "" -#: src/ui/MainWindowUI.cpp:3082 +#: src/ui/MainWindowUI.cpp:3376 #, c-format msgid "" "Conversion the model is started: %s\n" "Model: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:3085 +#: src/ui/MainWindowUI.cpp:3379 #, c-format msgid "%d images generation started" msgstr "" -#: src/ui/MainWindowUI.cpp:3087 +#: src/ui/MainWindowUI.cpp:3381 msgid "One image generation started!" msgstr "" -#: src/ui/MainWindowUI.cpp:3088 +#: src/ui/MainWindowUI.cpp:3382 #, c-format msgid "" "%s is just started to generate the image\n" "Model: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:3103 +#: src/ui/MainWindowUI.cpp:3397 #, c-format msgid "" "%s is just finished to generate %d images\n" "Model: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:3105 +#: src/ui/MainWindowUI.cpp:3399 msgid "Upscaling done" msgstr "" -#: src/ui/MainWindowUI.cpp:3106 +#: src/ui/MainWindowUI.cpp:3400 #, c-format msgid "" "Upscaling the image is done: \n" @@ -1511,11 +1638,11 @@ msgid "" "Model: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:3108 +#: src/ui/MainWindowUI.cpp:3402 msgid "Conversion done" msgstr "" -#: src/ui/MainWindowUI.cpp:3109 +#: src/ui/MainWindowUI.cpp:3403 #, c-format msgid "" "Conversion the model is done: \n" @@ -1523,386 +1650,443 @@ msgid "" "Model: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:3113 +#: src/ui/MainWindowUI.cpp:3412 #, c-format msgid "%d images generation done" msgstr "" -#: src/ui/MainWindowUI.cpp:3115 +#: src/ui/MainWindowUI.cpp:3414 msgid "Image generation done!" msgstr "" -#: src/ui/MainWindowUI.cpp:3116 +#: src/ui/MainWindowUI.cpp:3415 #, c-format msgid "%s is just finished to generate the image with model: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:3125 +#: src/ui/MainWindowUI.cpp:3424 #, c-format msgid "%d jobs and %d steps without a segfault" msgstr "" -#: src/ui/MainWindowUI.cpp:3127 +#: src/ui/MainWindowUI.cpp:3426 #, c-format msgid "%d job and %d step without a segfault" msgstr "" -#: src/ui/MainWindowUI.cpp:3141 +#: src/ui/MainWindowUI.cpp:3440 #, c-format msgid "Model loaded: %s\n" msgstr "" -#: src/ui/MainWindowUI.cpp:3145 +#: src/ui/MainWindowUI.cpp:3444 #, c-format msgid "Model load started: %s\n" msgstr "" -#: src/ui/MainWindowUI.cpp:3149 +#: src/ui/MainWindowUI.cpp:3448 #, c-format msgid "Model load failed: %s\n" msgstr "" -#: src/ui/MainWindowUI.cpp:3150 +#: src/ui/MainWindowUI.cpp:3449 msgid "Model load failed" msgstr "" -#: src/ui/MainWindowUI.cpp:3151 +#: src/ui/MainWindowUI.cpp:3450 #, c-format msgid "The '%s' just failed to load... for more details please see the logs!" msgstr "" -#: src/ui/MainWindowUI.cpp:3159 +#: src/ui/MainWindowUI.cpp:3458 #, c-format msgid "Diffusion started. Seed: % Batch: %d %dx%dpx Cfg: %.1f Steps: %d" msgstr "" -#: src/ui/MainWindowUI.cpp:3165 +#: src/ui/MainWindowUI.cpp:3464 #, c-format msgid "Upscale start, factor: %d image: %s\n" msgstr "" -#: src/ui/MainWindowUI.cpp:3170 +#: src/ui/MainWindowUI.cpp:3469 #, c-format msgid "Generation error: %s\n" msgstr "" -#: src/ui/MainWindowUI.cpp:3181 +#: src/ui/MainWindowUI.cpp:3480 #, c-format msgid "Model civitai image downloaded for model: %s\n" msgstr "" -#: src/ui/MainWindowUI.cpp:3198 src/ui/MainWindowUI.cpp:3203 +#: src/ui/MainWindowUI.cpp:3497 src/ui/MainWindowUI.cpp:3502 #, c-format msgid "Moving: %s%%" msgstr "" -#: src/ui/MainWindowUI.cpp:3209 +#: src/ui/MainWindowUI.cpp:3508 #, c-format msgid "Model move error: %s\n" msgstr "" -#: src/ui/MainWindowUI.cpp:3215 +#: src/ui/MainWindowUI.cpp:3514 #, c-format msgid "Model civitai % image(s) download started for model: %s\n" msgstr "" -#: src/ui/MainWindowUI.cpp:3221 +#: src/ui/MainWindowUI.cpp:3520 #, c-format msgid "Model civitai info download error: %s\n" msgstr "" -#: src/ui/MainWindowUI.cpp:3226 +#: src/ui/MainWindowUI.cpp:3525 #, c-format msgid "Model civitai info download start: %s\n" msgstr "" -#: src/ui/MainWindowUI.cpp:3234 +#: src/ui/MainWindowUI.cpp:3533 #, c-format msgid "Model civitai info download finished: %s\n" msgstr "" -#: src/ui/MainWindowUI.cpp:3238 +#: src/ui/MainWindowUI.cpp:3537 #, c-format msgid "Model civitai info not found: %s Hash: %s\n" msgstr "" -#: src/ui/MainWindowUI.cpp:3241 +#: src/ui/MainWindowUI.cpp:3540 #, c-format msgid "Model civitai info unkown parsing error happened: %s Hash: %s\n" msgstr "" -#: src/ui/MainWindowUI.cpp:3424 +#: src/ui/MainWindowUI.cpp:3707 msgid "Model download finished" msgstr "" -#: src/ui/MainWindowUI.cpp:3425 +#: src/ui/MainWindowUI.cpp:3708 #, c-format msgid "The model download is finished: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:3432 +#: src/ui/MainWindowUI.cpp:3715 msgid "Model download failed" msgstr "" -#: src/ui/MainWindowUI.cpp:3433 +#: src/ui/MainWindowUI.cpp:3716 #, c-format msgid "The model download is failed: %s" msgstr "" -#: src/ui/MainWindowUI.cpp:3473 +#: src/ui/MainWindowUI.cpp:3760 msgid "ID" msgstr "" -#: src/ui/MainWindowUI.cpp:3478 +#: src/ui/MainWindowUI.cpp:3765 msgid "Created at" msgstr "" -#: src/ui/MainWindowUI.cpp:3483 +#: src/ui/MainWindowUI.cpp:3770 msgid "Started at" msgstr "" -#: src/ui/MainWindowUI.cpp:3492 +#: src/ui/MainWindowUI.cpp:3779 msgid "Finished at" msgstr "" -#: src/ui/MainWindowUI.cpp:3501 +#: src/ui/MainWindowUI.cpp:3788 msgid "Udated at" msgstr "" -#: src/ui/MainWindowUI.cpp:3510 +#: src/ui/MainWindowUI.cpp:3797 msgid "Mode" msgstr "" -#: src/ui/MainWindowUI.cpp:3527 +#: src/ui/MainWindowUI.cpp:3814 msgid "Threads" msgstr "" -#: src/ui/MainWindowUI.cpp:3533 +#: src/ui/MainWindowUI.cpp:3820 msgid "Factor" msgstr "" -#: src/ui/MainWindowUI.cpp:3548 +#: src/ui/MainWindowUI.cpp:3835 msgid "Scheduler" msgstr "" -#: src/ui/MainWindowUI.cpp:3556 +#: src/ui/MainWindowUI.cpp:3843 msgid "Init image" msgstr "" -#: src/ui/MainWindowUI.cpp:3561 +#: src/ui/MainWindowUI.cpp:3849 +msgid "Mask image" +msgstr "" + +#: src/ui/MainWindowUI.cpp:3855 msgid "Strength" msgstr "" -#: src/ui/MainWindowUI.cpp:3569 +#: src/ui/MainWindowUI.cpp:3863 msgid "Prompt" msgstr "" -#: src/ui/MainWindowUI.cpp:3574 +#: src/ui/MainWindowUI.cpp:3868 msgid "Neg. prompt" msgstr "" -#: src/ui/MainWindowUI.cpp:3584 +#: src/ui/MainWindowUI.cpp:3878 msgid "Clip skip" msgstr "" -#: src/ui/MainWindowUI.cpp:3589 +#: src/ui/MainWindowUI.cpp:3883 msgid "Clip on CPU" msgstr "" -#: src/ui/MainWindowUI.cpp:3590 src/ui/MainWindowUI.cpp:3639 -#: src/ui/MainWindowUI.cpp:3644 src/ui/MainWindowUI.cpp:3708 -#: src/ui/MainWindowUI.cpp:3715 +#: src/ui/MainWindowUI.cpp:3884 src/ui/MainWindowUI.cpp:3933 +#: src/ui/MainWindowUI.cpp:3938 src/ui/MainWindowUI.cpp:4002 +#: src/ui/MainWindowUI.cpp:4009 msgid "yes" msgstr "" -#: src/ui/MainWindowUI.cpp:3590 src/ui/MainWindowUI.cpp:3639 -#: src/ui/MainWindowUI.cpp:3644 src/ui/MainWindowUI.cpp:3708 -#: src/ui/MainWindowUI.cpp:3715 +#: src/ui/MainWindowUI.cpp:3884 src/ui/MainWindowUI.cpp:3933 +#: src/ui/MainWindowUI.cpp:3938 src/ui/MainWindowUI.cpp:4002 +#: src/ui/MainWindowUI.cpp:4009 msgid "no" msgstr "" -#: src/ui/MainWindowUI.cpp:3594 +#: src/ui/MainWindowUI.cpp:3888 msgid "Cfg scale" msgstr "" -#: src/ui/MainWindowUI.cpp:3604 +#: src/ui/MainWindowUI.cpp:3898 msgid "Steps" msgstr "" -#: src/ui/MainWindowUI.cpp:3610 +#: src/ui/MainWindowUI.cpp:3904 msgid "Time min." msgstr "" -#: src/ui/MainWindowUI.cpp:3615 +#: src/ui/MainWindowUI.cpp:3909 msgid "Time max." msgstr "" -#: src/ui/MainWindowUI.cpp:3620 +#: src/ui/MainWindowUI.cpp:3914 msgid "Time avg." msgstr "" -#: src/ui/MainWindowUI.cpp:3625 +#: src/ui/MainWindowUI.cpp:3919 msgid "Time total" msgstr "" -#: src/ui/MainWindowUI.cpp:3632 -msgid "VAE" +#: src/ui/MainWindowUI.cpp:3937 +msgid "VAE tiling" msgstr "" -#: src/ui/MainWindowUI.cpp:3649 +#: src/ui/MainWindowUI.cpp:3943 msgid "CLIP L" msgstr "" -#: src/ui/MainWindowUI.cpp:3655 +#: src/ui/MainWindowUI.cpp:3949 msgid "CLIP G" msgstr "" -#: src/ui/MainWindowUI.cpp:3662 +#: src/ui/MainWindowUI.cpp:3956 msgid "T5xxl" msgstr "" -#: src/ui/MainWindowUI.cpp:3669 +#: src/ui/MainWindowUI.cpp:3963 msgid "TAESD" msgstr "" -#: src/ui/MainWindowUI.cpp:3676 +#: src/ui/MainWindowUI.cpp:3970 msgid "Width" msgstr "" -#: src/ui/MainWindowUI.cpp:3681 +#: src/ui/MainWindowUI.cpp:3975 msgid "Height" msgstr "" -#: src/ui/MainWindowUI.cpp:3686 +#: src/ui/MainWindowUI.cpp:3980 msgid "Batch count" msgstr "" -#: src/ui/MainWindowUI.cpp:3692 +#: src/ui/MainWindowUI.cpp:3986 msgid "CN model" msgstr "" -#: src/ui/MainWindowUI.cpp:3697 +#: src/ui/MainWindowUI.cpp:3991 msgid "CN img" msgstr "" -#: src/ui/MainWindowUI.cpp:3702 +#: src/ui/MainWindowUI.cpp:3996 msgid "CN strength" msgstr "" -#: src/ui/MainWindowUI.cpp:3714 +#: src/ui/MainWindowUI.cpp:4008 msgid "Flash Attention" msgstr "" -#: src/ui/MainWindowUI.cpp:3719 +#: src/ui/MainWindowUI.cpp:4013 msgid "SLG scale" msgstr "" -#: src/ui/MainWindowUI.cpp:3724 +#: src/ui/MainWindowUI.cpp:4018 msgid "Skip layers" msgstr "" -#: src/ui/MainWindowUI.cpp:3735 +#: src/ui/MainWindowUI.cpp:4029 msgid "Skip Layer Start" msgstr "" -#: src/ui/MainWindowUI.cpp:3740 +#: src/ui/MainWindowUI.cpp:4034 msgid "Skip Layer End" msgstr "" -#: src/ui/MainWindowUI.cpp:3765 +#: src/ui/MainWindowUI.cpp:4059 msgid "Open image" msgstr "" -#: src/ui/MainWindowUI.cpp:3766 +#: src/ui/MainWindowUI.cpp:4060 msgid "Open parent folder" msgstr "" -#: src/ui/MainWindowUI.cpp:3769 +#: src/ui/MainWindowUI.cpp:4063 #, c-format msgid "Copy seed %" msgstr "" -#: src/ui/MainWindowUI.cpp:3772 +#: src/ui/MainWindowUI.cpp:4066 src/ui/MainWindowUI.cpp:4076 msgid "Send the image to img2img" msgstr "" -#: src/ui/MainWindowUI.cpp:3773 +#: src/ui/MainWindowUI.cpp:4067 msgid "Upscale" msgstr "" -#: src/ui/MainWindowUI.cpp:3777 +#: src/ui/MainWindowUI.cpp:4071 msgid "Send image to the controlnet image" msgstr "" -#: src/ui/MainWindowUI.cpp:3830 +#: src/ui/MainWindowUI.cpp:4080 +msgid "Send image to img2img mask" +msgstr "" + +#: src/ui/MainWindowUI.cpp:4165 msgid "Invalid image from diffusion: " msgstr "" -#: src/ui/MainWindowUI.cpp:3858 +#: src/ui/MainWindowUI.cpp:4174 src/ui/MainWindowUI.cpp:4959 #, c-format msgid "Failed to save image into %s" msgstr "" -#: src/ui/MainWindowUI.cpp:4217 +#: src/ui/MainWindowUI.cpp:4532 +#, c-format +msgid "Converting model %s to %s" +msgstr "" + +#: src/ui/MainWindowUI.cpp:4566 #, c-format msgid "Do you want to convert model %s with quantation %s to gguf format?" msgstr "" -#: src/ui/MainWindowUI.cpp:4220 +#: src/ui/MainWindowUI.cpp:4569 #, c-format msgid "" "Do you want to convert model %s with quantation %s and vae %s to gguf format?" msgstr "" -#: src/ui/MainWindowUI.cpp:4223 +#: src/ui/MainWindowUI.cpp:4572 #, c-format msgid "Convert model %s?" msgstr "" -#: src/ui/MainWindowUI.cpp:4226 +#: src/ui/MainWindowUI.cpp:4575 #, c-format msgid "The file %s already exists. Do you want to overwrite it?" msgstr "" -#: src/ui/MainWindowUI.cpp:4227 +#: src/ui/MainWindowUI.cpp:4576 msgid "Overwrite File?" msgstr "" -#: src/ui/MainWindowUI.cpp:4383 +#: src/ui/MainWindowUI.cpp:4587 +msgid "Open Link?" +msgstr "" + +#: src/ui/MainWindowUI.cpp:4733 msgid "Stopping..." msgstr "" -#: src/ui/MainWindowUI.cpp:4402 +#: src/ui/MainWindowUI.cpp:4752 msgid "Process is ready" msgstr "" -#: src/ui/MainWindowUI.cpp:4420 +#: src/ui/MainWindowUI.cpp:4770 msgid "External process stopped" msgstr "" -#: src/ui/MainWindowUI.cpp:4423 +#: src/ui/MainWindowUI.cpp:4773 msgid "Process is stopped" msgstr "" -#: src/ui/MainWindowUI.cpp:4436 +#: src/ui/MainWindowUI.cpp:4786 msgid "Failed to restart the background process..." msgstr "" -#: src/ui/MainWindowUI.cpp:4455 +#: src/ui/MainWindowUI.cpp:4805 #, c-format msgid "%s started" msgstr "" -#: src/ui/MainWindowUI.cpp:4464 +#: src/ui/MainWindowUI.cpp:4814 #, c-format msgid "%s exited" msgstr "" -#: src/ui/MainWindowUI.cpp:4499 +#: src/ui/MainWindowUI.cpp:4851 #, c-format msgid "Current job: %s %s" msgstr "" +#: src/ui/MainWindowUI.cpp:4936 +msgid "Save mask image file" +msgstr "" + +#: src/ui/MainWindowUI.cpp:4937 +msgid "PNG files (*.png)|*.png|All files (*.*)|*.*" +msgstr "" + +#: src/ui/MainWindowUI.cpp:5084 src/ui/MainWindowUI.cpp:5213 +#, c-format +msgid "%i x %i" +msgstr "" + +#: src/ui/MainWindowUI.cpp:5086 src/ui/MainWindowUI.cpp:5215 +#, c-format +msgid "%i x %i (%i x %i)" +msgstr "" + +#: src/ui/MainWindowUI.cpp:5134 +#, c-format +msgid "Inpaint mask open: file not found: %s" +msgstr "" + +#: src/ui/MainWindowUI.cpp:5143 +msgid "" +"No image loaded into the img2img, please load a base image before open the " +"mask!" +msgstr "" + +#: src/ui/MainWindowUI.cpp:5151 +#, c-format +msgid "" +"Inpaint mask open: the resolution of the mask does not match the resolution " +"of the image: %s" +msgstr "" + +#: src/ui/MainWindowUI.cpp:5153 +msgid "The resolution of the mask does not match the resolution of the image" +msgstr "" + #: src/ui/QueueManager.h:39 msgid "pending" msgstr "" diff --git a/minimal.rc b/minimal.rc deleted file mode 100644 index 70506db..0000000 --- a/minimal.rc +++ /dev/null @@ -1,2 +0,0 @@ -aaaa ICON "graphics/icons/256/stablediffusiongui.ico" -#include "wx/msw/wx.rc" \ No newline at end of file diff --git a/platform/msvc/app.rc.in b/platform/msvc/app.rc.in new file mode 100644 index 0000000..af2336f --- /dev/null +++ b/platform/msvc/app.rc.in @@ -0,0 +1,41 @@ +#include +#include + +VS_VERSION_INFO VERSIONINFO +FILEVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@ +PRODUCTVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@ + +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" // English (US) + BEGIN + VALUE "FileDescription", "${COMPONENT_NAME}\0" + VALUE "InternalName", "${PROJECT_NAME}\0" + VALUE "OriginalFilename", "${BNAME}.exe\0" + VALUE "ProductName", "${COMPONENT_NAME}\0" + VALUE "ProductVersion", "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@\0" + VALUE "Author", "Ferenc Szontágh\0" + VALUE "LegalCopyright", "MIT License - Copyright 2024,2025 Ferenc Szontágh\0" + VALUE "SpecialBuild", "using stable-diffusion.cpp @SDCPP_VERSION@ git tag, the binary is compiled from @GIT_HASH@ git hash" + END + + BLOCK "040e04b0" // Hungarian (Hungary) + BEGIN + VALUE "FileDescription", "${COMPONENT_NAME}\0" + VALUE "InternalName", "${PROJECT_NAME}\0" + VALUE "OriginalFilename", "${BNAME}.exe\0" + VALUE "ProductName", "${COMPONENT_NAME}\0" + VALUE "ProductVersion", "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@\0" + VALUE "Author", "Szontágh Ferenc\0" + VALUE "LegalCopyright", "MIT Licensz - Copyright 2024,2025 Szontágh Ferenc\0" + VALUE "SpecialBuild", "stable-diffusion.cpp @SDCPP_VERSION@ git tag-et használ, bináris forgatva a(z) @GIT_HASH@ git hashből" + END + END + + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1200 // English + VALUE "Translation", 0x040E, 1200 // Hungarian + END +END diff --git a/platform/msvc/minimal.rc.in b/platform/msvc/minimal.rc.in new file mode 100644 index 0000000..bc14c57 --- /dev/null +++ b/platform/msvc/minimal.rc.in @@ -0,0 +1,2 @@ +aaaa ICON "@CMAKE_SOURCE_DIR@/graphics/icons/256/stablediffusiongui.ico" +#include "wx/msw/wx.rc" \ No newline at end of file diff --git a/src/MainApp.h b/src/MainApp.h index 19e5eea..04328c2 100644 --- a/src/MainApp.h +++ b/src/MainApp.h @@ -91,8 +91,8 @@ class MainApp : public wxApp { dllName = libPrefix + "stable-diffusion_cuda"; this->backend = "cuda"; } else if (isAmdGPU()) { - dllName = libPrefix + "stable-diffusion_hipblas"; - this->backend = "hipblas"; + dllName = libPrefix + "stable-diffusion_vulkan"; + this->backend = "vulkan"; } else { static const cpu_features::X86Features features = cpu_features::GetX86Info().features; if (features.avx512_fp16 || features.avx512_bf16 || features.avx512vl) { diff --git a/src/helpers/InPaintHelper.hpp b/src/helpers/InPaintHelper.hpp new file mode 100644 index 0000000..4726eb6 --- /dev/null +++ b/src/helpers/InPaintHelper.hpp @@ -0,0 +1,603 @@ +#ifndef __HELPERS_INPAINT__ +#define __HELPERS_INPAINT__ + +namespace sd_gui_utils { + class InPaintHelper { + public: + enum BrushStyle { + BRUSH_CIRCLE, + BRUSH_SQUARE, + BRUSH_TRIANGLE + }; + struct BrushSize { + BrushSize(unsigned int min, unsigned int max, unsigned int current) + : min(min), max(max), current(current), original(current) {} + unsigned int min; + unsigned int max; + unsigned int current; + unsigned int original; + + void ResetSize() { this->current = this->original; } + }; + + struct ZoomFactor { + ZoomFactor(double min, double max, double current) + : min(min), max(max), current(current) {} + + private: + double min = 0.2; + double max = 2.0; + double current = 1.0; + double zoomStep = 0.1; + double oldFactor = 1.0; + + public: + void SetMin(double min) { this->min = min; } + void SetMax(double max) { this->max = max; } + double GetMin() { return this->min; } + double GetMax() { return this->max; } + double GetCurrent() { return this->current; } + double GetOldFactor() { return this->oldFactor; } + double GetZoomStep() { return this->zoomStep; } + void ResetZoom() { this->current = 1; } + void SetZoomFactor(double factor) { + this->oldFactor = this->current; + this->current = factor; + } + }; + + private: + wxScrolledWindow* parent = nullptr; + std::shared_ptr paintArea = nullptr; + std::shared_ptr outPaintArea = nullptr; + std::shared_ptr overlay = nullptr; + std::shared_ptr originalImage = nullptr; + std::shared_ptr zoomedImage = nullptr; + std::shared_ptr mainBitmap = nullptr; + sd_gui_utils::wxEnlargeImageSizes enlargeSize = sd_gui_utils::wxEnlargeImageSizes(); + bool painted = false; + bool outpainted = false; + BrushSize inpaintBrushSize = BrushSize{1, 20, 5}; + sd_gui_utils::InPaintHelper::ZoomFactor zoomFactor = ZoomFactor{0.25, 2, 1}; + sd_gui_utils::InPaintHelper::BrushStyle brushStyle = sd_gui_utils::InPaintHelper::BrushStyle::BRUSH_CIRCLE; + const int BITMAP_DEPTH = 32; + wxPoint currentOffset = wxPoint(0, 0); + wxPoint currentMousePosition = wxPoint(0, 0); + + // store the original image size + wxSize originalSize = wxSize(512, 512); + // store if the image is resized to larger than the original + wxSize outPaintSize; + + wxPoint lastPosition; + // event checkers + // if painting is in progress + bool isDrawing = false; + // the image is loaded or manually created + bool imageLoaded = false; + + // border size in px + int borderSize = 2; + // event checkers + + void resetPaintArea(int width = 512, int height = 512) { + if (this->originalImage == nullptr) { + this->originalImage = std::make_shared(width, height); + this->imageLoaded = false; + } + + if (this->zoomedImage == nullptr) { + this->zoomedImage = std::make_shared(*this->originalImage); + width = this->zoomedImage->GetWidth(); + height = this->zoomedImage->GetHeight(); + } else { + width = this->zoomedImage->GetWidth(); + height = this->zoomedImage->GetHeight(); + } + + this->InitOutPaintArea(width, height); + this->InitOverLay(width, height); + this->InitPaintArea(width, height); + + this->painted = false; + this->originalSize = wxSize(width, height); + this->outPaintSize = wxSize(width, height); + this->inpaintBrushSize.ResetSize(); + this->zoomFactor.ResetZoom(); + this->enlargeSize.ResetSizes(); + this->currentOffset = wxPoint(0, 0); + this->UpdateParent(); + } + + wxBitmap CreateBitmap(const wxSize size, const wxBrush& brush = *wxTRANSPARENT_BRUSH, const wxPen& pen = *wxTRANSPARENT_PEN) { + return this->CreateBitmap(size.x, size.y, brush, pen); + } + + wxBitmap CreateBitmap(int width, int height, const wxBrush& brush = *wxTRANSPARENT_BRUSH, const wxPen& pen = *wxTRANSPARENT_PEN) { + wxBitmap buf(width, height, BITMAP_DEPTH); + buf.UseAlpha(); + wxGraphicsContext* gc = wxGraphicsContext::Create(buf); + if (gc) { + gc->SetAntialiasMode(wxAntialiasMode::wxANTIALIAS_DEFAULT); + gc->SetBrush(brush); + gc->SetPen(pen); + gc->DrawRectangle(0, 0, width, height); + delete gc; + } + return buf; + } + + wxPoint GetMousePosition(wxMouseEvent& event) { + wxPoint mousePos = event.GetPosition(); + // Vegyük figyelembe a zoom faktort + wxPoint zoomAdjustedPos = wxPoint( + static_cast(mousePos.x / this->zoomFactor.GetCurrent()), + static_cast(mousePos.y / this->zoomFactor.GetCurrent())); + + wxPoint res = zoomAdjustedPos - this->currentOffset; + this->currentMousePosition = res; + return res; + } + + public: + InPaintHelper(wxScrolledWindow* parent) + : parent(parent) { + // @see https://wiki.wxwidgets.org/Drawing_on_a_panel_with_a_DC + this->parent->GetParent()->Layout(); + this->parent->SetDoubleBuffered(true); + this->parent->SetBackgroundStyle(wxBG_STYLE_PAINT); + this->parent->SetScrollRate(10, 10); + } + void Reset() { + this->originalImage = nullptr; + this->zoomedImage = nullptr; + this->painted = false; + this->resetPaintArea(); + } + + const wxPoint GetMousePosition() { + return this->currentMousePosition; + } + + const wxPoint GetCurrentOffest() { + return this->currentOffset; + } + + void CleanMask() { + if (this->painted == false) { + return; + } + if (this->paintArea == nullptr) { + return; + } + + this->InitPaintArea(this->originalImage->GetWidth(), this->originalImage->GetHeight()); + this->painted = false; + this->UpdateParent(); + } + + void InitOverLay(const wxSize& size) { this->InitOverLay(size.x, size.y); } + void InitOverLay(int width, int height) { + auto buf = this->CreateBitmap(width, height); + this->overlay = std::make_shared(buf); + } + void InitOutPaintArea(const wxSize& size) { this->InitOutPaintArea(size.x, size.y); } + void InitOutPaintArea(int width, int height) { + auto buf = this->CreateBitmap(width, height); + this->outPaintArea = std::make_shared(buf); + } + + void InitPaintArea(const wxSize& size) { this->InitPaintArea(size.x, size.y); } + void InitPaintArea(int width, int height) { + auto buf = this->CreateBitmap(width, height); + this->paintArea = std::make_shared(buf); + } + + BrushSize GetBrushSize() { return this->inpaintBrushSize; } + unsigned int GetCurrentBrushSize() { return this->inpaintBrushSize.current; } + void SetCurrentBrushSize(unsigned int size) { this->inpaintBrushSize.current = size; } + void SetBrushSize(BrushSize size) { this->inpaintBrushSize = size; } + sd_gui_utils::InPaintHelper::BrushStyle GetBrushStyle() { return this->brushStyle; } + void SetBrushStyle(sd_gui_utils::InPaintHelper::BrushStyle style) { this->brushStyle = style; } + double GetZoomFactor() { return this->zoomFactor.GetCurrent(); } + double GetZoomStep() { return this->zoomFactor.GetZoomStep(); } + + wxSize CalcVirtualSize() { + if (this->outPaintArea == nullptr) { + return this->parent->GetVirtualSize(); + } + wxSize s = {static_cast(this->outPaintArea->GetWidth() * this->zoomFactor.GetCurrent()), static_cast(this->outPaintArea->GetHeight() * this->zoomFactor.GetCurrent())}; + wxSize c = this->parent->GetClientSize(); + auto r = wxSize(s.x < c.x ? c.x : s.x, s.y < c.y ? c.y : s.y); + std::cout << "CalcVirtualSize: " << r.x << ", " << r.y << std::endl; + std::cout << "OutpaintArea: " << this->outPaintArea->GetWidth() << ", " << this->outPaintArea->GetHeight() << std::endl; + std::cout << "Client size: " << c.x << ", " << c.y << std::endl; + std::cout << "ZoomFactor: " << this->zoomFactor.GetCurrent() << std::endl; + return r; + } + void SetZoomFactor(double factor) { + this->zoomFactor.SetZoomFactor(factor); + this->UpdateParent(); + } + + void ChangeZoomFactor(int direction) { + if (direction == 0) { + return; + } + + auto current = this->GetZoomFactor(); + if (direction > 0) { + if (current + this->zoomFactor.GetZoomStep() > this->zoomFactor.GetMax()) { + if (current != this->zoomFactor.GetMax()) { + this->SetZoomFactor(this->zoomFactor.GetMax()); + } + return; + } + current += this->zoomFactor.GetZoomStep(); + } else if (direction < 0) { + if (current - this->zoomFactor.GetZoomStep() < this->zoomFactor.GetMin()) { + if (current != this->zoomFactor.GetMin()) { + this->SetZoomFactor(this->zoomFactor.GetMin()); + } + return; + } + current -= this->zoomFactor.GetZoomStep(); + } + + this->SetZoomFactor(current); + } + void SetZoomFactor(sd_gui_utils::InPaintHelper::ZoomFactor factor) { this->zoomFactor = factor; } + void SetZoomLimits(double min, double max) { this->zoomFactor = sd_gui_utils::InPaintHelper::ZoomFactor(min, max, this->zoomFactor.GetCurrent()); } + bool isOutPainted() { return this->outpainted; } + + bool SetImage(const wxImage& image) noexcept { + this->UpdateParent(); + this->originalImage = std::make_shared(image); + this->zoomedImage = nullptr; + this->outPaintArea = nullptr; + this->originalSize = image.GetSize(); + this->resetPaintArea(image.GetWidth(), image.GetHeight()); + + if (this->originalImage->IsOk()) { + this->imageLoaded = true; + } + return this->imageLoaded; + } + // the current used original image is a user loaded image + bool inPaintImageLoaded() { return this->imageLoaded; } + // return true if user is painted to the canvas + bool inPaintCanvasEmpty() { return this->painted == false; } + // return true if user is currently drawing + bool GetIsDrawing() { return this->isDrawing; } + // get the original size of the initial image (return the resized image if resized to sdsizes) + wxSize GetOriginalSize() { return this->originalSize; } + // return the size of the image original size + outpaint size + wxSize GetOutPaintedSize() { return this->outPaintSize; } + void UpdateParent() { + this->parent->SetVirtualSize(this->CalcVirtualSize()); + this->parent->Refresh(); + // this->parent->Update(); + } + + void UpdateParent(const wxPoint& scrollPos) { + this->parent->SetVirtualSize(this->CalcVirtualSize()); + this->parent->SetScrollRate(10, 10); + this->parent->Scroll(scrollPos); + this->parent->Refresh(); + // this->parent->Update(); + } + // handle events + + void OnDeleteInitialImage() { + this->CleanMask(); + this->originalImage = nullptr; + this->zoomedImage = nullptr; + this->imageLoaded = false; + this->resetPaintArea(); + this->UpdateParent(); + } + + bool OnInvertMask(wxCommandEvent& event) { + if (this->imageLoaded) { + sd_gui_utils::InvertWhiteAndTransparent(this->paintArea); + this->UpdateParent(); + // area was empty + if (this->painted == false) { + this->painted = true; + } + return true; + } + return false; + } + + void OnMaskFileOpen(wxImage& img) { + this->CleanMask(); + this->paintArea = std::make_shared(img); + this->painted = true; + this->UpdateParent(); + } + + // enlarge the image to bigger size, and fill the rest with gray + void OnOutPaintResize(sd_gui_utils::wxEnlargeImageSizes& enlargeSize) { + if (enlargeSize.top < 0 && this->originalImage->GetHeight() + enlargeSize.top < 0) { + enlargeSize.top = 0; + } + if (enlargeSize.left < 0 && this->originalImage->GetWidth() + enlargeSize.left < 0) { + enlargeSize.left = 0; + } + if (enlargeSize.right < 0 && this->originalImage->GetWidth() + enlargeSize.right < 0) { + enlargeSize.right = 0; + } + if (enlargeSize.bottom < 0 && this->originalImage->GetHeight() + enlargeSize.bottom < 0) { + enlargeSize.bottom = 0; + } + if (enlargeSize.top == 0 && + enlargeSize.left == 0 && + enlargeSize.right == 0 && + enlargeSize.bottom == 0) { + this->outpainted = false; + } else { + this->outpainted = true; + } + + wxBitmap outpaintarea = this->CreateBitmap(this->originalImage->GetSize()); + this->outPaintArea = std::make_shared(outpaintarea); + sd_gui_utils::CropOrFillBitmap(this->outPaintArea, enlargeSize, wxColour(128, 128, 128)); + this->zoomFactor.ResetZoom(); + this->enlargeSize = enlargeSize; + this->outPaintSize = this->outPaintArea->GetSize(); + this->UpdateParent(); + } + + wxImage OnSaveMask(wxCommandEvent& event) { + wxImage img = this->paintArea->ConvertToImage(); + sd_gui_utils::blendImageOnBlackBackground(img); + return img; + } + + wxImage GetMaskImage(bool blend = true) { + wxImage img = this->paintArea->ConvertToImage(); + if (blend) { + sd_gui_utils::blendImageOnBlackBackground(img); + return img; + } + return img; + } + wxImage GetOriginalImage() { return *this->originalImage; } + wxImage OnResizeOriginalImage(int targetWidth, int targetHeight) { + sd_gui_utils::ResizeImageToMaxSize(this->originalImage, targetWidth, targetHeight); + this->originalSize = this->originalImage->GetSize(); + this->zoomedImage = nullptr; + this->outPaintArea = nullptr; + this->resetPaintArea(); + this->UpdateParent(); + return *this->originalImage; + } + + void OnEraseBackground(wxEraseEvent& event) {} + + void OnDcPaint(wxPaintEvent& event) { + wxAutoBufferedPaintDC dc(this->parent); + dc.SetUserScale(this->zoomFactor.GetCurrent(), this->zoomFactor.GetCurrent()); + dc.SetBackground(wxBrush(wxColour(51, 51, 51, 255))); + dc.Clear(); + + if (this->inPaintImageLoaded() == false) { + return; + } + + if (this->outPaintArea != nullptr && this->outPaintArea->IsOk() && this->outpainted) { + auto offset = this->GetOffset(dc, this->outPaintArea->GetSize(), true, true, true); + dc.DrawBitmap(*this->outPaintArea, offset.x, offset.y, false); + } + + if (this->zoomedImage != nullptr && this->zoomedImage->IsOk()) { + auto offset = this->GetOffset(dc, this->zoomedImage->GetSize(), true, true, false); + dc.DrawBitmap(*this->zoomedImage, offset.x, offset.y, false); + } + + if (this->paintArea != nullptr && this->paintArea->IsOk()) { + auto offset = this->GetOffset(dc, this->paintArea->GetSize(), true, true, false); + this->currentOffset = offset; + // this->currentOffset = this->GetOffset(dc, this->paintArea->GetSize(), true, true, true); + dc.DrawBitmap(*this->paintArea, offset.x, offset.y, false); + } + + if (this->overlay != nullptr && this->overlay->IsOk()) { + auto offset = this->GetOffset(dc, this->overlay->GetSize(), true, true, false); + this->currentOffset = offset; + dc.DrawBitmap(*this->overlay, offset.x, offset.y, false); + } + dc.SetUserScale(1, 1); + this->parent->SetVirtualSize(this->CalcVirtualSize()); + } + + void OnSize(wxSizeEvent& event) { + this->parent->SetVirtualSize(this->CalcVirtualSize()); + if (this->outpainted) { + } + event.Skip(); + } + + wxPoint GetOffset(wxAutoBufferedPaintDC& gc, const wxSize& imgSize, bool addScrollPos = true, bool addBorder = true, bool ignoreEnlarge = false) { + double scaleX, scaleY; + gc.GetUserScale(&scaleX, &scaleY); + + wxSize size = {static_cast(imgSize.GetWidth() * scaleX), static_cast(imgSize.GetHeight() * scaleY)}; + if (ignoreEnlarge == false) { + size.x += (this->enlargeSize.left + this->enlargeSize.right) * scaleX; + size.y += (this->enlargeSize.top + this->enlargeSize.bottom) * scaleY; + } + wxSize gcSize = this->parent->GetClientSize(); + std::cout << "Offseting with gc size x: " << gcSize.GetWidth() << ", y: " << gcSize.GetHeight() << std::endl; + int resultX = addBorder ? this->borderSize : 0; + int resultY = addBorder ? this->borderSize : 0; + + if (ignoreEnlarge == false) { + resultX += enlargeSize.left; + resultY += enlargeSize.top; + } + + if (gcSize.GetWidth() > size.GetWidth()) { + resultX = (gcSize.GetWidth() - size.GetWidth()) / 2; + resultX /= this->zoomFactor.GetCurrent(); + if (ignoreEnlarge == false) { + resultX += enlargeSize.left; + } + resultX += addBorder ? this->borderSize : 0; + } + if (gcSize.GetHeight() > size.GetHeight()) { + resultY = (gcSize.GetHeight() - size.GetHeight()) / 2; + resultY /= this->zoomFactor.GetCurrent(); + if (ignoreEnlarge == false) { + resultY += enlargeSize.top; + } + + resultY += addBorder ? this->borderSize : 0; + } + + if (addScrollPos) { + wxPoint scrollPos = this->parent->CalcUnscrolledPosition(wxPoint(0, 0)); + resultX -= scrollPos.x; + resultY -= scrollPos.y; + } + + return wxPoint(resultX, resultY); + } + + void OnMouseRightDown(wxMouseEvent& event) { + auto mPos = this->GetMousePosition(event); + if (mPos.x >= 0 && mPos.y >= 0 && mPos.x <= this->paintArea->GetWidth() && mPos.y <= this->paintArea->GetHeight()) { + this->isDrawing = true; + this->lastPosition = mPos; + return; + } + this->isDrawing = false; + } + void OnMouseRightUp(wxMouseEvent& event) { this->isDrawing = false; } + void OnMouseLeftDown(wxMouseEvent& event) { + auto mPos = this->GetMousePosition(event); + if (mPos.x >= 0 && mPos.y >= 0 && mPos.x <= this->paintArea->GetWidth() && mPos.y <= this->paintArea->GetHeight()) { + this->isDrawing = true; + this->lastPosition = mPos; + return; + } + this->isDrawing = false; + } + void OnMouseLeftUp(wxMouseEvent& event) { this->isDrawing = false; } + void OnMouseLeave(wxMouseEvent& event) { this->isDrawing = false; } + void OnMouseMotion(wxMouseEvent& event) { + if (this->isDrawing == false) { + return; + } + if (event.LeftIsDown() == false && event.RightIsDown() == false) { + return; + } + + wxGraphicsContext* gc = wxGraphicsContext::Create(*this->paintArea); + + if (!gc) { + return; + } + + this->currentMousePosition = this->GetMousePosition(event); + auto comp = gc->GetCompositionMode(); + gc->SetCompositionMode(event.LeftIsDown() ? comp : wxCOMPOSITION_SOURCE); + + if (event.LeftIsDown()) { + gc->SetBrush(wxBrush(wxColour(255, 255, 255), wxBRUSHSTYLE_SOLID)); + gc->SetPen(wxPen(wxColour(255, 255, 255), this->inpaintBrushSize.current, wxPENSTYLE_SOLID)); + } else { + gc->SetBrush(wxBrush(wxColour(0, 0, 0, 0), wxBRUSHSTYLE_SOLID)); // Teljesen átlátszó ecset + gc->SetPen(wxPen(wxColour(0, 0, 0, 0), this->inpaintBrushSize.current, wxPENSTYLE_SOLID)); // Teljesen átlátszó toll + } + int maxBoundaryX = this->paintArea->GetWidth(); + int maxBoundaryY = this->paintArea->GetHeight(); + + if (this->brushStyle == sd_gui_utils::InPaintHelper::BrushStyle::BRUSH_CIRCLE) { + int startX = this->currentMousePosition.x - this->inpaintBrushSize.current; + int startY = this->currentMousePosition.y - this->inpaintBrushSize.current; + + int width = this->inpaintBrushSize.current * 2; + int height = this->inpaintBrushSize.current * 2; + + startX = startX < 0 ? 0 : startX; + startY = startY < 0 ? 0 : startY; + + if (startX + width > maxBoundaryX) { + startX = maxBoundaryX - width; + } + if (startY + height > maxBoundaryY) { + startY = maxBoundaryY - height; + } + gc->DrawEllipse(startX, startY, width, height); + this->parent->Refresh(); + } else if (this->brushStyle == sd_gui_utils::InPaintHelper::BrushStyle::BRUSH_SQUARE) { + int startX = this->currentMousePosition.x - (this->inpaintBrushSize.current / 2); + int startY = this->currentMousePosition.y - (this->inpaintBrushSize.current / 2); + + int width = this->inpaintBrushSize.current * 2; + int height = this->inpaintBrushSize.current * 2; + startX = startY < 0 ? 0 : startX; + startY = startY < 0 ? 0 : startY; + if (startX + width > maxBoundaryX) { + startX = maxBoundaryX - width; + } + if (startY + height > maxBoundaryY) { + startY = maxBoundaryY - height; + } + gc->DrawRectangle(startX, startY, width, height); + this->parent->Refresh(); + } else if (this->brushStyle == sd_gui_utils::InPaintHelper::BrushStyle::BRUSH_TRIANGLE) { + // TODO: fix boundaries here too + wxPoint2DDouble points[3]; + points[0] = wxPoint2DDouble(this->currentMousePosition.x, this->currentMousePosition.y - (this->inpaintBrushSize.current / 2)); + points[1] = wxPoint2DDouble(this->currentMousePosition.x - (this->inpaintBrushSize.current / 2), this->currentMousePosition.y + (this->inpaintBrushSize.current / 2)); + points[2] = wxPoint2DDouble(this->currentMousePosition.x + (this->inpaintBrushSize.current / 2), this->currentMousePosition.y + (this->inpaintBrushSize.current / 2)); + + // check negative boundaries + if (points[0].m_x < 0) { + points[0].m_x = 0; + } + if (points[0].m_y < 0) { + points[0].m_y = 0; + } + + if (points[1].m_x < 0) { + points[1].m_x = 0; + } + if (points[1].m_y < 0) { + points[1].m_y = 0; + } + + gc->DrawLines(3, points); + this->parent->Refresh(); + } + this->painted = true; + + delete gc; + this->lastPosition = this->currentMousePosition; + } + + void OnMouseWheel(int rotation, bool zoom, const wxEnlargeImageSizes& enlargeSizes) { + if (this->imageLoaded == false) { + return; + } + + if (zoom && this->originalImage->IsOk()) { + this->ChangeZoomFactor(rotation); + } + + if (zoom == false) { + if (rotation > 0) { + this->inpaintBrushSize.current = std::min(this->inpaintBrushSize.current + 1, this->inpaintBrushSize.max); + } else if (rotation < 0) { + this->inpaintBrushSize.current = std::max(this->inpaintBrushSize.current - 1, this->inpaintBrushSize.min); + } + return; + } + } + }; +}; + +#endif \ No newline at end of file diff --git a/src/helpers/TreeListManager.h b/src/helpers/TreeListManager.h index 9669e03..5638f29 100644 --- a/src/helpers/TreeListManager.h +++ b/src/helpers/TreeListManager.h @@ -50,18 +50,13 @@ class TreeListManager { if (!treeList) { throw std::invalid_argument("treeList cannot be null"); } - auto comparator = new wxTreeListModelItemComparator(); - treeListCtrl = treeList; - treeListCtrl->SetItemComparator(comparator); + auto comparator = new wxTreeListModelItemComparator(); + this->treeListCtrl = treeList; + this->treeListCtrl->SetItemComparator(comparator); } - inline void AppendColumn(const wxString& title, int width = wxCOL_WIDTH_AUTOSIZE, wxAlignment align = wxALIGN_LEFT, int flags = wxCOL_RESIZABLE) { - int id = treeListCtrl->AppendColumn(title, width, align, flags); - ColumnInfo info{title, width, align, flags, id}; - columns.push_back(info); - } - inline void AddItem(sd_gui_utils::ModelFileInfo* item, sd_gui_utils::sdServer* server = nullptr) { + void AddItem(const sd_gui_utils::ModelFileInfo* item, bool select = false, sd_gui_utils::sdServer* server = nullptr) { wxTreeListItem parentItem = GetOrCreateParent(item->folderGroupName); wxString name = wxString::FromUTF8Unchecked(item->name); if (!item->folderGroupName.empty()) { @@ -79,8 +74,10 @@ class TreeListManager { treeListCtrl->SetItemText(newItem, 1, wxString(item->size_f)); treeListCtrl->SetItemText(newItem, 2, wxString(ConvertTypeToString(item->model_type))); treeListCtrl->SetItemText(newItem, 3, wxString(item->sha256).substr(0, 10)); - treeListCtrl->SetItemData(newItem, this->dataMap[newItem]); - this->dataMap[newItem] = new ModelFileInfoData(item); + treeListCtrl->SetItemData(newItem, new ModelFileInfoData(const_cast(item))); + if (select) { + treeListCtrl->Select(newItem); + } } void DeleteByServerId(const sd_gui_utils::sdServer* server) { @@ -125,190 +122,199 @@ class TreeListManager { } treeListCtrl->DeleteItem(parentItem); } - } - template - void AddItem(const wxString& title, const wxVector& item, const wxString& groupName = wxEmptyString, T* data = nullptr) { - wxTreeListItem parentItem = GetOrCreateParent(groupName); - wxTreeListItem newItem = treeListCtrl->AppendItem(parentItem, title); - if (data) { - treeListCtrl->SetItemData(newItem, new DataContainer(data)); - } + template + void AddItem(const wxString& title, const wxVector& item, const wxString& groupName = wxEmptyString, T* data = nullptr) { + wxTreeListItem parentItem = GetOrCreateParent(groupName); + wxTreeListItem newItem = treeListCtrl->AppendItem(parentItem, title); + if (data) { + treeListCtrl->SetItemData(newItem, new DataContainer(data)); + } - if (item.size() != this->columns.size()) { - throw std::invalid_argument("item.size() != this->columns.size()"); + if (item.size() != this->columns.size()) { + throw std::invalid_argument("item.size() != this->columns.size()"); + } + for (size_t i = 0; i < item.size(); i++) { + treeListCtrl->SetItemText(newItem, item[i].pos, item[i].title); + } } - for (size_t i = 0; i < item.size(); i++) { - treeListCtrl->SetItemText(newItem, item[i].pos, item[i].title); + + void RemoveItem(const std::string& path) { + wxTreeListItem root = treeListCtrl->GetRootItem(); + wxTreeListItem item = FindItemByPath(root, path); + if (item.IsOk()) { + treeListCtrl->DeleteItem(item); + } } - } - void RemoveItem(const std::string& path) { - wxTreeListItem root = treeListCtrl->GetRootItem(); - wxTreeListItem item = FindItemByPath(root, path); - if (item.IsOk()) { - treeListCtrl->DeleteItem(item); + void SelectItemByModelPath(const std::string& path) { + if (path.empty()) { + return; + } + wxTreeListItem root = treeListCtrl->GetRootItem(); + wxTreeListItem item = FindItemByPath(root, path); + if (item.IsOk()) { + treeListCtrl->Select(item); + } } - } - void UpdateItem(const sd_gui_utils::ModelFileInfo* updatedItem) { - wxTreeListItem root = treeListCtrl->GetRootItem(); - wxTreeListItem item = FindItemByPath(root, updatedItem->path); - if (item.IsOk()) { - treeListCtrl->SetItemText(item, 0, wxString(updatedItem->name)); - treeListCtrl->SetItemText(item, 1, wxString(updatedItem->size_f)); - treeListCtrl->SetItemText(item, 2, wxString(ConvertTypeToString(updatedItem->model_type))); - treeListCtrl->SetItemText(item, 3, wxString(updatedItem->sha256)); + void UpdateItem(const sd_gui_utils::ModelFileInfo* updatedItem) { + wxTreeListItem root = treeListCtrl->GetRootItem(); + wxTreeListItem item = FindItemByPath(root, updatedItem->path); + if (item.IsOk()) { + treeListCtrl->SetItemText(item, 0, wxString(updatedItem->name)); + treeListCtrl->SetItemText(item, 1, wxString(updatedItem->size_f)); + treeListCtrl->SetItemText(item, 2, wxString(ConvertTypeToString(updatedItem->model_type))); + treeListCtrl->SetItemText(item, 3, wxString(updatedItem->sha256)); + } } - } - void ChangeText(const std::string& path, const wxString& text, unsigned int col) { - wxTreeListItem root = treeListCtrl->GetRootItem(); - wxTreeListItem item = FindItemByPath(root, path); - if (item.IsOk()) { - treeListCtrl->SetItemText(item, col, wxString::FromUTF8(text)); + void ChangeText(const std::string& path, const wxString& text, unsigned int col) { + wxTreeListItem root = treeListCtrl->GetRootItem(); + wxTreeListItem item = FindItemByPath(root, path); + if (item.IsOk()) { + treeListCtrl->SetItemText(item, col, wxString::FromUTF8(text)); + } } - } - void ChangeText(wxTreeListItem item, const wxString& text, unsigned int col = 0) { - if (item.IsOk()) { - treeListCtrl->SetItemText(item, col, text); + void ChangeText(wxTreeListItem item, const wxString& text, unsigned int col = 0) { + if (item.IsOk()) { + treeListCtrl->SetItemText(item, col, text); + } } - } - sd_gui_utils::ModelFileInfo* FindItem(const std::string& path) { - wxTreeListItem root = treeListCtrl->GetRootItem(); - wxTreeListItem item = FindItemByPath(root, path); - if (item.IsOk()) { - ModelFileInfoData* data = static_cast(treeListCtrl->GetItemData(item)); - return data ? data->GetFileInfo() : nullptr; + sd_gui_utils::ModelFileInfo* FindItem(const std::string& path) { + wxTreeListItem root = treeListCtrl->GetRootItem(); + wxTreeListItem item = FindItemByPath(root, path); + if (item.IsOk()) { + ModelFileInfoData* data = static_cast(treeListCtrl->GetItemData(item)); + return data ? data->GetFileInfo() : nullptr; + } + return nullptr; } - return nullptr; - } - sd_gui_utils::ModelFileInfo* FindItem(const wxTreeListItem& item) { - ModelFileInfoData* data = static_cast(treeListCtrl->GetItemData(item)); - if (data == NULL) { - return nullptr; + sd_gui_utils::ModelFileInfo* FindItem(const wxTreeListItem& item) { + ModelFileInfoData* data = static_cast(treeListCtrl->GetItemData(item)); + if (data == NULL) { + return nullptr; + } + auto mdl = data->GetFileInfo(); + return mdl; } - auto mdl = data->GetFileInfo(); - return mdl; - } - wxTreeListItem GetOrCreateParent(const wxString& folderGroupName) { - return GetOrCreateParent(folderGroupName.utf8_string()); - } + wxTreeListItem GetOrCreateParent(const wxString& folderGroupName) { + return GetOrCreateParent(folderGroupName.utf8_string()); + } - const wxString findParentPath(const wxTreeListItem& item, sd_gui_utils::config* config) { - auto selected = item; - auto selectedName = this->treeListCtrl->GetItemText(item); - wxString basePath = selectedName, groupFolderName = selectedName; + const wxString findParentPath(const wxTreeListItem& item, sd_gui_utils::config* config) { + auto selected = item; + auto selectedName = this->treeListCtrl->GetItemText(item); + wxString basePath = selectedName, groupFolderName = selectedName; - while (selected.IsOk()) { - auto parent = this->treeListCtrl->GetItemParent(selected); - wxString parentName = this->treeListCtrl->GetItemText(parent); - if (parent.IsOk() == false || parentName.empty()) { - break; - } - auto parentPath = config->getPathByDirType(parentName); - if (parentPath.empty() == false) { - basePath.Prepend(parentPath + wxFileName::GetPathSeparators()); - } else { - parentName.Append(wxFileName::GetPathSeparators()); - basePath.Prepend(parentName); + while (selected.IsOk()) { + auto parent = this->treeListCtrl->GetItemParent(selected); + wxString parentName = this->treeListCtrl->GetItemText(parent); + if (parent.IsOk() == false || parentName.empty()) { + break; + } + auto parentPath = config->getPathByDirType(parentName); + if (parentPath.empty() == false) { + basePath.Prepend(parentPath + wxFileName::GetPathSeparators()); + } else { + parentName.Append(wxFileName::GetPathSeparators()); + basePath.Prepend(parentName); + } + groupFolderName.Prepend(parentName + wxFileName::GetPathSeparators()); + selected = parent; } - groupFolderName.Prepend(parentName + wxFileName::GetPathSeparators()); - selected = parent; - } - if (basePath == selectedName) { - basePath = config->getPathByDirType(selectedName); - if (basePath.empty() == true) { - return wxEmptyString; + if (basePath == selectedName) { + basePath = config->getPathByDirType(selectedName); + if (basePath.empty() == true) { + return wxEmptyString; + } } + return basePath; } - return basePath; - } - - void CleanAll() { - treeListCtrl->DeleteAllItems(); - parentMap.clear(); - } -private: - wxTreeListCtrl* treeListCtrl; - wxVector columns; - std::map parentMap; - std::map dataMap; - - /** - * Retrieves or creates the parent wxTreeListItem for a given folder group name. - * - * This function takes a folder group name, which may consist of multiple segments - * separated by separator character, and ensures that each segment has a corresponding wxTreeListItem - * in the tree. If the specified folder group name is empty, it returns the root item. - * For each segment, it checks if a corresponding item already exists; if not, it creates - * a new item and inserts it into the tree. The function returns the wxTreeListItem of - * the last segment in the folder group name. - * - * @param folderGroupName A string representing the hierarchical folder group name, - * where segments are separated by separator character. - * @return The wxTreeListItem corresponding to the last segment of the folder group name. - */ - wxTreeListItem GetOrCreateParent(const std::string& folderGroupName) { - if (folderGroupName.empty()) { - return treeListCtrl->GetRootItem(); + void CleanAll() { + treeListCtrl->DeleteAllItems(); + parentMap.clear(); } - std::vector groups; - SplitFolderGroupName(wxString::FromUTF8Unchecked(folderGroupName), groups); - - wxTreeListItem parent = treeListCtrl->GetRootItem(); - std::string fullPath; - for (const auto& group : groups) { - if (!fullPath.empty()) { - fullPath += wxFileName::GetPathSeparator(); + private: + wxTreeListCtrl* treeListCtrl = nullptr; + wxVector columns; + std::map parentMap; + std::map dataMap; + + /** + * Retrieves or creates the parent wxTreeListItem for a given folder group name. + * + * This function takes a folder group name, which may consist of multiple segments + * separated by separator character, and ensures that each segment has a corresponding wxTreeListItem + * in the tree. If the specified folder group name is empty, it returns the root item. + * For each segment, it checks if a corresponding item already exists; if not, it creates + * a new item and inserts it into the tree. The function returns the wxTreeListItem of + * the last segment in the folder group name. + * + * @param folderGroupName A string representing the hierarchical folder group name, + * where segments are separated by separator character. + * @return The wxTreeListItem corresponding to the last segment of the folder group name. + */ + wxTreeListItem GetOrCreateParent(const std::string& folderGroupName) { + if (folderGroupName.empty()) { + return treeListCtrl->GetRootItem(); } - fullPath += group; - - if (parentMap.find(fullPath) == parentMap.end()) { - wxTreeListItem newParent = treeListCtrl->AppendItem(parent, wxString(group)); - parentMap[fullPath] = newParent; - parent = newParent; - } else { - parent = parentMap[fullPath]; + std::vector groups; + SplitFolderGroupName(wxString::FromUTF8Unchecked(folderGroupName), groups); + + wxTreeListItem parent = treeListCtrl->GetRootItem(); + std::string fullPath; + for (const auto& group : groups) { + if (!fullPath.empty()) { + fullPath += wxFileName::GetPathSeparator(); + } + fullPath += group; + + if (parentMap.find(fullPath) == parentMap.end()) { + wxTreeListItem newParent = treeListCtrl->AppendItem(parent, wxString(group)); + parentMap[fullPath] = newParent; + parent = newParent; + } else { + parent = parentMap[fullPath]; + } } + return parent; } - return parent; - } - wxTreeListItem FindItemByPath(const wxTreeListItem& parent, const std::string& path) { - wxTreeListItem item = treeListCtrl->GetFirstChild(parent); - while (item.IsOk()) { - ModelFileInfoData* data = static_cast(treeListCtrl->GetItemData(item)); - if (data) { - sd_gui_utils::ModelFileInfo* fileInfo = data->GetFileInfo(); - if (fileInfo && fileInfo->path == path) { - return item; + wxTreeListItem FindItemByPath(const wxTreeListItem& parent, const std::string& path) { + wxTreeListItem item = treeListCtrl->GetFirstChild(parent); + while (item.IsOk()) { + ModelFileInfoData* data = static_cast(treeListCtrl->GetItemData(item)); + if (data) { + sd_gui_utils::ModelFileInfo* fileInfo = data->GetFileInfo(); + if (fileInfo && fileInfo->path == path) { + return item; + } } + wxTreeListItem childResult = FindItemByPath(item, path); + if (childResult.IsOk()) { + return childResult; + } + item = treeListCtrl->GetNextSibling(item); } - wxTreeListItem childResult = FindItemByPath(item, path); - if (childResult.IsOk()) { - return childResult; - } - item = treeListCtrl->GetNextSibling(item); + return wxTreeListItem(); } - return wxTreeListItem(); - } - void SplitFolderGroupName(const wxString& folderGroupName, std::vector& groups) { - wxStringTokenizer tokenizer(folderGroupName, wxFileName::GetPathSeparator()); - while (tokenizer.HasMoreTokens()) { - wxString token = tokenizer.GetNextToken(); - groups.push_back(std::string(token.mb_str())); + void SplitFolderGroupName(const wxString& folderGroupName, std::vector& groups) { + wxStringTokenizer tokenizer(folderGroupName, wxFileName::GetPathSeparator()); + while (tokenizer.HasMoreTokens()) { + wxString token = tokenizer.GetNextToken(); + groups.push_back(std::string(token.mb_str())); + } } - } - std::string ConvertTypeToString(sd_gui_utils::DirTypes type) { - return sd_gui_utils::dirtypes_str.contains(type) ? sd_gui_utils::dirtypes_str.at(type) : "Unknown"; - } -}; + std::string ConvertTypeToString(sd_gui_utils::DirTypes type) { + return sd_gui_utils::dirtypes_str.contains(type) ? sd_gui_utils::dirtypes_str.at(type) : "Unknown"; + } + }; #endif // TREE_LIST_MANAGER_H diff --git a/src/helpers/sd.hpp b/src/helpers/sd.hpp index 1317b85..b481ad5 100644 --- a/src/helpers/sd.hpp +++ b/src/helpers/sd.hpp @@ -173,7 +173,8 @@ typedef sd_image_t* (*Txt2ImgFunction)(sd_ctx_t*, // pointer float, // style_strength, bool, // normalize_input, const char*, // input_id_images_path - std::vector, // skip_layers, + int*, // skip_layers + size_t, // skip_layers_size float, // slg_scale, float, // skip_layer_start, float // skip_layer_end @@ -182,6 +183,7 @@ typedef sd_image_t* (*Txt2ImgFunction)(sd_ctx_t*, // pointer typedef sd_image_t* (*Img2ImgFunction)(sd_ctx_t*, // pointer sd_image_t, // init_image + sd_image_t, // mask_image const char*, // prompt_c_str, const char*, // negative_prompt_c_str, int, // clip_skip, @@ -199,7 +201,8 @@ typedef sd_image_t* (*Img2ImgFunction)(sd_ctx_t*, // pointer float, // style_ratio, bool, // normalize_input, const char*, // input_id_images_path_c_str - std::vector, // skip_layers, + int*, // skip_layers + size_t, // skip_layers_count float, // slg_scale, float, // skip_layer_start, float // skip_layer_end) diff --git a/src/pch.h b/src/pch.h index 7136197..d68846b 100644 --- a/src/pch.h +++ b/src/pch.h @@ -39,6 +39,8 @@ #include "wx/sstream.h" #include "wx/txtstrm.h" #include "wx/hashmap.h" +#include "wx/dcbuffer.h" +#include "wx/treelist.h" #include "ver.hpp" #include "helpers/DirTypes.h" diff --git a/src/ui/InpaintEditor.h b/src/ui/InpaintEditor.h new file mode 100644 index 0000000..bca2402 --- /dev/null +++ b/src/ui/InpaintEditor.h @@ -0,0 +1,10 @@ +#ifndef __INPAINT_EDITOR__ +#define __INPAINT_EDITOR__ +class InpaintEditor : public wxPanel +{ +public: + InpaintEditor(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size); + ~InpaintEditor(); +}; + +#endif \ No newline at end of file diff --git a/src/ui/MainWindow.cpp b/src/ui/MainWindow.cpp index cb4b745..a348beb 100644 --- a/src/ui/MainWindow.cpp +++ b/src/ui/MainWindow.cpp @@ -7,12 +7,14 @@ #include "MainWindow.h" +#include "embedded_files/circle.png.h" #include "embedded_files/civitai.png.h" #include "embedded_files/controlnet.png.h" #include "embedded_files/cross_circle.png.h" #include "embedded_files/cube.png.h" #include "embedded_files/dice_four.png.h" #include "embedded_files/disk.png.h" +#include "embedded_files/drag.png.h" #include "embedded_files/file_import.png.h" #include "embedded_files/forward.png.h" #include "embedded_files/images.png.h" @@ -26,7 +28,10 @@ #include "embedded_files/replace.png.h" #include "embedded_files/sd.cpp.gui_blankimage.png.h" #include "embedded_files/settings.png.h" +#include "embedded_files/square.png.h" +#include "embedded_files/text_box_dots.png.h" #include "embedded_files/trash.png.h" +#include "embedded_files/triangle.png.h" // Using the construction of a static object to ensure that the help provider is set // wx Manages the most recent HelpProvider passed to ::Set, but not the previous ones @@ -172,9 +177,17 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx sizer0001->Add( m_panel10, 0, wxEXPAND, 5 ); m_panel31 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE|wxTAB_TRAVERSAL ); + m_panel31->SetMinSize( wxSize( 210,-1 ) ); + bSizer138 = new wxBoxSizer( wxHORIZONTAL ); - m_notebook1302 = new wxNotebook( m_panel31, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxBK_DEFAULT|wxBORDER_THEME ); + m_notebook1302 = new wxNotebook( m_panel31, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxNB_NOPAGETHEME|wxNB_TOP|wxBORDER_DEFAULT ); + wxSize m_notebook1302ImageSize = wxSize( 16,16 ); + int m_notebook1302Index = 0; + wxImageList* m_notebook1302Images = new wxImageList( m_notebook1302ImageSize.GetWidth(), m_notebook1302ImageSize.GetHeight() ); + m_notebook1302->AssignImageList( m_notebook1302Images ); + wxBitmap m_notebook1302Bitmap; + wxImage m_notebook1302Image; m_notebook1302->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) ); m_notebook1302->SetMinSize( wxSize( 400,200 ) ); @@ -257,7 +270,7 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx wxBoxSizer* bSizer9011; bSizer9011 = new wxBoxSizer( wxVERTICAL ); - m_scrolledWindow41 = new wxScrolledWindow( m_jobs_panel, wxID_ANY, wxDefaultPosition, wxSize( -1,280 ), wxBORDER_DEFAULT|wxHSCROLL ); + m_scrolledWindow41 = new wxScrolledWindow( m_jobs_panel, wxID_ANY, wxDefaultPosition, wxSize( -1,280 ), wxBORDER_THEME|wxHSCROLL ); m_scrolledWindow41->SetScrollRate( 5, 5 ); bSizer8911 = new wxBoxSizer( wxHORIZONTAL ); @@ -296,6 +309,14 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx m_jobs_panel->Layout(); bSizer104->Fit( m_jobs_panel ); m_notebook1302->AddPage( m_jobs_panel, _("Jobs and Images"), true ); + m_notebook1302Bitmap = images_png_to_wx_bitmap(); + if ( m_notebook1302Bitmap.Ok() ) + { + m_notebook1302Image = m_notebook1302Bitmap.ConvertToImage(); + m_notebook1302Images->Add( m_notebook1302Image.Scale( m_notebook1302ImageSize.GetWidth(), m_notebook1302ImageSize.GetHeight() ) ); + m_notebook1302->SetPageImage( m_notebook1302Index, m_notebook1302Index ); + m_notebook1302Index++; + } m_text2img_panel = new wxPanel( m_notebook1302, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); wxBoxSizer* sizer0004; sizer0004 = new wxBoxSizer( wxVERTICAL ); @@ -342,204 +363,17 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx m_controlnetPreviewTab->Layout(); bSizer981->Fit( m_controlnetPreviewTab ); m_notebook3->AddPage( m_controlnetPreviewTab, _("Controlnet"), true ); + m_openPoseWindow = new wxScrolledWindow( m_notebook3, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + m_openPoseWindow->SetScrollRate( 5, 5 ); + m_openPoseWindow->Hide(); + + m_notebook3->AddPage( m_openPoseWindow, _("OpenPose Editor"), false ); bSizer331->Add( m_notebook3, 1, wxEXPAND, 5 ); bSizer811->Add( bSizer331, 1, wxEXPAND, 5 ); - wxBoxSizer* bSizer82; - bSizer82 = new wxBoxSizer( wxVERTICAL ); - - bSizer82->SetMinSize( wxSize( 300,-1 ) ); - m_prompt = new wxTextCtrl( m_text2img_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP ); - m_prompt->DragAcceptFiles( true ); - m_prompt->SetMinSize( wxSize( -1,100 ) ); - - bSizer82->Add( m_prompt, 0, wxALL|wxEXPAND, 1 ); - - m_neg_prompt = new wxTextCtrl( m_text2img_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP ); - m_neg_prompt->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); - m_neg_prompt->DragAcceptFiles( true ); - m_neg_prompt->SetMinSize( wxSize( -1,100 ) ); - - bSizer82->Add( m_neg_prompt, 0, wxALL|wxEXPAND, 1 ); - - - bSizer82->Add( 0, 0, 1, wxEXPAND, 5 ); - - wxBoxSizer* bSizer1011; - bSizer1011 = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bSizer122; - bSizer122 = new wxBoxSizer( wxHORIZONTAL ); - - m_bpButton25 = new wxBitmapButton( m_text2img_panel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); - - m_bpButton25->SetBitmap( interrogation_png_to_wx_bitmap() ); - m_bpButton25->SetToolTip( _("What is this?") ); - - bSizer122->Add( m_bpButton25, 0, wxALL, 5 ); - - m_staticText70 = new wxStaticText( m_text2img_panel, wxID_ANY, _("For more information, click the button with the question mark icon.\n\nTo use the FLUX model, select the \"Diffusion Model\" file picker and choose the FLUX model.\nFor SD3.5, use the dropdown menu at the top to select a model."), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText70->Wrap( -1 ); - bSizer122->Add( m_staticText70, 0, wxALL|wxEXPAND, 5 ); - - - bSizer1011->Add( bSizer122, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer10212; - bSizer10212 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText522 = new wxStaticText( m_text2img_panel, wxID_ANY, _("SLG scale:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); - m_staticText522->Wrap( -1 ); - m_staticText522->SetToolTip( _("skip layer guidance (SLG) scale, only for DiT models: (default: 0.0)") ); - - bSizer10212->Add( m_staticText522, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - slgScale = new wxSpinCtrlDouble( m_text2img_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 0, 0.5 ); - slgScale->SetDigits( 1 ); - slgScale->SetToolTip( _("skip layer guidance (SLG) scale, only for DiT models: (default: 0.0)") ); - - bSizer10212->Add( slgScale, 1, wxALL, 5 ); - - - bSizer1011->Add( bSizer10212, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer102121; - bSizer102121 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText5221 = new wxStaticText( m_text2img_panel, wxID_ANY, _("Skip layers:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); - m_staticText5221->Wrap( -1 ); - m_staticText5221->SetToolTip( _("Layers to skip for SLG steps: (default: [7,8,9])") ); - - bSizer102121->Add( m_staticText5221, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_skipLayers = new wxTextCtrl( m_text2img_panel, wxID_ANY, _("7,8,9"), wxDefaultPosition, wxDefaultSize, 0 ); - m_skipLayers->SetToolTip( _("Layers to skip for SLG steps: (default: [7,8,9])") ); - - bSizer102121->Add( m_skipLayers, 1, wxALL, 5 ); - - - bSizer1011->Add( bSizer102121, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer1021211; - bSizer1021211 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText52211 = new wxStaticText( m_text2img_panel, wxID_ANY, _("Skip Layer Start:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); - m_staticText52211->Wrap( -1 ); - m_staticText52211->SetToolTip( _("SLG enabling point: (default: 0.01)\nSLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END])") ); - - bSizer1021211->Add( m_staticText52211, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - skipLayerStart = new wxSpinCtrlDouble( m_text2img_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0.01, 1, 0.01, 0.01 ); - skipLayerStart->SetDigits( 2 ); - skipLayerStart->SetToolTip( _("SLG enabling point: (default: 0.01)\nSLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END])") ); - - bSizer1021211->Add( skipLayerStart, 1, wxALL, 5 ); - - - bSizer1011->Add( bSizer1021211, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer10212111; - bSizer10212111 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText522111 = new wxStaticText( m_text2img_panel, wxID_ANY, _("Skip Layer End:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); - m_staticText522111->Wrap( -1 ); - m_staticText522111->SetToolTip( _("SLG disabling point: (default: 0.2)\nSLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END])") ); - - bSizer10212111->Add( m_staticText522111, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - skipLayerEnd = new wxSpinCtrlDouble( m_text2img_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0.01, 1, 0.2, 0.01 ); - skipLayerEnd->SetDigits( 2 ); - skipLayerEnd->SetToolTip( _("SLG disabling point: (default: 0.2)\nSLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END])") ); - - bSizer10212111->Add( skipLayerEnd, 1, wxALL, 5 ); - - - bSizer1011->Add( bSizer10212111, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer121; - bSizer121 = new wxBoxSizer( wxVERTICAL ); - - m_staticline41 = new wxStaticLine( m_text2img_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bSizer121->Add( m_staticline41, 0, wxEXPAND | wxALL, 5 ); - - - bSizer1011->Add( bSizer121, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer1021111; - bSizer1021111 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText52111 = new wxStaticText( m_text2img_panel, wxID_ANY, _("Diffusion Model:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); - m_staticText52111->Wrap( -1 ); - m_staticText52111->SetToolTip( _("Diffusion models, for example FLUX") ); - - bSizer1021111->Add( m_staticText52111, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_filePickerDiffusionModel = new wxFilePickerCtrl( m_text2img_panel, wxID_ANY, wxEmptyString, _("Select a file"), _("Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_USE_TEXTCTRL ); - bSizer1021111->Add( m_filePickerDiffusionModel, 1, wxALL, 5 ); - - diffusionFlashAttn = new wxCheckBox( m_text2img_panel, wxID_ANY, _("Flash attention"), wxDefaultPosition, wxDefaultSize, 0 ); - diffusionFlashAttn->SetToolTip( _("Use flash attention in the diffusion model. This will reduce significantly the memory uage (for low vram).\nMight lower quality, since it implies converting k and v to f16.\nThis might crash if it is not supported by the backend.\n\n") ); - - bSizer1021111->Add( diffusionFlashAttn, 0, wxALL|wxEXPAND, 5 ); - - m_cleanDiffusionModel = new wxBitmapButton( m_text2img_panel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); - - m_cleanDiffusionModel->SetBitmap( trash_png_to_wx_bitmap() ); - m_cleanDiffusionModel->SetToolTip( _("Clean model") ); - - bSizer1021111->Add( m_cleanDiffusionModel, 0, wxALL, 5 ); - - - bSizer1011->Add( bSizer1021111, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer1021; - bSizer1021 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText52 = new wxStaticText( m_text2img_panel, wxID_ANY, _("ClipL:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); - m_staticText52->Wrap( -1 ); - bSizer1021->Add( m_staticText52, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_filePickerClipL = new wxFilePickerCtrl( m_text2img_panel, wxID_ANY, wxEmptyString, _("Select a file"), _("Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL ); - bSizer1021->Add( m_filePickerClipL, 1, wxALL, 5 ); - - - bSizer1011->Add( bSizer1021, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer10211; - bSizer10211 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText521 = new wxStaticText( m_text2img_panel, wxID_ANY, _("ClipG:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); - m_staticText521->Wrap( -1 ); - bSizer10211->Add( m_staticText521, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_filePickerClipG = new wxFilePickerCtrl( m_text2img_panel, wxID_ANY, wxEmptyString, _("Select a file"), _("Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL ); - bSizer10211->Add( m_filePickerClipG, 1, wxALL, 5 ); - - - bSizer1011->Add( bSizer10211, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizer102111; - bSizer102111 = new wxBoxSizer( wxHORIZONTAL ); - - m_staticText5211 = new wxStaticText( m_text2img_panel, wxID_ANY, _("T5XXL:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); - m_staticText5211->Wrap( -1 ); - bSizer102111->Add( m_staticText5211, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_filePickerT5XXL = new wxFilePickerCtrl( m_text2img_panel, wxID_ANY, wxEmptyString, _("Select a file"), _("Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL ); - bSizer102111->Add( m_filePickerT5XXL, 1, wxALL, 5 ); - - - bSizer1011->Add( bSizer102111, 0, wxEXPAND, 5 ); - - - bSizer82->Add( bSizer1011, 1, wxEXPAND, 5 ); - - - bSizer811->Add( bSizer82, 1, wxEXPAND, 5 ); - sizer0004->Add( bSizer811, 1, wxEXPAND, 5 ); @@ -589,19 +423,23 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx m_text2img_panel->Layout(); sizer0004->Fit( m_text2img_panel ); m_notebook1302->AddPage( m_text2img_panel, _("txt2img"), false ); + m_notebook1302Bitmap = text_box_dots_png_to_wx_bitmap(); + if ( m_notebook1302Bitmap.Ok() ) + { + m_notebook1302Image = m_notebook1302Bitmap.ConvertToImage(); + m_notebook1302Images->Add( m_notebook1302Image.Scale( m_notebook1302ImageSize.GetWidth(), m_notebook1302ImageSize.GetHeight() ) ); + m_notebook1302->SetPageImage( m_notebook1302Index, m_notebook1302Index ); + m_notebook1302Index++; + } m_image2image_panel = new wxPanel( m_notebook1302, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, wxT("img2img") ); m_image2image_panel->DragAcceptFiles( true ); - m_image2image_panel->SetMinSize( wxSize( 300,-1 ) ); - wxBoxSizer* bSizer24; - bSizer24 = new wxBoxSizer( wxVERTICAL ); + wxBoxSizer* bSizer10099; + bSizer10099 = new wxBoxSizer( wxVERTICAL ); wxBoxSizer* bSizer28; bSizer28 = new wxBoxSizer( wxHORIZONTAL ); - wxBoxSizer* bSizer29; - bSizer29 = new wxBoxSizer( wxHORIZONTAL ); - m_notebook4 = new wxNotebook( m_image2image_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNB_RIGHT ); m_panel23 = new wxPanel( m_notebook4, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); m_panel23->Enable( false ); @@ -621,85 +459,227 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx m_panel23->Layout(); bSizer1003->Fit( m_panel23 ); m_notebook4->AddPage( m_panel23, _("Diffusion"), false ); - m_panel22 = new wxPanel( m_notebook4, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - wxBoxSizer* bSizer101; - bSizer101 = new wxBoxSizer( wxVERTICAL ); + m_panel25 = new wxPanel( m_notebook4, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer1026; + bSizer1026 = new wxBoxSizer( wxVERTICAL ); - m_img2img_preview = new wxStaticBitmap( m_panel22, wxID_ANY, sd_cpp_gui_blankimage_png_to_wx_bitmap(), wxDefaultPosition, wxDefaultSize, 0 ); - m_img2img_preview->SetBackgroundColour( wxColour( 64, 64, 64 ) ); - m_img2img_preview->DragAcceptFiles( true ); - m_img2img_preview->SetMinSize( wxSize( 200,-1 ) ); + m_panel26 = new wxPanel( m_panel25, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer1028; + bSizer1028 = new wxBoxSizer( wxVERTICAL ); - bSizer101->Add( m_img2img_preview, 1, wxEXPAND, 5 ); + wxBoxSizer* bSizer1030; + bSizer1030 = new wxBoxSizer( wxHORIZONTAL ); + m_inpaintBrushSize = new wxStaticText( m_panel26, wxID_ANY, _("Brush"), wxDefaultPosition, wxDefaultSize, 0 ); + m_inpaintBrushSize->Wrap( -1 ); + m_inpaintBrushSize->SetMinSize( wxSize( 50,-1 ) ); - m_panel22->SetSizer( bSizer101 ); - m_panel22->Layout(); - bSizer101->Fit( m_panel22 ); - m_notebook4->AddPage( m_panel22, _("Input image"), true ); + bSizer1030->Add( m_inpaintBrushSize, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - bSizer29->Add( m_notebook4, 1, wxEXPAND, 5 ); + m_inpaintBrushSizeSlider = new wxSlider( m_panel26, wxID_ANY, 10, 1, 40, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_VALUE_LABEL ); + bSizer1030->Add( m_inpaintBrushSizeSlider, 0, wxALL, 5 ); + m_inpaintZoom = new wxStaticText( m_panel26, wxID_ANY, _("Zoom"), wxDefaultPosition, wxDefaultSize, 0 ); + m_inpaintZoom->Wrap( -1 ); + m_inpaintZoom->SetMinSize( wxSize( 40,-1 ) ); - bSizer28->Add( bSizer29, 1, wxEXPAND, 5 ); + bSizer1030->Add( m_inpaintZoom, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - wxBoxSizer* bSizer33; - bSizer33 = new wxBoxSizer( wxVERTICAL ); + m_inpaintZoomSlider = new wxSlider( m_panel26, wxID_ANY, 100, 25, 200, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_VALUE_LABEL ); + m_inpaintZoomSlider->Enable( false ); - bSizer33->SetMinSize( wxSize( 300,-1 ) ); - m_prompt2 = new wxTextCtrl( m_image2image_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP ); - m_prompt2->SetMinSize( wxSize( -1,100 ) ); + bSizer1030->Add( m_inpaintZoomSlider, 0, wxALL, 5 ); - bSizer33->Add( m_prompt2, 0, wxEXPAND|wxALL, 1 ); + m_inpaintSaveMask = new wxBitmapButton( m_panel26, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 28,28 ), wxBU_AUTODRAW|0 ); - m_neg_prompt2 = new wxTextCtrl( m_image2image_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP ); - m_neg_prompt2->SetMinSize( wxSize( -1,100 ) ); + m_inpaintSaveMask->SetBitmap( disk_png_to_wx_bitmap() ); + m_inpaintSaveMask->SetToolTip( _("Save the mask into png") ); - bSizer33->Add( m_neg_prompt2, 0, wxEXPAND|wxALL, 1 ); + bSizer1030->Add( m_inpaintSaveMask, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + m_inpaintInvert = new wxBitmapButton( m_panel26, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 28,28 ), wxBU_AUTODRAW|0 ); - bSizer33->Add( 0, 0, 1, wxEXPAND, 5 ); + m_inpaintInvert->SetBitmap( replace_png_to_wx_bitmap() ); + m_inpaintInvert->SetToolTip( _("Invert mask") ); + bSizer1030->Add( m_inpaintInvert, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - bSizer28->Add( bSizer33, 1, wxEXPAND, 5 ); + m_inpaintResizeToSdSize = new wxBitmapButton( m_panel26, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 28,28 ), wxBU_AUTODRAW|0 ); + m_inpaintResizeToSdSize->SetBitmap( drag_png_to_wx_bitmap() ); + m_inpaintResizeToSdSize->SetToolTip( _("Resize the image to fit into the diffusion's width and height.\nWARNING: this will delete the current mask if have!") ); - bSizer24->Add( bSizer28, 1, wxEXPAND, 5 ); + bSizer1030->Add( m_inpaintResizeToSdSize, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - wxBoxSizer* bSizer38; - bSizer38 = new wxBoxSizer( wxHORIZONTAL ); + m_inpaintClearMask = new wxBitmapButton( m_panel26, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 28,28 ), wxBU_AUTODRAW|0 ); + + m_inpaintClearMask->SetBitmap( trash_png_to_wx_bitmap() ); + m_inpaintClearMask->Enable( false ); + m_inpaintClearMask->SetToolTip( _("Clear the mask") ); + + bSizer1030->Add( m_inpaintClearMask, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_inpaintOpenMask = new wxFilePickerCtrl( m_panel26, wxID_ANY, wxEmptyString, _("Select a file"), _("Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG"), wxDefaultPosition, wxDefaultSize, wxFLP_FILE_MUST_EXIST|wxFLP_OPEN ); + m_inpaintOpenMask->SetToolTip( _("Open a mask image from file") ); + + bSizer1030->Add( m_inpaintOpenMask, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + + bSizer1028->Add( bSizer1030, 0, 0, 0 ); + + wxBoxSizer* bSizer1029; + bSizer1029 = new wxBoxSizer( wxHORIZONTAL ); + + m_inPaintBrushStyleCircle = new wxBitmapToggleButton( m_panel26, wxID_ANY, circle_png_to_wx_bitmap(), wxDefaultPosition, wxSize( 28,28 ), 0 ); + m_inPaintBrushStyleCircle->SetValue( true ); + + m_inPaintBrushStyleCircle->SetBitmap( circle_png_to_wx_bitmap() ); + m_inPaintBrushStyleCircle->SetToolTip( _("Change the brush shape to circle") ); + + bSizer1029->Add( m_inPaintBrushStyleCircle, 0, wxALL, 5 ); + + m_inPaintBrushStyleSquare = new wxBitmapToggleButton( m_panel26, wxID_ANY, square_png_to_wx_bitmap(), wxDefaultPosition, wxSize( 28,28 ), 0 ); + + m_inPaintBrushStyleSquare->SetBitmap( square_png_to_wx_bitmap() ); + m_inPaintBrushStyleSquare->SetToolTip( _("Change the brush shape to square") ); + + bSizer1029->Add( m_inPaintBrushStyleSquare, 0, wxALL, 5 ); + + m_inPaintBrushStyleTriangle = new wxBitmapToggleButton( m_panel26, wxID_ANY, triangle_png_to_wx_bitmap(), wxDefaultPosition, wxSize( 28,28 ), 0 ); + + m_inPaintBrushStyleTriangle->SetBitmap( triangle_png_to_wx_bitmap() ); + m_inPaintBrushStyleTriangle->SetToolTip( _("Change the brush shape to triangle") ); + + bSizer1029->Add( m_inPaintBrushStyleTriangle, 0, wxALL, 5 ); + + m_inpaintImageResolution = new wxStaticText( m_panel26, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_inpaintImageResolution->Wrap( -1 ); + m_inpaintImageResolution->SetMinSize( wxSize( 150,-1 ) ); + + bSizer1029->Add( m_inpaintImageResolution, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticText69 = new wxStaticText( m_panel26, wxID_ANY, _("Ctrl + Mouse wheel to ZOOM\nShift + Mouse wheel to Change brush size"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText69->Wrap( -1 ); + bSizer1029->Add( m_staticText69, 1, wxALIGN_CENTER_VERTICAL, 0 ); + + + bSizer1028->Add( bSizer1029, 0, 0, 0 ); + + + m_panel26->SetSizer( bSizer1028 ); + m_panel26->Layout(); + bSizer1028->Fit( m_panel26 ); + bSizer1026->Add( m_panel26, 0, wxALL|wxEXPAND, 5 ); + + m_panel261 = new wxPanel( m_panel25, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE|wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer1022; + bSizer1022 = new wxBoxSizer( wxVERTICAL ); + + m_img2imPanel = new wxScrolledWindow( m_panel261, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE|wxFULL_REPAINT_ON_RESIZE|wxHSCROLL|wxNO_FULL_REPAINT_ON_RESIZE|wxVSCROLL, wxT("inpaintEditor") ); + m_img2imPanel->SetScrollRate( 5, 5 ); + m_img2imPanel->DragAcceptFiles( true ); + m_img2imPanel->SetMinSize( wxSize( 256,256 ) ); + + bSizer1022->Add( m_img2imPanel, 1, wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxEXPAND, 0 ); - m_img2imgOpen = new wxFilePickerCtrl( m_image2image_panel, wxID_ANY, wxEmptyString, _("Select an image"), _("Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG"), wxDefaultPosition, wxDefaultSize, wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL ); - m_img2imgOpen->SetMinSize( wxSize( 470,-1 ) ); - bSizer38->Add( m_img2imgOpen, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + m_panel261->SetSizer( bSizer1022 ); + m_panel261->Layout(); + bSizer1022->Fit( m_panel261 ); + bSizer1026->Add( m_panel261, 1, wxEXPAND | wxALL, 5 ); + + m_panel231 = new wxPanel( m_panel25, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer1027; + bSizer1027 = new wxBoxSizer( wxHORIZONTAL ); + + m_staticText691 = new wxStaticText( m_panel231, wxID_ANY, _("Outpaint Top:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText691->Wrap( -1 ); + bSizer1027->Add( m_staticText691, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_inpaintCanvasTop = new wxTextCtrl( m_panel231, wxID_ANY, _("0"), wxDefaultPosition, wxSize( 40,-1 ), wxTE_PROCESS_ENTER|wxTE_RIGHT ); + bSizer1027->Add( m_inpaintCanvasTop, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticText701 = new wxStaticText( m_panel231, wxID_ANY, _("Right:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText701->Wrap( -1 ); + bSizer1027->Add( m_staticText701, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_inpaintCanvasRight = new wxTextCtrl( m_panel231, wxID_ANY, _("0"), wxDefaultPosition, wxSize( 40,-1 ), wxTE_PROCESS_ENTER|wxTE_RIGHT ); + bSizer1027->Add( m_inpaintCanvasRight, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticText71 = new wxStaticText( m_panel231, wxID_ANY, _("Bottom:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText71->Wrap( -1 ); + bSizer1027->Add( m_staticText71, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_inpaintCanvasBottom = new wxTextCtrl( m_panel231, wxID_ANY, _("0"), wxDefaultPosition, wxSize( 40,-1 ), wxTE_PROCESS_ENTER|wxTE_RIGHT ); + bSizer1027->Add( m_inpaintCanvasBottom, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticText721 = new wxStaticText( m_panel231, wxID_ANY, _("Left:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText721->Wrap( -1 ); + bSizer1027->Add( m_staticText721, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_inpaintCanvasLeft = new wxTextCtrl( m_panel231, wxID_ANY, _("0"), wxDefaultPosition, wxSize( 40,-1 ), wxTE_PROCESS_ENTER|wxTE_RIGHT ); + bSizer1027->Add( m_inpaintCanvasLeft, 0, wxALL, 5 ); + + m_inpaintCanvasResizeApply = new wxButton( m_panel231, wxID_ANY, _("Resize"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer1027->Add( m_inpaintCanvasResizeApply, 0, wxALL, 5 ); + + + m_panel231->SetSizer( bSizer1027 ); + m_panel231->Layout(); + bSizer1027->Fit( m_panel231 ); + bSizer1026->Add( m_panel231, 0, wxALL, 5 ); + + + m_panel25->SetSizer( bSizer1026 ); + m_panel25->Layout(); + bSizer1026->Fit( m_panel25 ); + m_notebook4->AddPage( m_panel25, _("Preview and InPaint"), true ); + + bSizer28->Add( m_notebook4, 1, wxEXPAND, 5 ); + + + bSizer10099->Add( bSizer28, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer33; + bSizer33 = new wxBoxSizer( wxHORIZONTAL ); + + m_img2imgOpen = new wxFilePickerCtrl( m_image2image_panel, wxID_ANY, wxEmptyString, _("Select an image"), _("Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG"), wxDefaultPosition, wxDefaultSize, wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL ); + bSizer33->Add( m_img2imgOpen, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); m_staticText24 = new wxStaticText( m_image2image_panel, wxID_ANY, _("Strength:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText24->Wrap( -1 ); - bSizer38->Add( m_staticText24, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + bSizer33->Add( m_staticText24, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_strength = new wxSpinCtrlDouble( m_image2image_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 0.99, 0.75, 0.1 ); + m_strength = new wxSpinCtrlDouble( m_image2image_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1, 0.75, 0.1 ); m_strength->SetDigits( 2 ); - bSizer38->Add( m_strength, 0, wxALL, 5 ); + bSizer33->Add( m_strength, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); m_img2im_preview_img = new wxButton( m_image2image_panel, wxID_ANY, _("Show full"), wxDefaultPosition, wxDefaultSize, 0 ); m_img2im_preview_img->Enable( false ); - bSizer38->Add( m_img2im_preview_img, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + bSizer33->Add( m_img2im_preview_img, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); m_delete_initial_img = new wxBitmapButton( m_image2image_panel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); m_delete_initial_img->SetBitmap( trash_png_to_wx_bitmap() ); - bSizer38->Add( m_delete_initial_img, 0, wxALL, 5 ); + bSizer33->Add( m_delete_initial_img, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - bSizer24->Add( bSizer38, 0, wxEXPAND, 5 ); + bSizer10099->Add( bSizer33, 0, wxEXPAND, 5 ); - m_image2image_panel->SetSizer( bSizer24 ); + m_image2image_panel->SetSizer( bSizer10099 ); m_image2image_panel->Layout(); - bSizer24->Fit( m_image2image_panel ); + bSizer10099->Fit( m_image2image_panel ); m_notebook1302->AddPage( m_image2image_panel, _("img2img"), false ); + m_notebook1302Bitmap = palette_png_to_wx_bitmap(); + if ( m_notebook1302Bitmap.Ok() ) + { + m_notebook1302Image = m_notebook1302Bitmap.ConvertToImage(); + m_notebook1302Images->Add( m_notebook1302Image.Scale( m_notebook1302ImageSize.GetWidth(), m_notebook1302ImageSize.GetHeight() ) ); + m_notebook1302->SetPageImage( m_notebook1302Index, m_notebook1302Index ); + m_notebook1302Index++; + } m_upscaler = new wxPanel( m_notebook1302, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, wxT("upscaler") ); m_upscaler->DragAcceptFiles( true ); m_upscaler->SetMinSize( wxSize( 300,-1 ) ); @@ -856,6 +836,14 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx m_upscaler->Layout(); bSizer68->Fit( m_upscaler ); m_notebook1302->AddPage( m_upscaler, _("Upscaler"), false ); + m_notebook1302Bitmap = picture_png_to_wx_bitmap(); + if ( m_notebook1302Bitmap.Ok() ) + { + m_notebook1302Image = m_notebook1302Bitmap.ConvertToImage(); + m_notebook1302Images->Add( m_notebook1302Image.Scale( m_notebook1302ImageSize.GetWidth(), m_notebook1302ImageSize.GetHeight() ) ); + m_notebook1302->SetPageImage( m_notebook1302Index, m_notebook1302Index ); + m_notebook1302Index++; + } m_imageinfo = new wxPanel( m_notebook1302, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); wxBoxSizer* bSizer115; bSizer115 = new wxBoxSizer( wxVERTICAL ); @@ -931,6 +919,16 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx bSizer112->Add( m_ImageInfoTryFindModel, 0, wxALL, 5 ); + m_imageInfoLoadTotxt = new wxButton( m_scrolledWindow7, wxID_ANY, _("Load all to txt2img"), wxDefaultPosition, wxDefaultSize, 0 ); + m_imageInfoLoadTotxt->Enable( false ); + + bSizer112->Add( m_imageInfoLoadTotxt, 0, wxALL, 5 ); + + m_imageInfoLoadToimg2img = new wxButton( m_scrolledWindow7, wxID_ANY, _("Load all to img2img"), wxDefaultPosition, wxDefaultSize, 0 ); + m_imageInfoLoadToimg2img->Enable( false ); + + bSizer112->Add( m_imageInfoLoadToimg2img, 0, wxALL, 5 ); + bSizer119->Add( bSizer112, 0, wxEXPAND, 5 ); @@ -947,16 +945,6 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx wxBoxSizer* bSizer116; bSizer116 = new wxBoxSizer( wxHORIZONTAL ); - m_imageInfoLoadTotxt = new wxButton( m_imageinfo, wxID_ANY, _("Load all to txt2img"), wxDefaultPosition, wxDefaultSize, 0 ); - m_imageInfoLoadTotxt->Enable( false ); - - bSizer116->Add( m_imageInfoLoadTotxt, 0, wxALL, 5 ); - - m_imageInfoLoadToimg2img = new wxButton( m_imageinfo, wxID_ANY, _("Load all to img2img"), wxDefaultPosition, wxDefaultSize, 0 ); - m_imageInfoLoadToimg2img->Enable( false ); - - bSizer116->Add( m_imageInfoLoadToimg2img, 0, wxALL, 5 ); - m_imageInfoOpen = new wxFilePickerCtrl( m_imageinfo, wxID_ANY, wxEmptyString, _("Select a file"), _("Image files (*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG)|*.jpg;*.jpeg;*.png;*.JPG;*.JPEG;*.PNG"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_USE_TEXTCTRL ); m_imageInfoOpen->SetMinSize( wxSize( 200,-1 ) ); m_imageInfoOpen->SetMaxSize( wxSize( 400,-1 ) ); @@ -978,6 +966,14 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx m_imageinfo->Layout(); bSizer115->Fit( m_imageinfo ); m_notebook1302->AddPage( m_imageinfo, _("Image info"), false ); + m_notebook1302Bitmap = interrogation_png_to_wx_bitmap(); + if ( m_notebook1302Bitmap.Ok() ) + { + m_notebook1302Image = m_notebook1302Bitmap.ConvertToImage(); + m_notebook1302Images->Add( m_notebook1302Image.Scale( m_notebook1302ImageSize.GetWidth(), m_notebook1302ImageSize.GetHeight() ) ); + m_notebook1302->SetPageImage( m_notebook1302Index, m_notebook1302Index ); + m_notebook1302Index++; + } m_models_panel = new wxPanel( m_notebook1302, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, wxT("models") ); m_models_panel->SetMinSize( wxSize( 300,-1 ) ); @@ -988,21 +984,23 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx bSizer102 = new wxBoxSizer( wxVERTICAL ); m_modelTreeList = new wxTreeListCtrl( m_models_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTL_MULTIPLE ); + m_modelTreeList->SetMinSize( wxSize( -1,400 ) ); + m_modelTreeList->AppendColumn( _("Name"), wxCOL_WIDTH_AUTOSIZE, wxALIGN_LEFT, wxCOL_RESIZABLE|wxCOL_SORTABLE ); m_modelTreeList->AppendColumn( _("Size"), wxCOL_WIDTH_AUTOSIZE, wxALIGN_LEFT, wxCOL_RESIZABLE|wxCOL_SORTABLE ); m_modelTreeList->AppendColumn( _("Type"), wxCOL_WIDTH_AUTOSIZE, wxALIGN_LEFT, wxCOL_RESIZABLE|wxCOL_SORTABLE ); m_modelTreeList->AppendColumn( _("Hash"), wxCOL_WIDTH_AUTOSIZE, wxALIGN_LEFT, wxCOL_RESIZABLE ); - bSizer102->Add( m_modelTreeList, 1, wxEXPAND | wxALL, 5 ); + bSizer102->Add( m_modelTreeList, 0, wxEXPAND | wxALL, 5 ); - m_modelDetailsImageList = new wxScrolledWindow( m_models_panel, wxID_ANY, wxDefaultPosition, wxSize( -1,280 ), wxBORDER_DEFAULT|wxHSCROLL ); + m_modelDetailsImageList = new wxScrolledWindow( m_models_panel, wxID_ANY, wxDefaultPosition, wxSize( -1,280 ), wxBORDER_THEME|wxHSCROLL ); m_modelDetailsImageList->SetScrollRate( 5, 5 ); bSizer891 = new wxBoxSizer( wxHORIZONTAL ); m_modelDetailsImageList->SetSizer( bSizer891 ); m_modelDetailsImageList->Layout(); - bSizer102->Add( m_modelDetailsImageList, 1, wxEXPAND|wxALL, 5 ); + bSizer102->Add( m_modelDetailsImageList, 1, wxALL|wxEXPAND, 5 ); bSizer20->Add( bSizer102, 1, wxEXPAND, 5 ); @@ -1014,17 +1012,17 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx bSizer1001->Add( m_staticText641, 0, wxALL|wxEXPAND, 5 ); wxBoxSizer* bSizer107; - bSizer107 = new wxBoxSizer( wxVERTICAL ); - - m_model_info_link = new wxHyperlinkCtrl( m_models_panel, wxID_ANY, _("wxFB Website"), wxT("http://www.wxformbuilder.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); - m_model_info_link->Hide(); - - bSizer107->Add( m_model_info_link, 0, wxALL, 5 ); + bSizer107 = new wxBoxSizer( wxHORIZONTAL ); m_ModelFavorite = new wxCheckBox( m_models_panel, wxID_ANY, _("[F]avorite"), wxDefaultPosition, wxDefaultSize, 0 ); m_ModelFavorite->Enable( false ); - bSizer107->Add( m_ModelFavorite, 0, wxALL, 5 ); + bSizer107->Add( m_ModelFavorite, 0, wxALL|wxEXPAND, 5 ); + + m_model_info_link = new wxHyperlinkCtrl( m_models_panel, wxID_ANY, _("wxFB Website"), wxT("http://www.wxformbuilder.org"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + m_model_info_link->Hide(); + + bSizer107->Add( m_model_info_link, 0, wxALL|wxEXPAND, 5 ); bSizer1001->Add( bSizer107, 0, wxEXPAND, 5 ); @@ -1049,140 +1047,299 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx m_models_panel->Layout(); bSizer20->Fit( m_models_panel ); m_notebook1302->AddPage( m_models_panel, _("Models"), false ); + m_notebook1302Bitmap = cube_png_to_wx_bitmap(); + if ( m_notebook1302Bitmap.Ok() ) + { + m_notebook1302Image = m_notebook1302Bitmap.ConvertToImage(); + m_notebook1302Images->Add( m_notebook1302Image.Scale( m_notebook1302ImageSize.GetWidth(), m_notebook1302ImageSize.GetHeight() ) ); + m_notebook1302->SetPageImage( m_notebook1302Index, m_notebook1302Index ); + m_notebook1302Index++; + } + + bSizer138->Add( m_notebook1302, 1, wxALL|wxEXPAND, 5 ); + + m_promptAndFluxPanel = new wxScrolledWindow( m_panel31, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_THEME|wxHSCROLL|wxVSCROLL ); + m_promptAndFluxPanel->SetScrollRate( 5, 5 ); + wxBoxSizer* bSizer103; + bSizer103 = new wxBoxSizer( wxVERTICAL ); + + m_promptPanel = new wxPanel( m_promptAndFluxPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer99; + bSizer99 = new wxBoxSizer( wxVERTICAL ); + + m_staticText73 = new wxStaticText( m_promptPanel, wxID_ANY, _("Prompt:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText73->Wrap( -1 ); + bSizer99->Add( m_staticText73, 0, wxALL, 5 ); + + m_prompt = new wxTextCtrl( m_promptPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP ); + m_prompt->DragAcceptFiles( true ); + m_prompt->SetMinSize( wxSize( -1,120 ) ); + + bSizer99->Add( m_prompt, 0, wxALL|wxEXPAND, 1 ); + + m_prompt2 = new wxTextCtrl( m_promptPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP ); + m_prompt2->SetMinSize( wxSize( -1,120 ) ); + + bSizer99->Add( m_prompt2, 0, wxEXPAND|wxALL, 1 ); + + m_staticText74 = new wxStaticText( m_promptPanel, wxID_ANY, _("Negative prompt:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText74->Wrap( -1 ); + bSizer99->Add( m_staticText74, 0, wxALL, 5 ); + + m_neg_prompt2 = new wxTextCtrl( m_promptPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP ); + m_neg_prompt2->SetMinSize( wxSize( -1,120 ) ); + + bSizer99->Add( m_neg_prompt2, 0, wxEXPAND|wxALL, 1 ); + + m_neg_prompt = new wxTextCtrl( m_promptPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), wxTE_MULTILINE|wxTE_PROCESS_ENTER|wxTE_RICH|wxTE_RICH2|wxTE_WORDWRAP ); + m_neg_prompt->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); + m_neg_prompt->DragAcceptFiles( true ); + m_neg_prompt->SetMinSize( wxSize( -1,120 ) ); + + bSizer99->Add( m_neg_prompt, 0, wxALL|wxEXPAND, 1 ); + + m_staticText49 = new wxStaticText( m_promptPanel, wxID_ANY, _("Prompt presets:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); + m_staticText49->Wrap( -1 ); + bSizer99->Add( m_staticText49, 0, wxALL|wxEXPAND, 5 ); - bSizer138->Add( m_notebook1302, 1, wxEXPAND, 5 ); + wxArrayString m_promptPresetsChoices; + m_promptPresets = new wxChoice( m_promptPanel, wxID_ANY, wxDefaultPosition, wxSize( 160,-1 ), m_promptPresetsChoices, 0 ); + m_promptPresets->SetSelection( 0 ); + m_promptPresets->Enable( false ); + + bSizer99->Add( m_promptPresets, 0, wxALL|wxEXPAND, 5 ); + + + m_promptPanel->SetSizer( bSizer99 ); + m_promptPanel->Layout(); + bSizer99->Fit( m_promptPanel ); + bSizer103->Add( m_promptPanel, 0, wxEXPAND | wxALL, 5 ); + + m_fluxPanel = new wxPanel( m_promptAndFluxPanel, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxBORDER_NONE|wxTAB_TRAVERSAL ); + wxGridSizer* gSizer4; + gSizer4 = new wxGridSizer( 0, 2, 0, 0 ); + + m_bpButton25 = new wxBitmapButton( m_fluxPanel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); + + m_bpButton25->SetBitmap( interrogation_png_to_wx_bitmap() ); + m_bpButton25->SetToolTip( _("What is this?") ); + + gSizer4->Add( m_bpButton25, 0, wxALL, 5 ); + + + gSizer4->Add( 10, 1, 0, 0, 0 ); - m_rightMainPanel = new wxScrolledWindow( m_panel31, wxID_ANY, wxDefaultPosition, wxSize( 330,-1 ), wxBORDER_THEME|wxHSCROLL|wxVSCROLL ); - m_rightMainPanel->SetScrollRate( 5, 5 ); - m_rightMainPanel->Hide(); + m_staticText522 = new wxStaticText( m_fluxPanel, wxID_ANY, _("SLG scale:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); + m_staticText522->Wrap( -1 ); + m_staticText522->SetToolTip( _("skip layer guidance (SLG) scale, only for DiT models: (default: 0.0)") ); + + gSizer4->Add( m_staticText522, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + slgScale = new wxSpinCtrlDouble( m_fluxPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 7.000000, 0.5 ); + slgScale->SetDigits( 1 ); + slgScale->SetToolTip( _("skip layer guidance (SLG) scale, only for DiT models: (default: 0.0)") ); + + gSizer4->Add( slgScale, 0, wxALL, 5 ); - wxFlexGridSizer* fgSizer2; - fgSizer2 = new wxFlexGridSizer( 0, 2, 0, 0 ); - fgSizer2->SetFlexibleDirection( wxBOTH ); - fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_NONE ); + m_staticText5221 = new wxStaticText( m_fluxPanel, wxID_ANY, _("Skip layers:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); + m_staticText5221->Wrap( -1 ); + m_staticText5221->SetToolTip( _("Layers to skip for SLG steps: (default: [7,8,9])") ); - m_staticText161 = new wxStaticText( m_rightMainPanel, wxID_ANY, _("Vae:"), wxDefaultPosition, wxSize( 60,-1 ), 0 ); + gSizer4->Add( m_staticText5221, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_skipLayers = new wxTextCtrl( m_fluxPanel, wxID_ANY, _("7,8,9"), wxDefaultPosition, wxDefaultSize, 0 ); + m_skipLayers->SetToolTip( _("Layers to skip for SLG steps: (default: [7,8,9])") ); + + gSizer4->Add( m_skipLayers, 0, wxALL, 5 ); + + m_staticText52211 = new wxStaticText( m_fluxPanel, wxID_ANY, _("Skip Layer Start:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); + m_staticText52211->Wrap( -1 ); + m_staticText52211->SetToolTip( _("SLG enabling point: (default: 0.01)\nSLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END])") ); + + gSizer4->Add( m_staticText52211, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + skipLayerStart = new wxSpinCtrlDouble( m_fluxPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0.01, 1, 0.01, 0.01 ); + skipLayerStart->SetDigits( 2 ); + skipLayerStart->SetToolTip( _("SLG enabling point: (default: 0.01)\nSLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END])") ); + + gSizer4->Add( skipLayerStart, 0, wxALL, 5 ); + + m_staticText522111 = new wxStaticText( m_fluxPanel, wxID_ANY, _("Skip Layer End:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); + m_staticText522111->Wrap( -1 ); + m_staticText522111->SetToolTip( _("SLG disabling point: (default: 0.2)\nSLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END])") ); + + gSizer4->Add( m_staticText522111, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + skipLayerEnd = new wxSpinCtrlDouble( m_fluxPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0.01, 1, 0.2, 0.01 ); + skipLayerEnd->SetDigits( 2 ); + skipLayerEnd->SetToolTip( _("SLG disabling point: (default: 0.2)\nSLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END])") ); + + gSizer4->Add( skipLayerEnd, 0, wxALL, 5 ); + + m_staticText52111 = new wxStaticText( m_fluxPanel, wxID_ANY, _("Diffusion Model:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); + m_staticText52111->Wrap( -1 ); + m_staticText52111->SetToolTip( _("Diffusion models, for example FLUX") ); + + gSizer4->Add( m_staticText52111, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_filePickerDiffusionModel = new wxFilePickerCtrl( m_fluxPanel, wxID_ANY, wxEmptyString, _("Select a file"), _("Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf"), wxDefaultPosition, wxDefaultSize, wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_SMALL|wxFLP_USE_TEXTCTRL ); + gSizer4->Add( m_filePickerDiffusionModel, 0, wxALL, 5 ); + + m_cleanDiffusionModel = new wxBitmapButton( m_fluxPanel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); + + m_cleanDiffusionModel->SetBitmap( trash_png_to_wx_bitmap() ); + m_cleanDiffusionModel->SetToolTip( _("Clean models") ); + + gSizer4->Add( m_cleanDiffusionModel, 0, wxALL, 5 ); + + diffusionFlashAttn = new wxCheckBox( m_fluxPanel, wxID_ANY, _("Flash attention"), wxDefaultPosition, wxDefaultSize, 0 ); + diffusionFlashAttn->SetToolTip( _("Use flash attention in the diffusion model. This will reduce significantly the memory uage (for low vram).\nMight lower quality, since it implies converting k and v to f16.\nThis might crash if it is not supported by the backend.\n\n") ); + + gSizer4->Add( diffusionFlashAttn, 0, wxALL, 5 ); + + m_staticText52 = new wxStaticText( m_fluxPanel, wxID_ANY, _("ClipL:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); + m_staticText52->Wrap( -1 ); + gSizer4->Add( m_staticText52, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_filePickerClipL = new wxFilePickerCtrl( m_fluxPanel, wxID_ANY, wxEmptyString, _("Select a file"), _("Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf"), wxDefaultPosition, wxDefaultSize, wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_SMALL|wxFLP_USE_TEXTCTRL ); + gSizer4->Add( m_filePickerClipL, 0, wxALL, 5 ); + + m_staticText521 = new wxStaticText( m_fluxPanel, wxID_ANY, _("ClipG:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); + m_staticText521->Wrap( -1 ); + gSizer4->Add( m_staticText521, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_filePickerClipG = new wxFilePickerCtrl( m_fluxPanel, wxID_ANY, wxEmptyString, _("Select a file"), _("Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf"), wxDefaultPosition, wxDefaultSize, wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_SMALL|wxFLP_USE_TEXTCTRL ); + gSizer4->Add( m_filePickerClipG, 0, wxALL, 5 ); + + m_staticText5211 = new wxStaticText( m_fluxPanel, wxID_ANY, _("T5XXL:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); + m_staticText5211->Wrap( -1 ); + gSizer4->Add( m_staticText5211, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_filePickerT5XXL = new wxFilePickerCtrl( m_fluxPanel, wxID_ANY, wxEmptyString, _("Select a file"), _("Model files (*.safetensors;*.gguf)|*.safetensors;*.gguf"), wxDefaultPosition, wxDefaultSize, wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_SMALL|wxFLP_USE_TEXTCTRL ); + gSizer4->Add( m_filePickerT5XXL, 0, wxALL, 5 ); + + + m_fluxPanel->SetSizer( gSizer4 ); + m_fluxPanel->Layout(); + gSizer4->Fit( m_fluxPanel ); + bSizer103->Add( m_fluxPanel, 0, wxALL|wxEXPAND, 0 ); + + + m_promptAndFluxPanel->SetSizer( bSizer103 ); + m_promptAndFluxPanel->Layout(); + bSizer103->Fit( m_promptAndFluxPanel ); + bSizer138->Add( m_promptAndFluxPanel, 1, wxALL|wxEXPAND, 0 ); + + m_rightMainPanel = new wxPanel( m_panel31, wxID_ANY, wxDefaultPosition, wxSize( 280,-1 ), wxBORDER_NONE|wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer1121; + bSizer1121 = new wxBoxSizer( wxVERTICAL ); + + m_rightMainPanelScroll = new wxScrolledWindow( m_rightMainPanel, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxBORDER_THEME|wxVSCROLL ); + m_rightMainPanelScroll->SetScrollRate( 5, 5 ); + wxBoxSizer* bSizer1041; + bSizer1041 = new wxBoxSizer( wxVERTICAL ); + + bSizer1041->SetMinSize( wxSize( 200,-1 ) ); + m_staticText161 = new wxStaticText( m_rightMainPanelScroll, wxID_ANY, _("VAE"), wxDefaultPosition, wxSize( -1,-1 ), wxALIGN_CENTER_HORIZONTAL ); m_staticText161->Wrap( 0 ); - fgSizer2->Add( m_staticText161, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + m_staticText161->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); - wxBoxSizer* bSizer131; - bSizer131 = new wxBoxSizer( wxHORIZONTAL ); + bSizer1041->Add( m_staticText161, 0, wxALL|wxEXPAND, 0 ); wxArrayString m_vaeChoices; - m_vae = new wxChoice( m_rightMainPanel, wxID_ANY, wxDefaultPosition, wxSize( 120,-1 ), m_vaeChoices, 0 ); + m_vae = new wxChoice( m_rightMainPanelScroll, wxID_ANY, wxDefaultPosition, wxSize( 120,-1 ), m_vaeChoices, 0 ); m_vae->SetSelection( 0 ); m_vae->Enable( false ); - bSizer131->Add( m_vae, 1, wxALL|wxEXPAND, 5 ); + bSizer1041->Add( m_vae, 0, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer131; + bSizer131 = new wxBoxSizer( wxHORIZONTAL ); - vaeOnCpu = new wxCheckBox( m_rightMainPanel, wxID_ANY, _("CPU"), wxDefaultPosition, wxDefaultSize, 0 ); + vaeOnCpu = new wxCheckBox( m_rightMainPanelScroll, wxID_ANY, _("CPU"), wxDefaultPosition, wxDefaultSize, 0 ); vaeOnCpu->SetToolTip( _("VAE on CPU") ); - bSizer131->Add( vaeOnCpu, 0, wxALL|wxEXPAND, 5 ); + bSizer131->Add( vaeOnCpu, 1, wxALL|wxEXPAND, 5 ); + m_vae_tiling = new wxCheckBox( m_rightMainPanelScroll, wxID_ANY, _("Tiling"), wxDefaultPosition, wxDefaultSize, 0 ); + m_vae_tiling->SetToolTip( _("Process vae in tiles to reduce memory usage") ); - fgSizer2->Add( bSizer131, 1, wxEXPAND, 5 ); + bSizer131->Add( m_vae_tiling, 1, wxALL|wxEXPAND, 5 ); - m_vae_tiling = new wxCheckBox( m_rightMainPanel, wxID_ANY, _("VAE tiling"), wxDefaultPosition, wxDefaultSize, 0 ); - m_vae_tiling->SetToolTip( _("Process vae in tiles to reduce memory usage") ); - fgSizer2->Add( m_vae_tiling, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + bSizer1041->Add( bSizer131, 0, wxEXPAND, 0 ); - m_vae_decode_only = new wxCheckBox( m_rightMainPanel, wxID_ANY, _("VAE decode only"), wxDefaultPosition, wxDefaultSize, 0 ); + m_vae_decode_only = new wxCheckBox( m_rightMainPanelScroll, wxID_ANY, _("Decode only"), wxDefaultPosition, wxDefaultSize, 0 ); m_vae_decode_only->SetValue(true); m_vae_decode_only->Enable( false ); - fgSizer2->Add( m_vae_decode_only, 1, wxALL|wxEXPAND, 5 ); - - m_staticText231 = new wxStaticText( m_rightMainPanel, wxID_ANY, _("CFG:"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); - m_staticText231->Wrap( 0 ); - fgSizer2->Add( m_staticText231, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + bSizer1041->Add( m_vae_decode_only, 0, wxALL|wxEXPAND, 5 ); - m_cfg = new wxSpinCtrlDouble( m_rightMainPanel, wxID_ANY, wxT("7.0"), wxDefaultPosition, wxSize( -1,-1 ), wxSP_ARROW_KEYS, 0, 15, 0, 0.1 ); - m_cfg->SetDigits( 1 ); - fgSizer2->Add( m_cfg, 0, wxALL|wxEXPAND, 5 ); + m_staticline7 = new wxStaticLine( m_rightMainPanelScroll, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer1041->Add( m_staticline7, 0, wxEXPAND | wxALL, 5 ); - m_staticText234 = new wxStaticText( m_rightMainPanel, wxID_ANY, _("Clip skip:"), wxDefaultPosition, wxSize( 80,-1 ), 0 ); + m_staticText234 = new wxStaticText( m_rightMainPanelScroll, wxID_ANY, _("CLIP"), wxDefaultPosition, wxSize( -1,-1 ), wxALIGN_CENTER_HORIZONTAL ); m_staticText234->Wrap( 0 ); + m_staticText234->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); m_staticText234->SetToolTip( _("ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1)\n<= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x") ); - fgSizer2->Add( m_staticText234, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + bSizer1041->Add( m_staticText234, 0, wxALL|wxEXPAND, 5 ); wxBoxSizer* bSizer129; bSizer129 = new wxBoxSizer( wxHORIZONTAL ); - m_clip_skip = new wxSpinCtrl( m_rightMainPanel, wxID_ANY, wxT("0"), wxDefaultPosition, wxSize( -1,-1 ), wxSP_ARROW_KEYS, -1, 2, -1 ); + clipOnCpu = new wxCheckBox( m_rightMainPanelScroll, wxID_ANY, _("CPU"), wxDefaultPosition, wxDefaultSize, 0 ); + clipOnCpu->SetToolTip( _("CLIP on CPU") ); + + bSizer129->Add( clipOnCpu, 1, wxALL|wxEXPAND, 5 ); + + m_clip_skip = new wxSpinCtrl( m_rightMainPanelScroll, wxID_ANY, wxT("0"), wxDefaultPosition, wxSize( -1,-1 ), wxALIGN_RIGHT|wxBORDER_DEFAULT, -1, 2, -1 ); m_clip_skip->SetToolTip( _("ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1)\n<= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x") ); - bSizer129->Add( m_clip_skip, 0, wxALL|wxEXPAND, 5 ); + bSizer129->Add( m_clip_skip, 1, wxALL|wxEXPAND, 5 ); - clipOnCpu = new wxCheckBox( m_rightMainPanel, wxID_ANY, _("CPU"), wxDefaultPosition, wxDefaultSize, 0 ); - clipOnCpu->SetToolTip( _("CLIP on CPU") ); - bSizer129->Add( clipOnCpu, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + bSizer1041->Add( bSizer129, 0, wxEXPAND, 0 ); + m_staticline9 = new wxStaticLine( m_rightMainPanelScroll, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer1041->Add( m_staticline9, 0, wxEXPAND | wxALL, 5 ); - fgSizer2->Add( bSizer129, 1, wxEXPAND, 5 ); + wxBoxSizer* bSizer1031; + bSizer1031 = new wxBoxSizer( wxHORIZONTAL ); - m_staticText20 = new wxStaticText( m_rightMainPanel, wxID_ANY, _("TAESD:"), wxDefaultPosition, wxSize( 80,-1 ), 0 ); + m_staticText20 = new wxStaticText( m_rightMainPanelScroll, wxID_ANY, _("TAESD:"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); m_staticText20->Wrap( -1 ); m_staticText20->SetToolTip( _("Using Tiny AutoEncoder for fast decoding (low quality)") ); - fgSizer2->Add( m_staticText20, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + bSizer1031->Add( m_staticText20, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - wxArrayString m_taesdChoices; - m_taesd = new wxChoice( m_rightMainPanel, wxID_ANY, wxDefaultPosition, wxSize( 180,-1 ), m_taesdChoices, 0 ); + wxString m_taesdChoices[] = { _("Not selected") }; + int m_taesdNChoices = sizeof( m_taesdChoices ) / sizeof( wxString ); + m_taesd = new wxChoice( m_rightMainPanelScroll, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), m_taesdNChoices, m_taesdChoices, 0 ); m_taesd->SetSelection( 0 ); m_taesd->Enable( false ); - fgSizer2->Add( m_taesd, 1, wxALL|wxEXPAND, 5 ); + bSizer1031->Add( m_taesd, 1, wxALL|wxEXPAND, 5 ); - m_staticText15 = new wxStaticText( m_rightMainPanel, wxID_ANY, _("Batch:"), wxDefaultPosition, wxSize( 80,-1 ), 0 ); - m_staticText15->Wrap( -1 ); - m_staticText15->SetToolTip( _("number of images to generate.") ); - - fgSizer2->Add( m_staticText15, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_batch_count = new wxSpinCtrl( m_rightMainPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), wxSP_ARROW_KEYS, 1, 1000, 1 ); - m_batch_count->SetToolTip( _("number of images to generate.") ); - - fgSizer2->Add( m_batch_count, 0, wxALL|wxEXPAND, 5 ); - - m_staticText163 = new wxStaticText( m_rightMainPanel, wxID_ANY, _("Sampler:"), wxDefaultPosition, wxSize( 80,-1 ), 0 ); - m_staticText163->Wrap( 0 ); - m_staticText163->SetToolTip( _("sampling method (default: \"euler_a\")") ); - - fgSizer2->Add( m_staticText163, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - wxArrayString m_samplerChoices; - m_sampler = new wxChoice( m_rightMainPanel, wxID_ANY, wxDefaultPosition, wxSize( 180,-1 ), m_samplerChoices, 0 ); - m_sampler->SetSelection( 0 ); - m_sampler->SetToolTip( _("sampling method (default: \"euler_a\")") ); - - fgSizer2->Add( m_sampler, 0, wxALL|wxEXPAND, 5 ); - - m_schedulertext = new wxStaticText( m_rightMainPanel, wxID_ANY, _("Scheduler:"), wxDefaultPosition, wxSize( 80,-1 ), 0 ); - m_schedulertext->Wrap( -1 ); - fgSizer2->Add( m_schedulertext, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - wxArrayString m_schedulerChoices; - m_scheduler = new wxChoice( m_rightMainPanel, wxID_ANY, wxDefaultPosition, wxSize( 180,-1 ), m_schedulerChoices, 0 ); - m_scheduler->SetSelection( 0 ); - m_scheduler->SetToolTip( _("Weight type. If not specified, the default is the type of the weight file.") ); + bSizer1041->Add( bSizer1031, 0, wxEXPAND, 0 ); - fgSizer2->Add( m_scheduler, 0, wxALL|wxEXPAND, 5 ); + m_staticline8 = new wxStaticLine( m_rightMainPanelScroll, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer1041->Add( m_staticline8, 0, wxEXPAND | wxALL, 5 ); - m_staticText233 = new wxStaticText( m_rightMainPanel, wxID_ANY, _("Seed:"), wxDefaultPosition, wxSize( 80,-1 ), 0 ); + m_staticText233 = new wxStaticText( m_rightMainPanelScroll, wxID_ANY, _("SEED"), wxDefaultPosition, wxSize( -1,-1 ), wxALIGN_CENTER_HORIZONTAL ); m_staticText233->Wrap( 0 ); - fgSizer2->Add( m_staticText233, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + m_staticText233->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); + + bSizer1041->Add( m_staticText233, 0, wxALL|wxEXPAND, 0 ); wxBoxSizer* bSizer128; bSizer128 = new wxBoxSizer( wxHORIZONTAL ); - m_seed = new wxSpinCtrl( m_rightMainPanel, wxID_ANY, wxT("-1"), wxDefaultPosition, wxSize( -1,-1 ), 0, -1, 999999999, -1 ); - bSizer128->Add( m_seed, 0, wxALL|wxEXPAND, 5 ); + m_seed = new wxSpinCtrl( m_rightMainPanelScroll, wxID_ANY, wxT("-1"), wxDefaultPosition, wxSize( -1,-1 ), wxALIGN_RIGHT|wxBORDER_DEFAULT, -1, 999999999, -1 ); + bSizer128->Add( m_seed, 1, wxALL|wxEXPAND, 5 ); - m_random_seed = new wxBitmapButton( m_rightMainPanel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); + m_random_seed = new wxBitmapButton( m_rightMainPanelScroll, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); m_random_seed->SetBitmap( dice_four_png_to_wx_bitmap() ); m_random_seed->SetToolTip( _("Generate a random seed") ); @@ -1190,50 +1347,88 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx bSizer128->Add( m_random_seed, 0, wxALIGN_CENTER_VERTICAL, 5 ); - fgSizer2->Add( bSizer128, 1, wxEXPAND, 5 ); + bSizer1041->Add( bSizer128, 0, wxEXPAND, 0 ); - m_staticText14 = new wxStaticText( m_rightMainPanel, wxID_ANY, _("Steps:"), wxDefaultPosition, wxSize( 80,-1 ), 0 ); - m_staticText14->Wrap( -1 ); - m_staticText14->SetToolTip( _("number of sample steps (default: 20)") ); + m_staticText75 = new wxStaticText( m_rightMainPanelScroll, wxID_ANY, _("RESOLUTIONS"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER_HORIZONTAL ); + m_staticText75->Wrap( -1 ); + m_staticText75->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); - fgSizer2->Add( m_staticText14, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + bSizer1041->Add( m_staticText75, 0, wxALL|wxEXPAND, 5 ); - m_steps = new wxSpinCtrl( m_rightMainPanel, wxID_ANY, wxT("20"), wxDefaultPosition, wxSize( 180,-1 ), 0, 0, 100, 20 ); - m_steps->SetToolTip( _("number of sample steps (default: 20)") ); + m_button7 = new wxBitmapButton( m_rightMainPanelScroll, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); - fgSizer2->Add( m_steps, 0, wxALL|wxEXPAND, 5 ); + m_button7->SetBitmap( replace_png_to_wx_bitmap() ); + m_button7->SetToolTip( _("Swap the resolution") ); - m_staticText237 = new wxStaticText( m_rightMainPanel, wxID_ANY, _("Width:"), wxDefaultPosition, wxSize( 80,-1 ), 0 ); - m_staticText237->Wrap( 0 ); - fgSizer2->Add( m_staticText237, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + bSizer1041->Add( m_button7, 0, wxEXPAND|wxALL, 5 ); + + wxBoxSizer* bSizer10011; + bSizer10011 = new wxBoxSizer( wxHORIZONTAL ); + + m_width = new wxTextCtrl( m_rightMainPanelScroll, wxID_ANY, _("512"), wxDefaultPosition, wxDefaultSize, wxTE_CENTER|wxTE_NO_VSCROLL ); + #ifdef __WXGTK__ + if ( !m_width->HasFlag( wxTE_MULTILINE ) ) + { + m_width->SetMaxLength( 6 ); + } + #else + m_width->SetMaxLength( 6 ); + #endif + bSizer10011->Add( m_width, 1, wxALL|wxEXPAND, 5 ); + + m_height = new wxTextCtrl( m_rightMainPanelScroll, wxID_ANY, _("512"), wxDefaultPosition, wxDefaultSize, wxTE_CENTER|wxTE_NO_VSCROLL ); + #ifdef __WXGTK__ + if ( !m_height->HasFlag( wxTE_MULTILINE ) ) + { + m_height->SetMaxLength( 6 ); + } + #else + m_height->SetMaxLength( 6 ); + #endif + bSizer10011->Add( m_height, 1, wxALL|wxEXPAND, 5 ); + + + bSizer1041->Add( bSizer10011, 0, wxEXPAND|wxALL, 2 ); + + wxString m_sd15ResChoices[] = { _("Small resolutions"), _("640x384"), _("512x512"), _("512x768") }; + int m_sd15ResNChoices = sizeof( m_sd15ResChoices ) / sizeof( wxString ); + m_sd15Res = new wxChoice( m_rightMainPanelScroll, wxID_ANY, wxDefaultPosition, wxSize( 160,-1 ), m_sd15ResNChoices, m_sd15ResChoices, 0 ); + m_sd15Res->SetSelection( 0 ); + m_sd15Res->SetToolTip( _("Lower resolutions for SD1.x") ); - m_width = new wxSpinCtrl( m_rightMainPanel, wxID_ANY, wxT("512"), wxDefaultPosition, wxSize( 142,-1 ), wxSP_ARROW_KEYS, 256, 2048, 512 ); - fgSizer2->Add( m_width, 0, wxALL|wxEXPAND, 5 ); + bSizer1041->Add( m_sd15Res, 0, wxALL|wxEXPAND, 5 ); - m_staticText239 = new wxStaticText( m_rightMainPanel, wxID_ANY, _("Height:"), wxDefaultPosition, wxSize( 80,-1 ), 0 ); - m_staticText239->Wrap( 0 ); - fgSizer2->Add( m_staticText239, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + wxString m_sdXlresChoices[] = { _("Large resolutions"), _("1024x1024"), _("1152x896"), _("1216x832"), _("1344x768"), _("1536x640") }; + int m_sdXlresNChoices = sizeof( m_sdXlresChoices ) / sizeof( wxString ); + m_sdXlres = new wxChoice( m_rightMainPanelScroll, wxID_ANY, wxDefaultPosition, wxSize( 160,-1 ), m_sdXlresNChoices, m_sdXlresChoices, 0 ); + m_sdXlres->SetSelection( 0 ); + m_sdXlres->SetToolTip( _("Higher resolutions for FLUX/SDXL/SD3.5") ); - wxBoxSizer* bSizer127; - bSizer127 = new wxBoxSizer( wxHORIZONTAL ); + bSizer1041->Add( m_sdXlres, 0, wxALL|wxEXPAND, 5 ); - m_height = new wxSpinCtrl( m_rightMainPanel, wxID_ANY, wxT("512"), wxDefaultPosition, wxSize( 142,-1 ), wxSP_ARROW_KEYS, 256, 2048, 509 ); - bSizer127->Add( m_height, 0, wxALL|wxEXPAND, 5 ); + m_staticline31 = new wxStaticLine( m_rightMainPanelScroll, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer1041->Add( m_staticline31, 0, wxEXPAND | wxALL, 5 ); - m_button7 = new wxBitmapButton( m_rightMainPanel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); + wxString m_preset_listChoices[] = { _("No presets") }; + int m_preset_listNChoices = sizeof( m_preset_listChoices ) / sizeof( wxString ); + m_preset_list = new wxChoice( m_rightMainPanelScroll, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_preset_listNChoices, m_preset_listChoices, 0 ); + m_preset_list->SetSelection( 0 ); + m_preset_list->Enable( false ); - m_button7->SetBitmap( replace_png_to_wx_bitmap() ); - m_button7->SetToolTip( _("Swap the resolution") ); + bSizer1041->Add( m_preset_list, 0, wxALL|wxEXPAND, 5 ); - bSizer127->Add( m_button7, 0, wxALIGN_CENTER_VERTICAL, 5 ); + wxBoxSizer* bSizer126; + bSizer126 = new wxBoxSizer( wxHORIZONTAL ); + m_load_preset = new wxBitmapButton( m_rightMainPanelScroll, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); - fgSizer2->Add( bSizer127, 1, wxEXPAND, 0 ); + m_load_preset->SetBitmap( file_import_png_to_wx_bitmap() ); + m_load_preset->SetToolTip( _("Load the selected preset") ); + m_load_preset->SetHelpText( _("Load a selected preset. The preset settings will over write the current generation settings") ); - wxBoxSizer* bSizer126; - bSizer126 = new wxBoxSizer( wxHORIZONTAL ); + bSizer126->Add( m_load_preset, 0, wxALL, 5 ); - m_save_preset = new wxBitmapButton( m_rightMainPanel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); + m_save_preset = new wxBitmapButton( m_rightMainPanelScroll, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); m_save_preset->SetBitmap( disk_png_to_wx_bitmap() ); m_save_preset->SetToolTip( _("Save the current settings into preset") ); @@ -1241,82 +1436,99 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx bSizer126->Add( m_save_preset, 0, wxALL, 5 ); - m_load_preset = new wxBitmapButton( m_rightMainPanel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); + m_delete_preset = new wxBitmapButton( m_rightMainPanelScroll, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); - m_load_preset->SetBitmap( file_import_png_to_wx_bitmap() ); - m_load_preset->SetToolTip( _("Load the selected preset") ); - m_load_preset->SetHelpText( _("Load a selected preset. The preset settings will over write the current generation settings") ); + m_delete_preset->SetBitmap( trash_png_to_wx_bitmap() ); + m_delete_preset->Enable( false ); - bSizer126->Add( m_load_preset, 0, wxALL, 5 ); + bSizer126->Add( m_delete_preset, 0, wxALL, 5 ); - fgSizer2->Add( bSizer126, 0, wxALIGN_RIGHT, 0 ); + bSizer1041->Add( bSizer126, 0, wxEXPAND, 0 ); - wxBoxSizer* bSizer91; - bSizer91 = new wxBoxSizer( wxHORIZONTAL ); + m_staticline3 = new wxStaticLine( m_rightMainPanelScroll, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer1041->Add( m_staticline3, 0, wxEXPAND | wxALL, 5 ); - wxArrayString m_preset_listChoices; - m_preset_list = new wxChoice( m_rightMainPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_preset_listChoices, 0 ); - m_preset_list->SetSelection( 0 ); - m_preset_list->Enable( false ); + wxBoxSizer* bSizer982; + bSizer982 = new wxBoxSizer( wxVERTICAL ); - bSizer91->Add( m_preset_list, 1, wxALL|wxEXPAND, 5 ); + wxArrayString m_samplerChoices; + m_sampler = new wxChoice( m_rightMainPanelScroll, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), m_samplerChoices, 0 ); + m_sampler->SetSelection( 0 ); + m_sampler->SetToolTip( _("sampling method (default: \"euler_a\")") ); - m_delete_preset = new wxBitmapButton( m_rightMainPanel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); + bSizer982->Add( m_sampler, 1, wxALL|wxEXPAND, 5 ); - m_delete_preset->SetBitmap( trash_png_to_wx_bitmap() ); - m_delete_preset->Enable( false ); + wxArrayString m_schedulerChoices; + m_scheduler = new wxChoice( m_rightMainPanelScroll, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), m_schedulerChoices, 0 ); + m_scheduler->SetSelection( 0 ); + m_scheduler->SetToolTip( _("Weight type. If not specified, the default is the type of the weight file.") ); - bSizer91->Add( m_delete_preset, 0, wxALL, 5 ); + bSizer982->Add( m_scheduler, 1, wxALL|wxEXPAND, 5 ); - fgSizer2->Add( bSizer91, 1, wxEXPAND, 5 ); + bSizer1041->Add( bSizer982, 0, wxEXPAND, 0 ); - m_staticText46 = new wxStaticText( m_rightMainPanel, wxID_ANY, _("Low res.:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); - m_staticText46->Wrap( -1 ); - m_staticText46->SetToolTip( _("Lower resolutions for SD1.x") ); + wxBoxSizer* bSizer101; + bSizer101 = new wxBoxSizer( wxHORIZONTAL ); - fgSizer2->Add( m_staticText46, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + m_staticText14 = new wxStaticText( m_rightMainPanelScroll, wxID_ANY, _("Steps:"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_staticText14->Wrap( -1 ); + m_staticText14->SetToolTip( _("number of sample steps (default: 20)") ); - wxString m_sd15ResChoices[] = { _("Select one"), _("640x384"), _("512x512"), _("512x768") }; - int m_sd15ResNChoices = sizeof( m_sd15ResChoices ) / sizeof( wxString ); - m_sd15Res = new wxChoice( m_rightMainPanel, wxID_ANY, wxDefaultPosition, wxSize( 160,-1 ), m_sd15ResNChoices, m_sd15ResChoices, 0 ); - m_sd15Res->SetSelection( 0 ); - m_sd15Res->SetToolTip( _("Lower resolutions for SD1.x") ); + bSizer101->Add( m_staticText14, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - fgSizer2->Add( m_sd15Res, 0, wxALL|wxEXPAND, 5 ); + m_steps = new wxSpinCtrl( m_rightMainPanelScroll, wxID_ANY, wxT("20"), wxDefaultPosition, wxSize( -1,-1 ), wxALIGN_RIGHT|wxBORDER_DEFAULT, 0, 100, 20 ); + m_steps->SetToolTip( _("number of sample steps (default: 20)") ); - m_staticText461 = new wxStaticText( m_rightMainPanel, wxID_ANY, _("High Res.:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); - m_staticText461->Wrap( -1 ); - m_staticText461->SetToolTip( _("Higher resolutions for FLUX/SDXL/SD3.5") ); + bSizer101->Add( m_steps, 1, wxALL|wxEXPAND, 5 ); - fgSizer2->Add( m_staticText461, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - wxString m_sdXlresChoices[] = { _("Select one"), _("1024x1024"), _("1152x896"), _("1216x832"), _("1344x768"), _("1536x640") }; - int m_sdXlresNChoices = sizeof( m_sdXlresChoices ) / sizeof( wxString ); - m_sdXlres = new wxChoice( m_rightMainPanel, wxID_ANY, wxDefaultPosition, wxSize( 160,-1 ), m_sdXlresNChoices, m_sdXlresChoices, 0 ); - m_sdXlres->SetSelection( 0 ); - m_sdXlres->SetToolTip( _("Higher resolutions for FLUX/SDXL/SD3.5") ); + bSizer1041->Add( bSizer101, 0, wxEXPAND, 0 ); - fgSizer2->Add( m_sdXlres, 0, wxALL|wxEXPAND, 5 ); + wxBoxSizer* bSizer990; + bSizer990 = new wxBoxSizer( wxHORIZONTAL ); - m_staticText49 = new wxStaticText( m_rightMainPanel, wxID_ANY, _("Prompt presets:"), wxDefaultPosition, wxSize( 120,-1 ), 0 ); - m_staticText49->Wrap( -1 ); - fgSizer2->Add( m_staticText49, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + m_staticText15 = new wxStaticText( m_rightMainPanelScroll, wxID_ANY, _("Batch:"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_staticText15->Wrap( -1 ); + m_staticText15->SetToolTip( _("number of images to generate.") ); + + bSizer990->Add( m_staticText15, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_batch_count = new wxSpinCtrl( m_rightMainPanelScroll, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), wxALIGN_RIGHT|wxBORDER_DEFAULT, 1, 1000, 1 ); + m_batch_count->SetToolTip( _("number of images to generate.") ); + + bSizer990->Add( m_batch_count, 1, wxALL|wxEXPAND, 5 ); - wxArrayString m_promptPresetsChoices; - m_promptPresets = new wxChoice( m_rightMainPanel, wxID_ANY, wxDefaultPosition, wxSize( 160,-1 ), m_promptPresetsChoices, 0 ); - m_promptPresets->SetSelection( 0 ); - m_promptPresets->Enable( false ); - fgSizer2->Add( m_promptPresets, 0, wxALL|wxEXPAND, 5 ); + bSizer1041->Add( bSizer990, 0, wxEXPAND, 0 ); + + wxBoxSizer* bSizer1021; + bSizer1021 = new wxBoxSizer( wxHORIZONTAL ); + + m_staticText231 = new wxStaticText( m_rightMainPanelScroll, wxID_ANY, _("CFG:"), wxDefaultPosition, wxSize( -1,-1 ), 0 ); + m_staticText231->Wrap( 0 ); + bSizer1021->Add( m_staticText231, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_cfg = new wxSpinCtrlDouble( m_rightMainPanelScroll, wxID_ANY, wxT("7.0"), wxDefaultPosition, wxSize( -1,-1 ), wxALIGN_RIGHT|wxBORDER_DEFAULT, 0, 30, 0, 0.1 ); + m_cfg->SetDigits( 1 ); + bSizer1021->Add( m_cfg, 1, wxALL|wxEXPAND, 5 ); - m_queue = new wxButton( m_rightMainPanel, wxID_ANY, _("Queue"), wxDefaultPosition, wxDefaultSize, 0 ); + + bSizer1041->Add( bSizer1021, 0, wxEXPAND, 0 ); + + + m_rightMainPanelScroll->SetSizer( bSizer1041 ); + m_rightMainPanelScroll->Layout(); + bSizer1041->Fit( m_rightMainPanelScroll ); + bSizer1121->Add( m_rightMainPanelScroll, 1, wxALL|wxEXPAND, 5 ); + + m_queue = new wxButton( m_rightMainPanel, wxID_ANY, _("Queue"), wxDefaultPosition, wxSize( -1,42 ), 0 ); m_queue->SetBitmap( play_png_to_wx_bitmap() ); m_queue->Enable( false ); - fgSizer2->Add( m_queue, 1, wxALL, 5 ); + bSizer1121->Add( m_queue, 0, wxALL, 5 ); wxString m_serverChoices[] = { _("local") }; int m_serverNChoices = sizeof( m_serverChoices ) / sizeof( wxString ); @@ -1327,9 +1539,9 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx fgSizer2->Add( m_server, 0, wxALL|wxEXPAND, 5 ); - m_rightMainPanel->SetSizer( fgSizer2 ); + m_rightMainPanel->SetSizer( bSizer1121 ); m_rightMainPanel->Layout(); - bSizer138->Add( m_rightMainPanel, 0, wxEXPAND | wxALL, 5 ); + bSizer138->Add( m_rightMainPanel, 0, wxEXPAND, 5 ); m_panel31->SetSizer( bSizer138 ); @@ -1346,7 +1558,7 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx this->SetSizer( sizer0001 ); this->Layout(); - m_statusBar166 = this->CreateStatusBar( 2, wxSTB_DEFAULT_STYLE, wxID_ANY ); + m_statusBar166 = this->CreateStatusBar( 3, wxSTB_SIZEGRIP, wxID_ANY ); this->Centre( wxBOTH ); @@ -1366,28 +1578,57 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx m_joblist->Connect( wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, wxDataViewEventHandler( mainUI::OnJobListItemActivated ), NULL, this ); m_joblist->Connect( wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, wxDataViewEventHandler( mainUI::onContextMenu ), NULL, this ); m_joblist->Connect( wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEventHandler( mainUI::OnJobListItemSelection ), NULL, this ); + m_joblist->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( mainUI::OnJobListItemKeyDown ), NULL, this ); m_text2img_panel->Connect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::onTxt2ImgFileDrop ), NULL, this ); - m_prompt->Connect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::onTxt2ImgFileDrop ), NULL, this ); - m_prompt->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnPromptText ), NULL, this ); - m_neg_prompt->Connect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::onTxt2ImgFileDrop ), NULL, this ); - m_neg_prompt->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnNegPromptText ), NULL, this ); - m_bpButton25->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onWhatIsThis ), NULL, this ); - m_staticText70->Connect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::onTxt2ImgFileDrop ), NULL, this ); - m_filePickerDiffusionModel->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerDiffusionModel ), NULL, this ); - diffusionFlashAttn->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( mainUI::onDiffusionFlashAttn ), NULL, this ); - m_cleanDiffusionModel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onCleanDiffusionModel ), NULL, this ); - m_filePickerClipL->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerClipL ), NULL, this ); - m_filePickerClipG->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerClipG ), NULL, this ); - m_filePickerT5XXL->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerT5XXL ), NULL, this ); m_controlnetImageOpen->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::OnControlnetImageOpen ), NULL, this ); cnOnCpu->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( mainUI::onCnOnCpu ), NULL, this ); m_controlnetImagePreviewButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnControlnetImagePreviewButton ), NULL, this ); m_controlnetImageDelete->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnControlnetImageDelete ), NULL, this ); m_image2image_panel->Connect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::Onimg2imgDropFile ), NULL, this ); m_img2imgDiffusionPreview->Connect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::Onimg2imgDropFile ), NULL, this ); - m_img2img_preview->Connect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::Onimg2imgDropFile ), NULL, this ); - m_prompt2->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnPromptText ), NULL, this ); - m_neg_prompt2->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnNegPromptText ), NULL, this ); + m_inpaintBrushSizeSlider->Connect( wxEVT_SCROLL_TOP, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Connect( wxEVT_SCROLL_BOTTOM, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Connect( wxEVT_SCROLL_LINEUP, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Connect( wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Connect( wxEVT_SCROLL_PAGEUP, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Connect( wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Connect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Connect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Connect( wxEVT_SCROLL_TOP, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Connect( wxEVT_SCROLL_BOTTOM, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Connect( wxEVT_SCROLL_LINEUP, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Connect( wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Connect( wxEVT_SCROLL_PAGEUP, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Connect( wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Connect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Connect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintSaveMask->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInpaintSaveMask ), NULL, this ); + m_inpaintInvert->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInpaintInvertMask ), NULL, this ); + m_inpaintResizeToSdSize->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInpaintResizeImage ), NULL, this ); + m_inpaintClearMask->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInpaintCleanMask ), NULL, this ); + m_inpaintOpenMask->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::OnInpaintMaskOpen ), NULL, this ); + m_inPaintBrushStyleCircle->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInPaintBrushStyleToggle ), NULL, this ); + m_inPaintBrushStyleSquare->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInPaintBrushStyleToggle ), NULL, this ); + m_inPaintBrushStyleTriangle->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInPaintBrushStyleToggle ), NULL, this ); + m_img2imPanel->Connect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::Onimg2imgDropFile ), NULL, this ); + m_img2imPanel->Connect( wxEVT_ENTER_WINDOW, wxMouseEventHandler( mainUI::OnImg2ImgMouseEnter ), NULL, this ); + m_img2imPanel->Connect( wxEVT_ERASE_BACKGROUND, wxEraseEventHandler( mainUI::OnImg2ImgEraseBackground ), NULL, this ); + m_img2imPanel->Connect( wxEVT_LEAVE_WINDOW, wxMouseEventHandler( mainUI::OnImg2ImgMouseLeave ), NULL, this ); + m_img2imPanel->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( mainUI::OnImg2ImgMouseDown ), NULL, this ); + m_img2imPanel->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( mainUI::OnImg2ImgMouseUp ), NULL, this ); + m_img2imPanel->Connect( wxEVT_MOTION, wxMouseEventHandler( mainUI::OnImg2ImgMouseMotion ), NULL, this ); + m_img2imPanel->Connect( wxEVT_MOUSEWHEEL, wxMouseEventHandler( mainUI::OnImg2ImgMouseWheel ), NULL, this ); + m_img2imPanel->Connect( wxEVT_PAINT, wxPaintEventHandler( mainUI::OnImg2ImgPaint ), NULL, this ); + m_img2imPanel->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( mainUI::OnImg2ImgRMouseDown ), NULL, this ); + m_img2imPanel->Connect( wxEVT_RIGHT_UP, wxMouseEventHandler( mainUI::OnImg2ImgRMouseUp ), NULL, this ); + m_img2imPanel->Connect( wxEVT_SIZE, wxSizeEventHandler( mainUI::OnImg2ImgSize ), NULL, this ); + m_inpaintCanvasTop->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( mainUI::OnInpaintCanvasResizeApply ), NULL, this ); + m_inpaintCanvasRight->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( mainUI::OnInpaintCanvasResizeApply ), NULL, this ); + m_inpaintCanvasBottom->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( mainUI::OnInpaintCanvasResizeApply ), NULL, this ); + m_inpaintCanvasLeft->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( mainUI::OnInpaintCanvasResizeApply ), NULL, this ); + m_inpaintCanvasResizeApply->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInpaintCanvasResizeApply ), NULL, this ); m_img2imgOpen->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::OnImageOpenFileChanged ), NULL, this ); m_img2im_preview_img->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnImg2ImgPreviewButton ), NULL, this ); m_delete_initial_img->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnDeleteInitialImage ), NULL, this ); @@ -1407,27 +1648,42 @@ mainUI::mainUI( wxWindow* parent, wxWindowID id, const wxString& title, const wx m_imageInfoLoadToimg2img->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnImageInfoLoadImg2img ), NULL, this ); m_imageInfoOpen->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::OnImageInfoOpen ), NULL, this ); m_cleanImageInfo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnCleanImageInfo ), NULL, this ); + m_modelTreeList->Connect( wxEVT_TREELIST_COLUMN_SORTED, wxTreeListEventHandler( mainUI::OnDataModelTreeColSorted ), NULL, this ); m_modelTreeList->Connect( wxEVT_TREELIST_ITEM_ACTIVATED, wxTreeListEventHandler( mainUI::OnDataModelTreeActivated ), NULL, this ); m_modelTreeList->Connect( wxEVT_TREELIST_ITEM_CONTEXT_MENU, wxTreeListEventHandler( mainUI::OnDataModelTreeContextMenu ), NULL, this ); + m_modelTreeList->Connect( wxEVT_TREELIST_ITEM_EXPANDED, wxTreeListEventHandler( mainUI::OnDataModelTreeExpanded ), NULL, this ); + m_modelTreeList->Connect( wxEVT_TREELIST_ITEM_EXPANDING, wxTreeListEventHandler( mainUI::OnDataModelTreeExpanding ), NULL, this ); m_modelTreeList->Connect( wxEVT_TREELIST_SELECTION_CHANGED, wxTreeListEventHandler( mainUI::OnDataModelTreeSelected ), NULL, this ); m_ModelFavorite->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( mainUI::OnModelFavoriteChange ), NULL, this ); + m_model_details_description->Connect( wxEVT_COMMAND_HTML_LINK_CLICKED, wxHtmlLinkEventHandler( mainUI::OnHtmlLinkClicked ), NULL, this ); + m_prompt->Connect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::onTxt2ImgFileDrop ), NULL, this ); + m_prompt->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnPromptText ), NULL, this ); + m_prompt2->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnPromptText ), NULL, this ); + m_neg_prompt2->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnNegPromptText ), NULL, this ); + m_neg_prompt->Connect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::onTxt2ImgFileDrop ), NULL, this ); + m_neg_prompt->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnNegPromptText ), NULL, this ); + m_bpButton25->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onWhatIsThis ), NULL, this ); + m_filePickerDiffusionModel->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerDiffusionModel ), NULL, this ); + m_cleanDiffusionModel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onCleanDiffusionModel ), NULL, this ); + diffusionFlashAttn->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( mainUI::onDiffusionFlashAttn ), NULL, this ); + m_filePickerClipL->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerClipL ), NULL, this ); + m_filePickerClipG->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerClipG ), NULL, this ); + m_filePickerT5XXL->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerT5XXL ), NULL, this ); m_vae->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onVaeSelect ), NULL, this ); vaeOnCpu->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( mainUI::onVAEOnCpu ), NULL, this ); clipOnCpu->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( mainUI::onClipOnCpu ), NULL, this ); - m_sampler->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onSamplerSelect ), NULL, this ); - m_scheduler->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onTypeSelect ), NULL, this ); m_random_seed->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onRandomGenerateButton ), NULL, this ); - m_width->Connect( wxEVT_COMMAND_SPINCTRL_UPDATED, wxSpinEventHandler( mainUI::OnWHChange ), NULL, this ); + m_button7->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onResolutionSwap ), NULL, this ); m_width->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnWHChange ), NULL, this ); - m_height->Connect( wxEVT_COMMAND_SPINCTRL_UPDATED, wxSpinEventHandler( mainUI::OnWHChange ), NULL, this ); m_height->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnWHChange ), NULL, this ); - m_button7->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onResolutionSwap ), NULL, this ); - m_save_preset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onSavePreset ), NULL, this ); - m_load_preset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onLoadPreset ), NULL, this ); - m_preset_list->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onSelectPreset ), NULL, this ); - m_delete_preset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onDeletePreset ), NULL, this ); m_sd15Res->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onSd15ResSelect ), NULL, this ); m_sdXlres->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onSdXLResSelect ), NULL, this ); + m_preset_list->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onSelectPreset ), NULL, this ); + m_load_preset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onLoadPreset ), NULL, this ); + m_save_preset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onSavePreset ), NULL, this ); + m_delete_preset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onDeletePreset ), NULL, this ); + m_sampler->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onSamplerSelect ), NULL, this ); + m_scheduler->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onTypeSelect ), NULL, this ); m_queue->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onGenerate ), NULL, this ); m_server->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::OnServerSelect ), NULL, this ); } @@ -1450,28 +1706,57 @@ mainUI::~mainUI() m_joblist->Disconnect( wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, wxDataViewEventHandler( mainUI::OnJobListItemActivated ), NULL, this ); m_joblist->Disconnect( wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, wxDataViewEventHandler( mainUI::onContextMenu ), NULL, this ); m_joblist->Disconnect( wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEventHandler( mainUI::OnJobListItemSelection ), NULL, this ); + m_joblist->Disconnect( wxEVT_KEY_DOWN, wxKeyEventHandler( mainUI::OnJobListItemKeyDown ), NULL, this ); m_text2img_panel->Disconnect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::onTxt2ImgFileDrop ), NULL, this ); - m_prompt->Disconnect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::onTxt2ImgFileDrop ), NULL, this ); - m_prompt->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnPromptText ), NULL, this ); - m_neg_prompt->Disconnect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::onTxt2ImgFileDrop ), NULL, this ); - m_neg_prompt->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnNegPromptText ), NULL, this ); - m_bpButton25->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onWhatIsThis ), NULL, this ); - m_staticText70->Disconnect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::onTxt2ImgFileDrop ), NULL, this ); - m_filePickerDiffusionModel->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerDiffusionModel ), NULL, this ); - diffusionFlashAttn->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( mainUI::onDiffusionFlashAttn ), NULL, this ); - m_cleanDiffusionModel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onCleanDiffusionModel ), NULL, this ); - m_filePickerClipL->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerClipL ), NULL, this ); - m_filePickerClipG->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerClipG ), NULL, this ); - m_filePickerT5XXL->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerT5XXL ), NULL, this ); m_controlnetImageOpen->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::OnControlnetImageOpen ), NULL, this ); cnOnCpu->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( mainUI::onCnOnCpu ), NULL, this ); m_controlnetImagePreviewButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnControlnetImagePreviewButton ), NULL, this ); m_controlnetImageDelete->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnControlnetImageDelete ), NULL, this ); m_image2image_panel->Disconnect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::Onimg2imgDropFile ), NULL, this ); m_img2imgDiffusionPreview->Disconnect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::Onimg2imgDropFile ), NULL, this ); - m_img2img_preview->Disconnect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::Onimg2imgDropFile ), NULL, this ); - m_prompt2->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnPromptText ), NULL, this ); - m_neg_prompt2->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnNegPromptText ), NULL, this ); + m_inpaintBrushSizeSlider->Disconnect( wxEVT_SCROLL_TOP, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Disconnect( wxEVT_SCROLL_BOTTOM, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Disconnect( wxEVT_SCROLL_LINEUP, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Disconnect( wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Disconnect( wxEVT_SCROLL_PAGEUP, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Disconnect( wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Disconnect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Disconnect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintBrushSizeSlider->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( mainUI::OnInpaintBrushSizeSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Disconnect( wxEVT_SCROLL_TOP, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Disconnect( wxEVT_SCROLL_BOTTOM, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Disconnect( wxEVT_SCROLL_LINEUP, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Disconnect( wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Disconnect( wxEVT_SCROLL_PAGEUP, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Disconnect( wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Disconnect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Disconnect( wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintZoomSlider->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( mainUI::OnInpaintZoomSliderScroll ), NULL, this ); + m_inpaintSaveMask->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInpaintSaveMask ), NULL, this ); + m_inpaintInvert->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInpaintInvertMask ), NULL, this ); + m_inpaintResizeToSdSize->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInpaintResizeImage ), NULL, this ); + m_inpaintClearMask->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInpaintCleanMask ), NULL, this ); + m_inpaintOpenMask->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::OnInpaintMaskOpen ), NULL, this ); + m_inPaintBrushStyleCircle->Disconnect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInPaintBrushStyleToggle ), NULL, this ); + m_inPaintBrushStyleSquare->Disconnect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInPaintBrushStyleToggle ), NULL, this ); + m_inPaintBrushStyleTriangle->Disconnect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInPaintBrushStyleToggle ), NULL, this ); + m_img2imPanel->Disconnect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::Onimg2imgDropFile ), NULL, this ); + m_img2imPanel->Disconnect( wxEVT_ENTER_WINDOW, wxMouseEventHandler( mainUI::OnImg2ImgMouseEnter ), NULL, this ); + m_img2imPanel->Disconnect( wxEVT_ERASE_BACKGROUND, wxEraseEventHandler( mainUI::OnImg2ImgEraseBackground ), NULL, this ); + m_img2imPanel->Disconnect( wxEVT_LEAVE_WINDOW, wxMouseEventHandler( mainUI::OnImg2ImgMouseLeave ), NULL, this ); + m_img2imPanel->Disconnect( wxEVT_LEFT_DOWN, wxMouseEventHandler( mainUI::OnImg2ImgMouseDown ), NULL, this ); + m_img2imPanel->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( mainUI::OnImg2ImgMouseUp ), NULL, this ); + m_img2imPanel->Disconnect( wxEVT_MOTION, wxMouseEventHandler( mainUI::OnImg2ImgMouseMotion ), NULL, this ); + m_img2imPanel->Disconnect( wxEVT_MOUSEWHEEL, wxMouseEventHandler( mainUI::OnImg2ImgMouseWheel ), NULL, this ); + m_img2imPanel->Disconnect( wxEVT_PAINT, wxPaintEventHandler( mainUI::OnImg2ImgPaint ), NULL, this ); + m_img2imPanel->Disconnect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( mainUI::OnImg2ImgRMouseDown ), NULL, this ); + m_img2imPanel->Disconnect( wxEVT_RIGHT_UP, wxMouseEventHandler( mainUI::OnImg2ImgRMouseUp ), NULL, this ); + m_img2imPanel->Disconnect( wxEVT_SIZE, wxSizeEventHandler( mainUI::OnImg2ImgSize ), NULL, this ); + m_inpaintCanvasTop->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( mainUI::OnInpaintCanvasResizeApply ), NULL, this ); + m_inpaintCanvasRight->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( mainUI::OnInpaintCanvasResizeApply ), NULL, this ); + m_inpaintCanvasBottom->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( mainUI::OnInpaintCanvasResizeApply ), NULL, this ); + m_inpaintCanvasLeft->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( mainUI::OnInpaintCanvasResizeApply ), NULL, this ); + m_inpaintCanvasResizeApply->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnInpaintCanvasResizeApply ), NULL, this ); m_img2imgOpen->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::OnImageOpenFileChanged ), NULL, this ); m_img2im_preview_img->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnImg2ImgPreviewButton ), NULL, this ); m_delete_initial_img->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnDeleteInitialImage ), NULL, this ); @@ -1491,27 +1776,42 @@ mainUI::~mainUI() m_imageInfoLoadToimg2img->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnImageInfoLoadImg2img ), NULL, this ); m_imageInfoOpen->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::OnImageInfoOpen ), NULL, this ); m_cleanImageInfo->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::OnCleanImageInfo ), NULL, this ); + m_modelTreeList->Disconnect( wxEVT_TREELIST_COLUMN_SORTED, wxTreeListEventHandler( mainUI::OnDataModelTreeColSorted ), NULL, this ); m_modelTreeList->Disconnect( wxEVT_TREELIST_ITEM_ACTIVATED, wxTreeListEventHandler( mainUI::OnDataModelTreeActivated ), NULL, this ); m_modelTreeList->Disconnect( wxEVT_TREELIST_ITEM_CONTEXT_MENU, wxTreeListEventHandler( mainUI::OnDataModelTreeContextMenu ), NULL, this ); + m_modelTreeList->Disconnect( wxEVT_TREELIST_ITEM_EXPANDED, wxTreeListEventHandler( mainUI::OnDataModelTreeExpanded ), NULL, this ); + m_modelTreeList->Disconnect( wxEVT_TREELIST_ITEM_EXPANDING, wxTreeListEventHandler( mainUI::OnDataModelTreeExpanding ), NULL, this ); m_modelTreeList->Disconnect( wxEVT_TREELIST_SELECTION_CHANGED, wxTreeListEventHandler( mainUI::OnDataModelTreeSelected ), NULL, this ); m_ModelFavorite->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( mainUI::OnModelFavoriteChange ), NULL, this ); + m_model_details_description->Disconnect( wxEVT_COMMAND_HTML_LINK_CLICKED, wxHtmlLinkEventHandler( mainUI::OnHtmlLinkClicked ), NULL, this ); + m_prompt->Disconnect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::onTxt2ImgFileDrop ), NULL, this ); + m_prompt->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnPromptText ), NULL, this ); + m_prompt2->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnPromptText ), NULL, this ); + m_neg_prompt2->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnNegPromptText ), NULL, this ); + m_neg_prompt->Disconnect( wxEVT_DROP_FILES, wxDropFilesEventHandler( mainUI::onTxt2ImgFileDrop ), NULL, this ); + m_neg_prompt->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnNegPromptText ), NULL, this ); + m_bpButton25->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onWhatIsThis ), NULL, this ); + m_filePickerDiffusionModel->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerDiffusionModel ), NULL, this ); + m_cleanDiffusionModel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onCleanDiffusionModel ), NULL, this ); + diffusionFlashAttn->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( mainUI::onDiffusionFlashAttn ), NULL, this ); + m_filePickerClipL->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerClipL ), NULL, this ); + m_filePickerClipG->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerClipG ), NULL, this ); + m_filePickerT5XXL->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( mainUI::onFilePickerT5XXL ), NULL, this ); m_vae->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onVaeSelect ), NULL, this ); vaeOnCpu->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( mainUI::onVAEOnCpu ), NULL, this ); clipOnCpu->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( mainUI::onClipOnCpu ), NULL, this ); - m_sampler->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onSamplerSelect ), NULL, this ); - m_scheduler->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onTypeSelect ), NULL, this ); m_random_seed->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onRandomGenerateButton ), NULL, this ); - m_width->Disconnect( wxEVT_COMMAND_SPINCTRL_UPDATED, wxSpinEventHandler( mainUI::OnWHChange ), NULL, this ); + m_button7->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onResolutionSwap ), NULL, this ); m_width->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnWHChange ), NULL, this ); - m_height->Disconnect( wxEVT_COMMAND_SPINCTRL_UPDATED, wxSpinEventHandler( mainUI::OnWHChange ), NULL, this ); m_height->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( mainUI::OnWHChange ), NULL, this ); - m_button7->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onResolutionSwap ), NULL, this ); - m_save_preset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onSavePreset ), NULL, this ); - m_load_preset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onLoadPreset ), NULL, this ); - m_preset_list->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onSelectPreset ), NULL, this ); - m_delete_preset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onDeletePreset ), NULL, this ); m_sd15Res->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onSd15ResSelect ), NULL, this ); m_sdXlres->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onSdXLResSelect ), NULL, this ); + m_preset_list->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onSelectPreset ), NULL, this ); + m_load_preset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onLoadPreset ), NULL, this ); + m_save_preset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onSavePreset ), NULL, this ); + m_delete_preset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onDeletePreset ), NULL, this ); + m_sampler->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onSamplerSelect ), NULL, this ); + m_scheduler->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::onTypeSelect ), NULL, this ); m_queue->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( mainUI::onGenerate ), NULL, this ); m_server->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( mainUI::OnServerSelect ), NULL, this ); diff --git a/src/ui/MainWindow.h b/src/ui/MainWindow.h index ffdca3f..494a775 100644 --- a/src/ui/MainWindow.h +++ b/src/ui/MainWindow.h @@ -33,16 +33,17 @@ #include #include #include -#include -#include #include #include +#include +#include +#include #include #include #include +#include #include #include -#include #include #include @@ -103,29 +104,7 @@ class mainUI : public wxFrame wxStaticBitmap* m_txt2txtDeiffusionPreview; wxPanel* m_controlnetPreviewTab; wxStaticBitmap* m_controlnetImagePreview; - wxTextCtrl* m_prompt; - wxTextCtrl* m_neg_prompt; - wxBitmapButton* m_bpButton25; - wxStaticText* m_staticText70; - wxStaticText* m_staticText522; - wxSpinCtrlDouble* slgScale; - wxStaticText* m_staticText5221; - wxTextCtrl* m_skipLayers; - wxStaticText* m_staticText52211; - wxSpinCtrlDouble* skipLayerStart; - wxStaticText* m_staticText522111; - wxSpinCtrlDouble* skipLayerEnd; - wxStaticLine* m_staticline41; - wxStaticText* m_staticText52111; - wxFilePickerCtrl* m_filePickerDiffusionModel; - wxCheckBox* diffusionFlashAttn; - wxBitmapButton* m_cleanDiffusionModel; - wxStaticText* m_staticText52; - wxFilePickerCtrl* m_filePickerClipL; - wxStaticText* m_staticText521; - wxFilePickerCtrl* m_filePickerClipG; - wxStaticText* m_staticText5211; - wxFilePickerCtrl* m_filePickerT5XXL; + wxScrolledWindow* m_openPoseWindow; wxFilePickerCtrl* m_controlnetImageOpen; wxCheckBox* cnOnCpu; wxChoice* m_controlnetModels; @@ -136,10 +115,33 @@ class mainUI : public wxFrame wxNotebook* m_notebook4; wxPanel* m_panel23; wxStaticBitmap* m_img2imgDiffusionPreview; - wxPanel* m_panel22; - wxStaticBitmap* m_img2img_preview; - wxTextCtrl* m_prompt2; - wxTextCtrl* m_neg_prompt2; + wxPanel* m_panel25; + wxPanel* m_panel26; + wxStaticText* m_inpaintBrushSize; + wxSlider* m_inpaintBrushSizeSlider; + wxStaticText* m_inpaintZoom; + wxSlider* m_inpaintZoomSlider; + wxBitmapButton* m_inpaintSaveMask; + wxBitmapButton* m_inpaintInvert; + wxBitmapButton* m_inpaintResizeToSdSize; + wxBitmapButton* m_inpaintClearMask; + wxFilePickerCtrl* m_inpaintOpenMask; + wxBitmapToggleButton* m_inPaintBrushStyleCircle; + wxBitmapToggleButton* m_inPaintBrushStyleSquare; + wxBitmapToggleButton* m_inPaintBrushStyleTriangle; + wxStaticText* m_inpaintImageResolution; + wxStaticText* m_staticText69; + wxPanel* m_panel261; + wxPanel* m_panel231; + wxStaticText* m_staticText691; + wxTextCtrl* m_inpaintCanvasTop; + wxStaticText* m_staticText701; + wxTextCtrl* m_inpaintCanvasRight; + wxStaticText* m_staticText71; + wxTextCtrl* m_inpaintCanvasBottom; + wxStaticText* m_staticText721; + wxTextCtrl* m_inpaintCanvasLeft; + wxButton* m_inpaintCanvasResizeApply; wxFilePickerCtrl* m_img2imgOpen; wxStaticText* m_staticText24; wxSpinCtrlDouble* m_strength; @@ -184,51 +186,79 @@ class mainUI : public wxFrame wxTreeListCtrl* m_modelTreeList; wxScrolledWindow* m_modelDetailsImageList; wxStaticText* m_staticText641; - wxHyperlinkCtrl* m_model_info_link; wxCheckBox* m_ModelFavorite; + wxHyperlinkCtrl* m_model_info_link; wxDataViewListCtrl* m_model_details; wxDataViewColumn* m_dataViewListColumn11; wxDataViewColumn* m_dataViewListColumn21; wxHtmlWindow* m_model_details_description; - wxScrolledWindow* m_rightMainPanel; + wxScrolledWindow* m_promptAndFluxPanel; + wxPanel* m_promptPanel; + wxStaticText* m_staticText73; + wxTextCtrl* m_prompt; + wxTextCtrl* m_prompt2; + wxStaticText* m_staticText74; + wxTextCtrl* m_neg_prompt2; + wxTextCtrl* m_neg_prompt; + wxStaticText* m_staticText49; + wxChoice* m_promptPresets; + wxBitmapButton* m_bpButton25; + wxStaticText* m_staticText522; + wxSpinCtrlDouble* slgScale; + wxStaticText* m_staticText5221; + wxTextCtrl* m_skipLayers; + wxStaticText* m_staticText52211; + wxSpinCtrlDouble* skipLayerStart; + wxStaticText* m_staticText522111; + wxSpinCtrlDouble* skipLayerEnd; + wxStaticText* m_staticText52111; + wxFilePickerCtrl* m_filePickerDiffusionModel; + wxBitmapButton* m_cleanDiffusionModel; + wxCheckBox* diffusionFlashAttn; + wxStaticText* m_staticText52; + wxFilePickerCtrl* m_filePickerClipL; + wxStaticText* m_staticText521; + wxFilePickerCtrl* m_filePickerClipG; + wxStaticText* m_staticText5211; + wxFilePickerCtrl* m_filePickerT5XXL; + wxPanel* m_rightMainPanel; + wxScrolledWindow* m_rightMainPanelScroll; wxStaticText* m_staticText161; wxChoice* m_vae; wxCheckBox* vaeOnCpu; wxCheckBox* m_vae_tiling; wxCheckBox* m_vae_decode_only; - wxStaticText* m_staticText231; - wxSpinCtrlDouble* m_cfg; + wxStaticLine* m_staticline7; wxStaticText* m_staticText234; - wxSpinCtrl* m_clip_skip; wxCheckBox* clipOnCpu; + wxSpinCtrl* m_clip_skip; + wxStaticLine* m_staticline9; wxStaticText* m_staticText20; wxChoice* m_taesd; - wxStaticText* m_staticText15; - wxSpinCtrl* m_batch_count; - wxStaticText* m_staticText163; - wxChoice* m_sampler; - wxStaticText* m_schedulertext; - wxChoice* m_scheduler; + wxStaticLine* m_staticline8; wxStaticText* m_staticText233; wxSpinCtrl* m_seed; wxBitmapButton* m_random_seed; - wxStaticText* m_staticText14; - wxSpinCtrl* m_steps; - wxStaticText* m_staticText237; - wxSpinCtrl* m_width; - wxStaticText* m_staticText239; - wxSpinCtrl* m_height; + wxStaticText* m_staticText75; wxBitmapButton* m_button7; - wxBitmapButton* m_save_preset; - wxBitmapButton* m_load_preset; - wxChoice* m_preset_list; - wxBitmapButton* m_delete_preset; - wxStaticText* m_staticText46; + wxTextCtrl* m_width; + wxTextCtrl* m_height; wxChoice* m_sd15Res; - wxStaticText* m_staticText461; wxChoice* m_sdXlres; - wxStaticText* m_staticText49; - wxChoice* m_promptPresets; + wxStaticLine* m_staticline31; + wxChoice* m_preset_list; + wxBitmapButton* m_load_preset; + wxBitmapButton* m_save_preset; + wxBitmapButton* m_delete_preset; + wxStaticLine* m_staticline3; + wxChoice* m_sampler; + wxChoice* m_scheduler; + wxStaticText* m_staticText14; + wxSpinCtrl* m_steps; + wxStaticText* m_staticText15; + wxSpinCtrl* m_batch_count; + wxStaticText* m_staticText231; + wxSpinCtrlDouble* m_cfg; wxButton* m_queue; wxChoice* m_server; wxTextCtrl* logs; @@ -250,21 +280,33 @@ class mainUI : public wxFrame virtual void OnJobListItemActivated( wxDataViewEvent& event ) { event.Skip(); } virtual void onContextMenu( wxDataViewEvent& event ) { event.Skip(); } virtual void OnJobListItemSelection( wxDataViewEvent& event ) { event.Skip(); } + virtual void OnJobListItemKeyDown( wxKeyEvent& event ) { event.Skip(); } virtual void onTxt2ImgFileDrop( wxDropFilesEvent& event ) { event.Skip(); } - virtual void OnPromptText( wxCommandEvent& event ) { event.Skip(); } - virtual void OnNegPromptText( wxCommandEvent& event ) { event.Skip(); } - virtual void onWhatIsThis( wxCommandEvent& event ) { event.Skip(); } - virtual void onFilePickerDiffusionModel( wxFileDirPickerEvent& event ) { event.Skip(); } - virtual void onDiffusionFlashAttn( wxCommandEvent& event ) { event.Skip(); } - virtual void onCleanDiffusionModel( wxCommandEvent& event ) { event.Skip(); } - virtual void onFilePickerClipL( wxFileDirPickerEvent& event ) { event.Skip(); } - virtual void onFilePickerClipG( wxFileDirPickerEvent& event ) { event.Skip(); } - virtual void onFilePickerT5XXL( wxFileDirPickerEvent& event ) { event.Skip(); } virtual void OnControlnetImageOpen( wxFileDirPickerEvent& event ) { event.Skip(); } virtual void onCnOnCpu( wxCommandEvent& event ) { event.Skip(); } virtual void OnControlnetImagePreviewButton( wxCommandEvent& event ) { event.Skip(); } virtual void OnControlnetImageDelete( wxCommandEvent& event ) { event.Skip(); } virtual void Onimg2imgDropFile( wxDropFilesEvent& event ) { event.Skip(); } + virtual void OnInpaintBrushSizeSliderScroll( wxScrollEvent& event ) { event.Skip(); } + virtual void OnInpaintZoomSliderScroll( wxScrollEvent& event ) { event.Skip(); } + virtual void OnInpaintSaveMask( wxCommandEvent& event ) { event.Skip(); } + virtual void OnInpaintInvertMask( wxCommandEvent& event ) { event.Skip(); } + virtual void OnInpaintResizeImage( wxCommandEvent& event ) { event.Skip(); } + virtual void OnInpaintCleanMask( wxCommandEvent& event ) { event.Skip(); } + virtual void OnInpaintMaskOpen( wxFileDirPickerEvent& event ) { event.Skip(); } + virtual void OnInPaintBrushStyleToggle( wxCommandEvent& event ) { event.Skip(); } + virtual void OnImg2ImgMouseEnter( wxMouseEvent& event ) { event.Skip(); } + virtual void OnImg2ImgEraseBackground( wxEraseEvent& event ) { event.Skip(); } + virtual void OnImg2ImgMouseLeave( wxMouseEvent& event ) { event.Skip(); } + virtual void OnImg2ImgMouseDown( wxMouseEvent& event ) { event.Skip(); } + virtual void OnImg2ImgMouseUp( wxMouseEvent& event ) { event.Skip(); } + virtual void OnImg2ImgMouseMotion( wxMouseEvent& event ) { event.Skip(); } + virtual void OnImg2ImgMouseWheel( wxMouseEvent& event ) { event.Skip(); } + virtual void OnImg2ImgPaint( wxPaintEvent& event ) { event.Skip(); } + virtual void OnImg2ImgRMouseDown( wxMouseEvent& event ) { event.Skip(); } + virtual void OnImg2ImgRMouseUp( wxMouseEvent& event ) { event.Skip(); } + virtual void OnImg2ImgSize( wxSizeEvent& event ) { event.Skip(); } + virtual void OnInpaintCanvasResizeApply( wxCommandEvent& event ) { event.Skip(); } virtual void OnImageOpenFileChanged( wxFileDirPickerEvent& event ) { event.Skip(); } virtual void OnImg2ImgPreviewButton( wxCommandEvent& event ) { event.Skip(); } virtual void OnDeleteInitialImage( wxCommandEvent& event ) { event.Skip(); } @@ -281,24 +323,35 @@ class mainUI : public wxFrame virtual void OnImageInfoLoadImg2img( wxCommandEvent& event ) { event.Skip(); } virtual void OnImageInfoOpen( wxFileDirPickerEvent& event ) { event.Skip(); } virtual void OnCleanImageInfo( wxCommandEvent& event ) { event.Skip(); } + virtual void OnDataModelTreeColSorted( wxTreeListEvent& event ) { event.Skip(); } virtual void OnDataModelTreeActivated( wxTreeListEvent& event ) { event.Skip(); } virtual void OnDataModelTreeContextMenu( wxTreeListEvent& event ) { event.Skip(); } + virtual void OnDataModelTreeExpanded( wxTreeListEvent& event ) { event.Skip(); } + virtual void OnDataModelTreeExpanding( wxTreeListEvent& event ) { event.Skip(); } virtual void OnDataModelTreeSelected( wxTreeListEvent& event ) { event.Skip(); } virtual void OnModelFavoriteChange( wxCommandEvent& event ) { event.Skip(); } + virtual void OnPromptText( wxCommandEvent& event ) { event.Skip(); } + virtual void OnNegPromptText( wxCommandEvent& event ) { event.Skip(); } + virtual void onWhatIsThis( wxCommandEvent& event ) { event.Skip(); } + virtual void onFilePickerDiffusionModel( wxFileDirPickerEvent& event ) { event.Skip(); } + virtual void onCleanDiffusionModel( wxCommandEvent& event ) { event.Skip(); } + virtual void onDiffusionFlashAttn( wxCommandEvent& event ) { event.Skip(); } + virtual void onFilePickerClipL( wxFileDirPickerEvent& event ) { event.Skip(); } + virtual void onFilePickerClipG( wxFileDirPickerEvent& event ) { event.Skip(); } + virtual void onFilePickerT5XXL( wxFileDirPickerEvent& event ) { event.Skip(); } virtual void onVaeSelect( wxCommandEvent& event ) { event.Skip(); } virtual void onVAEOnCpu( wxCommandEvent& event ) { event.Skip(); } virtual void onClipOnCpu( wxCommandEvent& event ) { event.Skip(); } - virtual void onSamplerSelect( wxCommandEvent& event ) { event.Skip(); } virtual void onRandomGenerateButton( wxCommandEvent& event ) { event.Skip(); } - virtual void OnWHChange( wxSpinEvent& event ) { event.Skip(); } - virtual void OnWHChange( wxCommandEvent& event ) { event.Skip(); } virtual void onResolutionSwap( wxCommandEvent& event ) { event.Skip(); } - virtual void onSavePreset( wxCommandEvent& event ) { event.Skip(); } - virtual void onLoadPreset( wxCommandEvent& event ) { event.Skip(); } - virtual void onSelectPreset( wxCommandEvent& event ) { event.Skip(); } - virtual void onDeletePreset( wxCommandEvent& event ) { event.Skip(); } + virtual void OnWHChange( wxCommandEvent& event ) { event.Skip(); } virtual void onSd15ResSelect( wxCommandEvent& event ) { event.Skip(); } virtual void onSdXLResSelect( wxCommandEvent& event ) { event.Skip(); } + virtual void onSelectPreset( wxCommandEvent& event ) { event.Skip(); } + virtual void onLoadPreset( wxCommandEvent& event ) { event.Skip(); } + virtual void onSavePreset( wxCommandEvent& event ) { event.Skip(); } + virtual void onDeletePreset( wxCommandEvent& event ) { event.Skip(); } + virtual void onSamplerSelect( wxCommandEvent& event ) { event.Skip(); } virtual void onGenerate( wxCommandEvent& event ) { event.Skip(); } virtual void OnServerSelect( wxCommandEvent& event ) { event.Skip(); } @@ -307,6 +360,7 @@ class mainUI : public wxFrame wxBoxSizer* sizer0001; wxBoxSizer* bSizer138; wxBoxSizer* bSizer8911; + wxScrolledWindow* m_img2imPanel; wxHtmlWindow* m_upscalerHelp; wxSplitterWindow* m_splitter4; wxBoxSizer* bSizer117; @@ -314,6 +368,7 @@ class mainUI : public wxFrame wxBoxSizer* bSizer119; wxBoxSizer* bSizer891; wxBoxSizer* bSizer1001; + wxPanel* m_fluxPanel; mainUI( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("sd.cpp.gui"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 1024,768 ), long style = wxDEFAULT_FRAME_STYLE|wxBORDER_DEFAULT, const wxString& name = wxT("sd.cpp.gui") ); diff --git a/src/ui/MainWindowCivitAiWindow.cpp b/src/ui/MainWindowCivitAiWindow.cpp index c57e3cd..12816e2 100644 --- a/src/ui/MainWindowCivitAiWindow.cpp +++ b/src/ui/MainWindowCivitAiWindow.cpp @@ -71,7 +71,7 @@ void MainWindowCivitAiWindow::m_model_detailsOnDataViewListCtrlSelectionChanged( auto item = this->m_model_details->GetCurrentItem(); nlohmann::json* data = reinterpret_cast(this->m_model_details->GetItemData(item)); - if (data == nullptr || data == NULL) { + if (data == nullptr) { return; } nlohmann::json js(*data); @@ -87,7 +87,7 @@ void MainWindowCivitAiWindow::m_model_downloadOnButtonClick(wxCommandEvent& even } auto item = this->m_model_filelist->RowToItem(selection); nlohmann::json* jsptr = reinterpret_cast(this->m_model_filelist->GetItemData(item)); - if (jsptr == NULL || jsptr == nullptr) { + if (jsptr == nullptr) { return; } nlohmann::json js(*jsptr); @@ -340,7 +340,7 @@ void MainWindowCivitAiWindow::showImages(int version_id, bool from_thread) { for (auto& bm : this->bitmaps) { auto img = static_cast(bm->GetClientData()); if (img->downloaded && std::filesystem::exists(img->localpath)) { - auto resized = sd_gui_utils::cropResizeImage(wxString::FromUTF8Unchecked(img->localpath), 200, 200, wxColour(0, 0, 0), wxString::FromUTF8Unchecked(this->config->thumbs_path)); + auto resized = sd_gui_utils::cropResizeImage(wxString::FromUTF8Unchecked(img->localpath), 200, 200, wxColour(51, 51, 51, wxALPHA_TRANSPARENT), wxString::FromUTF8Unchecked(this->config->thumbs_path)); bm->SetBitmap(resized); } } @@ -354,7 +354,7 @@ void MainWindowCivitAiWindow::showImages(int version_id, bool from_thread) { for (auto& img : this->previewImagesMap) { if (img.second->downloaded && std::filesystem::exists(img.second->localpath)) { - auto resized = sd_gui_utils::cropResizeImage(wxString::FromUTF8Unchecked(img.second->localpath), 200, 200, wxColour(0, 0, 0, 0), wxString::FromUTF8Unchecked(this->config->thumbs_path)); + auto resized = sd_gui_utils::cropResizeImage(wxString::FromUTF8Unchecked(img.second->localpath), 200, 200, wxColour(51, 51, 51, wxALPHA_TRANSPARENT), wxString::FromUTF8Unchecked(this->config->thumbs_path)); wxStaticBitmap* bitmap = new wxStaticBitmap(m_scrolledWindow4, wxID_ANY, resized, wxDefaultPosition, wxSize(200, 200), 0); bitmap->SetClientData((void*)img.second.get()); image_container->Add(bitmap, 0, wxALL | wxRESERVE_SPACE_EVEN_IF_HIDDEN, 1); diff --git a/src/ui/MainWindowCivitAiWindow.h b/src/ui/MainWindowCivitAiWindow.h index 2fe7b10..311a5a9 100644 --- a/src/ui/MainWindowCivitAiWindow.h +++ b/src/ui/MainWindowCivitAiWindow.h @@ -47,7 +47,7 @@ class MainWindowCivitAiWindow : public CivitAiWindow { private: bool isLoading = false; std::string current_json_text; - sd_gui_utils::config* config; + sd_gui_utils::config* config = nullptr; std::vector modelDownloadThreads; std::vector infoDownloadThread; std::vector imgDownloadThreads; diff --git a/src/ui/MainWindowDesktopWidget.h b/src/ui/MainWindowDesktopWidget.h index 56e0350..737b509 100644 --- a/src/ui/MainWindowDesktopWidget.h +++ b/src/ui/MainWindowDesktopWidget.h @@ -32,10 +32,9 @@ class MainWindowDesktopWidget : public DesktopWidget { private: bool dragging = false; - int x, y; wxPoint m_delta; wxBitmap m_background; - wxEvtHandler* pEvents; + wxEvtHandler* pEvents = nullptr; void OnThreadMessage(wxThreadEvent& e); }; diff --git a/src/ui/MainWindowUI.cpp b/src/ui/MainWindowUI.cpp index f9ce8aa..53f9f91 100644 --- a/src/ui/MainWindowUI.cpp +++ b/src/ui/MainWindowUI.cpp @@ -5,7 +5,7 @@ MainWindowUI::MainWindowUI(wxWindow* parent, const std::string dllName, const std::string& usingBackend, bool disableExternalProcessHandling, MainApp* mapp) : mainUI(parent), usingBackend(usingBackend), disableExternalProcessHandling(disableExternalProcessHandling), mapp(mapp) { this->ControlnetOrigPreviewBitmap = this->m_controlnetImagePreview->GetBitmap(); - this->AppOrigPlaceHolderBitmap = this->m_img2img_preview->GetBitmap(); + // this->AppOrigPlaceHolderBitmap = this->m_img2img_preview->GetBitmap(); if (BUILD_TYPE != "Release") { this->SetTitle(wxString::Format("%s - %s (%s) - %s", PROJECT_DISPLAY_NAME, SD_GUI_VERSION, GIT_HASH, BUILD_TYPE)); @@ -42,6 +42,8 @@ MainWindowUI::MainWindowUI(wxWindow* parent, const std::string dllName, const st this->treeListManager->AppendColumn(_("Type"), wxCOL_WIDTH_AUTOSIZE, wxALIGN_LEFT, wxCOL_RESIZABLE | wxCOL_SORTABLE); this->treeListManager->AppendColumn(_("Hash"), wxCOL_WIDTH_AUTOSIZE, wxALIGN_LEFT, wxCOL_RESIZABLE | wxCOL_SORTABLE); + this->m_modelTreeList->SetSortColumn(0, true); + this->initLog(); // load @@ -58,6 +60,7 @@ MainWindowUI::MainWindowUI(wxWindow* parent, const std::string dllName, const st this->loadSchedulerList(); this->loadSamplerList(); this->loadTypeList(); + // reload config, set up checkboxes from it const auto diffusion_flash_attn = this->mapp->config->ReadBool("/diffusion_flash_attn", this->diffusionFlashAttn->GetValue()); const auto clip_on_cpu = this->mapp->config->ReadBool("/clip_on_cpu", this->clipOnCpu->GetValue()); @@ -85,6 +88,15 @@ MainWindowUI::MainWindowUI(wxWindow* parent, const std::string dllName, const st this->m_showWidget->SetValue(true); } + this->m_rightMainPanel->Hide(); + this->m_promptAndFluxPanel->Hide(); + this->inpaintHelper = std::make_shared(this->m_img2imPanel); + this->inpaintHelper->SetBrushSize(sd_gui_utils::InPaintHelper::BrushSize(this->m_inpaintBrushSizeSlider->GetMin(), + this->m_inpaintBrushSizeSlider->GetMax(), + this->m_inpaintBrushSizeSlider->GetValue())); + + this->m_inpaintZoomSlider->SetLineSize(this->inpaintHelper->GetZoomStep()); + Bind(wxEVT_THREAD, &MainWindowUI::OnThreadMessage, this); // populate server list if available @@ -342,10 +354,10 @@ void MainWindowUI::onSd15ResSelect(wxCommandEvent& event) { if (index < 1) { return; } - const auto text = this->m_sd15Res->GetString(index).utf8_string(); + const auto text = this->m_sd15Res->GetString(index); size_t pos = text.find('x'); - int w = std::stoi(text.substr(0, pos)); - int h = std::stoi(text.substr(pos + 1)); + auto w = text.substr(0, pos); + auto h = text.substr(pos + 1); this->m_width->SetValue(w); this->m_height->SetValue(h); } @@ -355,17 +367,18 @@ void MainWindowUI::onSdXLResSelect(wxCommandEvent& event) { if (index < 1) { return; } - const auto text = this->m_sdXlres->GetString(index).utf8_string(); + const auto text = this->m_sdXlres->GetString(index); size_t pos = text.find('x'); - int w = std::stoi(text.substr(0, pos)); - int h = std::stoi(text.substr(pos + 1)); + auto w = text.substr(0, pos); + auto h = text.substr(pos + 1); this->m_width->SetValue(w); this->m_height->SetValue(h); } -void MainWindowUI::OnWHChange(wxSpinEvent& event) { - int w = this->m_width->GetValue(); - int h = this->m_height->GetValue(); +void MainWindowUI::OnWHChange(wxCommandEvent& event) { + int w, h; + this->m_width->GetValue().ToInt(&w); + this->m_height->GetValue().ToInt(&h); this->init_width = w; this->init_height = h; @@ -396,21 +409,70 @@ void MainWindowUI::m_notebook1302OnNotebookPageChanged(wxNotebookEvent& event) { sd_gui_utils::GuiMainPanels selected = static_cast(event.GetSelection()); // show hide side panels + // show hide prompt inputs switch (selected) { - case sd_gui_utils::GuiMainPanels::PANEL_QUEUE: - case sd_gui_utils::GuiMainPanels::PANEL_MODELS: { - this->m_rightMainPanel->Hide(); - this->bSizer138->Layout(); + case sd_gui_utils::GuiMainPanels::PANEL_TEXT2IMG: { + this->m_prompt2->Hide(); + this->m_neg_prompt2->Hide(); + this->m_prompt->Show(); + this->m_neg_prompt->Show(); + this->m_fluxPanel->Show(); + + if (this->m_promptAndFluxPanel->Show()) { + this->bSizer138->Layout(); + } + + if (this->m_rightMainPanel->Show()) { + this->bSizer138->Layout(); + } + } break; - case sd_gui_utils::GuiMainPanels::PANEL_IMAGEINFO: - case sd_gui_utils::GuiMainPanels::PANEL_IMG2IMG: - case sd_gui_utils::GuiMainPanels::PANEL_TEXT2IMG: case sd_gui_utils::GuiMainPanels::PANEL_UPSCALER: { - this->m_rightMainPanel->Show(); - this->bSizer138->Layout(); + if (this->m_promptAndFluxPanel->Hide()) { + this->bSizer138->Layout(); + } + if (this->m_rightMainPanel->Show()) { + this->bSizer138->Layout(); + } + if (this->m_fluxPanel->Hide()) { + this->m_fluxPanel->GetParent()->GetSizer()->Layout(); + } + + } break; + case sd_gui_utils::GuiMainPanels::PANEL_IMG2IMG: { + this->m_prompt->Hide(); + this->m_neg_prompt->Hide(); + this->m_prompt2->Show(); + this->m_neg_prompt2->Show(); + if (this->m_fluxPanel->Show()) { + this->m_fluxPanel->GetParent()->GetSizer()->Layout(); + } + + if (this->m_promptAndFluxPanel->Show()) { + this->bSizer138->Layout(); + } + if (this->m_rightMainPanel->Show()) { + this->bSizer138->Layout(); + } + + } break; + default: { + if (this->m_promptAndFluxPanel->Hide()) { + this->bSizer138->Layout(); + } + if (this->m_rightMainPanel->Hide()) { + this->bSizer138->Layout(); + } + } break; } + this->m_promptPanel->GetSizer()->Layout(); + this->m_fluxPanel->GetSizer()->Layout(); + this->m_rightMainPanel->GetSizer()->Layout(); + this->m_rightMainPanel->Layout(); + this->m_rightMainPanel->Refresh(); + if (selected == sd_gui_utils::GuiMainPanels::PANEL_IMG2IMG) // on img2img and img2vid the vae_decode_only is false, otherwise true { this->m_vae_decode_only->SetValue(false); @@ -472,9 +534,9 @@ void MainWindowUI::m_notebook1302OnNotebookPageChanged(wxNotebookEvent& event) { // img2img if (selected == sd_gui_utils::GuiMainPanels::PANEL_IMG2IMG && !this->m_img2imgOpen->GetPath().empty()) { if (!wxFileName(this->m_img2imgOpen->GetPath()).IsDir()) { - this->m_width->Disable(); - this->m_height->Disable(); - this->m_button7->Disable(); // swap button + // this->m_width->Disable(); + // this->m_height->Disable(); + // this->m_button7->Disable(); // swap button } } if (selected == sd_gui_utils::GuiMainPanels::PANEL_TEXT2IMG || selected == sd_gui_utils::GuiMainPanels::PANEL_IMAGEINFO) { @@ -535,6 +597,36 @@ void MainWindowUI::OnJobListItemActivated(wxDataViewEvent& event) { // implemented in OnJobListItemSelection } +void MainWindowUI::OnJobListItemKeyDown(wxKeyEvent& event) { + if (event.GetKeyCode() == WXK_DELETE) // Delete + { + wxDataViewListCtrl* dataView = static_cast(event.GetEventObject()); + wxDataViewItemArray itemsToDelete; + + dataView->GetSelections(itemsToDelete); + wxDataViewListStore* store = dataView->GetStore(); + + for (const auto& item : itemsToDelete) { + int row = dataView->ItemToRow(item); + + int id = store->GetItemData(item); + auto qitem = this->qmanager->GetItemPtr(id); + if (qitem->status == QM::QueueStatus::RUNNING || + qitem->status == QM::QueueStatus::MODEL_LOADING || + qitem->status == QM::QueueStatus::HASHING || + qitem->status == QM::QueueStatus::HASHING_DONE) { + continue; + } + if (this->qmanager->DeleteJob(id) && row != wxNOT_FOUND) { + dataView->DeleteItem(row); + } + } + this->m_static_number_of_jobs->SetLabel(wxString::Format(_("Number of jobs: %d"), this->m_joblist->GetItemCount())); + } else { + event.Skip(); + } +} + /** * Handles the context menu event for the job and data model lists. * @@ -560,102 +652,74 @@ void MainWindowUI::onContextMenu(wxDataViewEvent& event) { } wxMenu* menu = new wxMenu(); - if (this->m_joblist->GetSelectedItemsCount() > 1) { - bool enable = false; - wxDataViewItemArray sel; - this->m_joblist->GetSelections(sel); - for (const auto& item : sel) { - int id = this->m_joblist->GetStore()->GetItemData(item); - auto qitem = this->qmanager->GetItemPtr(id); - if (qitem->mode == QM::GenerationMode::CONVERT) { - enable = false; - break; - } - if (qitem->status == QM::QueueStatus::RUNNING || - qitem->status == QM::QueueStatus::HASHING) { - enable = false; - break; - } - - if (qitem->status == QM::QueueStatus::PENDING || - qitem->status == QM::QueueStatus::PAUSED || - qitem->status == QM::QueueStatus::FAILED || - qitem->status == QM::QueueStatus::DONE) { - enable = true; - break; - } - } - menu->Append(99, wxString::Format(_("Delete %d items"), this->m_joblist->GetSelectedItemsCount())); - menu->Enable(99, enable); - menu->Bind(wxEVT_COMMAND_MENU_SELECTED, &MainWindowUI::OnPopupClick, this); - PopupMenu(menu); - delete menu; - return; - } - auto item = event.GetItem(); - wxDataViewListStore* store = this->m_joblist->GetStore(); + wxDataViewListStore* store = this->m_joblist->GetStore(); - int id = store->GetItemData(item); - auto qitem = this->qmanager->GetItemPtr(id); + int id = store->GetItemData(item); + auto qitem = this->qmanager->GetItemPtr(id); + if (qitem == nullptr) { + delete menu; + return; + } - if (qitem->mode != QM::GenerationMode::CONVERT) { - menu->Append(1, _("Requeue")); - if (qitem->mode == QM::GenerationMode::IMG2IMG || - qitem->mode == QM::GenerationMode::UPSCALE) { - if (!std::filesystem::exists(qitem->initial_image)) { - menu->Enable(1, false); + if (qitem->mode != QM::GenerationMode::CONVERT) { + menu->Append(1, _("Requeue")); + if (qitem->mode == QM::GenerationMode::IMG2IMG || + qitem->mode == QM::GenerationMode::UPSCALE) { + if (!std::filesystem::exists(qitem->initial_image)) { + menu->Enable(1, false); + } } } - } - if (qitem->params.controlnet_path.length() > 0 && - qitem->params.control_image_path.length() > 0 && - !std::filesystem::exists(qitem->params.control_image_path)) { - menu->Enable(1, false); - } + if (qitem->params.controlnet_path.length() > 0 && + qitem->params.control_image_path.length() > 0 && + !std::filesystem::exists(qitem->params.control_image_path)) { + menu->Enable(1, false); + } - if (qitem->mode != QM::GenerationMode::UPSCALE && - qitem->mode != QM::GenerationMode::CONVERT) { - menu->Append(2, _("Load parameters")); - menu->Append(3, _("Copy prompts to text2img")); - menu->Append(4, _("Copy prompts to img2img")); - menu->Append(5, wxString::Format(_("Select model %s"), qitem->model)); + if (qitem->mode != QM::GenerationMode::UPSCALE && + qitem->mode != QM::GenerationMode::CONVERT) { + menu->Append(2, _("Load parameters")); + menu->Append(3, _("Copy prompts to text2img")); + menu->Append(4, _("Copy prompts to img2img")); + menu->Append(5, wxString::Format(_("Select model %s"), qitem->model)); - if (qitem->images.size() > 0) { - menu->Append(6, _("Send the last image to the Upscale tab")); - menu->Append(7, _("Send the last image to the img2img tab")); + if (qitem->images.size() > 0) { + menu->Append(6, _("Send the last image to the Upscale tab")); + menu->Append(7, _("Send the last image to the img2img tab")); + } } - } - if (qitem->mode == QM::GenerationMode::UPSCALE) { - if (qitem->images.size() > 0) { - menu->Append(6, wxString::Format(_("Upscale again"))); + if (qitem->mode == QM::GenerationMode::UPSCALE) { + if (qitem->images.size() > 0) { + menu->Append(6, wxString::Format(_("Upscale again"))); + } } - } - if (qitem->status == QM::QueueStatus::PAUSED || - qitem->status == QM::QueueStatus::PENDING) { - menu->AppendSeparator(); - menu->Append(8, qitem->status == QM::QueueStatus::PENDING ? _("Pause") : _("Resume")); - } + if (qitem->status == QM::QueueStatus::PAUSED || + qitem->status == QM::QueueStatus::PENDING) { + menu->AppendSeparator(); + menu->Append(8, qitem->status == QM::QueueStatus::PENDING ? _("Pause") : _("Resume")); + } - menu->AppendSeparator(); - menu->Append(99, _("Delete")); - menu->Enable(99, false); + menu->AppendSeparator(); + menu->Append(99, _("Delete")); + menu->Enable(99, false); - if (qitem->status == QM::QueueStatus::RUNNING || - qitem->status == QM::QueueStatus::HASHING) { - menu->Enable(1, false); - } + if (qitem->status == QM::QueueStatus::RUNNING || + qitem->status == QM::QueueStatus::HASHING) { + menu->Enable(1, false); + } - if (qitem->status == QM::QueueStatus::PENDING || - qitem->status == QM::QueueStatus::PAUSED || - qitem->status == QM::QueueStatus::FAILED || - qitem->status == QM::QueueStatus::DONE) { - menu->Enable(99, true); + if (qitem->status == QM::QueueStatus::PENDING || + qitem->status == QM::QueueStatus::PAUSED || + qitem->status == QM::QueueStatus::FAILED || + qitem->status == QM::QueueStatus::DONE) { + menu->Enable(99, true); + } + menu->Bind(wxEVT_COMMAND_MENU_SELECTED, &MainWindowUI::OnPopupClick, this); } - menu->Bind(wxEVT_COMMAND_MENU_SELECTED, &MainWindowUI::OnPopupClick, this); PopupMenu(menu); delete menu; } @@ -791,11 +855,24 @@ void MainWindowUI::OnDataModelTreeContextMenu(wxTreeListEvent& event) { delete menu; } +void MainWindowUI::OnDataModelTreeColSorted(wxTreeListEvent& event) { +} + +void MainWindowUI::OnDataModelTreeExpanded(wxTreeListEvent& event) { + auto item = event.GetItem(); + std::cout << "Expanded: " << this->m_modelTreeList->GetItemText(item, 0) << std::endl; +} + void MainWindowUI::OnJobListItemSelection(wxDataViewEvent& event) { + if (this->m_joblist->GetSelectedItemsCount() == 0) { + return; + } + auto row = this->m_joblist->GetSelectedRow(); if (row == wxNOT_FOUND) { return; } + auto store = this->m_joblist->GetStore(); auto ditem = store->GetItem(row); int itemid = store->GetItemData(ditem); @@ -851,17 +928,24 @@ std::unordered_map MainWindowUI::getMetaDataFromImage(const if (!exifData.empty()) { std::string ex; Exiv2::ExifData::iterator it; - std::string usercomment; for (it = exifData.begin(); it != exifData.end(); ++it) { - if (BUILD_TYPE == "Debug") { - std::cout << "Found key: " << it->key() << " val: " << it->getValue()->toString() << std::endl; - } - if (it->key() == "Exif.Photo.UserComment" || it->key() == "Exif.Image.UserComment" || it->key() == "Exif.Photo.Parameters") { - usercomment = it->getValue()->toString(); - if (!usercomment.empty()) { - results = sd_gui_utils::parseExifPrompts(wxString::FromUTF8Unchecked(usercomment)); + std::string key = it->key(); + std::string value = it->getValue()->toString(); + + wxString wxKey = wxString::FromUTF8(key.c_str()); + wxString wxValue = wxString::FromUTF8Unchecked(value.c_str(), value.size()); + + if (wxKey == "Exif.Photo.UserComment" || wxKey == "Exif.Image.UserComment" || wxKey == "Exif.Photo.Parameters") { + auto comment = dynamic_cast(&it->value()); + auto commentStr = comment->comment("UTF-8"); + commentStr.erase(std::remove(commentStr.begin(), commentStr.end(), '\0'), commentStr.end()); + wxValue = wxString::FromAscii(commentStr.c_str(), commentStr.size()); + if (!wxValue.empty()) { + results = sd_gui_utils::parseExifPrompts(wxValue); break; } + } else { + std::cout << "Key: " << wxKey.ToStdString() << " Value: " << wxValue.ToStdString() << std::endl; } } } @@ -934,10 +1018,9 @@ void MainWindowUI::onGenerate(wxCommandEvent& event) { item->params.wtype = static_cast(wClientData->getId()); item->params.schedule = static_cast(sClientData->getId()); - if (this->mapp->cfg->save_all_image) { - item->images.emplace_back(QM::QueueItemImage({item->initial_image, QM::QueueItemImageType::INITIAL})); - } - + // if (this->mapp->cfg->save_all_image) { + item->images.emplace_back(QM::QueueItemImage({item->initial_image, QM::QueueItemImageType::INITIAL})); + //} if (this->m_server->GetSelection() > 0) { int id = this->m_server->GetSelection(); if (id != wxNOT_FOUND) { @@ -947,7 +1030,6 @@ void MainWindowUI::onGenerate(wxCommandEvent& event) { } } } - this->qmanager->AddItem(item); return; } @@ -1002,56 +1084,9 @@ void MainWindowUI::onGenerate(wxCommandEvent& event) { item->model = this->m_model->GetStringSelection().utf8_string(); - if (type == QM::GenerationMode::TXT2IMG) { + if (type == QM::GenerationMode::TXT2IMG || type == QM::GenerationMode::IMG2IMG) { if (diffusionModel.empty() == false) { - item->model = this->m_filePickerDiffusionModel->GetFileName().GetName().utf8_string(); - } - } - - item->params.lora_model_dir = this->mapp->cfg->lora; - item->params.embeddings_path = this->mapp->cfg->embedding; - item->params.n_threads = this->mapp->cfg->n_threads; - item->keep_checkpoint_in_memory = this->m_keep_other_models_in_memory->GetValue(); - item->keep_upscaler_in_memory = this->m_keep_upscaler_in_memory->GetValue(); - - item->params.vae_on_cpu = this->vaeOnCpu->GetValue(); - item->params.clip_on_cpu = this->clipOnCpu->GetValue(); - item->params.diffusion_flash_attn = this->diffusionFlashAttn->GetValue(); - - if (type == QM::GenerationMode::TXT2IMG) { - item->params.prompt = this->m_prompt->GetValue().utf8_string(); - item->params.negative_prompt = this->m_neg_prompt->GetValue().utf8_string(); - - if (this->m_promptPresets->GetSelection() > 0) { - for (const auto& preset : this->PromptTemplates) { - if (preset.second.name == this->m_promptPresets->GetStringSelection().utf8_string()) { - if (preset.second.prompt.empty() == false) { - wxString _prompt = wxString::FromUTF8Unchecked(preset.second.prompt); - item->original_prompt = item->params.prompt; - if (_prompt.Contains("{prompt}")) { - _prompt.Replace("{prompt}", wxString::FromUTF8Unchecked(item->params.prompt)); - item->params.prompt = _prompt.utf8_string(); - } else { - item->params.prompt = item->params.prompt + " " + preset.second.prompt; - } - } - - if (preset.second.negative_prompt.empty() == false) { - wxString _neg_prompt = wxString::FromUTF8Unchecked(preset.second.negative_prompt); - item->original_negative_prompt = item->params.negative_prompt; - if (_neg_prompt.Contains("{prompt}")) { - _neg_prompt.Replace("{prompt}", wxString::FromUTF8Unchecked(item->params.negative_prompt)); - item->params.negative_prompt = _neg_prompt.utf8_string(); - } else { - item->params.negative_prompt = item->params.negative_prompt + " " + preset.second.negative_prompt; - } - } - } - } - } - - if (this->m_controlnetModels->GetSelection() > 0) { - item->params.control_net_cpu = this->cnOnCpu->GetValue(); + item->model = wxFileName(item->params.diffusion_model_path).GetFullName(); } auto slgscale = this->slgScale->GetValue(); @@ -1100,9 +1135,103 @@ void MainWindowUI::onGenerate(wxCommandEvent& event) { item->params.t5xxl_path = t5xxlPath.utf8_string(); } } + + item->params.lora_model_dir = this->mapp->cfg->lora; + item->params.embeddings_path = this->mapp->cfg->embedding; + item->params.n_threads = this->mapp->cfg->n_threads; + item->keep_checkpoint_in_memory = this->m_keep_other_models_in_memory->GetValue(); + item->keep_upscaler_in_memory = this->m_keep_upscaler_in_memory->GetValue(); + + item->params.vae_on_cpu = this->vaeOnCpu->GetValue(); + item->params.clip_on_cpu = this->clipOnCpu->GetValue(); + item->params.diffusion_flash_attn = this->diffusionFlashAttn->GetValue(); + + if (type == QM::GenerationMode::TXT2IMG) { + item->params.prompt = this->m_prompt->GetValue().utf8_string(); + item->params.negative_prompt = this->m_neg_prompt->GetValue().utf8_string(); + + if (this->m_controlnetModels->GetSelection() > 0) { + item->params.control_net_cpu = this->cnOnCpu->GetValue(); + } + } + // prompt template into txt2img and img2img too + if (this->m_promptPresets->GetSelection() > 0) { + for (const auto& preset : this->PromptTemplates) { + if (preset.second.name == this->m_promptPresets->GetStringSelection().utf8_string()) { + if (preset.second.prompt.empty() == false) { + wxString _prompt = wxString::FromUTF8Unchecked(preset.second.prompt); + item->original_prompt = item->params.prompt; + if (_prompt.Contains("{prompt}")) { + _prompt.Replace("{prompt}", wxString::FromUTF8Unchecked(item->params.prompt)); + item->params.prompt = _prompt.utf8_string(); + } else { + item->params.prompt = item->params.prompt + " " + preset.second.prompt; + } + } + + if (preset.second.negative_prompt.empty() == false) { + wxString _neg_prompt = wxString::FromUTF8Unchecked(preset.second.negative_prompt); + item->original_negative_prompt = item->params.negative_prompt; + if (_neg_prompt.Contains("{prompt}")) { + _neg_prompt.Replace("{prompt}", wxString::FromUTF8Unchecked(item->params.negative_prompt)); + item->params.negative_prompt = _neg_prompt.utf8_string(); + } else { + item->params.negative_prompt = item->params.negative_prompt + " " + preset.second.negative_prompt; + } + } + } + } + } + if (type == QM::GenerationMode::IMG2IMG) { item->params.prompt = this->m_prompt2->GetValue().utf8_string(); item->params.negative_prompt = this->m_neg_prompt2->GetValue().utf8_string(); + wxImage originalImage = this->inpaintHelper->GetOriginalImage(); + wxImage initialImage = this->inpaintHelper->GetOriginalImage(); + wxFileName initialImageName(this->mapp->cfg->tmppath + wxFileName::GetPathSeparators() + wxString::Format("initial_image_%d_%sx%s", this->qmanager->GetNextId(), this->m_width->GetValue(), this->m_height->GetValue())); + initialImageName.SetExt("png"); + wxFileName originalImageName(this->mapp->cfg->tmppath + wxFileName::GetPathSeparators() + wxString::Format("original_image_%d_%sx%s", this->qmanager->GetNextId(), this->m_width->GetValue(), this->m_height->GetValue())); + originalImageName.SetExt("png"); + wxFileName maskImagename(this->mapp->cfg->tmppath + wxFileName::GetPathSeparators() + wxString::Format("inpaint_mask_image_%d_%sx%s", this->qmanager->GetNextId(), this->m_width->GetValue(), this->m_height->GetValue())); + maskImagename.SetExt("png"); + wxFileName outpaintMaskImageName(this->mapp->cfg->tmppath + wxFileName::GetPathSeparators() + wxString::Format("outpaint_mask_image_%d_%sx%s", this->qmanager->GetNextId(), this->m_width->GetValue(), this->m_height->GetValue())); + outpaintMaskImageName.SetExt("png"); + + if (this->inpaintHelper->inPaintImageLoaded() == true) { + auto maskImage = this->inpaintHelper->GetMaskImage(); + if (this->inpaintHelper->inPaintCanvasEmpty() == false) { + maskImage.SaveFile(maskImagename.GetAbsolutePath(), wxBITMAP_TYPE_PNG); + QM::QueueItemImageType _type = QM::QueueItemImageType::MASK_INPAINT | QM::QueueItemImageType::TMP | QM::QueueItemImageType::MASK; + if (this->inpaintHelper->isOutPainted() == false) { + _type |= QM::QueueItemImageType::MASK_USED; + } + item->images.emplace_back(QM::QueueItemImage({maskImagename.GetAbsolutePath(), _type})); + item->mask_image = maskImagename.GetAbsolutePath(); + } + if (this->inpaintHelper->isOutPainted()) { + wxImage outPaintedArea = originalImage; + wxImage outPaintedMaskImage = maskImage; + int canvasTop = wxAtoi(this->m_inpaintCanvasTop->GetValue()); + int canvasLeft = wxAtoi(this->m_inpaintCanvasLeft->GetValue()); + int canvasRight = wxAtoi(this->m_inpaintCanvasRight->GetValue()); + int canvasBottom = wxAtoi(this->m_inpaintCanvasBottom->GetValue()); + sd_gui_utils::CropOrFillImage(outPaintedArea, canvasTop, canvasRight, canvasBottom, canvasLeft, wxColour(128, 128, 128)); + outPaintedArea.SaveFile(initialImageName.GetAbsolutePath(), wxBITMAP_TYPE_PNG); + + sd_gui_utils::CropOrFillImage(outPaintedMaskImage, canvasTop, canvasRight, canvasBottom, canvasLeft, wxColour(255, 255, 255)); + outPaintedMaskImage.SaveFile(outpaintMaskImageName.GetAbsolutePath(), wxBITMAP_TYPE_PNG); + + originalImage.SaveFile(originalImageName.GetAbsolutePath(), wxBITMAP_TYPE_PNG); + item->images.emplace_back(QM::QueueItemImage({initialImageName.GetAbsolutePath(), QM::QueueItemImageType::INITIAL | QM::QueueItemImageType::TMP})); + item->images.emplace_back(QM::QueueItemImage({originalImageName.GetAbsolutePath(), QM::QueueItemImageType::ORIGINAL | QM::QueueItemImageType::TMP})); + item->images.emplace_back(QM::QueueItemImage({outpaintMaskImageName.GetAbsolutePath(), QM::QueueItemImageType::MASK_OUTPAINT | QM::QueueItemImageType::MASK | QM::QueueItemImageType::MASK_USED | QM::QueueItemImageType::TMP})); + item->mask_image = outpaintMaskImageName.GetAbsolutePath(); + } else { + originalImage.SaveFile(initialImageName.GetAbsolutePath(), wxBITMAP_TYPE_PNG); + item->images.emplace_back(QM::QueueItemImage({initialImageName.GetAbsolutePath(), QM::QueueItemImageType::INITIAL | QM::QueueItemImageType::TMP})); + } + item->initial_image = initialImageName.GetAbsolutePath(); + } } item->params.cfg_scale = static_cast(this->m_cfg->GetValue()); @@ -1140,18 +1269,18 @@ void MainWindowUI::onGenerate(wxCommandEvent& event) { } item->params.batch_count = this->m_batch_count->GetValue(); - item->params.width = this->m_width->GetValue(); - item->params.height = this->m_height->GetValue(); - item->params.vae_tiling = this->m_vae_tiling->GetValue(); + this->m_width->GetValue().ToInt(&item->params.width); + this->m_height->GetValue().ToInt(&item->params.height); + item->params.vae_tiling = this->m_vae_tiling->GetValue(); item->mode = type; if (type == QM::GenerationMode::IMG2IMG) { - if (this->m_img2imgOpen->GetPath().empty() == false && wxFileName(this->m_img2imgOpen->GetPath()).Exists()) { + if (this->m_img2imgOpen->GetPath().empty() == false && wxFileName(this->m_img2imgOpen->GetPath()).Exists() && item->initial_image.empty()) { item->initial_image = this->m_img2imgOpen->GetPath().utf8_string(); - if (this->mapp->cfg->save_all_image) { - item->images.emplace_back(QM::QueueItemImage({item->initial_image, QM::QueueItemImageType::INITIAL})); - } + // if (this->mapp->cfg->save_all_image) { + item->images.emplace_back(QM::QueueItemImage({item->initial_image, QM::QueueItemImageType::INITIAL})); + //} } } @@ -1190,7 +1319,10 @@ void MainWindowUI::OnControlnetImagePreviewButton(wxCommandEvent& event) { dialog->SetTitle(title); dialog->SetIcon(this->GetIcon()); dialog->m_bitmap->SetBitmap(img); - wxPersistenceManager::Get().RegisterAndRestore(dialog); + + if (wxPersistenceManager::Get().RegisterAndRestore(dialog) == false) { + dialog->Center(); + } dialog->ShowModal(); } @@ -1248,7 +1380,6 @@ void MainWindowUI::onCleanDiffusionModel(wxCommandEvent& event) { this->m_neg_prompt->Enable(); this->m_filePickerClipL->SetPath(""); this->m_filePickerT5XXL->SetPath(""); - this->EnableControlNet(); } @@ -1280,19 +1411,25 @@ void MainWindowUI::OnImg2ImgPreviewButton(wxCommandEvent& event) { } void MainWindowUI::OnDeleteInitialImage(wxCommandEvent& event) { - auto origSize = this->m_img2img_preview->GetSize(); - this->m_img2img_preview->SetBitmap(this->AppOrigPlaceHolderBitmap); - this->m_img2img_preview->SetSize(origSize); + this->m_inpaintResizeToSdSize->Disable(); + this->m_inpaintSaveMask->Disable(); + + this->m_inpaintCanvasTop->SetValue("0"); + this->m_inpaintCanvasBottom->SetValue("0"); + this->m_inpaintCanvasLeft->SetValue("0"); + this->m_inpaintCanvasRight->SetValue("0"); + + this->inpaintHelper->OnDeleteInitialImage(); + this->m_img2im_preview_img->Disable(); this->m_delete_initial_img->Disable(); - auto path = wxFileName(this->m_img2imgOpen->GetPath()); - if (path.IsDir()) { - this->m_img2imgOpen->SetPath(path.GetAbsolutePath()); - } else { - this->m_img2imgOpen->SetPath(path.GetPath()); - } + this->m_inpaintBrushSizeSlider->SetValue(this->inpaintHelper->GetCurrentBrushSize()); + this->m_inpaintZoomSlider->SetValue(this->inpaintHelper->GetZoomFactor() * 100); + this->m_inpaintClearMask->Disable(); + this->mapp->cfg->lastImg2ImgPath = this->m_img2imgOpen->GetPath(); this->CheckQueueButton(); + this->m_inpaintImageResolution->SetLabel(wxEmptyString); } void MainWindowUI::OnUpscalerDropFile(wxDropFilesEvent& event) { @@ -1356,6 +1493,7 @@ void MainWindowUI::OnDataModelTreeSelected(wxTreeListEvent& event) { this->m_ModelFavorite->SetValue(sd_gui_utils::HasTag(modelInfo->tags, sd_gui_utils::ModelInfoTag::Favorite)); this->UpdateModelInfoDetailsFromModelList(modelInfo); + this->mapp->config->Write("/model_list/last_selected_model", wxString::FromUTF8Unchecked(modelInfo->path)); } void MainWindowUI::OnModelFavoriteChange(wxCommandEvent& event) { @@ -1380,7 +1518,7 @@ void MainWindowUI::OnModelFavoriteChange(wxCommandEvent& event) { this->treeListManager->ChangeText(item, modelInfo->name, 0); modelInfo->tags = modelInfo->tags & ~sd_gui_utils::ModelInfoTag::Favorite; } - std::cout << "Save model info: " << modelInfo->meta_file << std::endl; + this->treeListManager->SelectItemByModelPath(modelInfo->path); this->ModelManager->UpdateInfo(modelInfo); if (this->mapp->cfg->favorite_models_only) { // check if in it the m_model, i = 0 is placeholder @@ -1465,7 +1603,6 @@ void MainWindowUI::OnImageInfoTryFindModel(wxCommandEvent& event) { return; } - bool found = false; auto model = this->ModelManager->findModelByImageParams(this->lastImageInfoParams); if (model == nullptr) { return; @@ -1502,79 +1639,7 @@ void MainWindowUI::cleanUpImageInformations() { } void MainWindowUI::OnImageInfoOpen(wxFileDirPickerEvent& event) { - this->cleanUpImageInformations(); - if (event.GetPath().empty()) { - this->m_imageInfoOpen->SetPath(this->mapp->cfg->lastImageInfoPath); - return; - } - - if (!wxFile::Exists(event.GetPath())) { - this->m_imageInfoOpen->SetPath(this->mapp->cfg->lastImageInfoPath); - return; - } - - wxFileName imagePath(event.GetPath()); - - wxImage image(imagePath.GetFullPath()); - auto origSize = this->m_imageinfo_preview->GetSize(); - auto preview = sd_gui_utils::ResizeImageToMaxSize(image, origSize.GetWidth(), origSize.GetHeight()); - this->m_imageinfo_preview->SetBitmap(preview); - this->m_imageinfo_preview->SetSize(origSize); - - this->bSizer117->Layout(); - - if (image.IsOk()) { - this->mapp->cfg->lastImageInfoPath = imagePath.GetPath().utf8_string(); - this->mapp->config->Write("/lastImageInfoPath", imagePath.GetPath()); - this->mapp->config->Flush(true); - - std::unordered_map metadata; - - if (image.GetType() == wxBITMAP_TYPE_PNG) { - const auto meta = sd_gui_utils::ReadMetadata(event.GetPath().utf8_string()); - if (BUILD_TYPE == "Debug") { - for (const auto& [key, value] : meta) { - std::cout << key.utf8_string() << ": " << value.utf8_string() << std::endl; - } - } - if (meta.contains("Parameters")) { - metadata = sd_gui_utils::parseExifPrompts(wxString::FromUTF8Unchecked(meta.at("Parameters"))); - } - if (meta.contains("parameters")) { - metadata = sd_gui_utils::parseExifPrompts(wxString::FromUTF8Unchecked(meta.at("parameters"))); - } - } - - if (metadata.empty()) { - metadata = this->getMetaDataFromImage(event.GetPath()); - } - - if (metadata.empty()) { - return; - } - - if (metadata.contains("prompt")) { - this->m_imageInfoPrompt->SetValue(metadata.at("prompt")); - } - - if (metadata.contains("negative_prompt")) { - this->m_imageInfoNegPrompt->SetValue(metadata.at("negative_prompt")); - } - wxString meta; - for (const auto& [key, value] : metadata) { - if (key == "prompt" || key == "negative_prompt") { - continue; - } - meta += key + ": " + value + "\n"; - } - if (meta.empty()) { - return; - } - this->m_imageInfoList->SetValue(meta); - this->m_imageInfoLoadTotxt->Enable(); - this->m_imageInfoLoadToimg2img->Enable(); - this->lastImageInfoParams = metadata; - } + this->onimgInfoOpen(event.GetPath()); } void MainWindowUI::onSamplerSelect(wxCommandEvent& event) { @@ -1592,8 +1657,8 @@ void MainWindowUI::onSavePreset(wxCommandEvent& event) { // preset.seed = this->m_seed->GetValue(); preset.clip_skip = this->m_clip_skip->GetValue(); preset.steps = this->m_steps->GetValue(); - preset.width = this->m_width->GetValue(); - preset.height = this->m_height->GetValue(); + this->m_width->GetValue().ToInt(&preset.width); + this->m_height->GetValue().ToInt(&preset.height); for (auto sampler : sd_gui_utils::samplerUiName) { if (this->m_sampler->GetStringSelection() == sampler.second) { @@ -1641,8 +1706,8 @@ void MainWindowUI::onLoadPreset(wxCommandEvent& event) { // when the width || height input is disabled, do not modify it (eg.: // controlnet works...) if (this->m_width->IsEnabled() || this->m_height->IsEnabled()) { - this->m_width->SetValue(preset.second.width); - this->m_height->SetValue(preset.second.height); + this->m_width->SetValue(wxString::Format(wxT("%i"), preset.second.width)); + this->m_height->SetValue(wxString::Format(wxT("%i"), preset.second.height)); } this->SetSamplerByType(preset.second.sampler); this->SetSchedulerByType(preset.second.scheduler); @@ -1686,8 +1751,8 @@ void MainWindowUI::ChangeGuiFromQueueItem(QM::QueueItem item) { return; } this->m_seed->SetValue(item.params.seed); - this->m_width->SetValue(item.params.width); - this->m_height->SetValue(item.params.height); + this->m_width->SetValue(wxString::Format(wxT("%i"), item.params.width)); + this->m_height->SetValue(wxString::Format(wxT("%i"), item.params.height)); this->m_steps->SetValue(item.params.sample_steps); this->m_clip_skip->SetValue(item.params.clip_skip); this->m_controlnetStrength->SetValue(item.params.control_strength); @@ -1725,6 +1790,19 @@ void MainWindowUI::ChangeGuiFromQueueItem(QM::QueueItem item) { this->slgScale->SetValue(item.params.slg_scale); } } + if (item.mode == QM::GenerationMode::IMG2IMG) { + for (const auto& img : item.images) { + if (wxFileExists(wxString::FromUTF8Unchecked(img.pathname)) == false) { + continue; + } + if (img.type == QM::QueueItemImageType::INITIAL) { + // TODO send image to img2img + } + if (img.type == QM::QueueItemImageType::MASK) { + // load mask from file + } + } + } if (!item.params.model_path.empty() && std::filesystem::exists(item.params.model_path)) { sd_gui_utils::ModelFileInfo* model = this->ModelManager->getIntoPtr(item.params.model_path); @@ -1924,7 +2002,7 @@ void MainWindowUI::UpdateModelInfoDetailsFromModelList(sd_gui_utils::ModelFileIn continue; } if (std::filesystem::exists(img.local_path)) { - wxImage resized = sd_gui_utils::cropResizeImage(wxString::FromUTF8Unchecked(img.local_path), 256, 256, wxColour(0, 0, 0, wxALPHA_TRANSPARENT), wxString::FromUTF8Unchecked(this->mapp->cfg->thumbs_path)); + wxImage resized = sd_gui_utils::cropResizeImage(wxString::FromUTF8Unchecked(img.local_path), 256, 256, wxColour(51, 51, 51, wxALPHA_TRANSPARENT), wxString::FromUTF8Unchecked(this->mapp->cfg->thumbs_path)); wxStaticBitmap* bitmap = new wxStaticBitmap(this->m_modelDetailsImageList, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(resized.GetSize()), 0); bitmap->Hide(); bitmap->SetBitmap(resized); @@ -1937,27 +2015,30 @@ void MainWindowUI::UpdateModelInfoDetailsFromModelList(sd_gui_utils::ModelFileIn wxMenu* menu = new wxMenu(); menu->Append(99, tooltip); menu->Enable(99, false); - if (!img.meta.prompt.empty()) { - menu->Append(0, "Copy prompts to text2img"); - menu->Append(1, "Copy prompts to img2img"); - menu->Append(2, "Send to img2img"); - menu->Enable(1, false); - menu->Enable(2, false); - menu->Append(3, "Load available parameters"); - } - menu->Append(10, _("Open Image on CivitAi.com")); - menu->Enable(10, false); + + menu->Append(0, _("Copy prompts to text2img")); + menu->Append(1, _("Copy prompts to img2img")); + menu->Append(2, _("Send to img2img")); + + menu->Enable(0, !img.meta.prompt.empty()); + menu->Enable(1, !img.meta.negativePrompt.empty()); + menu->Enable(2, wxFileExists(img.local_path)); + + menu->Append(3, _("Load available parameters")); + menu->Append(10, _("Open the original image in the web browser")); + + menu->Enable(10, !img.url.empty()); if (!img.meta.hashes.model.empty()) { auto imgsModel = this->ModelManager->getIntoPtrByHash(img.meta.hashes.model); if (imgsModel != nullptr && !imgsModel->civitaiPlainJson.empty()) { - menu->Append(4, wxString::Format("Select model %s", imgsModel->name)); - } else { - menu->Append(4, wxString::Format("Image's model not found: %s", img.meta.hashes.model)); - menu->Enable(4, false); + menu->Append(4, wxString::Format(_("Select model %s"), imgsModel->name)); } } + menu->Append(11, _("Send to Image Info tab")); + menu->Enable(11, wxFileExists(img.local_path)); + menu->Bind(wxEVT_COMMAND_MENU_SELECTED, [this, img, modelinfo](wxCommandEvent& evt) { auto id = evt.GetId(); switch (id) { @@ -1970,7 +2051,7 @@ void MainWindowUI::UpdateModelInfoDetailsFromModelList(sd_gui_utils::ModelFileIn this->m_neg_prompt2->SetValue(img.meta.negativePrompt); } break; case 2: { - this->onimg2ImgImageOpen(img.local_path); + this->onimg2ImgImageOpen(img.local_path, true); this->m_prompt2->SetValue(img.meta.prompt); this->m_neg_prompt2->SetValue(img.meta.negativePrompt); } break; @@ -1995,8 +2076,8 @@ void MainWindowUI::UpdateModelInfoDetailsFromModelList(sd_gui_utils::ModelFileIn int width, height; std::istringstream(part1) >> width; std::istringstream(part2) >> height; - this->m_width->SetValue(width); - this->m_height->SetValue(height); + this->m_width->SetValue(wxString::Format(wxT("%i"), width)); + this->m_height->SetValue(wxString::Format(wxT("%i"), height)); } } } break; @@ -2004,9 +2085,14 @@ void MainWindowUI::UpdateModelInfoDetailsFromModelList(sd_gui_utils::ModelFileIn this->ChangeModelByInfo(modelinfo); } break; case 10: { - // wxString url = - // wxString::Format("https://civitai.com/images/%d",img.i); - // TODO: missing img ID from the json... + // dialog to ask user to open the image + wxMessageDialog dialog(this, wxString::Format(_("Open the original image in the web browser?\n %s"), img.url), _("Open original image"), wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION); + if (dialog.ShowModal() == wxID_YES) { + wxLaunchDefaultBrowser(img.url); + } + } break; + case 11: { + this->onimgInfoOpen(wxString::FromUTF8Unchecked(img.local_path)); } break; default: { return; @@ -2074,6 +2160,8 @@ void MainWindowUI::OnQueueItemManagerItemUpdated(std::shared_ptr // update column auto store = this->m_joblist->GetStore(); wxString speed = wxString::Format(item->time > 1.0f ? "%.2fs/it %d/%d" : "%.2fit/s %d/%d", item->time > 1.0f || item->time == 0 ? item->time : (1.0f / item->time), item->step, item->steps); + int progressCol = this->m_joblist->GetColumnCount() - 4; + int speedCol = this->m_joblist->GetColumnCount() - 3; float current_progress = 0.f; if (item->step > 0 && item->steps > 0) { @@ -2171,10 +2259,14 @@ MainWindowUI::~MainWindowUI() { void MainWindowUI::loadControlnetList() { this->LoadFileList(sd_gui_utils::DirTypes::CONTROLNET); + auto lastSelection = this->mapp->config->Read("/model_list/last_selected_model", wxEmptyString); + this->treeListManager->SelectItemByModelPath(lastSelection.utf8_string()); } void MainWindowUI::loadEmbeddingList() { this->LoadFileList(sd_gui_utils::DirTypes::EMBEDDING); + auto lastSelection = this->mapp->config->Read("/model_list/last_selected_model", wxEmptyString); + this->treeListManager->SelectItemByModelPath(lastSelection.utf8_string()); } void MainWindowUI::OnModelListPopUpClick(wxCommandEvent& evt) { @@ -2387,15 +2479,6 @@ void MainWindowUI::OnModelListPopUpClick(wxCommandEvent& evt) { void MainWindowUI::OnPopupClick(wxCommandEvent& evt) { auto tu = evt.GetId(); - - wxDataViewItemArray sel; - - if (this->m_joblist->GetSelections(sel) == 0) { - return; - } - - wxDataViewListStore* store = this->m_joblist->GetStore(); - if (tu == 99) { this->m_joblist->GetSelections(sel); for (auto& item : sel) { @@ -2409,10 +2492,16 @@ void MainWindowUI::OnPopupClick(wxCommandEvent& evt) { return; } - auto currentItem = sel.front(); - - int id = store->GetItemData(currentItem); - std::shared_ptr qitem = this->qmanager->GetItemPtr(id); + // 100 for queueitem list table + if (tu < 100) { + wxDataViewListStore* store = this->m_joblist->GetStore(); + auto currentItem = this->m_joblist->GetCurrentItem(); + auto currentRow = this->m_joblist->GetSelectedRow(); + if (currentRow == wxNOT_FOUND) { + return; + } + int id = store->GetItemData(currentItem); + std::shared_ptr qitem = this->qmanager->GetItemPtr(id); /* 1 Copy and queue @@ -2423,68 +2512,79 @@ void MainWindowUI::OnPopupClick(wxCommandEvent& evt) { 99 delete */ - switch (tu) { - case 1: - this->qmanager->Duplicate(qitem); - case 2: - this->ChangeGuiFromQueueItem(*qitem); - break; - case 3: - this->m_prompt->SetValue(wxString::FromUTF8Unchecked(qitem->original_prompt.empty() ? qitem->params.prompt : qitem->original_prompt)); - this->m_neg_prompt->SetValue(wxString::FromUTF8Unchecked(qitem->original_negative_prompt.empty() ? qitem->params.negative_prompt : qitem->original_negative_prompt)); - break; - case 4: - this->m_prompt2->SetValue(wxString::FromUTF8Unchecked(qitem->original_prompt.empty() ? qitem->params.prompt : qitem->original_prompt)); - this->m_neg_prompt2->SetValue(wxString::FromUTF8Unchecked(qitem->original_negative_prompt.empty() ? qitem->params.negative_prompt : qitem->original_negative_prompt)); - break; - case 5: { - if (qitem->params.model_path.empty() && qitem->params.diffusion_model_path.empty() == false) { - if (std::filesystem::exists(qitem->params.diffusion_model_path)) { - this->m_filePickerDiffusionModel->SetPath(qitem->params.diffusion_model_path); + switch (tu) { + case 1: + this->qmanager->Duplicate(qitem); + case 2: + this->ChangeGuiFromQueueItem(*qitem); + break; + case 3: + this->m_prompt->SetValue(wxString::FromUTF8Unchecked(qitem->original_prompt.empty() ? qitem->params.prompt : qitem->original_prompt)); + this->m_neg_prompt->SetValue(wxString::FromUTF8Unchecked(qitem->original_negative_prompt.empty() ? qitem->params.negative_prompt : qitem->original_negative_prompt)); + break; + case 4: + this->m_prompt2->SetValue(wxString::FromUTF8Unchecked(qitem->original_prompt.empty() ? qitem->params.prompt : qitem->original_prompt)); + this->m_neg_prompt2->SetValue(wxString::FromUTF8Unchecked(qitem->original_negative_prompt.empty() ? qitem->params.negative_prompt : qitem->original_negative_prompt)); + break; + case 5: { + if (qitem->params.model_path.empty() && qitem->params.diffusion_model_path.empty() == false) { + if (std::filesystem::exists(qitem->params.diffusion_model_path)) { + this->m_filePickerDiffusionModel->SetPath(qitem->params.diffusion_model_path); + } else { + wxMessageDialog dialog(this, _("Diffusion model not found"), _("Error"), wxOK | wxICON_ERROR); + dialog.ShowModal(); + } } else { - wxMessageDialog dialog(this, _("Diffusion model not found"), _("Error"), wxOK | wxICON_ERROR); - dialog.ShowModal(); + auto model = this->ModelManager->getIntoPtr(qitem->params.model_path); + this->ChangeModelByInfo(model); } - } else { - auto model = this->ModelManager->getIntoPtr(qitem->params.model_path); - this->ChangeModelByInfo(model); - } - } break; - case 6: { - this->m_upscaler_filepicker->SetPath(wxString::FromUTF8Unchecked(qitem->images.back().pathname)); - this->onUpscaleImageOpen(wxString::FromUTF8Unchecked(qitem->images.back().pathname)); - this->m_notebook1302->SetSelection(3); // switch to the upscaler - } break; - case 7: { - this->m_img2imgOpen->SetPath(wxString::FromUTF8Unchecked(qitem->images.back().pathname)); - this->onimg2ImgImageOpen(wxString::FromUTF8Unchecked(qitem->images.back().pathname)); - this->m_notebook1302->SetSelection(2); // switch to the img2img - } break; - case 8: { - if (qitem->status == QM::QueueStatus::PAUSED) { - this->qmanager->UnPauseItem(qitem); - return; - } - if (qitem->status == QM::QueueStatus::PENDING) { - this->qmanager->PauseItem(qitem); - return; - } - } break; + } break; + case 6: { + this->m_upscaler_filepicker->SetPath(wxString::FromUTF8Unchecked(qitem->images.back().pathname)); + this->onUpscaleImageOpen(wxString::FromUTF8Unchecked(qitem->images.back().pathname)); + this->m_notebook1302->SetSelection(+sd_gui_utils::GuiMainPanels::PANEL_UPSCALER); // switch to the upscaler + } break; + case 7: { + this->onimg2ImgImageOpen(wxString::FromUTF8Unchecked(qitem->images.back().pathname), true); + } break; + case 8: { + if (qitem->status == QM::QueueStatus::PAUSED) { + this->qmanager->UnPauseItem(qitem); + return; + } + if (qitem->status == QM::QueueStatus::PENDING) { + this->qmanager->PauseItem(qitem); + return; + } + } break; + case 99: { + if (this->qmanager->DeleteJob(qitem->id)) { + store->DeleteItem(currentRow); + this->m_static_number_of_jobs->SetLabel(wxString::Format(_("Number of jobs: %d"), this->m_joblist->GetItemCount())); + } + } break; + } + return; } - return; } void MainWindowUI::loadVaeList() { this->LoadFileList(sd_gui_utils::DirTypes::VAE); this->m_vae->SetToolTip(this->m_vae->GetStringSelection()); + auto lastSelection = this->mapp->config->Read("/model_list/last_selected_model", wxEmptyString); + this->treeListManager->SelectItemByModelPath(lastSelection.utf8_string()); } void MainWindowUI::loadEsrganList() { this->LoadFileList(sd_gui_utils::DirTypes::ESRGAN); + auto lastSelection = this->mapp->config->Read("/model_list/last_selected_model", wxEmptyString); + this->treeListManager->SelectItemByModelPath(lastSelection.utf8_string()); } void MainWindowUI::loadTaesdList() { this->LoadFileList(sd_gui_utils::DirTypes::TAESD); + auto lastSelection = this->mapp->config->Read("/model_list/last_selected_model", wxEmptyString); + this->treeListManager->SelectItemByModelPath(lastSelection.utf8_string()); } wxString MainWindowUI::paramsToImageComment(const QM::QueueItem& myItem) { @@ -2626,7 +2726,7 @@ void MainWindowUI::LoadFileList(sd_gui_utils::DirTypes type) { switch (type) { case sd_gui_utils::DirTypes::VAE: { this->m_vae->Clear(); - this->m_vae->Append(_("-none-")); + this->m_vae->Append(_("Select one")); this->m_vae->Select(0); basepath = this->mapp->cfg->vae; } break; @@ -2635,27 +2735,27 @@ void MainWindowUI::LoadFileList(sd_gui_utils::DirTypes type) { } break; case sd_gui_utils::DirTypes::CHECKPOINT: { this->m_model->Clear(); - this->m_model->Append(_("-none-")); + this->m_model->Append(_("Select one")); this->m_model->Select(0); basepath = this->mapp->cfg->model; } break; case sd_gui_utils::DirTypes::PRESETS: { this->Presets.clear(); this->m_preset_list->Clear(); - this->m_preset_list->Append(_("-none-")); + this->m_preset_list->Append(_("Not selected")); this->m_preset_list->Select(0); basepath = this->mapp->cfg->presets; } break; case sd_gui_utils::DirTypes::PROMPT_TEMPLATES: { this->PromptTemplates.clear(); this->m_promptPresets->Clear(); - this->m_promptPresets->Append(_("-none-")); + this->m_promptPresets->Append(_("Not selected")); this->m_promptPresets->Select(0); basepath = this->mapp->cfg->prompt_templates; } break; case sd_gui_utils::DirTypes::TAESD: { this->m_taesd->Clear(); - this->m_taesd->Append(_("-none-")); + this->m_taesd->Append(_("Select one")); this->m_taesd->Select(0); basepath = this->mapp->cfg->taesd; } break; @@ -2664,13 +2764,13 @@ void MainWindowUI::LoadFileList(sd_gui_utils::DirTypes type) { } break; case sd_gui_utils::DirTypes::CONTROLNET: { this->m_controlnetModels->Clear(); - this->m_controlnetModels->Append(_("-none-")); + this->m_controlnetModels->Append(_("Not selected")); this->m_controlnetModels->Select(0); basepath = this->mapp->cfg->controlnet; } break; case sd_gui_utils::DirTypes::ESRGAN: { this->m_upscaler_model->Clear(); - this->m_upscaler_model->Append(_("-none-")); + this->m_upscaler_model->Append(_("Not selected")); this->m_upscaler_model->Select(0); basepath = this->mapp->cfg->esrgan; } break; @@ -2838,6 +2938,8 @@ void MainWindowUI::LoadFileList(sd_gui_utils::DirTypes type) { } void MainWindowUI::loadLoraList() { this->LoadFileList(sd_gui_utils::DirTypes::LORA); + auto lastSelection = this->mapp->config->Read("/model_list/last_selected_model", wxEmptyString); + this->treeListManager->SelectItemByModelPath(lastSelection.utf8_string()); } void MainWindowUI::OnCloseSettings(wxCloseEvent& event) { @@ -2861,7 +2963,6 @@ void MainWindowUI::OnCloseCivitWindow(wxCloseEvent& event) { } void MainWindowUI::imageCommentToGuiParams(std::unordered_map params, SDMode mode) { - bool modelFound = false; for (auto item : params) { // try to find a sampler if (item.first.Lower().Contains("sampler")) { @@ -2885,11 +2986,11 @@ void MainWindowUI::imageCommentToGuiParams(std::unordered_mapm_width->SetValue(std::atoi(w.c_str())); - this->m_height->SetValue(std::atoi(h.c_str())); + this->m_width->SetValue(w); + this->m_height->SetValue(h); } if (item.first == "steps") { @@ -2954,33 +3055,148 @@ void MainWindowUI::imageCommentToGuiParams(std::unordered_mapm_inpaintCanvasTop->SetValue(wxString("0")); + this->m_inpaintCanvasRight->SetValue(wxString("0")); + this->m_inpaintCanvasBottom->SetValue(wxString("0")); + this->m_inpaintCanvasLeft->SetValue(wxString("0")); + if (file.length() < 1) { std::cerr << __FILE__ << ":" << __LINE__ << " onimg2ImgImageOpen: file is empty" << std::endl; return; } wxImage img; if (img.LoadFile(file)) { - auto origSize = this->m_img2img_preview->GetSize(); + int origWidth = 512, origHeight = 512; + this->m_width->GetValue().ToInt(&origWidth); + this->m_height->GetValue().ToInt(&origHeight); + + if (forceResolutions) { + this->m_width->SetValue(wxString::Format(wxT("%i"), img.GetWidth())); + this->m_height->SetValue(wxString::Format(wxT("%i"), img.GetHeight())); + } + + if (img.GetWidth() > origWidth || img.GetHeight() > origHeight) { + this->m_inpaintResizeToSdSize->Enable(); + } else { + if (forceResolutions == false) { + if (img.GetWidth() < origWidth || img.GetHeight() < origHeight) { + this->m_inpaintResizeToSdSize->Disable(); + this->m_inpaintSaveMask->Disable(); + wxString msg = wxString::Format(_("Image size (%d x %d) is smaller than the original size (%d x %d). Please increase the size to at least (%d x %d)."), img.GetWidth(), img.GetHeight(), origWidth, origHeight, origWidth, origHeight); + wxMessageDialog dialog(this, msg, "Error", wxOK | wxICON_ERROR); + this->inpaintHelper->Reset(); + dialog.ShowModal(); + return; + } + } + } - auto preview = sd_gui_utils::ResizeImageToMaxSize(img, origSize.GetWidth(), origSize.GetHeight()); + this->m_inpaintSaveMask->Enable(); - this->m_img2img_preview->SetScaleMode(wxStaticBitmap::Scale_AspectFill); - this->m_img2img_preview->SetBitmap(preview); - this->m_img2img_preview->SetSize(origSize); + this->inpaintHelper->SetImage(img); this->m_img2im_preview_img->Enable(); this->m_delete_initial_img->Enable(); - this->m_width->SetValue(img.GetWidth()); - this->m_height->SetValue(img.GetHeight()); - this->m_width->Disable(); - this->m_height->Disable(); + this->m_width->Enable(); + this->m_height->Enable(); + this->m_img2imgOpen->SetPath(file); + this->mapp->cfg->lastImg2ImgPath = this->m_img2imgOpen->GetPath(); + this->mapp->config->Write("/lastImg2ImgPath", this->m_img2imgOpen->GetPath()); + this->mapp->config->Flush(true); + this->m_inpaintImageResolution->SetLabel(wxString::Format("%d x %d", img.GetWidth(), img.GetHeight())); this->readMetaDataFromImage(wxFileName(file), SDMode::IMG2IMG, true); this->CheckQueueButton(); } else { wxMessageBox(_("Can not open image!")); + this->inpaintHelper->Reset(); + } +} + +void MainWindowUI::onimgInfoOpen(const wxString& file) { + this->cleanUpImageInformations(); + if (file.empty()) { + this->m_imageInfoOpen->SetPath(this->mapp->cfg->lastImageInfoPath); + return; + } + + if (!wxFile::Exists(file)) { + this->m_imageInfoOpen->SetPath(this->mapp->cfg->lastImageInfoPath); + return; + } + + wxFileName imagePath(file); + + wxImage image(imagePath.GetFullPath()); + auto origSize = this->m_imageinfo_preview->GetSize(); + auto preview = sd_gui_utils::ResizeImageToMaxSize(image, origSize.GetWidth(), origSize.GetHeight()); + this->m_imageinfo_preview->SetBitmap(preview); + this->m_imageinfo_preview->SetSize(origSize); + + this->bSizer117->Layout(); + + if (image.IsOk()) { + this->m_imageInfoOpen->SetPath(imagePath.GetAbsolutePath()); + this->mapp->cfg->lastImageInfoPath = imagePath.GetAbsolutePath().utf8_string(); + this->mapp->config->Write("/lastImageInfoPath", imagePath.GetPath()); + this->mapp->config->Flush(true); + + std::unordered_map metadata; + + if (image.GetType() == wxBITMAP_TYPE_PNG) { + try { + const auto meta = sd_gui_utils::ReadMetadata(imagePath.GetAbsolutePath().utf8_string()); + if (BUILD_TYPE == "Debug") { + for (const auto& [key, value] : meta) { + std::cout << key.utf8_string() << ": " << value.utf8_string() << std::endl; + } + } + if (meta.contains("Parameters")) { + metadata = sd_gui_utils::parseExifPrompts(meta.at("Parameters").ToStdString()); + } + if (meta.contains("parameters")) { + metadata = sd_gui_utils::parseExifPrompts(meta.at("parameters").ToStdString()); + } + } catch (const std::exception& e) { + this->writeLog(wxString::Format("Error reading metadata: %s File: %s", e.what(), imagePath.GetAbsolutePath().utf8_string())); + } + } + + if (image.GetType() == wxBITMAP_TYPE_JPEG) { + metadata = this->getMetaDataFromImage(imagePath); + } + + if (metadata.empty()) { + this->writeLog(wxString::Format(_("No metadata found in image: %s"), imagePath.GetAbsolutePath().utf8_string()), true); + return; + } + + if (metadata.contains("prompt")) { + this->m_imageInfoPrompt->SetValue(metadata.at("prompt")); + } + + if (metadata.contains("negative_prompt")) { + this->m_imageInfoNegPrompt->SetValue(metadata.at("negative_prompt")); + } + wxString meta; + for (const auto& [key, value] : metadata) { + if (key == "prompt" || key == "negative_prompt") { + continue; + } + meta += key + ": " + value + "\n"; + } + if (meta.empty()) { + return; + } + this->m_imageInfoList->SetValue(meta); + this->m_imageInfoLoadTotxt->Enable(); + this->m_imageInfoLoadToimg2img->Enable(); + this->lastImageInfoParams = metadata; + if (this->m_notebook1302->GetSelection() != sd_gui_utils::GuiMainPanels::PANEL_IMAGEINFO) { + this->m_notebook1302->SetSelection(+sd_gui_utils::GuiMainPanels::PANEL_IMAGEINFO); + } } } @@ -3236,7 +3452,12 @@ void MainWindowUI::OnThreadMessage(wxThreadEvent& e) { } else if (item->mode == QM::GenerationMode::CONVERT) { title = _("Conversion done"); message = wxString::Format(_("Conversion the model is done: \n%s\nModel: %s"), item->model, item->params.output_path); - this->loadModelList(); + if (wxFileExists(item->params.output_path)) { + auto newModel = this->ModelManager->addModel(item->params.output_path, sd_gui_utils::DirTypes::CHECKPOINT, this->mapp->cfg->model); + if (newModel) { + this->treeListManager->AddItem(newModel, true); + } + } } else { if (item->params.batch_count > 1) { title = wxString::Format(_("%d images generation done"), item->params.batch_count); @@ -3523,21 +3744,19 @@ void MainWindowUI::OnThreadMessage(wxThreadEvent& e) { std::shared_ptr myjob = e.GetPayload>(); // update column - auto store = this->m_joblist->GetStore(); - wxString speed = wxString::Format(myjob->time > 1.0f ? "%.2fs/it" : "%.2fit/s", myjob->time > 1.0f || myjob->time == 0 ? myjob->time : (1.0f / myjob->time)); - - float current_progress = 100.f * (static_cast(myjob->step) / - static_cast(myjob->steps)); + auto store = this->m_joblist->GetStore(); + int progressCol = this->m_joblist->GetColumnCount() - 4; + int speedCol = this->m_joblist->GetColumnCount() - 3; for (unsigned int i = 0; i < store->GetItemCount(); i++) { auto currentItem = store->GetItem(i); int id = store->GetItemData(currentItem); std::shared_ptr qitem = this->qmanager->GetItemPtr(id); if (qitem->id == myjob->id) { - store->SetValueByRow(static_cast(current_progress), i, (int)queueJobRows::PROGRESS); - store->SetValueByRow(speed, i, (int)queueJobRows::SPEED); - store->RowValueChanged(i, (int)queueJobRows::PROGRESS); - store->RowValueChanged(i, (int)queueJobRows::SPEED); + store->SetValueByRow(qitem->GetActualProgress(), i, progressCol); + store->SetValueByRow(qitem->GetActualSpeed(), i, speedCol); + store->RowValueChanged(i, progressCol); + store->RowValueChanged(i, speedCol); this->m_joblist->Refresh(); this->m_joblist->Update(); break; @@ -3592,7 +3811,11 @@ void MainWindowUI::OnCivitAiThreadMessage(wxThreadEvent& e) { void MainWindowUI::UpdateJobInfoDetailsFromJobQueueList(std::shared_ptr item) { if (item == nullptr) { this->m_joblist_item_details->DeleteAllItems(); - this->previewImageList->Destroy(); + if (this->previewImageList != nullptr && this->previewImageList->RemoveAll()) { + this->previewImageList->Destroy(); + this->previewImageList = nullptr; + } + this->previewImageList = std::make_shared(256, 256); this->previewImageList->Create(256, 256); for (auto _t : this->jobImagePreviews) { _t->Destroy(); @@ -3728,6 +3951,13 @@ void MainWindowUI::UpdateJobInfoDetailsFromJobQueueList(std::shared_ptrm_joblist_item_details->AppendItem(data); data.clear(); + if (item->mask_image.empty() == false) { + data.push_back(wxVariant(_("Mask image"))); + data.push_back(wxVariant(wxString::FromUTF8Unchecked(item->mask_image.data(), item->mask_image.size()))); + this->m_joblist_item_details->AppendItem(data); + data.clear(); + } + data.push_back(wxVariant(_("Strength"))); data.push_back(wxVariant(wxString::Format("%.2f", item->params.strength))); this->m_joblist_item_details->AppendItem(data); @@ -3916,7 +4146,7 @@ void MainWindowUI::UpdateJobInfoDetailsFromJobQueueList(std::shared_ptrimages) { if (std::filesystem::exists(img.pathname)) { - auto resized = sd_gui_utils::cropResizeImage(wxString::FromUTF8Unchecked(img.pathname), 256, 256, wxColour(0, 0, 0, wxALPHA_TRANSPARENT), wxString::FromUTF8Unchecked(this->mapp->cfg->thumbs_path)); + auto resized = sd_gui_utils::cropResizeImage(wxString::FromUTF8Unchecked(img.pathname), 256, 256, wxColour(51, 51, 51, wxALPHA_TRANSPARENT), wxString::FromUTF8Unchecked(this->mapp->cfg->thumbs_path)); img.id = index; wxStaticBitmap* bitmap = new wxStaticBitmap(this->m_scrolledWindow41, wxID_ANY, resized, wxDefaultPosition, wxDefaultSize, 0); @@ -3934,7 +4164,7 @@ void MainWindowUI::UpdateJobInfoDetailsFromJobQueueList(std::shared_ptrEnable(99,false); menu->Append(6, _("Open image")); menu->Append(7, _("Open parent folder")); - if (img.type == QM::QueueItemImageType::GENERATED) { + if (QM::hasType(img.type, QM::QueueItemImageType::GENERATED)) { menu->AppendSeparator(); menu->Append(0, wxString::Format(_("Copy seed %" PRId64), item->params.seed + img.id)); menu->Append(1, _("Copy prompts to text2img")); @@ -3942,11 +4172,20 @@ void MainWindowUI::UpdateJobInfoDetailsFromJobQueueList(std::shared_ptrAppend(3, _("Send the image to img2img")); menu->Append(5, _("Upscale")); } - if (img.type == QM::QueueItemImageType::CONTROLNET) { + if (QM::hasType(img.type, QM::QueueItemImageType::CONTROLNET)) { menu->AppendSeparator(); menu->Append(8, _("Send image to the controlnet image")); } + if (QM::hasType(img.type, QM::QueueItemImageType::INITIAL) || + QM::hasType(img.type, QM::QueueItemImageType::ORIGINAL)) { + menu->Append(3, _("Send the image to img2img")); + } + if (QM::hasType(img.type, QM::QueueItemImageType::MASK)) { + menu->AppendSeparator(); + menu->Append(9, _("Send image to img2img mask")); + } + menu->Bind(wxEVT_COMMAND_MENU_SELECTED, [this, img, item](wxCommandEvent& evt) { auto id = evt.GetId(); switch (id) { @@ -3962,11 +4201,12 @@ void MainWindowUI::UpdateJobInfoDetailsFromJobQueueList(std::shared_ptrm_neg_prompt2->SetValue(wxString::FromUTF8Unchecked(item->params.negative_prompt)); } break; case 3: { - this->onimg2ImgImageOpen(wxString::FromUTF8Unchecked(img.pathname)); + this->onimg2ImgImageOpen(wxString::FromUTF8Unchecked(img.pathname), true); + this->m_notebook1302->SetSelection(+sd_gui_utils::GuiMainPanels::PANEL_IMG2IMG); } break; case 5: { this->onUpscaleImageOpen(wxString::FromUTF8Unchecked(img.pathname)); - this->m_notebook1302->SetSelection(3); + this->m_notebook1302->SetSelection(+sd_gui_utils::GuiMainPanels::PANEL_UPSCALER); } break; case 6: { wxLaunchDefaultApplication(wxString::FromUTF8Unchecked(img.pathname)); @@ -3977,6 +4217,13 @@ void MainWindowUI::UpdateJobInfoDetailsFromJobQueueList(std::shared_ptronControlnetImageOpen(wxString::FromUTF8Unchecked(img.pathname)); } break; + case 9: { + this->m_inpaintOpenMask->SetPath(wxString::FromUTF8Unchecked(img.pathname)); + // i never used like this, but trigger the event: + wxFileDirPickerEvent event(wxEVT_FILEPICKER_CHANGED, this->m_inpaintOpenMask, this->m_inpaintOpenMask->GetId(), this->m_inpaintOpenMask->GetPath()); + event.SetEventObject(this->m_inpaintOpenMask); + this->m_inpaintOpenMask->GetEventHandler()->ProcessEvent(event); + } break; default: { return; } break; @@ -3992,98 +4239,141 @@ void MainWindowUI::UpdateJobInfoDetailsFromJobQueueList(std::shared_ptrm_scrolledWindow41->FitInside(); } -std::shared_ptr MainWindowUI::handleSdImage(const std::string& tmpImagePath, std::shared_ptr itemPtr, wxEvtHandler* eventHandler) { - wxImage* img = new wxImage(0, 0); - img->SetLoadFlags(img->GetLoadFlags() & ~wxImage::Load_Verbose); - - if (!img->LoadFile(wxString::FromUTF8Unchecked(tmpImagePath))) { - itemPtr->status_message = _("Invalid image from diffusion: ") + tmpImagePath; - MainWindowUI::SendThreadEvent(eventHandler, QM::QueueEvents::ITEM_FAILED, itemPtr); - delete img; - return itemPtr; - } - - std::string extension = ".jpg"; - auto imgHandler = wxBITMAP_TYPE_JPEG; - // image quality only works with jpg, png ignores it - img->SetOption(wxIMAGE_OPTION_QUALITY, this->mapp->cfg->image_quality); - +std::shared_ptr MainWindowUI::handleSdImages(std::shared_ptr itemPtr, wxEvtHandler* eventHandler) { + wxString extension = ".jpg"; + auto imgHandler = wxBITMAP_TYPE_JPEG; if (this->mapp->cfg->image_type == sd_gui_utils::imageTypes::PNG) { extension = ".png"; imgHandler = wxBITMAP_TYPE_PNG; - img->SetOption(wxIMAGE_OPTION_COMPRESSION, this->mapp->cfg->png_compression_level); // set the compression from the settings } if (this->mapp->cfg->image_type == sd_gui_utils::imageTypes::JPG) { extension = ".jpg"; imgHandler = wxBITMAP_TYPE_JPEG; } - const auto fname = this->formatFileName(*itemPtr, this->mapp->cfg->output_filename_format); - wxString filename = sd_gui_utils::CreateFilePath(fname, extension, wxString::FromUTF8Unchecked(this->mapp->cfg->output)); - - img->SetOption(wxIMAGE_OPTION_FILENAME, filename); - img->SetOption(wxIMAGE_OPTION_PNG_COMPRESSION_LEVEL, 0); + const auto baseFileName = this->formatFileName(*itemPtr, this->mapp->cfg->output_filename_format); + wxString baseFullName = sd_gui_utils::CreateFilePath(baseFileName, extension, wxString::FromUTF8Unchecked(this->mapp->cfg->output)); + // the raw images are the generated images. Only presents when the generation is done without errors + for (auto rimage : itemPtr->rawImages) { + // regenerate name, if multiple image generated, this check if exists + wxString fullName = sd_gui_utils::CreateFilePath(baseFileName, extension, wxString::FromUTF8Unchecked(this->mapp->cfg->output)); + wxImage* rawImage = new wxImage(0, 0); - if (!img->SaveFile(filename, imgHandler)) { - itemPtr->status_message = wxString::Format(_("Failed to save image into %s"), filename).utf8_string(); - MainWindowUI::SendThreadEvent(eventHandler, QM::QueueEvents::ITEM_FAILED, itemPtr); - delete img; - if (BUILD_TYPE == "Debug") { - std::cerr << __FILE__ << " " << __LINE__ << " " << itemPtr->status_message.c_str() << std::endl; - } else { - std::filesystem::remove(tmpImagePath); + if (imgHandler == wxBITMAP_TYPE_PNG) { + rawImage->SetOption(wxIMAGE_OPTION_COMPRESSION, this->mapp->cfg->png_compression_level); // set the compression from the settings } - return itemPtr; - } else { - if (BUILD_TYPE != "Debug") { - std::filesystem::remove(tmpImagePath); + if (imgHandler == wxBITMAP_TYPE_JPEG) { + rawImage->SetOption(wxIMAGE_OPTION_QUALITY, this->mapp->cfg->image_quality); } - itemPtr->images.emplace_back(QM::QueueItemImage(filename, QM::QueueItemImageType::GENERATED)); + rawImage->SetLoadFlags(rawImage->GetLoadFlags() & ~wxImage::Load_Verbose); + if (!rawImage->LoadFile(wxString::FromUTF8Unchecked(rimage))) { + itemPtr->status_message = _("Invalid image from diffusion: ") + rimage; + MainWindowUI::SendThreadEvent(eventHandler, QM::QueueEvents::ITEM_FAILED, itemPtr); + delete rawImage; + return itemPtr; + } - if (itemPtr->params.control_image_path.length() > 0 && this->mapp->cfg->save_all_image) { - wxString ctrlFilename = sd_gui_utils::AppendSuffixToFileName(filename, "control"); - wxImage _ctrlimg(itemPtr->params.control_image_path); - _ctrlimg.SaveFile(ctrlFilename); - itemPtr->images.emplace_back(QM::QueueItemImage({ctrlFilename, QM::QueueItemImageType::CONTROLNET})); + rawImage->SetOption(wxIMAGE_OPTION_FILENAME, baseFileName); + rawImage->SetOption(wxIMAGE_OPTION_PNG_COMPRESSION_LEVEL, 0); + if (!rawImage->SaveFile(fullName, imgHandler)) { + itemPtr->status_message = wxString::Format(_("Failed to save image into %s"), fullName).utf8_string(); + MainWindowUI::SendThreadEvent(eventHandler, QM::QueueEvents::ITEM_FAILED, itemPtr); + delete rawImage; + return itemPtr; } + // add the generated image to the job + itemPtr->images.emplace_back(QM::QueueItemImage(fullName, QM::QueueItemImageType::GENERATED)); + } + + // handle other images too - // add generation parameters into the image meta - if (this->mapp->cfg->image_type == sd_gui_utils::imageTypes::JPG || this->mapp->cfg->image_type == sd_gui_utils::imageTypes::PNG) { - std::string comment = this->paramsToImageComment(*itemPtr).utf8_string(); + // save controlnet image if present and save_all_image is enabled + if (itemPtr->params.control_image_path.length() > 0 && this->mapp->cfg->save_all_image) { + wxString ctrlFilename = sd_gui_utils::AppendSuffixToFileName(baseFullName, "control"); + wxImage _ctrlimg(itemPtr->params.control_image_path); + _ctrlimg.SaveFile(ctrlFilename); + itemPtr->images.emplace_back(QM::QueueItemImage({ctrlFilename, QM::QueueItemImageType::CONTROLNET})); + } - if (this->mapp->cfg->image_type == sd_gui_utils::imageTypes::PNG) { - std::unordered_map _pngData = { - {"parameters", comment}, - {"Software", EXIF_SOFTWARE}}; - sd_gui_utils::WriteMetadata(filename.utf8_string(), _pngData, true); - return itemPtr; + // handle other images, this images come from the img2img or upscale + for (auto& img : itemPtr->images) { + if (QM::hasType(img.type, QM::QueueItemImageType::TMP)) { + wxString nameSuffix = ""; + if (QM::hasType(img.type, QM::QueueItemImageType::MASK_INPAINT)) { + nameSuffix = "_inpaint_mask"; } - try { - auto image = Exiv2::ImageFactory::open(filename.utf8_string()); - image->readMetadata(); - Exiv2::ExifData& exifData = image->exifData(); - exifData["Exif.Photo.UserComment"] = comment.c_str(); - exifData["Exif.Image.Software"] = EXIF_SOFTWARE; - exifData["Exif.Image.ImageWidth"] = img->GetWidth(); - exifData["Exif.Image.ImageLength"] = img->GetHeight(); - - if (itemPtr->finished_at > 0) { - time_t finishedAt = itemPtr->finished_at; - std::tm* timeinfo = std::localtime(&finishedAt); - char dtimeBuffer[20]; - std::strftime(dtimeBuffer, sizeof(dtimeBuffer), "%Y:%m:%d %H:%M:%S", timeinfo); - exifData["Exif.Image.DateTime"] = dtimeBuffer; + if (QM::hasType(img.type, QM::QueueItemImageType::MASK_OUTPAINT)) { + nameSuffix = "_outpaint_mask"; + } + if (QM::hasType(img.type, QM::QueueItemImageType::INITIAL)) { + nameSuffix = "_initial"; + } + if (QM::hasType(img.type, QM::QueueItemImageType::ORIGINAL)) { + nameSuffix = "_original"; + } + if (nameSuffix.empty()) { + continue; + } + wxFileName newImage(baseFullName); + wxFileName origName(img.pathname); + newImage.SetExt(origName.GetExt()); + newImage.SetName(newImage.GetName() + nameSuffix); + // move the tmp file into the base path + wxRenameFile(img.pathname, newImage.GetAbsolutePath()); + img.pathname = newImage.GetAbsolutePath(); + // update the item's paths too + if (QM::hasType(img.type, QM::QueueItemImageType::MASK_USED)) { + itemPtr->mask_image = newImage.GetAbsolutePath(); + } + if (QM::hasType(img.type, QM::QueueItemImageType::INITIAL)) { + itemPtr->initial_image = newImage.GetAbsolutePath(); + } + } + } + this->qmanager->UpdateItem(itemPtr); + + // iterate over agan, save meta data + for (auto& img : itemPtr->images) { + if (QM::hasType(img.type, QM::QueueItemImageType::GENERATED)) { + // + if (this->mapp->cfg->image_type == sd_gui_utils::imageTypes::JPG || this->mapp->cfg->image_type == sd_gui_utils::imageTypes::PNG) { + std::string comment = this->paramsToImageComment(*itemPtr).utf8_string(); + + if (this->mapp->cfg->image_type == sd_gui_utils::imageTypes::PNG) { + std::unordered_map _pngData = { + {"parameters", comment}, + {"Software", EXIF_SOFTWARE}}; + sd_gui_utils::WriteMetadata(img.pathname, _pngData, true); + return itemPtr; + } + try { + auto image = Exiv2::ImageFactory::open(img.pathname); + image->readMetadata(); + Exiv2::ExifData& exifData = image->exifData(); + exifData["Exif.Photo.UserComment"] = comment.c_str(); + exifData["Exif.Image.Software"] = EXIF_SOFTWARE; + exifData["Exif.Image.ImageWidth"] = image->pixelWidth(); + exifData["Exif.Image.ImageLength"] = image->pixelHeight(); + + if (itemPtr->finished_at > 0) { + time_t finishedAt = itemPtr->finished_at; + std::tm* timeinfo = std::localtime(&finishedAt); + char dtimeBuffer[20]; + std::strftime(dtimeBuffer, sizeof(dtimeBuffer), "%Y:%m:%d %H:%M:%S", timeinfo); + exifData["Exif.Image.DateTime"] = dtimeBuffer; + } + Exiv2::XmpData& xmpData = image->xmpData(); + xmpData["Xmp.dc.description"] = comment.c_str(); + + image->setExifData(exifData); + image->setXmpData(xmpData); + image->writeMetadata(); + } catch (Exiv2::Error& e) { + std::cerr << "Err: " << e.what() << std::endl; } - Exiv2::XmpData& xmpData = image->xmpData(); - xmpData["Xmp.dc.description"] = comment.c_str(); - - image->setExifData(exifData); - image->setXmpData(xmpData); - image->writeMetadata(); - } catch (Exiv2::Error& e) { - std::cerr << "Err: " << e.what() << std::endl; } + // } } return itemPtr; @@ -4132,8 +4422,8 @@ void MainWindowUI::onControlnetImageOpen(const wxString& file) { this->m_controlnetImagePreview->SetSize(origSize); this->m_controlnetImagePreviewButton->Enable(); this->m_controlnetImageDelete->Enable(); - this->m_width->SetValue(img.GetWidth()); - this->m_height->SetValue(img.GetHeight()); + this->m_width->SetValue(wxString::Format(wxT("%i"), img.GetWidth())); + this->m_height->SetValue(wxString::Format(wxT("%i"), img.GetHeight())); // can not change the outpt images resolution this->m_width->Disable(); this->m_height->Disable(); @@ -4174,15 +4464,10 @@ void MainWindowUI::ChangeModelByInfo(sd_gui_utils::ModelFileInfo* info) { } void MainWindowUI::loadModelList() { - auto oldSelection = this->m_model->GetStringSelection(); - this->LoadFileList(sd_gui_utils::DirTypes::CHECKPOINT); - auto found = this->m_model->FindString(oldSelection, false); - - if (found != wxNOT_FOUND) { - this->m_model->SetSelection(found); - } + auto lastSelection = this->mapp->config->Read("/model_list/last_selected_model", wxEmptyString); + this->treeListManager->SelectItemByModelPath(lastSelection.utf8_string()); } void MainWindowUI::OnExit(wxEvent& event) { @@ -4342,29 +4627,29 @@ void MainWindowUI::threadedModelInfoImageDownload( } void MainWindowUI::PrepareModelConvert(sd_gui_utils::ModelFileInfo* modelInfo) { - // sd convert params: - // bool success = convert(params.model_path.c_str(), params.vae_path.c_str(), params.output_path.c_str(), params.wtype); - std::filesystem::path modelIn(modelInfo->path); - std::string name = modelIn.filename().replace_extension("").generic_string(); - std::string newType = this->m_type->GetStringSelection().utf8_string(); - std::string usingVae = ""; - name = name + "_" + newType + ".gguf"; + std::string usingVae; + const wxFileName modelIn(modelInfo->path); + wxFileName modelOut(modelInfo->path); + modelOut.SetExt("gguf"); - std::string modelOutName = modelIn.replace_filename(name).generic_string(); - std::cout << "Old name: " << modelInfo->path << " converted name: " << modelOutName << std::endl; + std::string newType = this->m_type->GetStringSelection().utf8_string(); + + modelOut.SetName(modelOut.GetName() + "_" + newType); + this->writeLog(wxString::Format(_("Converting model %s to %s"), modelIn.GetFullName(), modelOut.GetFullName())); std::shared_ptr item = std::make_shared(); item->model = modelInfo->name; item->mode = QM::GenerationMode::CONVERT; item->params.mode = SDMode::CONVERT; item->params.n_threads = this->mapp->cfg->n_threads; - item->params.output_path = modelOutName; - item->params.model_path = modelInfo->path; + item->params.output_path = modelOut.GetAbsolutePath().utf8_string(); + item->params.model_path = modelIn.GetAbsolutePath().utf8_string(); auto selectedwType = this->m_type->GetStringSelection(); for (auto types : sd_gui_utils::sd_type_gui_names) { if (types.second == selectedwType) { item->params.wtype = (sd_type_t)types.first; + break; } } @@ -4384,16 +4669,16 @@ void MainWindowUI::PrepareModelConvert(sd_gui_utils::ModelFileInfo* modelInfo) { } } - wxString question = wxString::Format(_("Do you want to convert model %s with quantation %s to gguf format?"), modelInfo->name, newType); + wxString question = wxString::Format(_("Do you want to convert model %s with quantation %s to gguf format?"), modelIn.GetFullName(), newType); - if (usingVae != "") { - question = wxString::Format(_("Do you want to convert model %s with quantation %s and vae %s to gguf format?"), modelInfo->name, newType, usingVae); + if (usingVae.empty() == false) { + question = wxString::Format(_("Do you want to convert model %s with quantation %s and vae %s to gguf format?"), modelIn.GetFullName(), newType, usingVae); } - wxMessageDialog dialog(this, question, wxString::Format(_("Convert model %s?"), modelInfo->name), wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION); + wxMessageDialog dialog(this, question, wxString::Format(_("Convert model %s?"), modelIn.GetFullName()), wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION); if (dialog.ShowModal() == wxID_YES) { - if (std::filesystem::exists(modelOutName)) { - wxString overwriteQuestion = wxString::Format(_("The file %s already exists. Do you want to overwrite it?"), modelOutName); + if (modelOut.FileExists()) { + wxString overwriteQuestion = wxString::Format(_("The file %s already exists. Do you want to overwrite it?"), modelOut.GetFullName()); wxMessageDialog overwriteDialog(this, overwriteQuestion, _("Overwrite File?"), wxYES_NO | wxNO_DEFAULT | wxICON_WARNING); if (overwriteDialog.ShowModal() != wxID_YES) { return; @@ -4404,7 +4689,11 @@ void MainWindowUI::PrepareModelConvert(sd_gui_utils::ModelFileInfo* modelInfo) { } void MainWindowUI::OnHtmlLinkClicked(wxHtmlLinkEvent& event) { - wxLaunchDefaultBrowser(event.GetLinkInfo().GetHref()); + // show a dialog with warning + wxMessageDialog dialog(this, event.GetLinkInfo().GetHref(), _("Open Link?"), wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION); + if (dialog.ShowModal() == wxID_YES) { + wxLaunchDefaultBrowser(event.GetLinkInfo().GetHref()); + } } void MainWindowUI::onWhatIsThis(wxCommandEvent& event) { wxLaunchDefaultBrowser("https://github.com/fszontagh/sd.cpp.gui.wx/wiki/LCM-&-SD3.5-&-FLUX-howtos"); @@ -4440,19 +4729,16 @@ bool MainWindowUI::ProcessEventHandler(std::string message) { *itemPtr = item; if (!itemPtr->rawImages.empty()) { - for (unsigned int i = 0; i < itemPtr->rawImages.size(); i++) { - this->handleSdImage(itemPtr->rawImages[i], itemPtr, this->GetEventHandler()); - } - itemPtr->rawImages.clear(); + this->handleSdImages(itemPtr, this->GetEventHandler()); } - if (item.event == QM::QueueEvents::ITEM_FAILED) { - if (this->extprocessLastError.empty() == true && this->extprocessLastError.empty() == false) { + if (itemPtr->event == QM::QueueEvents::ITEM_FAILED) { + if (this->extprocessLastError.empty() == false) { itemPtr->status_message = this->extprocessLastError; this->extprocessLastError = ""; } } - this->qmanager->SendEventToMainWindow(item.event, itemPtr); + this->qmanager->SendEventToMainWindow(itemPtr->event, itemPtr); return true; } @@ -4636,7 +4922,7 @@ void MainWindowUI::deInitLog() { logfile.Close(); } } -void MainWindowUI::writeLog(const wxString& msg, bool writeIntoGui) { +void MainWindowUI::writeLog(const wxString& msg, bool writeIntoGui, bool debug) { std::time_t now = std::time(nullptr); std::tm* timeinfo = std::localtime(&now); char timestamp[30]; @@ -4650,7 +4936,9 @@ void MainWindowUI::writeLog(const wxString& msg, bool writeIntoGui) { if (!message.IsEmpty() && message.Last() != '\n') { message.Append("\n"); } - + if (debug) { + message.Prepend("[DEBUG] "); + } std::lock_guard lock(this->logMutex); wxString logline = wxString::Format("%s: %s", timestamp, message); if (logfile.IsOpened()) { @@ -4672,9 +4960,14 @@ void MainWindowUI::UpdateCurrentProgress(std::shared_ptr item, co return; } - if (event == QM::QueueEvents::ITEM_MODEL_HASH_UPDATE) { - this->m_currentProgress->SetRange(item->hash_fullsize); - this->m_currentProgress->SetValue(item->hash_progress_size > item->hash_fullsize ? item->hash_fullsize : item->hash_progress_size); + if (event == QM::QueueEvents::ITEM_MODEL_HASH_UPDATE || event == QM::QueueEvents::ITEM_MODEL_HASH_START) { + auto current = item->hash_progress_size; + auto total = item->hash_fullsize; + if (current > total) { + current = total; + } + this->m_currentProgress->SetRange(total); + this->m_currentProgress->SetValue(current); return; } @@ -4731,4 +5024,304 @@ void MainWindowUI::SetTypeByType(sd_type_t type) { break; } } -} \ No newline at end of file +} + +void MainWindowUI::OnImg2ImgMouseLeave(wxMouseEvent& event) { + if (!this->inpaintHelper->inPaintImageLoaded()) { + event.Skip(); + return; + } + this->inpaintHelper->OnMouseLeave(event); +} + +void MainWindowUI::OnInpaintSaveMask(wxCommandEvent& event) { + if (!this->inpaintHelper->inPaintImageLoaded()) { + event.Skip(); + return; + } + wxFileDialog saveFileDialog(this, _("Save mask image file"), "", "", + _("PNG files (*.png)|*.png|All files (*.*)|*.*"), + wxFD_SAVE | wxFD_OVERWRITE_PROMPT); + + if (saveFileDialog.ShowModal() == wxID_CANCEL) { + return; + } + + wxString filename = saveFileDialog.GetPath(); + if (filename.empty()) { + return; + } + wxFileName file(filename); + if (file.GetExt().empty()) { + file.SetExt("png"); + } + + wxImage image = this->inpaintHelper->OnSaveMask(event); + + if (image.HasAlpha()) { + image.ClearAlpha(); + } + if (!image.SaveFile(filename, wxBITMAP_TYPE_PNG)) { + wxLogError(_("Failed to save image into %s"), filename); + return; + } + this->m_inpaintOpenMask->SetPath(file.GetAbsolutePath()); +} +void MainWindowUI::OnImg2ImgSize(wxSizeEvent& event) { + if (this->inpaintHelper != nullptr) { + this->inpaintHelper->OnSize(event); + } + event.Skip(); +} +void MainWindowUI::OnInpaintResizeImage(wxCommandEvent& event) { + if (!this->inpaintHelper->inPaintImageLoaded()) { + event.Skip(); + return; + } + + int targetWidth, targetHeight; + + this->m_width->GetValue().ToInt(&targetWidth); + this->m_height->GetValue().ToInt(&targetHeight); + auto resized = this->inpaintHelper->OnResizeOriginalImage(targetWidth, targetHeight); + this->m_inpaintImageResolution->SetLabel(wxString::Format("%d x %d", resized.GetWidth(), resized.GetHeight())); + this->m_width->SetValue(wxString::Format(wxT("%i"), resized.GetWidth())); + this->m_height->SetValue(wxString::Format(wxT("%i"), resized.GetHeight())); + this->m_inpaintBrushSizeSlider->SetValue(this->inpaintHelper->GetCurrentBrushSize()); + this->m_inpaintZoomSlider->SetValue(this->inpaintHelper->GetZoomFactor() * 100); + + if (this->inpaintHelper->inPaintCanvasEmpty()) { + this->m_inpaintClearMask->Disable(); + } else { + this->m_inpaintClearMask->Enable(); + } +} + +void MainWindowUI::OnInpaintInvertMask(wxCommandEvent& event) { + if (!this->inpaintHelper->inPaintImageLoaded()) { + event.Skip(); + return; + } + this->inpaintHelper->OnInvertMask(event); + if (this->inpaintHelper->inPaintCanvasEmpty()) { + this->m_inpaintClearMask->Disable(); + } else { + this->m_inpaintClearMask->Enable(); + } +} +void MainWindowUI::OnImg2ImgMouseDown(wxMouseEvent& event) { + if (!this->inpaintHelper->inPaintImageLoaded()) { + event.Skip(); + return; + } + this->inpaintHelper->OnMouseLeftDown(event); +} + +void MainWindowUI::OnImg2ImgMouseUp(wxMouseEvent& event) { + if (!this->inpaintHelper->inPaintImageLoaded()) { + event.Skip(); + return; + } + this->inpaintHelper->OnMouseLeftUp(event); +} +void MainWindowUI::OnImg2ImgRMouseDown(wxMouseEvent& event) { + if (!this->inpaintHelper->inPaintImageLoaded()) { + event.Skip(); + return; + } + this->inpaintHelper->OnMouseRightDown(event); +} +void MainWindowUI::OnImg2ImgRMouseUp(wxMouseEvent& event) { + if (!this->inpaintHelper->inPaintImageLoaded()) { + event.Skip(); + return; + } + this->inpaintHelper->OnMouseRightUp(event); +} +void MainWindowUI::OnInpaintCanvasResizeApply(wxCommandEvent& event) { + if (this->inpaintHelper->inPaintImageLoaded() == false) { + this->m_inpaintCanvasTop->SetValue("0"); + this->m_inpaintCanvasLeft->SetValue("0"); + this->m_inpaintCanvasRight->SetValue("0"); + this->m_inpaintCanvasBottom->SetValue("0"); + event.Skip(); + return; + } + int canvasTop = wxAtoi(this->m_inpaintCanvasTop->GetValue()); + int canvasLeft = wxAtoi(this->m_inpaintCanvasLeft->GetValue()); + int canvasRight = wxAtoi(this->m_inpaintCanvasRight->GetValue()); + int canvasBottom = wxAtoi(this->m_inpaintCanvasBottom->GetValue()); + sd_gui_utils::wxEnlargeImageSizes enlargedSizes{canvasTop, canvasRight, canvasBottom, canvasLeft}; + this->inpaintHelper->OnOutPaintResize(enlargedSizes); + + this->m_inpaintCanvasTop->SetValue(wxString::FromDouble(enlargedSizes.top)); + this->m_inpaintCanvasRight->SetValue(wxString::FromDouble(enlargedSizes.right)); + this->m_inpaintCanvasBottom->SetValue(wxString::FromDouble(enlargedSizes.bottom)); + this->m_inpaintCanvasLeft->SetValue(wxString::FromDouble(enlargedSizes.left)); + + this->m_inpaintZoomSlider->SetValue(this->inpaintHelper->GetZoomFactor() * 100); + this->m_inpaintBrushSizeSlider->SetValue(this->inpaintHelper->GetCurrentBrushSize()); + this->m_width->SetValue(wxString::Format(wxT("%i"), this->inpaintHelper->GetOutPaintedSize().GetWidth())); + this->m_height->SetValue(wxString::Format(wxT("%i"), this->inpaintHelper->GetOutPaintedSize().GetHeight())); +} +void MainWindowUI::OnInpaintBrushSizeSliderScroll(wxScrollEvent& event) { + this->inpaintHelper->SetCurrentBrushSize(event.GetPosition()); +} +void MainWindowUI::OnInpaintZoomSliderScroll(wxScrollEvent& event) { + if (this->inpaintHelper->inPaintImageLoaded() == false) { + event.Skip(); + return; + } + // get the enlarge values + int canvasTop = wxAtoi(this->m_inpaintCanvasTop->GetValue()); + int canvasLeft = wxAtoi(this->m_inpaintCanvasLeft->GetValue()); + int canvasRight = wxAtoi(this->m_inpaintCanvasRight->GetValue()); + int canvasBottom = wxAtoi(this->m_inpaintCanvasBottom->GetValue()); + + this->inpaintHelper->SetZoomFactor(this->m_inpaintZoomSlider->GetValue() / 100.0); + + int rotation = this->inpaintHelper->GetZoomFactor() > (event.GetPosition() / 100.0) ? 1 : -1; + + this->inpaintHelper->OnMouseWheel(rotation, true, sd_gui_utils::wxEnlargeImageSizes{canvasTop, canvasRight, canvasBottom, canvasLeft}); + + this->m_inpaintZoomSlider->SetValue(this->inpaintHelper->GetZoomFactor() * 100); + this->m_inpaintBrushSizeSlider->SetValue(this->inpaintHelper->GetCurrentBrushSize()); + if (this->inpaintHelper->GetZoomFactor() == 1.0) { + this->m_inpaintImageResolution->SetLabel(wxString::Format(_("%i x %i"), this->inpaintHelper->GetOriginalSize().GetWidth(), this->inpaintHelper->GetOriginalSize().GetHeight())); + } else { + this->m_inpaintImageResolution->SetLabel(wxString::Format(_("%i x %i (%i x %i)"), + this->inpaintHelper->GetOriginalSize().GetWidth(), + this->inpaintHelper->GetOriginalSize().GetHeight(), + static_cast(this->inpaintHelper->GetOriginalSize().GetWidth() * this->inpaintHelper->GetZoomFactor()), + static_cast(this->inpaintHelper->GetOriginalSize().GetHeight() * this->inpaintHelper->GetZoomFactor()))); + } +} +void MainWindowUI::OnInpaintCleanMask(wxCommandEvent& event) { + this->m_inpaintClearMask->Disable(); + if (this->inpaintHelper->inPaintImageLoaded() == false) { + return; + } + + this->inpaintHelper->CleanMask(); +} +void MainWindowUI::OnInPaintBrushStyleToggle(wxCommandEvent& event) { + auto object = dynamic_cast(event.GetEventObject()); + if (object == nullptr) { + std::cout << "nullptr, exit" << std::endl; + return; + } + if (event.IsChecked() == false) { + object->SetValue(true); + return; + } + + if (object == this->m_inPaintBrushStyleCircle) { + this->m_inPaintBrushStyleSquare->SetValue(false); + this->m_inPaintBrushStyleTriangle->SetValue(false); + this->inpaintHelper->SetBrushStyle(sd_gui_utils::InPaintHelper::BrushStyle::BRUSH_CIRCLE); + } else if (object == this->m_inPaintBrushStyleSquare) { + this->m_inPaintBrushStyleCircle->SetValue(false); + this->m_inPaintBrushStyleTriangle->SetValue(false); + this->inpaintHelper->SetBrushStyle(sd_gui_utils::InPaintHelper::BrushStyle::BRUSH_SQUARE); + } else if (object == this->m_inPaintBrushStyleTriangle) { + this->m_inPaintBrushStyleCircle->SetValue(false); + this->m_inPaintBrushStyleSquare->SetValue(false); + this->inpaintHelper->SetBrushStyle(sd_gui_utils::InPaintHelper::BrushStyle::BRUSH_TRIANGLE); + } +} + +void MainWindowUI::OnInpaintMaskOpen(wxFileDirPickerEvent& event) { + if (this->inpaintHelper->inPaintImageLoaded() == false) { + event.Skip(); + return; + } + wxFileName fn(event.GetPath()); + if (fn.FileExists() == false) { + this->writeLog(wxString::Format(_("Inpaint mask open: file not found: %s"), event.GetPath()), true); + return; + } + + this->m_inpaintCanvasTop->SetValue(wxString("0")); + this->m_inpaintCanvasRight->SetValue(wxString("0")); + this->m_inpaintCanvasBottom->SetValue(wxString("0")); + this->m_inpaintCanvasLeft->SetValue(wxString("0")); + if (this->inpaintHelper->inPaintImageLoaded() == false) { + wxMessageBox(_("No image loaded into the img2img, please load a base image before open the mask!"), _("Error"), wxOK | wxICON_ERROR); + event.Skip(); + return; + } + // convert black to transparent pixels + wxImage image = wxImage(event.GetPath(), wxBITMAP_TYPE_PNG); + + if (this->inpaintHelper->GetOriginalImage().GetWidth() < image.GetWidth() || this->inpaintHelper->GetOriginalImage().GetHeight() < image.GetHeight()) { + this->writeLog(wxString::Format(_("Inpaint mask open: the resolution of the mask does not match the resolution of the image: %s"), event.GetPath()), true); + // show an error message + wxMessageBox(_("The resolution of the mask does not match the resolution of the image"), _("Error"), wxOK | wxICON_ERROR); + return; + } + + sd_gui_utils::convertMaskImageToTransparent(image); + this->inpaintHelper->OnMaskFileOpen(image); +} + +void MainWindowUI::OnImg2ImgMouseMotion(wxMouseEvent& event) { + if (this->inpaintHelper->inPaintImageLoaded() == false) { + event.Skip(); + return; + } + if (this->inpaintHelper->inPaintCanvasEmpty() == false) { + this->m_inpaintClearMask->Enable(); + } else { + this->m_inpaintClearMask->Disable(); + } + + this->inpaintHelper->OnMouseMotion(event); +} + +void MainWindowUI::OnImg2ImgPaint(wxPaintEvent& event) { + this->inpaintHelper->OnDcPaint(event); +} +void MainWindowUI::OnImg2ImgEraseBackground(wxEraseEvent& event) { + // do nothing, see https://wiki.wxwidgets.org/Flicker-Free_Drawing + this->inpaintHelper->OnEraseBackground(event); +} + +void MainWindowUI::OnImg2ImgMouseWheel(wxMouseEvent& event) { + if (!this->inpaintHelper->inPaintImageLoaded()) { + event.Skip(); + return; + } + if (event.ControlDown() == false && event.ShiftDown() == false) { + event.Skip(); + return; + } + + // get the enlarge values + int canvasTop = wxAtoi(this->m_inpaintCanvasTop->GetValue()); + int canvasLeft = wxAtoi(this->m_inpaintCanvasLeft->GetValue()); + int canvasRight = wxAtoi(this->m_inpaintCanvasRight->GetValue()); + int canvasBottom = wxAtoi(this->m_inpaintCanvasBottom->GetValue()); + + int rotation = event.GetWheelRotation(); + + if (event.ControlDown()) { + this->inpaintHelper->OnMouseWheel(rotation, true, sd_gui_utils::wxEnlargeImageSizes{canvasTop, canvasRight, canvasBottom, canvasLeft}); + } + + if (event.ShiftDown()) { + this->inpaintHelper->OnMouseWheel(rotation, false, sd_gui_utils::wxEnlargeImageSizes{canvasTop, canvasRight, canvasBottom, canvasLeft}); + } + + // this->m_inpaintZoom->SetLabel(wxString::Format(_("Zoom: %.0f%%"), this->inpaintHelper->GetZoomFactor() * 100)); + this->m_inpaintZoomSlider->SetValue(this->inpaintHelper->GetZoomFactor() * 100); + this->m_inpaintBrushSizeSlider->SetValue(this->inpaintHelper->GetCurrentBrushSize()); + if (this->inpaintHelper->GetZoomFactor() == 1.0) { + this->m_inpaintImageResolution->SetLabel(wxString::Format(_("%i x %i"), this->inpaintHelper->GetOriginalSize().GetWidth(), this->inpaintHelper->GetOriginalSize().GetHeight())); + } else { + this->m_inpaintImageResolution->SetLabel(wxString::Format(_("%i x %i (%i x %i)"), + this->inpaintHelper->GetOriginalSize().GetWidth(), + this->inpaintHelper->GetOriginalSize().GetHeight(), + static_cast(this->inpaintHelper->GetOriginalSize().GetWidth() * this->inpaintHelper->GetZoomFactor()), + static_cast(this->inpaintHelper->GetOriginalSize().GetHeight() * this->inpaintHelper->GetZoomFactor()))); + } +} diff --git a/src/ui/MainWindowUI.h b/src/ui/MainWindowUI.h index ed83439..90e1e44 100644 --- a/src/ui/MainWindowUI.h +++ b/src/ui/MainWindowUI.h @@ -13,6 +13,7 @@ Subclass of UI, which is generated by wxFormBuilder. #include "MainWindowDesktopWidget.h" #include "MainWindowImageDialog.h" +#include "../helpers/InPaintHelper.hpp" #include "../helpers/TreeListManager.h" class MainApp; @@ -33,7 +34,7 @@ class MainWindowUI : public mainUI { void onRandomGenerateButton(wxCommandEvent& event) override; void onSd15ResSelect(wxCommandEvent& event) override; void onSdXLResSelect(wxCommandEvent& event) override; - void OnWHChange(wxSpinEvent& event) override; + void OnWHChange(wxCommandEvent& event) override; void onResolutionSwap(wxCommandEvent& event) override; void onSavePreset(wxCommandEvent& event) override; void onLoadPreset(wxCommandEvent& event) override; @@ -44,8 +45,11 @@ class MainWindowUI : public mainUI { void onJobsPause(wxCommandEvent& event) override; void onJobsDelete(wxCommandEvent& event) override; void OnJobListItemActivated(wxDataViewEvent& event) override; + void OnJobListItemKeyDown(wxKeyEvent& event) override; void onContextMenu(wxDataViewEvent& event) override; void OnDataModelTreeContextMenu(wxTreeListEvent& event) override; + void OnDataModelTreeColSorted(wxTreeListEvent& event) override; + void OnDataModelTreeExpanded(wxTreeListEvent& event) override; void OnJobListItemSelection(wxDataViewEvent& event) override; void onTxt2ImgFileDrop(wxDropFilesEvent& event) override; void OnPromptText(wxCommandEvent& event) override; @@ -81,6 +85,28 @@ class MainWindowUI : public mainUI { void OnImageInfoCopyPrompt(wxCommandEvent& event) override; void OnImageInfoTryFindModel(wxCommandEvent& event) override; void OnShowWidget(wxCommandEvent& event) override; + // painting on img2img + void OnImg2ImgMouseDown(wxMouseEvent& event) override; + void OnImg2ImgRMouseDown(wxMouseEvent& event) override; + void OnImg2ImgRMouseUp(wxMouseEvent& event) override; + void OnImg2ImgMouseUp(wxMouseEvent& event) override; + void OnImg2ImgMouseMotion(wxMouseEvent& event) override; + void OnImg2ImgPaint(wxPaintEvent& event) override; + void OnImg2ImgEraseBackground(wxEraseEvent& event) override; + // void OnImg2ImgMouseEnter(wxMouseEvent& event) override; + void OnImg2ImgMouseLeave(wxMouseEvent& event) override; + void OnImg2ImgMouseWheel(wxMouseEvent& event) override; + void OnInpaintSaveMask(wxCommandEvent& event) override; + void OnImg2ImgSize(wxSizeEvent& event) override; + void OnInpaintResizeImage(wxCommandEvent& event) override; + void OnInpaintInvertMask(wxCommandEvent& event) override; + void OnInpaintMaskOpen(wxFileDirPickerEvent& event) override; + void OnInPaintBrushStyleToggle(wxCommandEvent& event) override; + void OnInpaintCleanMask(wxCommandEvent& event) override; + void OnInpaintCanvasResizeApply(wxCommandEvent& event) override; + void OnInpaintBrushSizeSliderScroll(wxScrollEvent& event) override; + void OnInpaintZoomSliderScroll(wxScrollEvent& event) override; + void OnServerSelect(wxCommandEvent& event) override; public: @@ -146,6 +172,8 @@ class MainWindowUI : public mainUI { wxBitmap ControlnetOrigPreviewBitmap; wxBitmap AppOrigPlaceHolderBitmap; + std::shared_ptr inpaintHelper = nullptr; + std::vector voids; struct subprocess_s* subprocess = nullptr; @@ -193,6 +221,7 @@ class MainWindowUI : public mainUI { void SetSchedulerByType(schedule_t schedule); void SetSamplerByType(sample_method_t sampler); void SetTypeByType(sd_type_t type); + inline void CheckQueueButton() { auto current_tab = (sd_gui_utils::GuiMainPanels)this->m_notebook1302->GetSelection(); switch (current_tab) { @@ -267,12 +296,13 @@ class MainWindowUI : public mainUI { static void ModelStandaloneHashingCallback(size_t readed_size, std::string sha256, void* custom_pointer); // std::shared_ptr handleSdImage(std::string result, std::shared_ptr itemPtr, wxEvtHandler* eventHandler); - std::shared_ptr handleSdImage(const std::string& tmpImagePath, std::shared_ptr itemPtr, wxEvtHandler* eventHandler); + std::shared_ptr handleSdImages(std::shared_ptr itemPtr, wxEvtHandler* eventHandler); wxString paramsToImageComment(const QM::QueueItem& myItem); std::string paramsToImageCommentJson(QM::QueueItem myItem, sd_gui_utils::ModelFileInfo modelInfo); void imageCommentToGuiParams(std::unordered_map params, SDMode mode); - void onimg2ImgImageOpen(const wxString& file); + void onimg2ImgImageOpen(const wxString& file, bool forceResolutions = false); + void onimgInfoOpen(const wxString& file); void onUpscaleImageOpen(const wxString& file); void onControlnetImageOpen(const wxString& file); @@ -308,21 +338,26 @@ class MainWindowUI : public mainUI { void initLog(); void deInitLog(); - void writeLog(const wxString& msg, bool writeIntoGui = true); + void writeLog(const wxString& msg, bool writeIntoGui = true, bool debug = false); void writeLog(const std::string& message); inline static wxString formatFileName(const QM::QueueItem& item, const wxString& format = "[mode]_[jobid]_[seed]_[width]x[height]_[batch]") { wxDateTime localTime = wxDateTime::Now(); auto day = localTime.Format(wxT("%d")); + auto month = localTime.Format(wxT("%m")); + auto year = localTime.Format(wxT("%Y")); + auto hours = localTime.Format(wxT("%H")); + auto minutes = localTime.Format(wxT("%M")); + auto seconds = localTime.Format(wxT("%S")); std::unordered_map tags = { - {"[year]", std::to_string(localTime.GetYear())}, - {"[month]", std::to_string(1 + localTime.GetMonth())}, - {"[day]", day.utf8_string()}, - {"[hours]", std::to_string(localTime.GetHour())}, - {"[minutes]", std::to_string(localTime.GetMinute())}, - {"[seconds]", std::to_string(localTime.GetSecond())}, + {"[year]", year.ToStdString()}, + {"[month]", month.ToStdString()}, + {"[day]", day.ToStdString()}, + {"[hours]", hours.ToStdString()}, + {"[minutes]", minutes.ToStdString()}, + {"[seconds]", seconds.ToStdString()}, {"[finished_at]", std::to_string(item.finished_at)}, {"[created_at]", std::to_string(item.created_at)}, {"[updated_at]", std::to_string(item.updated_at)}, diff --git a/src/ui/QueueManager.cpp b/src/ui/QueueManager.cpp index 50ae218..4eab5dc 100644 --- a/src/ui/QueueManager.cpp +++ b/src/ui/QueueManager.cpp @@ -57,6 +57,14 @@ void QM::QueueManager::UpdateItem(const QM::QueueItem& item) { } } +void QM::QueueManager::UpdateItem(std::shared_ptr item) { + std::lock_guard lock(queueMutex); + if (this->QueueList.find(item->id) != this->QueueList.end()) { + this->QueueList[item->id] = item; + this->SaveJobToFile(*item); + } +} + std::shared_ptr QM::QueueManager::GetItemPtr(int id) { std::lock_guard lock(queueMutex); if (this->QueueList.find(id) == this->QueueList.end()) { @@ -386,7 +394,10 @@ void QM::QueueManager::LoadJobListFromDir() { try { nlohmann::json data = nlohmann::json::parse(f); std::shared_ptr item = std::make_shared(data.get()); - if (item->status == QM::QueueStatus::RUNNING || item->status == QM::QueueStatus::MODEL_LOADING) { + if (item->status == QM::QueueStatus::RUNNING || + item->status == QM::QueueStatus::MODEL_LOADING || + item->status == QM::QueueStatus::HASHING || + item->status == QM::QueueStatus::HASHING_DONE) { item->status = QM::QueueStatus::PAUSED; } diff --git a/src/ui/QueueManager.h b/src/ui/QueueManager.h index 0ca85b0..e91c1bb 100644 --- a/src/ui/QueueManager.h +++ b/src/ui/QueueManager.h @@ -3,14 +3,14 @@ namespace QM { enum QueueStatus { - PENDING, - RUNNING, - PAUSED, - FAILED, - MODEL_LOADING, - DONE, - HASHING, - HASHING_DONE + PENDING, // deletable + RUNNING, // non deletable + PAUSED, // deletable + FAILED, // deletable + MODEL_LOADING, // non deletable + DONE, // deletable + HASHING, // non deletable + HASHING_DONE // non deletable }; enum GenerationMode { @@ -71,16 +71,6 @@ namespace QM { ITEM_MODEL_HASH_DONE = 1 << 13 }; - enum class QueueItemImageType : unsigned int { - /// @brief The image is generated by diffusion - GENERATED = 1 << 0, - /// @brief The image is added by user into the controlnet - CONTROLNET = 1 << 1, - /// @brief This is an itial image (eg. img2img original image, or upscaler original image) - INITIAL = 1 << 2, - UNKNOWN = 1 << 3 - }; - inline const std::unordered_map QueueEvents_str = { {QM::QueueEvents::ITEM_DELETED, "ITEM_DELETED"}, {QM::QueueEvents::ITEM_ADDED, "ITEM_ADDED"}, @@ -92,7 +82,40 @@ namespace QM { {QM::QueueEvents::ITEM_MODEL_LOADED, "ITEM_MODEL_LOADED"}, {QM::QueueEvents::ITEM_MODEL_FAILED, "ITEM_MODEL_FAILED"}, {QM::QueueEvents::ITEM_GENERATION_STARTED, "ITEM_GENERATION_STARTED"}, - {QM::QueueEvents::ITEM_FAILED, "ITEM_FAILED"}}; + {QM::QueueEvents::ITEM_FAILED, "ITEM_FAILED"}, + {QM::QueueEvents::ITEM_MODEL_HASH_START, "ITEM_MODEL_HASH_START"}, + {QM::QueueEvents::ITEM_MODEL_HASH_UPDATE, "ITEM_MODEL_HASH_UPDATE"}, + {QM::QueueEvents::ITEM_MODEL_HASH_DONE, "ITEM_MODEL_HASH_DONE"}}; + + enum class QueueItemImageType : unsigned int { + /// @brief The image is generated by diffusion + GENERATED = 1 << 0, + /// @brief The image is added by user into the controlnet + CONTROLNET = 1 << 1, + /// @brief This is an itial image (eg. img2img original image, or upscaler original image) + INITIAL = 1 << 2, + /// @brief The image is a mask image on img2img + MASK = 1 << 3, + /// @brief The image is a tmp image, deletable + TMP = 1 << 4, + /// @brief The original image, if in img2img the initial image is resized to outpaint + ORIGINAL = 1 << 5, + MASK_OUTPAINT = 1 << 6, + MASK_INPAINT = 1 << 7, + MASK_USED = 1 << 8, + UNKNOWN + }; + inline QM::QueueItemImageType operator|(QM::QueueItemImageType lhs, QM::QueueItemImageType rhs) { + return static_cast(static_cast(lhs) | static_cast(rhs)); + } + + inline QM::QueueItemImageType& operator|=(QM::QueueItemImageType& lhs, QM::QueueItemImageType rhs) { + lhs = lhs | rhs; + return lhs; + } + inline bool hasType(QM::QueueItemImageType combinedType, QM::QueueItemImageType singleType) { + return (static_cast(combinedType) & static_cast(singleType)) != 0; + } /// @brief Store the images from the queue jobs struct QueueItemImage { @@ -171,6 +194,7 @@ namespace QM { std::string model = ""; QM::GenerationMode mode = QM::GenerationMode::TXT2IMG; std::string initial_image = ""; + std::string mask_image = ""; std::string status_message = ""; uint32_t upscale_factor = 4; std::string sha256 = ""; @@ -179,12 +203,35 @@ namespace QM { std::string git_version = GIT_HASH; std::string original_prompt = ""; std::string original_negative_prompt = ""; + std::string original_negative_prompt = ""; bool keep_checkpoint_in_memory = false; bool keep_upscaler_in_memory = false; bool need_sha256 = false; std::string generated_sha256 = ""; int update_index = -1; int server = -1; + inline wxString GetActualSpeed() { + wxString speed = ""; + if (this->status == QM::QueueStatus::MODEL_LOADING || this->mode == QM::GenerationMode::CONVERT) { + int progress = (this->step / this->steps) * 100; + speed = wxString::Format(this->time > 1.0f ? "%.2fs/it" : "%.2fit/s", this->time > 1.0f || this->time == 0 ? this->time : (1.0f / this->time)); + } else { + speed = wxString::Format(this->time > 1.0f ? "%.2fs/it %d/%d" : "%.2fit/s %d/%d", this->time > 1.0f || this->time == 0 ? this->time : (1.0f / this->time), this->step, this->steps); + } + return speed; + } + inline int GetActualProgress() { + float current_progress = 0.f; + + if (this->step > 0 && this->steps > 0) { + current_progress = 100.f * (static_cast(this->step) / + static_cast(this->steps)); + } + if (this->step == this->steps) { + current_progress = 100.f; + } + return static_cast(current_progress); + } QueueItem(const QueueItem& other) : id(other.id), created_at(other.created_at), @@ -204,6 +251,7 @@ namespace QM { model(other.model), mode(other.mode), initial_image(other.initial_image), + mask_image(other.mask_image), status_message(other.status_message), upscale_factor(other.upscale_factor), sha256(other.sha256), @@ -241,6 +289,7 @@ namespace QM { model, mode, initial_image, + mask_image, status_message, upscale_factor, sha256, @@ -262,7 +311,15 @@ namespace QM { ~QueueManager(); int AddItem(const QM::QueueItem& _item, bool fromFile = false); int AddItem(std::shared_ptr _item, bool fromFile = false); + int GetNextId() { + int id = this->GetCurrentUnixTimestamp(false); + while (id <= this->lastId) { + id++; + } + return id; + }; void UpdateItem(const QM::QueueItem& item); + void UpdateItem(std::shared_ptr item); std::shared_ptr GetItemPtr(int id); /** * @brief Get all the items in the queue as a string formatted like: diff --git a/src/ui/embedded_files/circle.png.h b/src/ui/embedded_files/circle.png.h new file mode 100644 index 0000000..11ee2d3 --- /dev/null +++ b/src/ui/embedded_files/circle.png.h @@ -0,0 +1,51 @@ +#ifndef CIRCLE_PNG_H +#define CIRCLE_PNG_H + +#include +#include +#include + +static const unsigned char circle_png[] = +{ + 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, + 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x10, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1F, + 0xF3, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, + 0x73, 0x00, 0x00, 0x09, 0xD7, 0x00, 0x00, 0x09, 0xD7, 0x01, + 0xB1, 0x6E, 0x17, 0xB7, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, + 0x58, 0x74, 0x53, 0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, + 0x00, 0x77, 0x77, 0x77, 0x2E, 0x69, 0x6E, 0x6B, 0x73, 0x63, + 0x61, 0x70, 0x65, 0x2E, 0x6F, 0x72, 0x67, 0x9B, 0xEE, 0x3C, + 0x1A, 0x00, 0x00, 0x00, 0xB5, 0x49, 0x44, 0x41, 0x54, 0x38, + 0x8D, 0xA5, 0xD2, 0x5D, 0x8A, 0xC2, 0x40, 0x10, 0x04, 0xE0, + 0xCF, 0x88, 0x79, 0xF2, 0x24, 0xC6, 0x0B, 0x78, 0x36, 0xCF, + 0xE0, 0x22, 0x8A, 0x87, 0xF1, 0xEF, 0x14, 0xEA, 0x05, 0xD6, + 0x23, 0x64, 0x5F, 0xC4, 0x88, 0x3E, 0x64, 0x22, 0x21, 0xD1, + 0xB0, 0x8E, 0x05, 0x05, 0xC3, 0xD0, 0x55, 0xDD, 0x35, 0xD3, + 0xB4, 0x31, 0xC6, 0x1C, 0x47, 0xFC, 0x05, 0x1E, 0xC3, 0xDD, + 0xF8, 0x45, 0xFD, 0x13, 0x29, 0x56, 0xB8, 0xE1, 0xFE, 0x86, + 0x05, 0x96, 0xA1, 0xB6, 0x25, 0xDE, 0x77, 0x08, 0x9B, 0xDC, + 0x35, 0x4D, 0x56, 0x1F, 0x88, 0x2B, 0x2E, 0xEA, 0x99, 0x8B, + 0x08, 0x83, 0x02, 0x59, 0x1F, 0x53, 0x4C, 0xBA, 0x1E, 0xE7, + 0x0D, 0x12, 0x5C, 0xE0, 0x14, 0xD1, 0xBD, 0xE2, 0xA1, 0x87, + 0x1C, 0xC3, 0x88, 0x09, 0x20, 0x4F, 0x82, 0x53, 0x2C, 0xEE, + 0x09, 0xCE, 0x5F, 0x18, 0xFC, 0x26, 0xD8, 0x7C, 0x61, 0xB0, + 0x86, 0x4C, 0xFC, 0x37, 0x8E, 0x2A, 0xA7, 0x65, 0x84, 0xC1, + 0xBC, 0x3E, 0x4A, 0xAA, 0x5C, 0xCF, 0xFF, 0x8A, 0xB7, 0x18, + 0x34, 0xF3, 0xA4, 0xCA, 0xF5, 0xEC, 0x8A, 0x73, 0x0D, 0x9D, + 0x5B, 0xE2, 0x3A, 0x32, 0xFC, 0xE0, 0xA0, 0xDC, 0x91, 0x3C, + 0x9C, 0x67, 0xF5, 0xCC, 0x15, 0x1E, 0xD2, 0x4A, 0x82, 0x6E, + 0x30, 0x5E, 0x10, 0x43, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, + 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82, +}; + +wxBitmap& circle_png_to_wx_bitmap() +{ + static wxMemoryInputStream memIStream( circle_png, sizeof( circle_png ) ); + static wxImage image( memIStream, wxBITMAP_TYPE_PNG ); + static wxBitmap bmp( image ); + return bmp; +} + + +#endif //CIRCLE_PNG_H diff --git a/src/ui/embedded_files/square.png.h b/src/ui/embedded_files/square.png.h new file mode 100644 index 0000000..e7af78d --- /dev/null +++ b/src/ui/embedded_files/square.png.h @@ -0,0 +1,43 @@ +#ifndef SQUARE_PNG_H +#define SQUARE_PNG_H + +#include +#include +#include + +static const unsigned char square_png[] = +{ + 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, + 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x10, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1F, + 0xF3, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, + 0x54, 0x08, 0x08, 0x08, 0x08, 0x7C, 0x08, 0x64, 0x88, 0x00, + 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 0x4E, 0x7B, 0x26, 0x08, + 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6F, + 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 0x77, 0x77, + 0x2E, 0x69, 0x6E, 0x6B, 0x73, 0x63, 0x61, 0x70, 0x65, 0x2E, + 0x6F, 0x72, 0x67, 0x9B, 0xEE, 0x3C, 0x1A, 0x00, 0x00, 0x00, + 0x50, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8D, 0xED, 0xD3, 0x21, + 0x0E, 0x80, 0x30, 0x10, 0x44, 0xD1, 0xD7, 0x06, 0x2C, 0xA2, + 0x21, 0xE9, 0xFD, 0xEF, 0x47, 0x2A, 0x90, 0x94, 0x04, 0x04, + 0x18, 0x64, 0xAB, 0x10, 0xFD, 0xC9, 0x88, 0x15, 0xF3, 0x47, + 0x6D, 0xF0, 0xB0, 0x62, 0xD1, 0xC6, 0x8E, 0x0D, 0x32, 0x2A, + 0xAE, 0xC6, 0x1C, 0xC8, 0x11, 0x09, 0x53, 0xE3, 0x3A, 0xCC, + 0x48, 0xB1, 0xA3, 0xF8, 0x61, 0x08, 0x86, 0xE0, 0x3F, 0x82, + 0x82, 0xB3, 0xA3, 0x5B, 0x51, 0xC2, 0x7B, 0x74, 0xBF, 0xF3, + 0x0D, 0xCC, 0x85, 0x16, 0x34, 0x55, 0x1B, 0xCC, 0xAE, 0x00, + 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, + 0x82, +}; + +wxBitmap& square_png_to_wx_bitmap() +{ + static wxMemoryInputStream memIStream( square_png, sizeof( square_png ) ); + static wxImage image( memIStream, wxBITMAP_TYPE_PNG ); + static wxBitmap bmp( image ); + return bmp; +} + + +#endif //SQUARE_PNG_H diff --git a/src/ui/embedded_files/triangle.png.h b/src/ui/embedded_files/triangle.png.h new file mode 100644 index 0000000..7866993 --- /dev/null +++ b/src/ui/embedded_files/triangle.png.h @@ -0,0 +1,50 @@ +#ifndef TRIANGLE_PNG_H +#define TRIANGLE_PNG_H + +#include +#include +#include + +static const unsigned char triangle_png[] = +{ + 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, + 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x10, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1F, + 0xF3, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, + 0x73, 0x00, 0x00, 0x09, 0xD7, 0x00, 0x00, 0x09, 0xD7, 0x01, + 0xB1, 0x6E, 0x17, 0xB7, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, + 0x58, 0x74, 0x53, 0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, + 0x00, 0x77, 0x77, 0x77, 0x2E, 0x69, 0x6E, 0x6B, 0x73, 0x63, + 0x61, 0x70, 0x65, 0x2E, 0x6F, 0x72, 0x67, 0x9B, 0xEE, 0x3C, + 0x1A, 0x00, 0x00, 0x00, 0xAB, 0x49, 0x44, 0x41, 0x54, 0x38, + 0x8D, 0x9D, 0x91, 0xA1, 0x0A, 0x02, 0x41, 0x14, 0x45, 0x0F, + 0xBB, 0x0A, 0x7E, 0xC9, 0x62, 0x55, 0x6C, 0x82, 0x69, 0x8B, + 0xCD, 0x62, 0xB2, 0x98, 0x2C, 0x16, 0xA3, 0x9F, 0x64, 0x31, + 0x59, 0x4C, 0x16, 0xDB, 0x62, 0x5C, 0x6C, 0x62, 0xD2, 0x7F, + 0x10, 0xD4, 0xB1, 0xCC, 0x83, 0x41, 0x66, 0x67, 0xE6, 0xED, + 0x85, 0x0B, 0x0F, 0x66, 0xCE, 0x09, 0xEF, 0xE5, 0x84, 0xB3, + 0x01, 0x46, 0x40, 0x15, 0xF9, 0xE7, 0x4D, 0x0F, 0x78, 0x00, + 0x4F, 0x3B, 0xAB, 0xB3, 0x06, 0x8C, 0xED, 0x4A, 0x0B, 0x77, + 0x81, 0xBB, 0x23, 0xB8, 0x01, 0x1D, 0x8D, 0x60, 0xE9, 0xC0, + 0xD2, 0x45, 0x2A, 0x9C, 0x01, 0xB5, 0x47, 0x70, 0xB5, 0x6F, + 0xD1, 0xCC, 0x3D, 0xB0, 0x74, 0x96, 0x22, 0xB8, 0x04, 0x04, + 0xD1, 0x73, 0x4E, 0x03, 0xB0, 0xB4, 0x0C, 0x09, 0xCE, 0x09, + 0x82, 0x53, 0x13, 0x3C, 0x49, 0x80, 0xA5, 0x63, 0x9F, 0xE0, + 0xA8, 0x10, 0x1C, 0xFE, 0xE1, 0x01, 0xF0, 0x55, 0x08, 0x0C, + 0x30, 0x74, 0x05, 0x7B, 0x25, 0x6C, 0x80, 0x9D, 0xC0, 0x7D, + 0xE0, 0xD3, 0x42, 0xF0, 0x06, 0x8A, 0x1C, 0xD8, 0x36, 0x2D, + 0x25, 0x92, 0x0C, 0x78, 0xFD, 0x00, 0x07, 0x27, 0x73, 0xC8, + 0x83, 0xB6, 0xC2, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, + 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82, +}; + +wxBitmap& triangle_png_to_wx_bitmap() +{ + static wxMemoryInputStream memIStream( triangle_png, sizeof( triangle_png ) ); + static wxImage image( memIStream, wxBITMAP_TYPE_PNG ); + static wxBitmap bmp( image ); + return bmp; +} + + +#endif //TRIANGLE_PNG_H diff --git a/src/ui/imageUtils.h b/src/ui/imageUtils.h index 73bd6d3..de4b376 100644 --- a/src/ui/imageUtils.h +++ b/src/ui/imageUtils.h @@ -32,6 +32,24 @@ namespace sd_gui_utils { return image.Scale(newWidth, newHeight); }; + inline void ResizeImageToMaxSize(std::shared_ptr image, int maxWidth, int maxHeight) { + int newWidth = image->GetWidth(); + int newHeight = image->GetHeight(); + + if (newWidth > maxWidth || newHeight > maxHeight) { + double aspectRatio = static_cast(newWidth) / static_cast(newHeight); + if (aspectRatio > 1.0) { + newWidth = maxWidth; + newHeight = static_cast(maxWidth / aspectRatio); + } else { + newHeight = maxHeight; + newWidth = static_cast(maxHeight * aspectRatio); + } + } + wxImage tmpImage = image->Scale(newWidth, newHeight); + *image = tmpImage; + }; + /** * Resize the given image to fit within the specified maximum width and * height while maintaining the image's aspect ratio. If the resized image @@ -84,7 +102,7 @@ namespace sd_gui_utils { return fn; } - inline wxImage cropResizeImage(const wxString image_path, int targetWidth, int targetHeight, const wxColour& backgroundColor, const wxString& cache_path = "") { + inline wxImage cropResizeImage(const wxString image_path, int targetWidth, int targetHeight, const wxColour& backgroundColor = wxColour(51, 51, 51, wxALPHA_TRANSPARENT), const wxString& cache_path = "") { wxFileName cache_name; if (!cache_path.empty()) { cache_name = sd_gui_utils::cropResizeCacheName(targetWidth, targetHeight, image_path, cache_path); @@ -129,7 +147,87 @@ namespace sd_gui_utils { resizedImage.SaveFile(cache_name.GetAbsolutePath()); return resizedImage; }; + struct wxEnlargeImageSizes { + int top = 0; + int right = 0; + int bottom = 0; + int left = 0; + void ResetSizes() { + top = 0; + right = 0; + bottom = 0; + left = 0; + } + }; + + inline void CropOrFillBitmap(std::shared_ptr bitmap, const wxEnlargeImageSizes& enlargeSizes, wxColour fillColor) { + if (bitmap == nullptr || !bitmap->IsOk()) { + return; + } + + // Convert wxBitmap to wxImage for manipulation + wxImage image = bitmap->ConvertToImage(); + + int originalWidth = image.GetWidth(); + int originalHeight = image.GetHeight(); + + int newWidth = originalWidth + enlargeSizes.left + enlargeSizes.right; + int newHeight = originalHeight + enlargeSizes.top + enlargeSizes.bottom; + + wxImage newImage(newWidth, newHeight); + + // Fill the new image with the fill color + newImage.SetRGB(wxRect(0, 0, newWidth, newHeight), fillColor.Red(), fillColor.Green(), fillColor.Blue()); + + int xOffset = enlargeSizes.left + (newWidth - originalWidth - enlargeSizes.left - enlargeSizes.right) / 2; + int yOffset = enlargeSizes.top + (newHeight - originalHeight - enlargeSizes.top - enlargeSizes.bottom) / 2; + + // Paste the original image onto the new image + newImage.Paste(image, xOffset, yOffset); + + // Convert the modified wxImage back to wxBitmap + *bitmap = wxBitmap(newImage); + } + inline void CropOrFillImage(std::shared_ptr image, const wxEnlargeImageSizes& enlargeSizes, wxColour fillColor) { + if (image == nullptr) { + return; + } + int originalWidth = image->GetWidth(); + int originalHeight = image->GetHeight(); + + int newWidth = originalWidth + enlargeSizes.left + enlargeSizes.right; + int newHeight = originalHeight + enlargeSizes.top + enlargeSizes.bottom; + + wxImage newImage(newWidth, newHeight); + + newImage.SetRGB(wxRect(0, 0, newWidth, newHeight), fillColor.Red(), fillColor.Green(), fillColor.Blue()); + + int xOffset = enlargeSizes.left + (newWidth - originalWidth - enlargeSizes.left - enlargeSizes.right) / 2; + int yOffset = enlargeSizes.top + (newHeight - originalHeight - enlargeSizes.top - enlargeSizes.bottom) / 2; + + newImage.Paste(*image, xOffset, yOffset); + + *image = newImage; + } + + inline void CropOrFillImage(wxImage& image, int top, int right, int bottom, int left, wxColour fillColor) { + int originalWidth = image.GetWidth(); + int originalHeight = image.GetHeight(); + + int newWidth = originalWidth + left + right; + int newHeight = originalHeight + top + bottom; + + wxImage newImage(newWidth, newHeight); + + newImage.SetRGB(wxRect(0, 0, newWidth, newHeight), fillColor.Red(), fillColor.Green(), fillColor.Blue()); + int xOffset = left + (newWidth - originalWidth - left - right) / 2; + int yOffset = top + (newHeight - originalHeight - top - bottom) / 2; + + newImage.Paste(image, xOffset, yOffset); + + image = newImage; + } static std::unordered_map ReadMetadata(const std::string& filepath) { std::unordered_map> metadata; @@ -311,6 +409,172 @@ namespace sd_gui_utils { free(rowPointers[y]); } } + inline void ResizeWithBorder(wxBitmap& bitmap, int top, int right, int bottom, int left) { + if (top < 0 || right < 0 || bottom < 0 || left < 0) { + return; + } + + int originalWidth = bitmap.GetWidth(); + int originalHeight = bitmap.GetHeight(); + + int newWidth = originalWidth + left + right; + int newHeight = originalHeight + top + bottom; + + wxBitmap newBitmap(newWidth, newHeight); + wxMemoryDC dc(newBitmap); + + dc.SetBackground(*wxGREY_BRUSH); + dc.Clear(); + + int xOffset = left + (newWidth - originalWidth - left - right) / 2; + int yOffset = top + (newHeight - originalHeight - top - bottom) / 2; + + dc.DrawBitmap(bitmap, xOffset, yOffset, false); + + dc.SelectObject(wxNullBitmap); + bitmap = newBitmap; + } + + /** + * Inverts white and transparent pixels in the given bitmap. + * + * For each pixel in the bitmap: + * - If the pixel is white (RGB = (255, 255, 255)) and has an alpha value of greater than 0, it will be made transparent (alpha = 0). + * - If the pixel is not white and has an alpha value of less than 255, it will be made white (RGB = (255, 255, 255)) and fully opaque (alpha = 255). + * + * The image is then converted back to a bitmap and the scale factor is set to the original value. + * + * @param bitmap The bitmap to be modified. + */ + inline void InvertWhiteAndTransparent(wxBitmap& bitmap) { + auto oldScale = bitmap.GetScaleFactor(); + wxImage image = bitmap.ConvertToImage(); + if (!image.HasAlpha()) { + image.InitAlpha(); + } + + for (int x = 0; x < image.GetWidth(); ++x) { + for (int y = 0; y < image.GetHeight(); ++y) { + unsigned char red = image.GetRed(x, y); + unsigned char green = image.GetGreen(x, y); + unsigned char blue = image.GetBlue(x, y); + unsigned char alpha = image.GetAlpha(x, y); + + if (red == 255 && green == 255 && blue == 255 && alpha > 0) { + image.SetAlpha(x, y, 0); // make it transparent + } + + else if (alpha < 255) { + image.SetRGB(x, y, 255, 255, 255); // make it white + image.SetAlpha(x, y, 255); + } + } + } + + bitmap = wxBitmap(image); + bitmap.SetScaleFactor(oldScale); + } + + inline void InvertWhiteAndTransparent(std::shared_ptr bitmap) { + if (!bitmap) + return; + + auto oldScale = bitmap->GetScaleFactor(); + wxImage image = bitmap->ConvertToImage(); + + if (!image.HasAlpha()) { + image.InitAlpha(); + } + + for (int x = 0; x < image.GetWidth(); ++x) { + for (int y = 0; y < image.GetHeight(); ++y) { + unsigned char red = image.GetRed(x, y); + unsigned char green = image.GetGreen(x, y); + unsigned char blue = image.GetBlue(x, y); + unsigned char alpha = image.GetAlpha(x, y); + + if (red == 255 && green == 255 && blue == 255 && alpha > 0) { + image.SetAlpha(x, y, 0); // Make it transparent + } else if (alpha < 255) { + image.SetRGB(x, y, 255, 255, 255); // Make it white + image.SetAlpha(x, y, 255); + } + } + } + + *bitmap = wxBitmap(image); + bitmap->SetScaleFactor(oldScale); + } + + inline void convertMaskImageToTransparent(wxImage& image) { + if (!image.HasAlpha()) { + image.InitAlpha(); + } + for (int x = 0; x < image.GetWidth(); ++x) { + for (int y = 0; y < image.GetHeight(); ++y) { + // only convert black pixels to transparent + auto red = image.GetRed(x, y); + auto green = image.GetGreen(x, y); + auto blue = image.GetBlue(x, y); + + // if not white + if (red == 0 && green == 0 && blue == 0) { + image.SetRGB(x, y, 0, 0, 0); + image.SetAlpha(x, y, 0); + } + } + } + } + + inline void convertMaskImageTransparentToBlack(wxImage& image) { + if (!image.HasAlpha()) { + image.InitAlpha(); + } + for (int x = 0; x < image.GetWidth(); ++x) { + for (int y = 0; y < image.GetHeight(); ++y) { + // only convert transparent pixels to black + auto red = image.GetRed(x, y); + auto green = image.GetGreen(x, y); + auto blue = image.GetBlue(x, y); + auto alpha = image.GetAlpha(x, y); + if (alpha < 255) { + image.SetRGB(x, y, 0, 0, 0); + image.SetAlpha(x, y, 255); + } + } + } + if (image.HasAlpha()) { + image.ClearAlpha(); + } + } + + inline void blendImageOnBlackBackground(wxImage& image) { + if (!image.HasAlpha()) { + image.InitAlpha(); + } + + wxImage blackBackground(image.GetWidth(), image.GetHeight()); + blackBackground.SetRGB(wxRect(0, 0, image.GetWidth(), image.GetHeight()), 0, 0, 0); + + for (int x = 0; x < image.GetWidth(); ++x) { + for (int y = 0; y < image.GetHeight(); ++y) { + unsigned char srcRed = image.GetRed(x, y); + unsigned char srcGreen = image.GetGreen(x, y); + unsigned char srcBlue = image.GetBlue(x, y); + unsigned char srcAlpha = image.GetAlpha(x, y); + + float alphaFactor = static_cast(srcAlpha) / 255.0f; + + unsigned char blendedRed = static_cast(srcRed * alphaFactor); + unsigned char blendedGreen = static_cast(srcGreen * alphaFactor); + unsigned char blendedBlue = static_cast(srcBlue * alphaFactor); + + blackBackground.SetRGB(x, y, blendedRed, blendedGreen, blendedBlue); + } + } + + image = blackBackground; + } } #endif // SRC_UI_IMAGEUTILS_H diff --git a/src/ui/utils.hpp b/src/ui/utils.hpp index acac4b5..170af80 100644 --- a/src/ui/utils.hpp +++ b/src/ui/utils.hpp @@ -898,11 +898,6 @@ namespace sd_gui_utils { return data; } inline std::unordered_map parseExifPrompts(wxString text) { - size_t pos = text.find("charset=Unicode"); - if (pos != wxString::npos) { - text.erase(pos, wxStrlen("charset=Unicode")); - } - std::unordered_map result; result["prompt"] = ""; @@ -980,8 +975,37 @@ namespace sd_gui_utils { return result; } + inline wxString Exiv2ToWxString(const std::string& exifString) { + const char* prefix_ascii1 = "charset=\"ASCII\" "; + const char* prefix_ascii2 = "charset=Ascii "; + const char* prefix_Unicode = "charset=Unicode "; + wxString info; + + const size_t input_size = exifString.size(); + + if (wxString::FromUTF8(exifString).StartsWith(prefix_ascii1)) { + const size_t prefix1_size = strlen(prefix_ascii1); + if (input_size > prefix1_size) { + info = wxString(exifString.c_str() + prefix1_size, wxConvISO8859_1); + } + } else if (wxString::FromUTF8(exifString).StartsWith(prefix_ascii2)) { + const size_t prefix2_size = strlen(prefix_ascii2); + if (input_size > prefix2_size) { + info = wxString(exifString.c_str() + prefix2_size, wxConvISO8859_1); + } + } else if (wxString::FromUTF8(exifString).StartsWith(prefix_Unicode)) { + const size_t prefixunicode_size = strlen(prefix_Unicode); + if (input_size > prefixunicode_size) { + info = wxString::FromUTF8(exifString.c_str() + prefixunicode_size, input_size - prefixunicode_size); + } + } else if (input_size > 0) { + info = wxString::FromUTF8(exifString.c_str(), input_size); + } + + return info; + } + inline static wxString AppendSuffixToFileName(const wxString& filePath, const wxString& suffix) { - // Ellenőrizzük, hogy a fájl létezik-e if (!wxFileExists(filePath)) { std::cerr << "File does not exist: " << filePath << std::endl; return ""; @@ -995,6 +1019,22 @@ namespace sd_gui_utils { return fileName.GetFullPath(); } + /** + * Creates a unique file path by combining the given filename, extension, and folder path. + * If a file with the same name already exists, appends a counter to generate a unique filename. + * Optionally appends a suffix to the filename. + * + * @param filename The base name of the file. + * @param extension The file extension. + * @param folderPath The path to the folder where the file will be located. + * @param suffix An optional suffix to append to the filename. + * @return The full path of the unique file as a wxString. + * + * If the specified directory does not exist, it is created recursively. + * Handles different path separators based on the operating system. + * Logs an error message if the directory cannot be created. + */ + inline static wxString CreateFilePath(const wxString& filename, const wxString& extension, const wxString& folderPath, const wxString& suffix = "") { // Normalize path separator for the current OS wxString normalizedFilename = folderPath + wxFileName::GetPathSeparator() + filename + extension; @@ -1088,6 +1128,38 @@ namespace sd_gui_utils { int m_id; }; + struct wxPointDouble { + wxPointDouble() = default; + wxPointDouble(const wxPointDouble&) = default; + wxPointDouble(wxPointDouble&&) = default; + wxPointDouble& operator=(const wxPointDouble&) = default; + wxPointDouble& operator=(wxPointDouble&&) = default; + wxPointDouble& operator=(wxPoint&&) { + x = static_cast(x); + y = static_cast(y); + return *this; + } + wxPointDouble& operator=(wxPoint&) { + x = static_cast(x); + y = static_cast(y); + return *this; + } + wxPointDouble(wxPoint pos) + : x(pos.x), y(pos.y) {} + wxPointDouble(double x, double y) + : x(x), y(y) {} + double x = 0; + double y = 0; + }; + struct wxPosition { + wxPosition(sd_gui_utils::wxPointDouble pos, wxPoint offset, sd_gui_utils::wxPointDouble originalPos) + : pos(pos), offset(offset), originalPos(originalPos) {} + wxPosition() = default; + sd_gui_utils::wxPointDouble pos; + wxPoint offset; + wxPointDouble originalPos; + }; + /* * Used at m_notebook1302OnNotebookPageChanged * FYI: keep the order as the gui builder @@ -1100,5 +1172,23 @@ namespace sd_gui_utils { PANEL_IMAGEINFO, PANEL_MODELS }; + /// \brief Convert GuiMainPanels enum to size_t + /// + /// This implicit conversion is useful when using the enum as an index to a + /// container, such as a vector or array. + /// + /// \param[in] panel The GuiMainPanels enum value to convert + /// \return The size_t value corresponding to the enum + constexpr size_t operator+(GuiMainPanels panel) { + return static_cast(panel); + } + constexpr bool operator==(int value, GuiMainPanels panel) { + return value == static_cast(panel); + } + + constexpr bool operator!=(int value, GuiMainPanels panel) { + return value != static_cast(panel); + } + } // namespace sd_gui_utils #endif