feat(gui): enhance drag-and-drop support in MainWindow #127
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI - C++ | |
| on: | |
| push: | |
| branches: [main, classic-next, dev, classic-9.1] | |
| pull_request: | |
| branches: [main, classic-next, dev, classic-9.1] | |
| env: | |
| RUST_BACKTRACE: 1 | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| cxx-parity-gate: | |
| name: Binding Compliance Gate (C++) | |
| runs-on: windows-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| - name: Run CXX binding compliance profile | |
| run: python tools/binding_compliance/check_compliance.py --repo-root . --profile cxx-ci | |
| - name: Upload CXX binding compliance diagnostics | |
| if: failure() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: cxx-parity-diagnostics | |
| path: | | |
| tools/binding_compliance/artifacts/ | |
| cpp-bindings/classic-cpp-bridge/parity-artifacts/ | |
| if-no-files-found: warn | |
| retention-days: 7 | |
| cli-tests: | |
| name: CLI Tests | |
| needs: [cxx-parity-gate] | |
| runs-on: windows-latest | |
| timeout-minutes: 90 | |
| env: | |
| RUST_BACKTRACE: full | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Set up MSVC dev environment | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| with: | |
| arch: x64 | |
| - name: Cache cargo registry | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.cargo/registry | |
| key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-registry- | |
| - name: Cache cargo index | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.cargo/git | |
| key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-index- | |
| - name: Cache cargo build | |
| uses: actions/cache@v5 | |
| with: | |
| path: target | |
| key: ${{ runner.os }}-cargo-cpp-cli-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('foundation/**/*.rs', 'business-logic/**/*.rs', 'cpp-bindings/**/*.rs', 'node-bindings/**/*.rs', 'python-bindings/**/*.rs', 'ui-applications/**/*.rs') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-cpp-cli-${{ hashFiles('**/Cargo.lock') }}- | |
| ${{ runner.os }}-cargo-cpp-cli- | |
| - name: Cache vcpkg root | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~\vcpkg | |
| key: ${{ runner.os }}-vcpkg-root-${{ hashFiles('.github/scripts/setup-vcpkg.ps1', 'classic-cli/vcpkg.json', 'classic-gui/vcpkg.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-vcpkg-root- | |
| - name: Set up vcpkg (resilient) | |
| shell: pwsh | |
| run: pwsh -ExecutionPolicy Bypass -File .github/scripts/setup-vcpkg.ps1 | |
| - name: Build and test CLI | |
| run: pwsh -ExecutionPolicy Bypass -File classic-cli/build_cli.ps1 -Test | |
| - name: Upload CLI diagnostics | |
| if: failure() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: cli-test-diagnostics | |
| path: | | |
| classic-cli/build/Testing/ | |
| classic-cli/build-debug/Testing/ | |
| classic-cli/build/CMakeFiles/CMakeError.log | |
| classic-cli/build/CMakeFiles/CMakeOutput.log | |
| if-no-files-found: warn | |
| retention-days: 7 | |
| gui-tests: | |
| name: GUI Tests | |
| needs: [cxx-parity-gate] | |
| runs-on: windows-latest | |
| timeout-minutes: 120 | |
| env: | |
| RUST_BACKTRACE: full | |
| QT_QPA_PLATFORM: offscreen | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Set up MSVC dev environment | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| with: | |
| arch: x64 | |
| - name: Cache cargo registry | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.cargo/registry | |
| key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-registry- | |
| - name: Cache cargo index | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.cargo/git | |
| key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-index- | |
| - name: Cache cargo build | |
| uses: actions/cache@v5 | |
| with: | |
| path: target | |
| key: ${{ runner.os }}-cargo-cpp-gui-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('foundation/**/*.rs', 'business-logic/**/*.rs', 'cpp-bindings/**/*.rs', 'node-bindings/**/*.rs', 'python-bindings/**/*.rs', 'ui-applications/**/*.rs') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-cpp-gui-${{ hashFiles('**/Cargo.lock') }}- | |
| ${{ runner.os }}-cargo-cpp-gui- | |
| - name: Cache vcpkg root | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~\vcpkg | |
| key: ${{ runner.os }}-vcpkg-root-${{ hashFiles('.github/scripts/setup-vcpkg.ps1', 'classic-cli/vcpkg.json', 'classic-gui/vcpkg.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-vcpkg-root- | |
| - name: Set up vcpkg (resilient) | |
| shell: pwsh | |
| run: pwsh -ExecutionPolicy Bypass -File .github/scripts/setup-vcpkg.ps1 | |
| - name: Cache GUI vcpkg installed | |
| uses: actions/cache@v5 | |
| with: | |
| path: classic-gui/vcpkg_installed | |
| key: ${{ runner.os }}-vcpkg-installed-gui-${{ hashFiles('classic-gui/vcpkg.json', 'classic-gui/CMakePresets.json', '.github/scripts/setup-vcpkg.ps1') }} | |
| restore-keys: | | |
| ${{ runner.os }}-vcpkg-installed-gui- | |
| - name: Cache GUI vcpkg archives | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~\AppData\Local\vcpkg\archives | |
| key: ${{ runner.os }}-vcpkg-archives-gui-${{ hashFiles('classic-gui/vcpkg.json', 'classic-gui/CMakePresets.json', '.github/scripts/setup-vcpkg.ps1') }} | |
| restore-keys: | | |
| ${{ runner.os }}-vcpkg-archives-gui- | |
| - name: GUI test preflight diagnostics | |
| shell: pwsh | |
| run: | | |
| cmake --version | |
| ctest --version | |
| Write-Host "QT_QPA_PLATFORM=$env:QT_QPA_PLATFORM" | |
| - name: Verify Qt resolution policy | |
| shell: pwsh | |
| run: pwsh -ExecutionPolicy Bypass -File classic-gui/verify_qt_resolution.ps1 | |
| - name: Build and test GUI | |
| run: pwsh -ExecutionPolicy Bypass -File classic-gui/build_gui.ps1 -Preset ci -Test -TestTimeoutSec 600 | |
| - name: Upload GUI diagnostics | |
| if: failure() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: gui-test-diagnostics | |
| path: | | |
| classic-gui/build/Testing/ | |
| classic-gui/build-debug/Testing/ | |
| classic-gui/build/CMakeFiles/CMakeError.log | |
| classic-gui/build/CMakeFiles/CMakeOutput.log | |
| if-no-files-found: warn | |
| retention-days: 7 |